Explorar o código

mtd: ubi: don't leak e if schedule_erase() fails

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>
Sebastian Siewior %!s(int64=9) %!d(string=hai) anos
pai
achega
6b238de189
Modificáronse 1 ficheiros con 1 adicións e 0 borrados
  1. 1 0
      drivers/mtd/ubi/wl.c

+ 1 - 0
drivers/mtd/ubi/wl.c

@@ -1060,6 +1060,7 @@ static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk)
 		/* Re-schedule the LEB for erasure */
 		/* Re-schedule the LEB for erasure */
 		err1 = schedule_erase(ubi, e, vol_id, lnum, 0);
 		err1 = schedule_erase(ubi, e, vol_id, lnum, 0);
 		if (err1) {
 		if (err1) {
+			wl_entry_destroy(ubi, e);
 			err = err1;
 			err = err1;
 			goto out_ro;
 			goto out_ro;
 		}
 		}