Messages in this thread | | | Date | Wed, 27 Oct 2010 04:39:24 -0400 | From | Christoph Hellwig <> | Subject | Re: nfsd changes for 2.6.37 |
| |
> If you don't hold lock_flocks throughout fcntl_setlease, the flp variable > points to a flock that may get modified by another thread and you call > time_out_leases() without holding lock_flocks, which it requires. > > The two alternatives I can see are to either use GFP_ATOMIC or to > take the lock inside of generic_setlease and drop it outside. > Neither of the two sounds particularly appealing.
Do locks_alloc_lock and initialization of the heap struct file_lock in the caller. This also avoids an entirely useless copy of the lock structure. free the passed in structure if we are modifying an existing lock structure.
| |