diff options
author | Ilya Bakulin <kibab@FreeBSD.org> | 2018-06-19 11:25:40 +0000 |
---|---|---|
committer | Ilya Bakulin <kibab@FreeBSD.org> | 2018-06-19 11:25:40 +0000 |
commit | 4c4200c6d9aa22e12ee0dd716967c8b79369fa1e (patch) | |
tree | 26b3cd248b3da9f92d1fc0d97e314d0e15c271f2 /sys/cam | |
parent | 3f1cfdb122064ffabd7c7b257e473303695c5411 (diff) | |
download | src-4c4200c6d9aa22e12ee0dd716967c8b79369fa1e.tar.gz src-4c4200c6d9aa22e12ee0dd716967c8b79369fa1e.zip |
Correctly define rawscr so initializing it doesn't result in overwriting memory.
We need 8 bytes of storage for rawscr.
Approved by: imp (mentor)
Differential Revision: https://reviews.freebsd.org/D15889
Notes
Notes:
svn path=/head/; revision=335366
Diffstat (limited to 'sys/cam')
-rw-r--r-- | sys/cam/mmc/mmc_da.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/cam/mmc/mmc_da.c b/sys/cam/mmc/mmc_da.c index 9325d5f99328..a2dbf949b405 100644 --- a/sys/cam/mmc/mmc_da.c +++ b/sys/cam/mmc/mmc_da.c @@ -818,6 +818,7 @@ mmc_app_get_scr(struct cam_periph *periph, union ccb *ccb, uint32_t *rawscr) { struct mmc_data d; memset(&cmd, 0, sizeof(cmd)); + memset(&d, 0, sizeof(d)); memset(rawscr, 0, 8); cmd.opcode = ACMD_SEND_SCR; @@ -1296,13 +1297,13 @@ sdda_start_init(void *context, union ccb *start_ccb) /* Find out if the card supports High speed timing */ if (mmcp->card_features & CARD_FEATURE_SD20) { /* Get and decode SCR */ - uint32_t rawscr; + uint32_t rawscr[2]; uint8_t res[64]; - if (mmc_app_get_scr(periph, start_ccb, &rawscr)) { + if (mmc_app_get_scr(periph, start_ccb, rawscr)) { CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Cannot get SCR\n")); goto finish_hs_tests; } - mmc_app_decode_scr(&rawscr, &softc->scr); + mmc_app_decode_scr(rawscr, &softc->scr); if ((softc->scr.sda_vsn >= 1) && (softc->csd.ccc & (1<<10))) { mmc_sd_switch(periph, start_ccb, SD_SWITCH_MODE_CHECK, |