[PATCH] jffs2: memory leak in jffs2_scan_medium()
authorFlorin Malita <fmalita@gmail.com>
Mon, 15 May 2006 22:42:31 +0000 (23:42 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Mon, 15 May 2006 22:42:31 +0000 (23:42 +0100)
If jffs2_scan_eraseblock() fails and the exit path is taken, 's' is not
being deallocated.

Reported by Coverity, CID: 1258.

Signed-off-by: Florin Malita <fmalita@gmail.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
fs/jffs2/scan.c

index cf55b221fc2b7dc86d9778a4c6d5c02a38fdbb70..eca0996def6069f6805bc997d9b166b16d178911 100644 (file)
@@ -222,9 +222,6 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
                }
        }
 
-       if (jffs2_sum_active() && s)
-               kfree(s);
-
        /* Nextblock dirty is always seen as wasted, because we cannot recycle it now */
        if (c->nextblock && (c->nextblock->dirty_size)) {
                c->nextblock->wasted_size += c->nextblock->dirty_size;
@@ -266,6 +263,9 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
        else
                c->mtd->unpoint(c->mtd, flashbuf, 0, c->mtd->size);
 #endif
+       if (s)
+               kfree(s);
+
        return ret;
 }