aboutsummaryrefslogtreecommitdiff
path: root/sys/cam
diff options
context:
space:
mode:
authorIlya Bakulin <kibab@FreeBSD.org>2018-06-19 11:25:40 +0000
committerIlya Bakulin <kibab@FreeBSD.org>2018-06-19 11:25:40 +0000
commit4c4200c6d9aa22e12ee0dd716967c8b79369fa1e (patch)
tree26b3cd248b3da9f92d1fc0d97e314d0e15c271f2 /sys/cam
parent3f1cfdb122064ffabd7c7b257e473303695c5411 (diff)
downloadsrc-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.c7
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,