Re: [PATCH stable] md/bitmap: return an error when bitmap superblock is corrupt.

From: Luis Henriques
Date: Tue Aug 25 2015 - 06:19:53 EST


On Fri, Aug 14, 2015 at 05:04:21PM +1000, NeilBrown wrote:
>
> commit b97e92574c0bf335db1cd2ec491d8ff5cd5d0b49 upstream
> Use separate bitmaps for each nodes in the cluster
>
> bitmap_read_sb() validates the bitmap superblock that it reads in.
> If it finds an inconsistency like a bad magic number or out-of-range
> version number, it prints an error and returns, but it incorrectly
> returns zero, so the array is still assembled with the (invalid) bitmap.
>
> This means it could try to use a bitmap with a new version number which
> it therefore does not understand.
>
> This bug was introduced in 3.5 and fix as part of a larger patch in 4.1.
> So the patch is suitable for any -stable kernel in that range.
>
> Fixes: 27581e5ae01f ("md/bitmap: centralise allocation of bitmap file pages.")
> Cc: stable@xxxxxxxxxxxxxxx (v3.5..v4.1)

Thanks! Queuing it for the 3.16 kernel.

Cheers,
--
Luís

> Signed-off-by: NeilBrown <neilb@xxxxxxxx>
> Reported-by: GuoQing Jiang <gqjiang@xxxxxxxx>
>
> diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
> index 3a5767968ba0..894fd58f75f1 100644
> --- a/drivers/md/bitmap.c
> +++ b/drivers/md/bitmap.c
> @@ -577,6 +577,8 @@ static int bitmap_read_sb(struct bitmap *bitmap)
> if (err)
> return err;
>
> + err = -EINVAL;
> +
> sb = kmap_atomic(sb_page);
>
> chunksize = le32_to_cpu(sb->chunksize);
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/