From: NeilBrown Date: Thu, 1 Oct 2015 06:03:38 +0000 (+1000) Subject: md/bitmap: don't pass -1 to bitmap_storage_alloc. X-Git-Tag: v4.1.11~18 X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=583c46f9ce3818c85da204eeb19adfe1d4ea860a;p=linux md/bitmap: don't pass -1 to bitmap_storage_alloc. commit da6fb7a9e5bd6f04f7e15070f630bdf1ea502841 upstream. Passing -1 to bitmap_storage_alloc() causes page->index to be set to -1, which is quite problematic. So only pass ->cluster_slot if mddev_is_clustered(). Fixes: b97e92574c0b ("Use separate bitmaps for each nodes in the cluster") Signed-off-by: NeilBrown Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index c90118e90708..a7621a258936 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c @@ -2000,7 +2000,8 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks, if (bitmap->mddev->bitmap_info.offset || bitmap->mddev->bitmap_info.file) ret = bitmap_storage_alloc(&store, chunks, !bitmap->mddev->bitmap_info.external, - bitmap->cluster_slot); + mddev_is_clustered(bitmap->mddev) + ? bitmap->cluster_slot : 0); if (ret) goto err;