X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=drivers%2Fmtd%2Fmtdpart.c;h=a308e707392d595902b77a03e2078ffe8da97d9e;hb=c42ed9f91fa1868db0e7748ec6d816a484b11890;hp=5736b0c90b339b6bc3e8e1ae3189341910b958f2;hpb=98c2f10d2366ec7128c254c775d4e6969a705ecd;p=linux-2.6-block.git diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index 5736b0c90b33..a308e707392d 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c @@ -581,6 +581,14 @@ static struct mtd_part *allocate_partition(struct mtd_info *parent, slave->mtd.erasesize = parent->erasesize; } + /* + * Slave erasesize might differ from the master one if the master + * exposes several regions with different erasesize. Adjust + * wr_alignment accordingly. + */ + if (!(slave->mtd.flags & MTD_NO_ERASE)) + wr_alignment = slave->mtd.erasesize; + tmp = slave->offset; remainder = do_div(tmp, wr_alignment); if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) {