From 683b72fd0d38f7c65e789e8b2cff782d20253f96 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Sat, 19 Nov 2011 17:46:31 +0800 Subject: [PATCH] mmc: rk29: fix NULL dereference in rk29_sdmmc_set_frq fix this bug: Unable to handle kernel NULL pointer dereference at virtual address 000000d0 pgd = c0404000 [000000d0] *pgd=00000000 Internal error: Oops: 5 [#1] PREEMPT CPU: 0 Not tainted (3.0.8+ #5) PC is at rk29_sdmmc_set_frq+0x28/0x6c LR is at rk29_sdmmc_set_frq+0x10/0x6c pc : [] lr : [] psr: 80000093 sp : d53c9e28 ip : ffff8b5d fp : c0aae32c r10: 00000000 r9 : d53a24d0 r8 : ffff8b5c r7 : 60000013 r6 : 00002041 r5 : d53c9ed8 r4 : d53bc280 r3 : 00000000 r2 : 00000000 r1 : d53c9ed8 r0 : d53bc000 [] (rk29_sdmmc_set_frq+0x28/0x6c) from [] (rk29_sdmmc_start_command+0x58/0x120) [] (rk29_sdmmc_start_command+0x58/0x120) from [] (rk29_sdmmc_request+0x590/0x704) [] (rk29_sdmmc_request+0x590/0x704) from [] (mmc_wait_for_req+0x110/0x214) [] (mmc_wait_for_req+0x110/0x214) from [] (mmc_wait_for_cmd+0x64/0x74) [] (mmc_wait_for_cmd+0x64/0x74) from [] (mmc_send_op_cond+0x74/0xe0) [] (mmc_send_op_cond+0x74/0xe0) from [] (mmc_attach_mmc+0x40/0x1f0) [] (mmc_attach_mmc+0x40/0x1f0) from [] (mmc_rescan+0x344/0x3c8) [] (mmc_rescan+0x344/0x3c8) from [] (process_one_work+0x258/0x3ac) [] (process_one_work+0x258/0x3ac) from [] (worker_thread+0x238/0x440) [] (worker_thread+0x238/0x440) from [] (kthread+0x80/0x88) [] (kthread+0x80/0x88) from [] (kernel_thread_exit+0x0/0x8) --- drivers/mmc/host/rk29_sdmmc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mmc/host/rk29_sdmmc.c b/drivers/mmc/host/rk29_sdmmc.c index ae92103ddb65..7d2e6c01df7d 100755 --- a/drivers/mmc/host/rk29_sdmmc.c +++ b/drivers/mmc/host/rk29_sdmmc.c @@ -696,7 +696,7 @@ void rk29_sdmmc_set_frq(struct rk29_sdmmc *host) card = (struct mmc_card *)mmchost->card; ios = ( struct mmc_ios *)&mmchost->ios; - if(!card && !ios) + if(!card || !ios) return; if(MMC_POWER_ON == ios->power_mode) -- 2.34.1