Patch "nfsd4: fix READ permission checking" has been added to the 3.19-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nfsd4: fix READ permission checking
to the 3.19-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nfsd4-fix-read-permission-checking.patch
and it can be found in the queue-3.19 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
6e4891dc289cd191d46ab7ba1dcb29646644f9caMon Sep 17 00:00:00 2001
From: "J. Bruce Fields" <[email protected]>
Date: Fri, 3 Apr 2015 17:19:41 -0400
Subject: nfsd4: fix READ permission checking
From: "J. Bruce Fields" <[email protected]>
commit 6e4891dc289cd191d46ab7ba1dcb29646644f9ca upstream.
In the case we already have a struct file (derived from a stateid), we still need to do permission-checking; otherwise an unauthorized user could gain access to a file by sniffing or guessing somebody else's stateid.
--- fs/nfsd/nfs4xdr.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
fs/nfsd/nfs4xdr.c +8 -4
@@ -3246,6 +3246,7 @@ nfsd4_encode_read(struct nfsd4_compoundrunsigned long maxcount;struct xdr_stream *xdr = &resp->xdr;struct file *file = read->rd_filp; +struct svc_fh *fhp = read->rd_fhp;int starting_len = xdr->buf->len;struct raparms *ra;__be32 *p;
@@ -3269,12 +3270,15 @@ nfsd4_encode_read(struct nfsd4_compoundr maxcount = min_t(unsigned long, maxcount, (xdr->buf->buflen - xdr->buf->len)); maxcount = min_t(unsigned long, maxcount, read->rd_length); -if (!read->rd_filp) { +if (read->rd_filp) + err =nfsd_permission (resp->rqstp, fhp->fh_export, + fhp->fh_dentry, +NFSD_MAY_READ |NFSD_MAY_OWNER_OVERRIDE ); +else err =nfsd_get_tmp_read_open (resp->rqstp, read->rd_fhp, &file, &ra); -if (err) - goto err_truncate; - } +if (err) + goto err_truncate;if (file->f_op->splice_read &&test_bit (RQ_SPLICE_OK , &resp->rqstp->rq_flags)) err =nfsd4_encode_splice_read (resp, read, file, maxcount);
Patches currently in stable-queue which might be from [email protected] are
queue-3.19/nfsd4-disallow-seek-with-special-stateids.patch queue-3.19/nfsd-eliminate-nfsd_debug.patch queue-3.19/nfsd4-fix-read-permission-checking.patch queue-3.19/nfsd4-disallow-allocate-with-special-stateids.patch