keys: Pass the network namespace into request_key mechanism
Create a request_key_net() function and use it to pass the network namespace domain tag into DNS revolver keys and rxrpc/AFS keys so that keys for different domains can coexist in the same keyring. Signed-off-by: David Howells <dhowells@redhat.com> cc: netdev@vger.kernel.org cc: linux-nfs@vger.kernel.org cc: linux-cifs@vger.kernel.org cc: linux-afs@lists.infradead.org
This commit is contained in:
@@ -40,6 +40,7 @@
|
||||
#include <linux/cred.h>
|
||||
#include <linux/dns_resolver.h>
|
||||
#include <linux/err.h>
|
||||
#include <net/net_namespace.h>
|
||||
|
||||
#include <keys/dns_resolver-type.h>
|
||||
#include <keys/user-type.h>
|
||||
@@ -48,6 +49,7 @@
|
||||
|
||||
/**
|
||||
* dns_query - Query the DNS
|
||||
* @net: The network namespace to operate in.
|
||||
* @type: Query type (or NULL for straight host->IP lookup)
|
||||
* @name: Name to look up
|
||||
* @namelen: Length of name
|
||||
@@ -69,7 +71,8 @@
|
||||
*
|
||||
* Returns the size of the result on success, -ve error code otherwise.
|
||||
*/
|
||||
int dns_query(const char *type, const char *name, size_t namelen,
|
||||
int dns_query(struct net *net,
|
||||
const char *type, const char *name, size_t namelen,
|
||||
const char *options, char **_result, time64_t *_expiry,
|
||||
bool invalidate)
|
||||
{
|
||||
@@ -122,7 +125,7 @@ int dns_query(const char *type, const char *name, size_t namelen,
|
||||
* add_key() to preinstall malicious redirections
|
||||
*/
|
||||
saved_cred = override_creds(dns_resolver_cache);
|
||||
rkey = request_key(&key_type_dns_resolver, desc, options);
|
||||
rkey = request_key_net(&key_type_dns_resolver, desc, net, options);
|
||||
revert_creds(saved_cred);
|
||||
kfree(desc);
|
||||
if (IS_ERR(rkey)) {
|
||||
|
Reference in New Issue
Block a user