ubi: fastmap: Cancel work upon detach
authorRichard Weinberger <richard@nod.at>
Wed, 16 May 2018 20:17:03 +0000 (22:17 +0200)
committerRichard Weinberger <richard@nod.at>
Thu, 7 Jun 2018 13:53:16 +0000 (15:53 +0200)
commit6e7d80161066c99d12580d1b985cb1408bb58cf1
tree20827b14ca72bcc2e3be5d4c8496b1fb348395e3
parente1db654d8e326173a1c1a0194185250340cab03c
ubi: fastmap: Cancel work upon detach

Ben Hutchings pointed out that 29b7a6fa1ec0 ("ubi: fastmap: Don't flush
fastmap work on detach") does not really fix the problem, it just
reduces the risk to hit the race window where fastmap work races against
free()'ing ubi->volumes[].

The correct approach is making sure that no more fastmap work is in
progress before we free ubi data structures.
So we cancel fastmap work right after the ubi background thread is
stopped.
By setting ubi->thread_enabled to zero we make sure that no further work
tries to wake the thread.

Fixes: 29b7a6fa1ec0 ("ubi: fastmap: Don't flush fastmap work on detach")
Fixes: 74cdaf24004a ("UBI: Fastmap: Fix memory leaks while closing the WL sub-system")
Cc: stable@vger.kernel.org
Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
Cc: Martin Townsend <mtownsend1973@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/build.c
drivers/mtd/ubi/wl.c