Re: [PATCH] svcrpc: modifying positive sunrpc cache entries is racy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 05, 2011 at 08:15:38AM +1100, NeilBrown wrote:
> On Tue, 4 Jan 2011 13:43:14 -0500 "J. Bruce Fields" <bfields@xxxxxxxxxxxx>
> wrote:
> > Yep, applied.
> > 
> > (When do we get to remove all this?  Taking a stab at the 2.6.40 merge
> > window....
> 
> That is what is says in feature-removal-schedule.txt (which no-one reads).
> 
> 
> >             OK, party at my place in May!)
> 
> Will there still be snow?  I'm not coming if there is no snow!

If anyone attends from Australia, I'll find the snow.  It may melt
rather quickly, though....

> (patch looks good)

Applied--thanks for the help!--b.

> 
> NeilBrown
> 
> 
> 
> > 
> > --b.
> > 
> > commit ab5c05c579b0b37b9bf2c79c9c8f0ef6045ee41d
> > Author: J. Bruce Fields <bfields@xxxxxxxxxx>
> > Date:   Fri Dec 24 14:03:38 2010 -0500
> > 
> >     svcrpc: modifying valid sunrpc cache entries is racy
> >     
> >     Once a sunrpc cache entry is VALID, we should be replacing it (and
> >     allowing any concurrent users to destroy it on last put) instead of
> >     trying to update it in place.
> >     
> >     Otherwise someone referencing the ip_map we're modifying here could try
> >     to use the m_client just as we're putting the last reference.
> >     
> >     The bug should only be seen by users of the legacy nfsd interfaces.
> >     
> >     Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx>
> > 
> > diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
> > index a04ac91..59a7c52 100644
> > --- a/net/sunrpc/svcauth_unix.c
> > +++ b/net/sunrpc/svcauth_unix.c
> > @@ -401,8 +401,7 @@ struct auth_domain *auth_unix_lookup(struct net *net, struct in6_addr *addr)
> >  		return NULL;
> >  
> >  	if ((ipm->m_client->addr_changes - ipm->m_add_change) >0) {
> > -		if (test_and_set_bit(CACHE_NEGATIVE, &ipm->h.flags) == 0)
> > -			auth_domain_put(&ipm->m_client->h);
> > +		sunrpc_invalidate(&ipm->h, sn->ip_map_cache);
> >  		rv = NULL;
> >  	} else {
> >  		rv = &ipm->m_client->h;
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux