Date: Fri, 15 Dec 2017 04:51:47 +0000 (UTC) From: "Landon J. Fuller" <landonf@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r326871 - in head/sys/dev: bhnd bhnd/bcma bhnd/bhndb bhnd/cores/pmu bhnd/nvram bhnd/siba bwn Message-ID: <201712150451.vBF4pl8D080259@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: landonf Date: Fri Dec 15 04:51:47 2017 New Revision: 326871 URL: https://svnweb.freebsd.org/changeset/base/326871 Log: bhnd(4)/bwn(4): Fix a number of small issues reported by Coverity. - Fix reference of uninitialized error value in bhndb_generic_resume() if the dynamic window count is 0. - Fix incorrect bhnd_pmu(4) UPTME_MASK and PLL0_PC2_WILD_INT_MASK constants. - Variable definitions referenced by our generated SPROM layouts will never be NULL, but add explicit asserts to make that clear. - Add missing variable initialization in bhnd_nvram_sprom_ident(). - Fix leak of driver array in bhnd_erom_probe_driver_classes(). - Fix zero-length memset() in bhndb_pci_eio_init(). - Fix an off-by-one error and potential invalid OOBSEL bit shift operation in bcma_dinfo_init_intrs(). - Remove dead code in siba_suspend_hw(). - Fix duplicate call to bhnd_pmu_enable_regulator() in both the enable and disable code paths of bhnd_compat_cc_pmu_set_ldoparef(). Reported by: Coverity CIDs: 1355194, 1362020, 1362022, 1373114, 1366563, 1373115, 1381569, 1381579, 1383555, 1383566, 1383571 Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/bhnd/bcma/bcma_dmp.h head/sys/dev/bhnd/bcma/bcma_subr.c head/sys/dev/bhnd/bhnd_erom.c head/sys/dev/bhnd/bhndb/bhndb.c head/sys/dev/bhnd/bhndb/bhndb_pci.c head/sys/dev/bhnd/cores/pmu/bhnd_pmureg.h head/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c head/sys/dev/bhnd/siba/siba.c head/sys/dev/bwn/if_bwn_siba_compat.c Modified: head/sys/dev/bhnd/bcma/bcma_dmp.h ============================================================================== --- head/sys/dev/bhnd/bcma/bcma_dmp.h Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/bcma/bcma_dmp.h Fri Dec 15 04:51:47 2017 (r326871) @@ -223,7 +223,7 @@ /* OOBSEL(IN|OUT) */ #define BCMA_DMP_OOBSEL_MASK 0xFF /**< OOB selector mask */ #define BCMA_DMP_OOBSEL_EN (1<<7) /**< OOB selector enable bit */ -#define BCMA_DMP_OOBSEL_SHIFT(_sel) ((_sel % BCMA_OOB_NUM_SEL) * 8) +#define BCMA_DMP_OOBSEL_SHIFT(_sel) ((_sel % 4) * 8) #define BCMA_DMP_OOBSEL_BUSLINE_MASK 0x7F /**< OOB selector bus line mask */ #define BCMA_DMP_OOBSEL_BUSLINE_SHIFT 0 Modified: head/sys/dev/bhnd/bcma/bcma_subr.c ============================================================================== --- head/sys/dev/bhnd/bcma/bcma_subr.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/bcma/bcma_subr.c Fri Dec 15 04:51:47 2017 (r326871) @@ -282,7 +282,7 @@ bcma_dinfo_init_intrs(device_t bus, device_t child, /* Fetch width of the OOB interrupt bank */ oobw = bhnd_bus_read_4(dinfo->res_agent, BCMA_DMP_OOB_OUTWIDTH(BCMA_OOB_BANK_INTR)); - if (oobw > BCMA_OOB_NUM_SEL) { + if (oobw >= BCMA_OOB_NUM_SEL) { device_printf(bus, "ignoring invalid OOBOUTWIDTH for core %u: " "%#x\n", BCMA_DINFO_COREIDX(dinfo), oobw); return (0); Modified: head/sys/dev/bhnd/bhnd_erom.c ============================================================================== --- head/sys/dev/bhnd/bhnd_erom.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/bhnd_erom.c Fri Dec 15 04:51:47 2017 (r326871) @@ -145,6 +145,7 @@ bhnd_erom_probe_driver_classes(devclass_t bus_devclass break; } + free(drivers, M_TEMP); return (erom_cls); } Modified: head/sys/dev/bhnd/bhndb/bhndb.c ============================================================================== --- head/sys/dev/bhnd/bhndb/bhndb.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/bhndb/bhndb.c Fri Dec 15 04:51:47 2017 (r326871) @@ -687,6 +687,7 @@ bhndb_generic_resume(device_t dev) /* Guarantee that all in-use dynamic register windows are mapped to * their previously configured target address. */ BHNDB_LOCK(sc); + error = 0; for (size_t i = 0; i < bus_res->dwa_count; i++) { dwa = &bus_res->dw_alloc[i]; Modified: head/sys/dev/bhnd/bhndb/bhndb_pci.c ============================================================================== --- head/sys/dev/bhnd/bhndb/bhndb_pci.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/bhndb/bhndb_pci.c Fri Dec 15 04:51:47 2017 (r326871) @@ -1297,7 +1297,7 @@ static int bhndb_pci_eio_init(struct bhndb_pci_eio *pio, device_t dev, device_t pci_dev, struct bhndb_host_resources *hr) { - memset(&pio->eio, sizeof(pio->eio), 0); + memset(&pio->eio, 0, sizeof(pio->eio)); pio->eio.map = bhndb_pci_eio_map; pio->eio.read = bhndb_pci_eio_read; pio->eio.fini = NULL; Modified: head/sys/dev/bhnd/cores/pmu/bhnd_pmureg.h ============================================================================== --- head/sys/dev/bhnd/cores/pmu/bhnd_pmureg.h Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/cores/pmu/bhnd_pmureg.h Fri Dec 15 04:51:47 2017 (r326871) @@ -133,7 +133,7 @@ #define BHND_PMU_RES_TABLE_SEL 0x620 #define BHND_PMU_RES_DEP_MASK 0x624 #define BHND_PMU_RES_UPDN_TIMER 0x628 -#define BHND_PMU_RES_UPDN_UPTME_MASK 0xFF +#define BHND_PMU_RES_UPDN_UPTME_MASK 0xFF00 #define BHND_PMU_RES_UPDN_UPTME_SHIFT 8 #define BHND_PMU_RES_TIMER 0x62C #define BHND_PMU_CLKSTRETCH 0x630 @@ -217,7 +217,7 @@ /* Wildcard base, vco_calvar, vco_swc, vco_var_selref, vso_ical & vco_sel_avdd */ #define BHND_PMU0_PLL0_PLLCTL2 2 -#define BHND_PMU0_PLL0_PC2_WILD_INT_MASK 0xf +#define BHND_PMU0_PLL0_PC2_WILD_INT_MASK 0xf0 #define BHND_PMU0_PLL0_PC2_WILD_INT_SHIFT 4 /* pllcontrol registers */ Modified: head/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c ============================================================================== --- head/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c Fri Dec 15 04:51:47 2017 (r326871) @@ -190,6 +190,7 @@ bhnd_nvram_sprom_ident(struct bhnd_nvram_io *io, bool have_magic; layout = &bhnd_sprom_layouts[i]; + crc_valid = true; have_magic = true; if ((layout->flags & SPROM_LAYOUT_MAGIC_NONE)) @@ -831,6 +832,7 @@ bhnd_nvram_sprom_next(struct bhnd_nvram_data *nv, void /* Update cookiep and fetch variable definition */ *cookiep = entry; var = SPROM_COOKIE_TO_NVRAM_VAR(*cookiep); + BHND_NV_ASSERT(var != NULL, ("invalid cookiep %p", cookiep)); /* We might need to parse the variable's value to determine * whether it should be treated as unset */ @@ -1439,6 +1441,7 @@ bhnd_nvram_sprom_filter_unsetvar(struct bhnd_nvram_dat return (ENOENT); var = bhnd_nvram_get_vardefn(entry->vid); + BHND_NV_ASSERT(var != NULL, ("missing variable definition")); /* Variable must be capable of representing a NULL/deleted value. * Modified: head/sys/dev/bhnd/siba/siba.c ============================================================================== --- head/sys/dev/bhnd/siba/siba.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bhnd/siba/siba.c Fri Dec 15 04:51:47 2017 (r326871) @@ -865,8 +865,6 @@ siba_suspend_hw(device_t dev, device_t child, uint16_t siba_write_target_state(child, dinfo, SIBA_CFG0_TMSTATELOW, ts_low, ts_mask); - if (error) - return (error); /* Give RESET ample time */ DELAY(10); Modified: head/sys/dev/bwn/if_bwn_siba_compat.c ============================================================================== --- head/sys/dev/bwn/if_bwn_siba_compat.c Fri Dec 15 04:11:20 2017 (r326870) +++ head/sys/dev/bwn/if_bwn_siba_compat.c Fri Dec 15 04:51:47 2017 (r326871) @@ -1984,7 +1984,7 @@ bhnd_compat_cc_pmu_set_ldoparef(device_t dev, uint8_t error = bhnd_pmu_enable_regulator(ctx->pmu_dev, BHND_REGULATOR_PAREF_LDO); } else { - error = bhnd_pmu_enable_regulator(ctx->pmu_dev, + error = bhnd_pmu_disable_regulator(ctx->pmu_dev, BHND_REGULATOR_PAREF_LDO); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201712150451.vBF4pl8D080259>