diff options
author | Anand V. Avati <avati@gluster.com> | 2009-10-22 06:24:52 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-11-09 16:22:44 -0800 |
commit | 82d2d504aeaad7ada524e9e3bfd8eede3ca2bf15 (patch) | |
tree | 5d32624178490a1b34d47c7c34498e37d88f72b8 | |
parent | 15076d40b0ce2e04cf383425a5a26e01f53b2aee (diff) | |
download | lwn-82d2d504aeaad7ada524e9e3bfd8eede3ca2bf15.tar.gz lwn-82d2d504aeaad7ada524e9e3bfd8eede3ca2bf15.zip |
fuse: prevent fuse_put_request on invalid pointer
commit f60311d5f7670d9539b424e4ed8b5c0872fc9e83 upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | fs/fuse/file.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index cbc464043b6f..f47c6c13cd97 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, break; } } - fuse_put_request(fc, req); + if (!IS_ERR(req)) + fuse_put_request(fc, req); if (res > 0) *ppos = pos; |