UBI: fix attaching error path
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Tue, 12 Jan 2010 10:26:42 +0000 (12:26 +0200)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 1 Feb 2010 13:16:36 +0000 (15:16 +0200)
commit0bf1c4399afee6a2031b0ee943a4c016e53f727c
treec5d7a62b2c965e65a42f17f6206c28f3c4e57a81
parentf9b0080e10e0ce3b8acbe91ae6a50da4f2ed7339
UBI: fix attaching error path

In the error path of 'ubi_attach_mtd_dev()' we have a tricky situation:
we have to release things differently depending on at which point
the failure happening. Namely, if @ubi->dev is not initialized, we have
to free everything ourselves. But if it was, we should not free the @ubi
object, because it will be freed in the 'dev_release()' function. And
we did not get this situation right.

This patch introduces additional argument to the 'uif_init()' function.
On exit, this argument indicates whether the final 'free(ubi)' will
happen in 'dev_release()' or not. So the caller always knows how to
properly release the resources.

Impact: all memory is now correctly released when UBI fails to attach
        an MTD device.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
drivers/mtd/ubi/build.c