| From 5ba4a25ab7b13be528b23f85182f4d09cf7f71ad Mon Sep 17 00:00:00 2001 |
| From: "J. Bruce Fields" <bfields@redhat.com> |
| Date: Fri, 3 Apr 2015 16:24:27 -0400 |
| Subject: nfsd4: disallow ALLOCATE with special stateids |
| |
| From: "J. Bruce Fields" <bfields@redhat.com> |
| |
| commit 5ba4a25ab7b13be528b23f85182f4d09cf7f71ad upstream. |
| |
| vfs_fallocate will hit a NULL dereference if the client tries an |
| ALLOCATE or DEALLOCATE with a special stateid. Fix that. (We also |
| depend on the open to have broken any conflicting leases or delegations |
| for us.) |
| |
| (If it turns out we need to allow special stateid's then we could do a |
| temporary open here in the special-stateid case, as we do for read and |
| write. For now I'm assuming it's not necessary.) |
| |
| Fixes: 95d871f03cae "nfsd: Add ALLOCATE support" |
| Cc: Anna Schumaker <Anna.Schumaker@Netapp.com> |
| Signed-off-by: J. Bruce Fields <bfields@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfsd/nfs4proc.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/fs/nfsd/nfs4proc.c |
| +++ b/fs/nfsd/nfs4proc.c |
| @@ -1030,6 +1030,8 @@ nfsd4_fallocate(struct svc_rqst *rqstp, |
| dprintk("NFSD: nfsd4_fallocate: couldn't process stateid!\n"); |
| return status; |
| } |
| + if (!file) |
| + return nfserr_bad_stateid; |
| |
| status = nfsd4_vfs_fallocate(rqstp, &cstate->current_fh, file, |
| fallocate->falloc_offset, |