Message ID | 1414586758-9972-7-git-send-email-richard@nod.at |
---|---|
State | Superseded |
Headers | show |
On Wed, 2014-10-29 at 13:45 +0100, Richard Weinberger wrote: > ...otherwise the deferred work might run after datastructures > got freed and corrupt memory. > > Signed-off-by: Richard Weinberger <richard@nod.at> > --- > drivers/mtd/ubi/wl.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c > index bd2e8d5..a06e31e 100644 > --- a/drivers/mtd/ubi/wl.c > +++ b/drivers/mtd/ubi/wl.c > @@ -2047,6 +2047,9 @@ static void protection_queue_destroy(struct ubi_device *ubi) > void ubi_wl_close(struct ubi_device *ubi) > { > dbg_wl("close the WL sub-system"); > +#ifdef CONFIG_MTD_UBI_FASTMAP > + flush_work(&ubi->fm_work); > +#endif I see in patch 35 you introduced the init function. Could you please introduce fastmap init/close functions earlier, and add this line to the fastmap close function instead of adding yet another ifdef to wl.c.
Am 05.11.2014 um 16:45 schrieb Artem Bityutskiy: > On Wed, 2014-10-29 at 13:45 +0100, Richard Weinberger wrote: >> ...otherwise the deferred work might run after datastructures >> got freed and corrupt memory. >> >> Signed-off-by: Richard Weinberger <richard@nod.at> >> --- >> drivers/mtd/ubi/wl.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c >> index bd2e8d5..a06e31e 100644 >> --- a/drivers/mtd/ubi/wl.c >> +++ b/drivers/mtd/ubi/wl.c >> @@ -2047,6 +2047,9 @@ static void protection_queue_destroy(struct ubi_device *ubi) >> void ubi_wl_close(struct ubi_device *ubi) >> { >> dbg_wl("close the WL sub-system"); >> +#ifdef CONFIG_MTD_UBI_FASTMAP >> + flush_work(&ubi->fm_work); >> +#endif > > I see in patch 35 you introduced the init function. Could you please > introduce fastmap init/close functions earlier, and add this line to the > fastmap close function instead of adding yet another ifdef to wl.c. If you want I can rebase. I did all fixes first and then the cleanups. Thanks, //richard
On Wed, 2014-11-05 at 16:49 +0100, Richard Weinberger wrote: > If you want I can rebase. That would be very helpful. > I did all fixes first and then the cleanups. Well, the first patch adds debugging stuff - not exactly a fix ;-)
Am 05.11.2014 um 16:54 schrieb Artem Bityutskiy: > On Wed, 2014-11-05 at 16:49 +0100, Richard Weinberger wrote: >> If you want I can rebase. > > That would be very helpful. > >> I did all fixes first and then the cleanups. > > Well, the first patch adds debugging stuff - not exactly a fix ;-) Let's name it robustness stuff. ;) Seriously, I did first all fixes and the code cleanups later to make it easy for others to backport these fixes. Thanks, //richard
On Wed, 2014-11-05 at 16:59 +0100, Richard Weinberger wrote: > Am 05.11.2014 um 16:54 schrieb Artem Bityutskiy: > > On Wed, 2014-11-05 at 16:49 +0100, Richard Weinberger wrote: > >> If you want I can rebase. > > > > That would be very helpful. > > > >> I did all fixes first and then the cleanups. > > > > Well, the first patch adds debugging stuff - not exactly a fix ;-) > > Let's name it robustness stuff. ;) > Seriously, I did first all fixes and the code cleanups later to make > it easy for others to backport these fixes. Less back-porting efforts is a good goal. But then the robustness patch should also come later, I think.
diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c index bd2e8d5..a06e31e 100644 --- a/drivers/mtd/ubi/wl.c +++ b/drivers/mtd/ubi/wl.c @@ -2047,6 +2047,9 @@ static void protection_queue_destroy(struct ubi_device *ubi) void ubi_wl_close(struct ubi_device *ubi) { dbg_wl("close the WL sub-system"); +#ifdef CONFIG_MTD_UBI_FASTMAP + flush_work(&ubi->fm_work); +#endif shutdown_work(ubi); protection_queue_destroy(ubi); tree_destroy(&ubi->used);
...otherwise the deferred work might run after datastructures got freed and corrupt memory. Signed-off-by: Richard Weinberger <richard@nod.at> --- drivers/mtd/ubi/wl.c | 3 +++ 1 file changed, 3 insertions(+)