diff options
Diffstat (limited to 'net/sunrpc')
-rw-r--r-- | net/sunrpc/auth.c | 2 | ||||
-rw-r--r-- | net/sunrpc/svcauth_unix.c | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c index 4cd0ecfe9837..392adc41e2e5 100644 --- a/net/sunrpc/auth.c +++ b/net/sunrpc/auth.c | |||
@@ -412,7 +412,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred, | |||
412 | *entry, *new; | 412 | *entry, *new; |
413 | unsigned int nr; | 413 | unsigned int nr; |
414 | 414 | ||
415 | nr = hash_long(acred->uid, cache->hashbits); | 415 | nr = hash_long(from_kuid(&init_user_ns, acred->uid), cache->hashbits); |
416 | 416 | ||
417 | rcu_read_lock(); | 417 | rcu_read_lock(); |
418 | hlist_for_each_entry_rcu(entry, pos, &cache->hashtable[nr], cr_hash) { | 418 | hlist_for_each_entry_rcu(entry, pos, &cache->hashtable[nr], cr_hash) { |
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index 92166b57ec7a..faf17195a9fd 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c | |||
@@ -419,6 +419,11 @@ struct unix_gid { | |||
419 | struct group_info *gi; | 419 | struct group_info *gi; |
420 | }; | 420 | }; |
421 | 421 | ||
422 | static int unix_gid_hash(kuid_t uid) | ||
423 | { | ||
424 | return hash_long(from_kuid(&init_user_ns, uid), GID_HASHBITS); | ||
425 | } | ||
426 | |||
422 | static void unix_gid_put(struct kref *kref) | 427 | static void unix_gid_put(struct kref *kref) |
423 | { | 428 | { |
424 | struct cache_head *item = container_of(kref, struct cache_head, ref); | 429 | struct cache_head *item = container_of(kref, struct cache_head, ref); |
@@ -530,7 +535,7 @@ static int unix_gid_parse(struct cache_detail *cd, | |||
530 | ug.h.expiry_time = expiry; | 535 | ug.h.expiry_time = expiry; |
531 | ch = sunrpc_cache_update(cd, | 536 | ch = sunrpc_cache_update(cd, |
532 | &ug.h, &ugp->h, | 537 | &ug.h, &ugp->h, |
533 | hash_long(uid, GID_HASHBITS)); | 538 | unix_gid_hash(uid)); |
534 | if (!ch) | 539 | if (!ch) |
535 | err = -ENOMEM; | 540 | err = -ENOMEM; |
536 | else { | 541 | else { |
@@ -621,7 +626,7 @@ static struct unix_gid *unix_gid_lookup(struct cache_detail *cd, kuid_t uid) | |||
621 | struct cache_head *ch; | 626 | struct cache_head *ch; |
622 | 627 | ||
623 | ug.uid = uid; | 628 | ug.uid = uid; |
624 | ch = sunrpc_cache_lookup(cd, &ug.h, hash_long(uid, GID_HASHBITS)); | 629 | ch = sunrpc_cache_lookup(cd, &ug.h, unix_gid_hash(uid)); |
625 | if (ch) | 630 | if (ch) |
626 | return container_of(ch, struct unix_gid, h); | 631 | return container_of(ch, struct unix_gid, h); |
627 | else | 632 | else |