| From 980608fb50aea34993ba956b71cd4602aa42b14b Mon Sep 17 00:00:00 2001 |
| From: "J. Bruce Fields" <bfields@redhat.com> |
| Date: Tue, 21 Apr 2015 15:25:39 -0400 |
| Subject: nfsd4: disallow SEEK with special stateids |
| |
| From: "J. Bruce Fields" <bfields@redhat.com> |
| |
| commit 980608fb50aea34993ba956b71cd4602aa42b14b upstream. |
| |
| If the client uses a special stateid then we'll pass a NULL file to |
| vfs_llseek. |
| |
| Fixes: 24bab491220f " NFSD: Implement SEEK" |
| Cc: Anna Schumaker <Anna.Schumaker@Netapp.com> |
| Reported-by: Christoph Hellwig <hch@infradead.org> |
| 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 |
| @@ -1071,6 +1071,8 @@ nfsd4_seek(struct svc_rqst *rqstp, struc |
| dprintk("NFSD: nfsd4_seek: couldn't process stateid!\n"); |
| return status; |
| } |
| + if (!file) |
| + return nfserr_bad_stateid; |
| |
| switch (seek->seek_whence) { |
| case NFS4_CONTENT_DATA: |