diff options
author | Boaz Harrosh <bharrosh@panasas.com> | 2009-06-08 19:28:41 +0300 |
---|---|---|
committer | Boaz Harrosh <bharrosh@panasas.com> | 2009-06-21 17:53:44 +0300 |
commit | b76a3f93d01fc93a87cb6eba4e854ffe378b4bac (patch) | |
tree | 528b1a401be9b188cebf59850c2215d7260929aa /fs/exofs/inode.c | |
parent | c277331d5fbaae5772ed19862feefa91f4e477d3 (diff) | |
download | linux-b76a3f93d01fc93a87cb6eba4e854ffe378b4bac.tar.gz linux-b76a3f93d01fc93a87cb6eba4e854ffe378b4bac.tar.bz2 linux-b76a3f93d01fc93a87cb6eba4e854ffe378b4bac.zip |
exofs: Fix bio leak in error handling path (sync read)
When failing a read request in the sync path, called from
write_begin, I forgot to free the allocated bio, fix it.
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Diffstat (limited to 'fs/exofs/inode.c')
-rw-r--r-- | fs/exofs/inode.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c index 77d0a295eb1c..bb5d6ed0f7a8 100644 --- a/fs/exofs/inode.c +++ b/fs/exofs/inode.c @@ -295,6 +295,9 @@ static int read_exec(struct page_collect *pcol, bool is_sync) err: if (!is_sync) _unlock_pcol_pages(pcol, ret, READ); + else /* Pages unlocked by caller in sync mode only free bio */ + pcol_free(pcol); + kfree(pcol_copy); if (or) osd_end_request(or); |