public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: Andrew Morton <akpm@osdl.org>
Cc: nfs@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: [PATCH 013 of 14] knfsd: nfsd: mark rqstp to prevent use of sendfile in privacy case
Date: Tue, 27 Jun 2006 17:20:43 +1000	[thread overview]
Message-ID: <1060627072043.26745@suse.de> (raw)
In-Reply-To: 20060627171533.26405.patches@notabene

From: J. Bruce Fields <bfields@citi.umich.edu>


Add a rq_sendfile_ok flag to svc_rqst which will be cleared in the privacy
case so that the wrapping code will get copies of the read data instead of
real page cache pages.  This makes life simpler when we encrypt the
response.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

### Diffstat output
 ./fs/nfsd/vfs.c              |    2 +-
 ./include/linux/sunrpc/svc.h |    4 +++-
 ./net/sunrpc/svc.c           |    2 ++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff .prev/fs/nfsd/vfs.c ./fs/nfsd/vfs.c
--- .prev/fs/nfsd/vfs.c	2006-06-27 15:04:03.000000000 +1000
+++ ./fs/nfsd/vfs.c	2006-06-27 15:07:01.000000000 +1000
@@ -840,7 +840,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, st
 	if (ra && ra->p_set)
 		file->f_ra = ra->p_ra;
 
-	if (file->f_op->sendfile) {
+	if (file->f_op->sendfile && rqstp->rq_sendfile_ok) {
 		svc_pushback_unused_pages(rqstp);
 		err = file->f_op->sendfile(file, &offset, *count,
 						 nfsd_read_actor, rqstp);

diff .prev/include/linux/sunrpc/svc.h ./include/linux/sunrpc/svc.h
--- .prev/include/linux/sunrpc/svc.h	2006-06-27 15:07:01.000000000 +1000
+++ ./include/linux/sunrpc/svc.h	2006-06-27 15:07:01.000000000 +1000
@@ -159,7 +159,9 @@ struct svc_rqst {
 						 * determine what device number
 						 * to report (real or virtual)
 						 */
-
+	int			rq_sendfile_ok; /* turned off in gss privacy
+						 * to prevent encrypting page
+						 * cache pages */
 	wait_queue_head_t	rq_wait;	/* synchronization */
 };
 

diff .prev/net/sunrpc/svc.c ./net/sunrpc/svc.c
--- .prev/net/sunrpc/svc.c	2006-06-27 15:07:01.000000000 +1000
+++ ./net/sunrpc/svc.c	2006-06-27 15:07:01.000000000 +1000
@@ -281,6 +281,8 @@ svc_process(struct svc_serv *serv, struc
 	rqstp->rq_res.page_len = 0;
 	rqstp->rq_res.buflen = PAGE_SIZE;
 	rqstp->rq_res.tail[0].iov_len = 0;
+	/* Will be turned off only in gss privacy case: */
+	rqstp->rq_sendfile_ok = 1;
 	/* tcp needs a space for the record length... */
 	if (rqstp->rq_prot == IPPROTO_TCP)
 		svc_putu32(resv, 0);

  parent reply	other threads:[~2006-06-27  7:21 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-27  7:19 [PATCH 000 of 14] knfsd: Introduction NeilBrown
2006-06-27  7:19 ` [PATCH 001 of 14] knfsd: Improve the test for cross-device-rename in nfsd NeilBrown
2006-06-27  7:19 ` [PATCH 002 of 14] knfsd: Fixing missing 'expkey' support for fsid type 3 NeilBrown
2006-06-27  7:19 ` [PATCH 003 of 14] knfsd: Remove noise about filehandle being uptodate NeilBrown
2006-06-27  7:19 ` [PATCH 004 of 14] knfsd: Ignore ref_fh when crossing a mountpoint NeilBrown
2006-06-27  7:20 ` [PATCH 005 of 14] knfsd: nfsd4: fix open_confirm locking NeilBrown
2006-06-27  7:20 ` [PATCH 006 of 14] knfsd: nfsd: call nfsd_setuser() on fh_compose(), fix nfsd4 permissions problem NeilBrown
2006-06-27  7:20 ` [PATCH 007 of 14] knfsd: nfsd4: remove superfluous grace period checks NeilBrown
2006-06-27  7:20 ` [PATCH 008 of 14] knfsd: nfsd: fix misplaced fh_unlock() in nfsd_link() NeilBrown
2006-06-27  7:20 ` [PATCH 009 of 14] knfsd: svcrpc: gss: simplify rsc_parse() NeilBrown
2006-06-27  7:20 ` [PATCH 010 of 14] knfsd: nfsd4: fix some open argument tests NeilBrown
2006-06-27  7:20 ` [PATCH 011 of 14] knfsd: nfsd4: fix open flag passing NeilBrown
2006-06-27  7:20 ` [PATCH 012 of 14] knfsd: svcrpc: Simplify nfsd rpcsec_gss integrity code NeilBrown
2006-06-27  7:20 ` NeilBrown [this message]
2006-06-27  7:20 ` [PATCH 014 of 14] knfsd: svcrpc: gss: server-side implementation of rpcsec_gss privacy NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1060627072043.26745@suse.de \
    --to=neilb@suse.de \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nfs@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox