md/bitmap: protect against bitmap removal while being updated.
commitf1416ea0278b4bb6629d160e81e61ef8b6bffb4a
authorNeilBrown <neilb@suse.de>
Mon, 14 Dec 2009 01:49:46 +0000 (14 12:49 +1100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 18 Dec 2009 22:04:11 +0000 (18 14:04 -0800)
tree39b10d44c8d8f157f78af24689459e5a1cb55ee0
parente4f676cea796e170fcd8561c8e2a234724d05f35
md/bitmap: protect against bitmap removal while being updated.

commit aa5cbd103887011b4830355f88fb055f9ad2d556 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/md/bitmap.c
drivers/md/bitmap.h
drivers/md/md.c
drivers/md/md.h