UBI: fix oops in error path
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Wed, 18 May 2011 15:08:05 +0000 (18:08 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Wed, 1 Jun 2011 08:23:12 +0000 (11:23 +0300)
This patch fixes an oops in the error path of 'ubi_attach_mtd_dev()'. If
anything after 'uif_init()' fails, we get an oops in 'cancel_pending()'. The
reason is that 'uif_close()' drops the last reference count for 'ubi->dev' and
whole 'struct ubi_device' is freed. And then
'ubi_wl_close()'->'cancel_pending()' tries to access the 'ubi' pointer and
problems begin.

Note, in 'ubi_detach_mtd_dev()' function we get a device reference to
work-around this issue. Do the same in the error path of
'ubi_attach_mtd_dev()'.

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

Simple merge