Date: Sun, 10 Jan 2021 14:56:35 +0000 From: "Robert N. M. Watson" <rwatson@FreeBSD.org> To: Vincenzo Maffione <vmaffione@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: <9AC50976-FF55-4DF6-8A58-D35BA636CA4C@FreeBSD.org> In-Reply-To: <CA%2B_eA9j1kZxj6sfyc-x11Dd_OpR2WOLd22BCDhc49qAeMVTuYA@mail.gmail.com> References: <202101101359.10ADxhCg027384@gitrepo.freebsd.org> <3bd51ab4-2ead-513e-2a8-bcaa562b22a9@fledge.watson.org> <CA%2B_eA9j1kZxj6sfyc-x11Dd_OpR2WOLd22BCDhc49qAeMVTuYA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Thanks for the rapid fix =E2=80=94 I can build fine again now. Robert > On 10 Jan 2021, at 14:32, Vincenzo Maffione <vmaffione@FreeBSD.org> = wrote: >=20 > Sorry, my bad. > I'll fix it right away. >=20 > Thanks, > Vincenzo >=20 > Il giorno dom 10 gen 2021 alle ore 15:26 Robert Watson = <rwatson@freebsd.org <mailto:rwatson@freebsd.org>> ha scritto: >=20 > With recent iflib/netmap commits, I'm getting the following on my = cross-built=20 > GENERIC-MMCCAM-NODEBUG kernel, which is essentially the FreeBSD/arm64=20= > GENERIC-MMCCAM as in the tree, but with GENERIC-NODEBUG as the base. = This=20 > configuration built fine until this morning, but I've not had a chance = to=20 > bisect to figure out which was the commit that triggered the breakage: >=20 > >>> stage 3.1: building everything > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2384:2: error: implicit=20= > declaration of function 'netmap_disable_all_rings' is invalid in C99=20= > [-Werror,-Wimplicit-function-declaration] > netmap_disable_all_rings(ifp); > ^ > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2444:2: error: implicit=20= > declaration of function 'netmap_enable_all_rings' is invalid in C99=20 > [-Werror,-Wimplicit-function-declaration] > netmap_enable_all_rings(ifp); > ^ > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2444:2: note: did you = mean=20 > 'netmap_disable_all_rings'? > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2384:2: note:=20 > 'netmap_disable_all_rings' declared here > netmap_disable_all_rings(ifp); > ^ > /usr/home/robert/cheri/freebsd/sys/net/iflib.c:2495:2: error: implicit=20= > declaration of function 'netmap_disable_all_rings' is invalid in C99=20= > [-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=20 > = /usr/home/robert/cheri/build/freebsd-aarch64-build/usr/home/robert/cheri/f= reebsd/arm64.aarch64/sys/GENERIC-MMCCAM-NODEBUG > --- all_subdir_bge --- > --- modules-all --- > *** [modules-all] Error code 2 > make[2]: stopped in=20 > = /usr/home/robert/cheri/build/freebsd-aarch64-build/usr/home/robert/cheri/f= reebsd/arm64.aarch64/sys/GENERIC-MMCCAM-NODEBUG > 2 errors > make[2]: stopped in=20 > = /usr/home/robert/cheri/build/freebsd-aarch64-build/usr/home/robert/cheri/f= reebsd/arm64.aarch64/sys/GENERIC-MMCCAM-NODEBUG > --- buildkernel --- > --- buildkernel --- > Fatal error: Command `nice make -DDB_FROM_SRC -DNO_CLEAN=20 > -DI_REALLY_MEAN_NO_CLEAN -DNO_ROOT -DBUILD_WITH_STRICT_TMPPATH=20 > TARGET_ARCH=3Daarch64 TARGET=3Darm64 DEBUG_FLAGS=3D-g=20 > 'LOCAL_XTOOL_DIRS=3Dlib/libnetbsd usr.sbin/makefs usr.bin/mkimg'=20 > LD=3D/usr/bin/ld.lld XLD=3D/usr/bin/ld.lld 'HACK_EXTRA_FLAGS=3D-shared=20= > -fuse-ld=3D/usr/bin/ld.lld' TRAMP_LDFLAGS=3D-fuse-ld=3D/usr/bin/ld.lld=20= > KERNCONF=3DGENERIC-MMCCAM-NODEBUG -DWITHOUT_CLEAN -DWITH_TESTS = -DWITHOUT_PROFILE=20 > -DWITHOUT_DEBUG_FILES -DWITHOUT_OFED -DWITHOUT_MAN -DWITH_GOOGLETEST=20= > -DWITHOUT_GCC -DWITHOUT_CLANG -DWITHOUT_LLD -DWITHOUT_LLDB=20 > -DWITHOUT_GCC_BOOTSTRAP -DWITHOUT_CLANG_BOOTSTRAP = -DWITHOUT_LLD_BOOTSTRAP=20 > -DWITHOUT_LIB32 -DWITH_ELFTOOLCHAIN_BOOTSTRAP -DWITH_TOOLCHAIN=20 > -DWITHOUT_BINUTILS_BOOTSTRAP -s -de buildkernel -j6` failed with = non-zero exit=20 > code 2 >=20 >=20 >=20 >=20 > On Sun, 10 Jan 2021, Vincenzo Maffione wrote: >=20 > > The branch main has been updated by vmaffione: > > > > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D4ba9ad0dc316940f32065b05f24259f9= 42c0692d = <https://cgit.freebsd.org/src/commit/?id=3D4ba9ad0dc316940f32065b05f24259f= 942c0692d> > > > > 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 >=3D 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 =3D sctx->isc_nrxqs; > > uint8_t ntxqs =3D sctx->isc_ntxqs; > > int nfree_lists =3D sctx->isc_nfl ? sctx->isc_nfl : 1; > > + int fl_offset =3D (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 >=3D 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 =3D > > @@ -5659,11 +5662,7 @@ iflib_queues_alloc(if_ctx_t ctx) > > } > > rxq->ifr_ctx =3D ctx; > > rxq->ifr_id =3D i; > > - if (sctx->isc_flags & IFLIB_HAS_RXCQ) { > > - rxq->ifr_fl_offset =3D 1; > > - } else { > > - rxq->ifr_fl_offset =3D 0; > > - } > > + rxq->ifr_fl_offset =3D fl_offset; > > rxq->ifr_nfl =3D nfree_lists; > > if (!(fl =3D > > (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?9AC50976-FF55-4DF6-8A58-D35BA636CA4C>