Commit 25337fdc authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Fix a bug in rpcauth_lookup_credcache()



The hash bucket is for some reason always being set to zero.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 9446389e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -59,8 +59,8 @@ struct rpc_cred {
/*
 * Client authentication handle
 */
#define RPC_CREDCACHE_NR	8
#define RPC_CREDCACHE_MASK	(RPC_CREDCACHE_NR - 1)
#define RPC_CREDCACHE_HASHBITS	4
#define RPC_CREDCACHE_NR	(1 << RPC_CREDCACHE_HASHBITS)
struct rpc_cred_cache {
	struct hlist_head	hashtable[RPC_CREDCACHE_NR];
	spinlock_t		lock;
+4 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/hash.h>
#include <linux/sunrpc/clnt.h>
#include <linux/spinlock.h>

@@ -280,7 +281,9 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
	struct hlist_node *pos;
	struct rpc_cred	*cred = NULL,
			*entry, *new;
	int		nr = 0;
	unsigned int nr;

	nr = hash_long(acred->uid, RPC_CREDCACHE_HASHBITS);

	if (!(flags & RPCAUTH_LOOKUP_ROOTCREDS))
		nr = acred->uid & RPC_CREDCACHE_MASK;