Re: nfsd changes for 2.6.37

Christoph Hellwig
2010-10-27T08:39:34Z

> 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.