Fairly simple. "dev_use" was being allocated as a zero length array
because of bad math on 64-bit systems causing a crash in
find_first_zero_bit(). One-liner follows:
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 91ded3e..f9ad960 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -46,7 +46,7 @@
#define MMC_SHIFT 3
#define MMC_NUM_MINORS (256 >> MMC_SHIFT)
-static unsigned long dev_use[MMC_NUM_MINORS/(8*sizeof(unsigned long))];
+static DECLARE_BITMAP(dev_use, MMC_NUM_MINORS);
/*
* There is one mmc_blk_data per slot.
On Mon, 02 Jun 2008 13:39:19 -0400
Ben Collins <[email protected]> wrote:
> Fairly simple. "dev_use" was being allocated as a zero length array
> because of bad math on 64-bit systems causing a crash in
> find_first_zero_bit(). One-liner follows:
>
A signed-off-by to make things nice and proper, please. :)
You can add an Acked-by: Pierre Ossman <[email protected]> and pass it
on directly to Linus.
Rgds
--
-- Pierre Ossman
Linux kernel, MMC maintainer http://www.kernel.org
rdesktop, core developer http://www.rdesktop.org
On Thu, 2008-06-05 at 23:25 +0200, Pierre Ossman wrote:
> On Mon, 02 Jun 2008 13:39:19 -0400
> Ben Collins <[email protected]> wrote:
>
> > Fairly simple. "dev_use" was being allocated as a zero length array
> > because of bad math on 64-bit systems causing a crash in
> > find_first_zero_bit(). One-liner follows:
> >
>
> A signed-off-by to make things nice and proper, please. :)
>
> You can add an Acked-by: Pierre Ossman <[email protected]> and pass it
> on directly to Linus.
Not sure how I missed the signed-off-by, but resent to Linus with your
ack. Thanks