mmc: check find_mmc_device return value

find_mmc_device returns NULL if an invalid device number is specified.
Check for this to avoid dereferencing NULL pointers.

Signed-off-by: Rabin Vincent <rabin@rab.in>
master
Rabin Vincent 15 years ago committed by Andy Fleming
parent ac0865ff33
commit e85649c7e6
  1. 9
      common/cmd_mmc.c
  2. 2
      drivers/mmc/mmc.c

@ -149,6 +149,9 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
int dev = simple_strtoul(argv[2], NULL, 10);
struct mmc *mmc = find_mmc_device(dev);
if (!mmc)
return 1;
mmc_init(mmc);
return 0;
@ -175,6 +178,9 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
u32 blk = simple_strtoul(argv[4], NULL, 16);
struct mmc *mmc = find_mmc_device(dev);
if (!mmc)
return 1;
printf("\nMMC read: dev # %d, block # %d, count %d ... ",
dev, blk, cnt);
@ -197,6 +203,9 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
int blk = simple_strtoul(argv[4], NULL, 16);
if (!mmc)
return 1;
printf("\nMMC write: dev # %d, block # %d, count %d ... ",
dev, blk, cnt);

@ -846,7 +846,7 @@ block_dev_desc_t *mmc_get_dev(int dev)
{
struct mmc *mmc = find_mmc_device(dev);
return &mmc->block_dev;
return mmc ? &mmc->block_dev : NULL;
}
int mmc_init(struct mmc *mmc)

Loading…
Cancel
Save