md/bitmap: protect against bitmap removal while being updated.
authorNeilBrown <neilb@suse.de>
Mon, 14 Dec 2009 01:49:46 +0000 (12:49 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 14 Dec 2009 01:49:46 +0000 (12:49 +1100)
commitaa5cbd103887011b4830355f88fb055f9ad2d556
tree92ef7c80999c6d0bfc6fef9a9cd3e4a75ee16c06
parentf40542532e96dda5506eb76badea322f2ae4731c
md/bitmap: protect against bitmap removal while being updated.

A write intent bitmap can be removed from an array while the
array is active.
When this happens, all IO is suspended and flushed before the
bitmap is removed.
However it is possible that bitmap_daemon_work is still running to
clear old bits from the bitmap.  If it is, it can dereference the
bitmap after it has been freed.

So introduce a new mutex to protect bitmap_daemon_work and get it
before destroying a bitmap.

This is suitable for any current -stable kernel.

Signed-off-by: NeilBrown <neilb@suse.de>
Cc: stable@kernel.org
drivers/md/bitmap.c
drivers/md/bitmap.h
drivers/md/md.c
drivers/md/md.h