Files
Linux/fs/lockd
NeilBrown 4a9be28c45 NFS: fix mount/umount race in nlmclnt.
If the last NFSv3 unmount from a given host races with a mount from the
same host, we can destroy an nlm_host that is still in use.

Specifically nlmclnt_lookup_host() can increment h_count on
an nlm_host that nlmclnt_release_host() has just successfully called
refcount_dec_and_test() on.
Once nlmclnt_lookup_host() drops the mutex, nlm_destroy_host_lock()
will be called to destroy the nlmclnt which is now in use again.

The cause of the problem is that the dec_and_test happens outside the
locked region.  This is easily fixed by using
refcount_dec_and_mutex_lock().

Fixes: 8ea6ecc8b0 ("lockd: Create client-side nlm_host cache")
Cc: [email protected] (v2.6.38+)
Signed-off-by: NeilBrown <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
2019-03-18 22:39:34 -04:00
..
2019-02-13 11:53:45 -05:00
2019-02-13 11:53:45 -05:00
2019-03-18 22:39:34 -04:00