Date: Tue, 30 May 2017 16:15:52 +0000 (UTC) From: Alan Somers <asomers@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r319222 - stable/10/sys/dev/xen/netback Message-ID: <201705301615.v4UGFqZR010214@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: asomers Date: Tue May 30 16:15:52 2017 New Revision: 319222 URL: https://svnweb.freebsd.org/changeset/base/319222 Log: MFC r314148, r314150 r314148: Misc Coverity fixes in xnb(4) Most of these are null pointer dereferences or missing error checks in the unit tests. One is a missing error check in xnb_attach_failed. None can cause real problems in running systems. Reported by: Coverity CIDs: 1092469 1092468 1092467 2092466 1092465 1092512 1092511 1092510 CIDs: 1092510 1092509 1092508 1092507 Reviewed by: royger Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D9234 r314150: Fix the xnb(4) unit tests One test was inadvertently expecting a bug in the kernel's sscanf implementation circa 2012. I don't know when that bug got fixed. Reported by: royger Reviewed by: royger Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D9766 Modified: stable/10/sys/dev/xen/netback/netback.c stable/10/sys/dev/xen/netback/netback_unit_tests.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/xen/netback/netback.c ============================================================================== --- stable/10/sys/dev/xen/netback/netback.c Tue May 30 16:09:54 2017 (r319221) +++ stable/10/sys/dev/xen/netback/netback.c Tue May 30 16:15:52 2017 (r319222) @@ -1111,14 +1111,13 @@ xnb_attach_failed(struct xnb_softc *xnb, int err, cons xs_vprintf(XST_NIL, xenbus_get_node(xnb->dev), "hotplug-error", fmt, ap_hotplug); va_end(ap_hotplug); - xs_printf(XST_NIL, xenbus_get_node(xnb->dev), + (void)xs_printf(XST_NIL, xenbus_get_node(xnb->dev), "hotplug-status", "error"); xenbus_dev_vfatal(xnb->dev, err, fmt, ap); va_end(ap); - xs_printf(XST_NIL, xenbus_get_node(xnb->dev), - "online", "0"); + (void)xs_printf(XST_NIL, xenbus_get_node(xnb->dev), "online", "0"); xnb_detach(xnb->dev); } Modified: stable/10/sys/dev/xen/netback/netback_unit_tests.c ============================================================================== --- stable/10/sys/dev/xen/netback/netback_unit_tests.c Tue May 30 16:09:54 2017 (r319221) +++ stable/10/sys/dev/xen/netback/netback_unit_tests.c Tue May 30 16:15:52 2017 (r319222) @@ -1227,6 +1227,10 @@ xnb_txpkt2gnttab_2cluster(char *buffer, size_t buflen) xnb_ring2pkt(&pkt, &xnb_unit_pvt.txb, xnb_unit_pvt.txb.req_cons); pMbuf = xnb_pkt2mbufc(&pkt, xnb_unit_pvt.ifp); + XNB_ASSERT(pMbuf != NULL); + if (pMbuf == NULL) + return; + n_entries = xnb_txpkt2gnttab(&pkt, pMbuf, xnb_unit_pvt.gnttab, &xnb_unit_pvt.txb, DOMID_FIRST_RESERVED); @@ -1271,8 +1275,7 @@ xnb_txpkt2gnttab_2cluster(char *buffer, size_t buflen) /* should never get here */ XNB_ASSERT(0); } - if (pMbuf != NULL) - m_freem(pMbuf); + m_freem(pMbuf); } @@ -1494,15 +1497,14 @@ xnb_mbufc2pkt_2short(char *buffer, size_t buflen) { struct mbuf *mbufc, *mbufc2; mbufc = m_getm(NULL, size1, M_WAITOK, MT_DATA); - mbufc->m_flags |= M_PKTHDR; - if (mbufc == NULL) { - XNB_ASSERT(mbufc != NULL); + XNB_ASSERT(mbufc != NULL); + if (mbufc == NULL) return; - } + mbufc->m_flags |= M_PKTHDR; mbufc2 = m_getm(mbufc, size2, M_WAITOK, MT_DATA); + XNB_ASSERT(mbufc2 != NULL); if (mbufc2 == NULL) { - XNB_ASSERT(mbufc2 != NULL); safe_m_freem(&mbufc); return; } @@ -1537,11 +1539,10 @@ xnb_mbufc2pkt_long(char *buffer, size_t buflen) { struct mbuf *mbufc, *m; mbufc = m_getm(NULL, size, M_WAITOK, MT_DATA); - mbufc->m_flags |= M_PKTHDR; - if (mbufc == NULL) { - XNB_ASSERT(mbufc != NULL); + XNB_ASSERT(mbufc != NULL); + if (mbufc == NULL) return; - } + mbufc->m_flags |= M_PKTHDR; mbufc->m_pkthdr.len = size; size_remaining = size; @@ -1576,10 +1577,9 @@ xnb_mbufc2pkt_extra(char *buffer, size_t buflen) { struct mbuf *mbufc, *m; mbufc = m_getm(NULL, size, M_WAITOK, MT_DATA); - if (mbufc == NULL) { - XNB_ASSERT(mbufc != NULL); + XNB_ASSERT(mbufc != NULL); + if (mbufc == NULL) return; - } mbufc->m_flags |= M_PKTHDR; mbufc->m_pkthdr.len = size; @@ -1619,11 +1619,10 @@ xnb_mbufc2pkt_nospace(char *buffer, size_t buflen) { int error; mbufc = m_getm(NULL, size, M_WAITOK, MT_DATA); - mbufc->m_flags |= M_PKTHDR; - if (mbufc == NULL) { - XNB_ASSERT(mbufc != NULL); + XNB_ASSERT(mbufc != NULL); + if (mbufc == NULL) return; - } + mbufc->m_flags |= M_PKTHDR; mbufc->m_pkthdr.len = size; size_remaining = size; @@ -1840,10 +1839,9 @@ xnb_rxpkt2rsp_extra(char *buffer, size_t buflen) struct netif_extra_info *ext; mbufc = m_getm(NULL, size, M_WAITOK, MT_DATA); - if (mbufc == NULL) { - XNB_ASSERT(mbufc != NULL); + XNB_ASSERT(mbufc != NULL); + if (mbufc == NULL) return; - } mbufc->m_flags |= M_PKTHDR; mbufc->m_pkthdr.len = size; @@ -1974,11 +1972,10 @@ xnb_rxpkt2rsp_2short(char *buffer, size_t buflen) { struct mbuf *mbufc; mbufc = m_getm(NULL, size1, M_WAITOK, MT_DATA); - mbufc->m_flags |= M_PKTHDR; - if (mbufc == NULL) { - XNB_ASSERT(mbufc != NULL); + XNB_ASSERT(mbufc != NULL); + if (mbufc == NULL) return; - } + mbufc->m_flags |= M_PKTHDR; m_getm(mbufc, size2, M_WAITOK, MT_DATA); XNB_ASSERT(mbufc->m_next != NULL); @@ -2451,7 +2448,7 @@ xnb_sscanf_hhu(char *buffer, size_t buflen) for (i = 0; i < 12; i++) dest[i] = 'X'; - sscanf(mystr, "%hhu", &dest[4]); + XNB_ASSERT(sscanf(mystr, "%hhu", &dest[4]) == 1); for (i = 0; i < 12; i++) XNB_ASSERT(dest[i] == (i == 4 ? 137 : 'X')); } @@ -2469,7 +2466,7 @@ xnb_sscanf_hhd(char *buffer, size_t buflen) for (i = 0; i < 12; i++) dest[i] = 'X'; - sscanf(mystr, "%hhd", &dest[4]); + XNB_ASSERT(sscanf(mystr, "%hhd", &dest[4]) == 1); for (i = 0; i < 12; i++) XNB_ASSERT(dest[i] == (i == 4 ? -27 : 'X')); } @@ -2487,7 +2484,7 @@ xnb_sscanf_lld(char *buffer, size_t buflen) for (i = 0; i < 3; i++) dest[i] = (long long)0xdeadbeefdeadbeef; - sscanf(mystr, "%lld", &dest[1]); + XNB_ASSERT(sscanf(mystr, "%lld", &dest[1]) == 1); for (i = 0; i < 3; i++) XNB_ASSERT(dest[i] == (i != 1 ? (long long)0xdeadbeefdeadbeef : -123456789012345)); @@ -2506,7 +2503,7 @@ xnb_sscanf_llu(char *buffer, size_t buflen) for (i = 0; i < 3; i++) dest[i] = (long long)0xdeadbeefdeadbeef; - sscanf(mystr, "%llu", &dest[1]); + XNB_ASSERT(sscanf(mystr, "%llu", &dest[1]) == 1); for (i = 0; i < 3; i++) XNB_ASSERT(dest[i] == (i != 1 ? (long long)0xdeadbeefdeadbeef : 12802747070103273189ull)); @@ -2528,10 +2525,10 @@ xnb_sscanf_hhn(char *buffer, size_t buflen) for (i = 0; i < 12; i++) dest[i] = (unsigned char)'X'; - sscanf(mystr, + XNB_ASSERT(sscanf(mystr, "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" "202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f" - "404142434445464748494a4b4c4d4e4f%hhn", &dest[4]); + "404142434445464748494a4b4c4d4e4f%hhn", &dest[4]) == 0); for (i = 0; i < 12; i++) XNB_ASSERT(dest[i] == (i == 4 ? 160 : 'X')); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705301615.v4UGFqZR010214>