aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAnand V. Avati <avati@gluster.com>2009-10-22 09:24:52 -0400
committerMiklos Szeredi <mszeredi@suse.cz>2009-11-04 04:24:50 -0500
commitf60311d5f7670d9539b424e4ed8b5c0872fc9e83 (patch)
treee4289854a25f4640308532726deceb7d6ac293ed /fs
parentb419148e567728f6af0c3b01965c1cc141e3e13a (diff)
fuse: prevent fuse_put_request on invalid pointer
fuse_direct_io() has a loop where requests are allocated in each iteration. if allocation fails, the loop is broken out and follows into an unconditional fuse_put_request() on that invalid pointer. Signed-off-by: Anand V. Avati <avati@gluster.com> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Cc: stable@kernel.org
Diffstat (limited to 'fs')
-rw-r--r--fs/fuse/file.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index a3492f7d207c..5887a6395ad2 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1063,7 +1063,8 @@ ssize_t fuse_direct_io(struct file *file, const char __user *buf,
1063 break; 1063 break;
1064 } 1064 }
1065 } 1065 }
1066 fuse_put_request(fc, req); 1066 if (!IS_ERR(req))
1067 fuse_put_request(fc, req);
1067 if (res > 0) 1068 if (res > 0)
1068 *ppos = pos; 1069 *ppos = pos;
1069 1070