mtd: ubi: don't leak e if schedule_erase() fails
authorSebastian Siewior <bigeasy@linutronix.de>
Thu, 26 Nov 2015 20:23:49 +0000 (21:23 +0100)
committerRichard Weinberger <richard@nod.at>
Wed, 16 Dec 2015 21:59:03 +0000 (22:59 +0100)
If __erase_worker() fails to erase the EB and schedule_erase() fails as
well to do anything about it then we go RO. But that is not a reason to
leak the e argument here. Therefore clean up e.

Cc: <stable@vger.kernel.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/wl.c

index f73233fa737ca54d6efb012fbfbecf5b6ae50bef..56065632a5b85ebf50022f883e1edc968a069f93 100644 (file)
@@ -1060,6 +1060,7 @@ static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk)
                /* Re-schedule the LEB for erasure */
                err1 = schedule_erase(ubi, e, vol_id, lnum, 0);
                if (err1) {
+                       wl_entry_destroy(ubi, e);
                        err = err1;
                        goto out_ro;
                }
This page took 0.026575 seconds and 5 git commands to generate.