From a2c5e56bc066ba01b5f17e528b92c4d878226b25 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 19 Oct 2004 22:01:21 +0000 Subject: fix --- kernel/dev.c | 8 +++----- kernel/file.c | 10 +++++++++- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'kernel') diff --git a/kernel/dev.c b/kernel/dev.c index ac856cb..c783ead 100644 --- a/kernel/dev.c +++ b/kernel/dev.c @@ -121,6 +121,9 @@ static struct fuse_req *do_get_request(struct fuse_conn *fc) list_del_init(&req->list); spin_unlock(&fuse_lock); fuse_reset_request(req); + req->in.h.uid = current->fsuid; + req->in.h.gid = current->fsgid; + req->in.h.pid = current->pid; return req; } @@ -132,9 +135,6 @@ struct fuse_req *fuse_get_request(struct fuse_conn *fc) return NULL; req = do_get_request(fc); - req->in.h.uid = current->fsuid; - req->in.h.gid = current->fsgid; - req->in.h.pid = current->pid; return req; } @@ -146,8 +146,6 @@ struct fuse_req *fuse_get_request_nonblock(struct fuse_conn *fc) return NULL; req = do_get_request(fc); - req->in.h.uid = current->fsuid; - req->in.h.gid = current->fsgid; return req; } diff --git a/kernel/file.c b/kernel/file.c index ec2e40c..91fd07b 100644 --- a/kernel/file.c +++ b/kernel/file.c @@ -598,6 +598,11 @@ static ssize_t fuse_send_write(struct fuse_req *req, int writepage, inarg.size = count; req->in.h.opcode = FUSE_WRITE; req->in.h.ino = inode->i_ino; + if (writepage) { + req->in.h.uid = 0; + req->in.h.gid = 0; + req->in.h.pid = 0; + } req->in.numargs = 2; req->in.args[0].size = sizeof(inarg); req->in.args[0].value = &inarg; @@ -740,7 +745,7 @@ static void send_write_nonblock(struct fuse_req *req, struct inode *inode, struct fuse_write_in *inarg; struct fuse_file *ff; char *buffer; - + BUG_ON(list_empty(&fi->write_files)); ff = list_entry(fi->write_files.next, struct fuse_file, ff_list); @@ -752,6 +757,9 @@ static void send_write_nonblock(struct fuse_req *req, struct inode *inode, inarg->size = count; req->in.h.opcode = FUSE_WRITE; req->in.h.ino = inode->i_ino; + req->in.h.uid = 0; + req->in.h.gid = 0; + req->in.h.pid = 0; req->in.numargs = 2; req->in.args[0].size = sizeof(struct fuse_write_in); req->in.args[0].value = inarg; -- cgit v1.2.3