Hi Ezequiel, Already posted the patch for this issue. https://patchwork.kernel.org/patch/2811611/ Best Regards, Jaehoon Chung On 07/04/2013 11:40 PM, Ezequiel Garcia wrote: > Commit 762877485 "mmc: core: Handle card shutdown from mmc_bus" > added shutdown support. However, there are some situations where the > 'owner' struct pointer can be NULL. > > Solve this by adding a check, just as it's done in the other busses. > > This commit solves a panic upon a reboot request, found in today's linux-next, > on a Armada 370 Mirabox board. > > [snip] > [ 225.592003] Unable to handle kernel NULL pointer dereference at virtual address 0000004c > [ 225.600114] pgd = eea2c000 > [ 225.602897] [0000004c] *pgd=2ea38831, *pte=00000000, *ppte=00000000 > [ 225.609216] Internal error: Oops: 17 [#1] PREEMPT SMP ARM > [ 225.614628] CPU: 0 PID: 1100 Comm: init Not tainted 3.10.0-next-20130704 #19 > [ 225.621690] task: ef1adb00 ti: ef3ce000 task.ti: ef3ce000 > [ 225.627111] PC is at mmc_bus_shutdown+0x14/0x5c > [ 225.631657] LR is at device_shutdown+0x34/0x184 > [ 225.636196] pc : [<c0267548>] lr : [<c01b487c>] psr: 600f0013 > [ 225.636196] sp : ef3cfe68 ip : 00000002 fp : 00000000 > [ 225.647693] r10: 00000000 r9 : ef3ce000 r8 : c049229c > [ 225.652927] r7 : ef304c3c r6 : c04b4f30 r5 : ef304c08 r4 : ef304000 > [ 225.659466] r3 : ef304c08 r2 : 00000000 r1 : 00000000 r0 : ef304c00 > [ 225.666005] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user > [ 225.673153] Control: 10c5387d Table: 2ea2c019 DAC: 00000015 > [ 225.678909] Process init (pid: 1100, stack limit = 0xef3ce238) > > Cc: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > Cc: Chris Ball <cjb@xxxxxxxxxx> > Signed-off-by: Ezequiel Garcia <ezequiel.garcia@xxxxxxxxxxxxxxxxxx> > --- > This patch applies cleanly on today's linux-next. > > Honestly, I can't see how the owner pointer can be NULL, > but every other bus driver is checking, so I guess it can > be NULL under some circumstance. > > drivers/mmc/core/bus.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c > index b9e5bea..8fcf0b9 100644 > --- a/drivers/mmc/core/bus.c > +++ b/drivers/mmc/core/bus.c > @@ -129,7 +129,8 @@ static void mmc_bus_shutdown(struct device *dev) > struct mmc_host *host = card->host; > int ret; > > - drv->shutdown(card); > + if (drv) > + drv->shutdown(card); > > if (host->bus_ops->shutdown) { > ret = host->bus_ops->shutdown(host); > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html