From: Boaz Harrosh Date: Fri, 30 Nov 2012 14:03:31 +0000 (+0200) Subject: exofs: don't leak io_state and pages on read error X-Git-Tag: upstream/snapshot3+hdmi~6027^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=861d66601acda6d7a2038fb3c95f68009128003a;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git exofs: don't leak io_state and pages on read error Same bug as fixed by Idan for write_exec was in read_exec. Fix the io_state leak and pages state on read error. Also while at it: The if (!pcol->read_4_write) at the error path is redundant because all goto err; are after the if (pcol->read_4_write) bale out. Signed-off-by: Boaz Harrosh --- diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c index 1634b94..d1f80ab 100644 --- a/fs/exofs/inode.c +++ b/fs/exofs/inode.c @@ -361,12 +361,12 @@ static int read_exec(struct page_collect *pcol) return 0; err: - if (!pcol->read_4_write) - _unlock_pcol_pages(pcol, ret, READ); - - pcol_free(pcol); - + if (!pcol_copy) /* Failed before ownership transfer */ + pcol_copy = pcol; + _unlock_pcol_pages(pcol_copy, ret, READ); + pcol_free(pcol_copy); kfree(pcol_copy); + return ret; }