-
- Downloads
nfs_common: fix race in NFS calls to nfsd_file_put_local() and nfsd_serv_put()
Add nfs_to_nfsd_file_put_local() interface to fix race with nfsd module unload. Similarly, use RCU around nfs_open_local_fh()'s error path call to nfs_to->nfsd_serv_put(). Holding RCU ensures that NFS will safely _call and return_ from its nfs_to calls into the NFSD functions nfsd_file_put_local() and nfsd_serv_put(). Otherwise, if RCU isn't used then there is a narrow window when NFS's reference for the nfsd_file and nfsd_serv are dropped and the NFSD module could be unloaded, which could result in a crash from the return instruction for either nfs_to->nfsd_file_put_local() or nfs_to->nfsd_serv_put(). Reported-by:NeilBrown <neilb@suse.de> Signed-off-by:
Mike Snitzer <snitzer@kernel.org> Signed-off-by:
Anna Schumaker <anna.schumaker@oracle.com>
Showing
- fs/nfs/localio.c 3 additions, 3 deletionsfs/nfs/localio.c
- fs/nfs_common/nfslocalio.c 4 additions, 1 deletionfs/nfs_common/nfslocalio.c
- fs/nfsd/filecache.c 1 addition, 1 deletionfs/nfsd/filecache.c
- fs/nfsd/localio.c 1 addition, 1 deletionfs/nfsd/localio.c
- fs/nfsd/nfssvc.c 2 additions, 2 deletionsfs/nfsd/nfssvc.c
- include/linux/nfslocalio.h 15 additions, 0 deletionsinclude/linux/nfslocalio.h
Loading
Please register or sign in to comment