diff options
| -rw-r--r-- | drivers/mmc/core/sdio_cis.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/mmc/core/sdio_cis.c b/drivers/mmc/core/sdio_cis.c index e1035c895808..f85dcd536508 100644 --- a/drivers/mmc/core/sdio_cis.c +++ b/drivers/mmc/core/sdio_cis.c | |||
| @@ -29,6 +29,8 @@ static int cistpl_vers_1(struct mmc_card *card, struct sdio_func *func, | |||
| 29 | unsigned i, nr_strings; | 29 | unsigned i, nr_strings; |
| 30 | char **buffer, *string; | 30 | char **buffer, *string; |
| 31 | 31 | ||
| 32 | /* Find all null-terminated (including zero length) strings in | ||
| 33 | the TPLLV1_INFO field. Trailing garbage is ignored. */ | ||
| 32 | buf += 2; | 34 | buf += 2; |
| 33 | size -= 2; | 35 | size -= 2; |
| 34 | 36 | ||
| @@ -39,11 +41,8 @@ static int cistpl_vers_1(struct mmc_card *card, struct sdio_func *func, | |||
| 39 | if (buf[i] == 0) | 41 | if (buf[i] == 0) |
| 40 | nr_strings++; | 42 | nr_strings++; |
| 41 | } | 43 | } |
| 42 | 44 | if (nr_strings == 0) | |
| 43 | if (nr_strings < 4) { | ||
| 44 | printk(KERN_WARNING "SDIO: ignoring broken CISTPL_VERS_1\n"); | ||
| 45 | return 0; | 45 | return 0; |
| 46 | } | ||
| 47 | 46 | ||
| 48 | size = i; | 47 | size = i; |
| 49 | 48 | ||
