Module Name: src Committed By: msaitoh Date: Sat May 7 14:25:12 UTC 2022
Modified Files: src/sys/dev/ic: mfi.c Log Message: Clear mailbox to not to pass garbage data. To generate a diff of this commit: cvs rdiff -u -r1.71 -r1.72 src/sys/dev/ic/mfi.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/mfi.c diff -u src/sys/dev/ic/mfi.c:1.71 src/sys/dev/ic/mfi.c:1.72 --- src/sys/dev/ic/mfi.c:1.71 Sat May 7 14:14:34 2022 +++ src/sys/dev/ic/mfi.c Sat May 7 14:25:12 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: mfi.c,v 1.71 2022/05/07 14:14:34 msaitoh Exp $ */ +/* $NetBSD: mfi.c,v 1.72 2022/05/07 14:25:12 msaitoh Exp $ */ /* $OpenBSD: mfi.c,v 1.66 2006/11/28 23:59:45 dlg Exp $ */ /* @@ -73,7 +73,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.71 2022/05/07 14:14:34 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.72 2022/05/07 14:25:12 msaitoh Exp $"); #include "bio.h" @@ -970,8 +970,10 @@ mfi_shutdown(device_t dev, int how) struct mfi_softc *sc = device_private(dev); uint8_t mbox[MFI_MBOX_SIZE]; int s = splbio(); + DNPRINTF(MFI_D_MISC, "%s: mfi_shutdown\n", DEVNAME(sc)); if (sc->sc_running) { + memset(mbox, 0, sizeof(mbox)); mbox[0] = MR_FLUSH_CTRL_CACHE | MR_FLUSH_DISK_CACHE; if (mfi_mgmt_internal(sc, MR_DCMD_CTRL_CACHE_FLUSH, MFI_DATA_NONE, 0, NULL, mbox, true)) { @@ -1683,6 +1685,7 @@ mfi_scsipi_request(struct scsipi_channel case SCSI_SYNCHRONIZE_CACHE_10: case SCSI_SYNCHRONIZE_CACHE_16: + memset(mbox, 0, sizeof(mbox)); mbox[0] = MR_FLUSH_CTRL_CACHE | MR_FLUSH_DISK_CACHE; if (mfi_mgmt(ccb, xs, MR_DCMD_CTRL_CACHE_FLUSH, MFI_DATA_NONE, 0, NULL, mbox)) { @@ -2045,6 +2048,7 @@ mfi_ioctl_vol(struct mfi_softc *sc, stru goto done; i = bv->bv_volid; + memset(mbox, 0, sizeof(mbox)); mbox[0] = sc->sc_ld_list.mll_list[i].mll_ld.mld_target; DNPRINTF(MFI_D_IOCTL, "%s: mfi_ioctl_vol target %#x\n", DEVNAME(sc), mbox[0]); @@ -2220,6 +2224,7 @@ mfi_ioctl_disk(struct mfi_softc *sc, str } /* get the remaining fields */ + memset(mbox, 0, sizeof(mbox)); *((uint16_t *)&mbox) = ar[arr].pd[disk].mar_pd.mfp_id; memset(pd, 0, sizeof(*pd)); if (mfi_mgmt_internal(sc, MR_DCMD_PD_GET_INFO, MFI_DATA_IN,