@ -228,19 +228,21 @@ static int
rpcauth_prune_expired ( struct list_head * free , int nr_to_scan )
{
spinlock_t * cache_lock ;
struct rpc_cred * cred ;
struct rpc_cred * cred , * next ;
unsigned long expired = jiffies - RPC_AUTH_EXPIRY_MORATORIUM ;
while ( ! list_empty ( & cred_unused ) ) {
cred = list_entry ( cred_unused . next , struct rpc_cred , cr_lru ) ;
list_for_each_entry_safe ( cred , next , & cred_unused , cr_lru ) {
/* Enforce a 60 second garbage collection moratorium */
if ( time_in_range ( cred - > cr_expire , expired , jiffies ) & &
test_bit ( RPCAUTH_CRED_HASHED , & cred - > cr_flags ) ! = 0 )
continue ;
list_del_init ( & cred - > cr_lru ) ;
number_cred_unused - - ;
if ( atomic_read ( & cred - > cr_count ) ! = 0 )
continue ;
/* Enforce a 5 second garbage collection moratorium */
if ( time_in_range ( cred - > cr_expire , expired , jiffies ) & &
test_bit ( RPCAUTH_CRED_UPTODATE , & cred - > cr_flags ) ! = 0 )
continue ;
cache_lock = & cred - > cr_auth - > au_credcache - > lock ;
spin_lock ( cache_lock ) ;
if ( atomic_read ( & cred - > cr_count ) = = 0 ) {