exofs: Fix bio leak in error handling path (sync read)
authorBoaz Harrosh <bharrosh@panasas.com>
Mon, 8 Jun 2009 16:28:41 +0000 (19:28 +0300)
committerBoaz Harrosh <bharrosh@panasas.com>
Sun, 21 Jun 2009 14:53:44 +0000 (17:53 +0300)
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>
fs/exofs/inode.c

index 77d0a29..bb5d6ed 100644 (file)
@@ -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);