Date: Sun, 10 Jan 2021 15:32:50 +0100 From: Vincenzo Maffione <vmaffione@freebsd.org> To: Robert Watson <rwatson@freebsd.org> Cc: src-committers <src-committers@freebsd.org>, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: Build breakage (was: Re: git: 4ba9ad0dc316 - main - iflib: add assert to prevent out-of-bounds array access) Message-ID: <CA%2B_eA9j1kZxj6sfyc-x11Dd_OpR2WOLd22BCDhc49qAeMVTuYA@mail.gmail.com> In-Reply-To: <3bd51ab4-2ead-513e-2a8-bcaa562b22a9@fledge.watson.org> References: <202101101359.10ADxhCg027384@gitrepo.freebsd.org> <3bd51ab4-2ead-513e-2a8-bcaa562b22a9@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Sorry, my bad. I'll fix it right away. Thanks, Vincenzo Il giorno dom 10 gen 2021 alle ore 15:26 Robert Watson <rwatson@freebsd.org> ha scritto: > > With recent iflib/netmap commits, I'm getting the following on my > cross-built > GENERIC-MMCCAM-NODEBUG kernel, which is essentially the FreeBSD/arm64 > GENERIC-MMCCAM as in the tree, but with GENERIC-NODEBUG as the base. This > configuration built fine until this morning, but I've not had a chance to > bisect to figure out which was the commit that triggered the breakage: > > >>> stage 3.1: building everything > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2384:2: error: implicit > declaration of function 'netmap_disable_all_rings' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > netmap_disable_all_rings(ifp); > ^ > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2444:2: error: implicit > declaration of function 'netmap_enable_all_rings' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > netmap_enable_all_rings(ifp); > ^ > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2444:2: note: did you mean > 'netmap_disable_all_rings'? > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2384:2: note: > 'netmap_disable_all_rings' declared here > netmap_disable_all_rings(ifp); > ^ > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2495:2: error: implicit > declaration of function 'netmap_disable_all_rings' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > netmap_disable_all_rings(ctx->ifc_ifp); > ^ > 3 errors generated. > --- iflib.o --- > *** [iflib.o] Error code 1 > make[2]: stopped in > > /usr/home/robert/cheri/build/freebsd-aarch64-build/usr/home/robert/cheri/freebsd/arm64.aarch64/sys/GENERIC-MMCCAM-NODEBUG > --- all_subdir_bge --- > --- modules-all --- > *** [modules-all] Error code 2 > make[2]: stopped in > > /usr/home/robert/cheri/build/freebsd-aarch64-build/usr/home/robert/cheri/freebsd/arm64.aarch64/sys/GENERIC-MMCCAM-NODEBUG > 2 errors > make[2]: stopped in > > /usr/home/robert/cheri/build/freebsd-aarch64-build/usr/home/robert/cheri/freebsd/arm64.aarch64/sys/GENERIC-MMCCAM-NODEBUG > --- buildkernel --- > --- buildkernel --- > Fatal error: Command `nice make -DDB_FROM_SRC -DNO_CLEAN > -DI_REALLY_MEAN_NO_CLEAN -DNO_ROOT -DBUILD_WITH_STRICT_TMPPATH > TARGET_ARCH=aarch64 TARGET=arm64 DEBUG_FLAGS=-g > 'LOCAL_XTOOL_DIRS=lib/libnetbsd usr.sbin/makefs usr.bin/mkimg' > LD=/usr/bin/ld.lld XLD=/usr/bin/ld.lld 'HACK_EXTRA_FLAGS=-shared > -fuse-ld=/usr/bin/ld.lld' TRAMP_LDFLAGS=-fuse-ld=/usr/bin/ld.lld > KERNCONF=GENERIC-MMCCAM-NODEBUG -DWITHOUT_CLEAN -DWITH_TESTS > -DWITHOUT_PROFILE > -DWITHOUT_DEBUG_FILES -DWITHOUT_OFED -DWITHOUT_MAN -DWITH_GOOGLETEST > -DWITHOUT_GCC -DWITHOUT_CLANG -DWITHOUT_LLD -DWITHOUT_LLDB > -DWITHOUT_GCC_BOOTSTRAP -DWITHOUT_CLANG_BOOTSTRAP -DWITHOUT_LLD_BOOTSTRAP > -DWITHOUT_LIB32 -DWITH_ELFTOOLCHAIN_BOOTSTRAP -DWITH_TOOLCHAIN > -DWITHOUT_BINUTILS_BOOTSTRAP -s -de buildkernel -j6` failed with non-zero > exit > code 2 > > > > > On Sun, 10 Jan 2021, Vincenzo Maffione wrote: > > > The branch main has been updated by vmaffione: > > > > URL: > https://cgit.FreeBSD.org/src/commit/?id=4ba9ad0dc316940f32065b05f24259f942c0692d > > > > commit 4ba9ad0dc316940f32065b05f24259f942c0692d > > Author: Vincenzo Maffione <vmaffione@FreeBSD.org> > > AuthorDate: 2021-01-10 13:49:51 +0000 > > Commit: Vincenzo Maffione <vmaffione@FreeBSD.org> > > CommitDate: 2021-01-10 13:59:20 +0000 > > > > iflib: add assert to prevent out-of-bounds array access > > > > The iflib_queues_alloc() allocates isc_nrxqs iflib_dma_info structs > > for each rxqset, and links each struct to a different free list. > > As a result, it must be isc_nrxqs >= isc_nfl (plus the completion > > queue, if present). > > Add an assertion to make this constraint explicit. > > > > MFC after: 2 weeks > > --- > > sys/net/iflib.c | 9 ++++----- > > 1 file changed, 4 insertions(+), 5 deletions(-) > > > > diff --git a/sys/net/iflib.c b/sys/net/iflib.c > > index 3de80ecaeb0c..e53c5031d3a7 100644 > > --- a/sys/net/iflib.c > > +++ b/sys/net/iflib.c > > @@ -5547,11 +5547,14 @@ iflib_queues_alloc(if_ctx_t ctx) > > uint8_t nrxqs = sctx->isc_nrxqs; > > uint8_t ntxqs = sctx->isc_ntxqs; > > int nfree_lists = sctx->isc_nfl ? sctx->isc_nfl : 1; > > + int fl_offset = (sctx->isc_flags & IFLIB_HAS_RXCQ ? 1 : 0); > > caddr_t *vaddrs; > > uint64_t *paddrs; > > > > KASSERT(ntxqs > 0, ("number of queues per qset must be at least > 1")); > > KASSERT(nrxqs > 0, ("number of queues per qset must be at least > 1")); > > + KASSERT(nrxqs >= fl_offset + nfree_lists, > > + ("there must be at least a rxq for each free list")); > > > > /* Allocate the TX ring struct memory */ > > if (!(ctx->ifc_txqs = > > @@ -5659,11 +5662,7 @@ iflib_queues_alloc(if_ctx_t ctx) > > } > > rxq->ifr_ctx = ctx; > > rxq->ifr_id = i; > > - if (sctx->isc_flags & IFLIB_HAS_RXCQ) { > > - rxq->ifr_fl_offset = 1; > > - } else { > > - rxq->ifr_fl_offset = 0; > > - } > > + rxq->ifr_fl_offset = fl_offset; > > rxq->ifr_nfl = nfree_lists; > > if (!(fl = > > (iflib_fl_t) malloc(sizeof(struct iflib_fl) * > nfree_lists, M_IFLIB, M_NOWAIT | M_ZERO))) { > > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B_eA9j1kZxj6sfyc-x11Dd_OpR2WOLd22BCDhc49qAeMVTuYA>