This removes check for non-null inode before calling iput(), and uses
iov_length() to calculate number of bytes in iovec.

Signed-off-by: Miklos Szeredi <[EMAIL PROTECTED]>

 dev.c |   30 +++++++++---------------------
 1 files changed, 9 insertions(+), 21 deletions(-)

diff -ru linux-2.6.12-rc1-mm2/fs/fuse/dev.c linux-fuse/fs/fuse/dev.c
--- linux-2.6.12-rc1-mm2/fs/fuse/dev.c  2005-03-24 18:46:37.000000000 +0100
+++ linux-fuse/fs/fuse/dev.c    2005-03-24 18:49:04.000000000 +0100
@@ -142,10 +142,8 @@
 
 void fuse_release_background(struct fuse_req *req)
 {
-       if (req->inode)
-               iput(req->inode);
-       if (req->inode2)
-               iput(req->inode2);
+       iput(req->inode);
+       iput(req->inode2);
        if (req->file)
                fput(req->file);
        spin_lock(&fuse_lock);
@@ -397,24 +395,15 @@
        unsigned len;
 };
 
-static unsigned fuse_copy_init(struct fuse_copy_state *cs, int write,
-                              struct fuse_req *req, const struct iovec *iov,
-                              unsigned long nr_segs)
+static void fuse_copy_init(struct fuse_copy_state *cs, int write,
+                          struct fuse_req *req, const struct iovec *iov,
+                          unsigned long nr_segs)
 {
-       unsigned i;
-       unsigned nbytes;
-
        memset(cs, 0, sizeof(*cs));
        cs->write = write;
        cs->req = req;
        cs->iov = iov;
        cs->nr_segs = nr_segs;
-
-       nbytes = 0;
-       for (i = 0; i < nr_segs; i++)
-               nbytes += iov[i].iov_len;
-
-       return nbytes;
 }
 
 static inline void fuse_copy_finish(struct fuse_copy_state *cs)
@@ -578,7 +567,6 @@
        struct fuse_req *req;
        struct fuse_in *in;
        struct fuse_copy_state cs;
-       unsigned nbytes;
        unsigned reqsize;
 
        spin_lock(&fuse_lock);
@@ -600,9 +588,9 @@
 
        in = &req->in;
        reqsize = req->in.h.len;
-       nbytes = fuse_copy_init(&cs, 1, req, iov, nr_segs);
+       fuse_copy_init(&cs, 1, req, iov, nr_segs);
        err = -EINVAL;
-       if (nbytes >= reqsize) {
+       if (iov_length(iov, nr_segs) >= reqsize) {
                err = fuse_copy_one(&cs, &in->h, sizeof(in->h));
                if (!err)
                        err = fuse_copy_args(&cs, in->numargs, in->argpages,
@@ -683,7 +671,7 @@
                               unsigned long nr_segs, loff_t *off)
 {
        int err;
-       unsigned nbytes;
+       unsigned nbytes = iov_length(iov, nr_segs);
        struct fuse_req *req;
        struct fuse_out_header oh;
        struct fuse_copy_state cs;
@@ -691,7 +679,7 @@
        if (!fc)
                return -ENODEV;
 
-       nbytes = fuse_copy_init(&cs, 0, NULL, iov, nr_segs);
+       fuse_copy_init(&cs, 0, NULL, iov, nr_segs);
        if (nbytes < sizeof(struct fuse_out_header))
                return -EINVAL;
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to