Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Mar 2024 18:33:25 +0100 (CET)
From:      freebsd@oldach.net (Helge Oldach)
To:        glebius@FreeBSD.org (Gleb Smirnoff)
Cc:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   Re: git: db4429d00f0d - stable/13 - linux: require vnet(9)  context in ifname_bsd_to_linux_name()
Message-ID:  <202403151733.42FHXPrI046235@nuc.oldach.net>
In-Reply-To: <202403111612.42BGCrZd000296@gitrepo.freebsd.org> from Gleb Smirnoff at "11 Mar 2024 16:12:53"

next in thread | previous in thread | raw e-mail | index | archive | help
Gleb Smirnoff wrote on Mon, 11 Mar 2024 17:12:53 +0100 (CET):
> The branch stable/13 has been updated by glebius:
>=20
> URL: https://cgit.FreeBSD.org/src/commit/?id=3Ddb4429d00f0d95a1532f8707f8=
b828a744586dc7
>=20
> commit db4429d00f0d95a1532f8707f8b828a744586dc7
> Author:     Gleb Smirnoff <glebius@FreeBSD.org>
> AuthorDate: 2024-03-03 20:56:58 +0000
> Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
> CommitDate: 2024-03-11 16:12:36 +0000
>=20
>     linux: require vnet(9) context in ifname_bsd_to_linux_name()
>    =20
>     This function is used by netlink(9) only.  The netlink(9) taskqueue t=
hread
>     runs in the vnet of the socket whose request the thread is processing
>     right now.  This is a correct vnet and resetting it to vnet0 is incor=
rect.
>     If the function is to be used by any other caller in addition to
>     netlink(9), it would be caller's responsiblity to provide correct vne=
t(9).
>    =20
>     Reviewed by:            melifaro, dchagin
>     Differential Revision:  https://reviews.freebsd.org/D44191
>     PR:                     277286
>    =20
>     (cherry picked from commit 2f5a315b307447f91891c96fb23c7333fa406f2f)
> ---
>  sys/compat/linux/linux.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>=20
> diff --git a/sys/compat/linux/linux.c b/sys/compat/linux/linux.c
> index 6191372b6312..141fa715c7c1 100644
> --- a/sys/compat/linux/linux.c
> +++ b/sys/compat/linux/linux.c
> @@ -250,14 +250,14 @@ ifname_bsd_to_linux_name(const char *bsdname, char =
*lxname, size_t len)
>  	struct ifnet *ifp;
>  	int ret;
> =20
> +	CURVNET_ASSERT_SET();
> +
>  	ret =3D 0;
> -	CURVNET_SET(TD_TO_VNET(curthread));
>  	NET_EPOCH_ENTER(et);
>  	ifp =3D ifunit(bsdname);
>  	if (ifp !=3D NULL)
>  		ret =3D ifname_bsd_to_linux_ifp(ifp, lxname, len);
>  	NET_EPOCH_EXIT(et);
> -	CURVNET_RESTORE();
>  	return (ret);
>  }

This bails out when option VIMAGE is not included:

=3D=3D=3D> linux (all)
=3D=3D=3D> linux64 (all)
=3D=3D=3D> linux_common (all)
cc -target x86_64-unknown-freebsd13.3 --sysroot=3D/usr/obj/usr/src/amd64.am=
d64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin  -O2 -pipe -fno-common  =
-fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -DKLD_TIED -nostdinc   =
-DHAVE_KERNEL_OPTION_HEADERS -i=
nclude /usr/obj/usr/src/amd64.amd64/sys/HMO/opt_global.h -I. -I/usr/src/sys=
 -I/usr/src/sys/contrib/ck/include -fno-common -g -fno-omit-frame-pointer -=
mno-omit-leaf-frame-pointer -fdebug-prefix-map=3D./machine=3D/usr/src/sys/a=
md64/include -fdebug-prefix-map=3D.=
/x86=3D/usr/src/sys/x86/include -I/usr/obj/usr/src/amd64.amd64/sys/HMO     =
-MD  -MF.depend.linux.o -MTlinux.o -mcmodel=3Dkernel -mno-red-zone -mno-mmx=
 -mno-sse -msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fwr=
apv -fstack-protector -Wall -Wstr=
ict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual -Wundef -Wn=
o-pointer-sign -D__printf__=3D__freebsd_kprintf__ -Wmissing-include-dirs -f=
diagnostics-show-option -Wno-unknown-pragmas -Wno-error=3Dtautological-comp=
are -Wno-error=3Dempty-body -Wno-er=
ror=3Dparentheses-equality -Wno-error=3Dunused-function -Wno-error=3Dpointe=
r-sign -Wno-error=3Dshift-negative-value -Wno-address-of-packed-member -Wno=
-error=3Darray-parameter -Wno-error=3Ddeprecated-non-prototype -Wno-error=
=3Dstrict-prototypes -Wno-error=3Dunused-but-se=
t-variable -Wno-error=3Dunused-but-set-variable -Wno-format-zero-length   -=
mno-aes -mno-avx  -std=3Diso9899:1999 -c /usr/src/sys/compat/linux/linux.c =
-o linux.o
/usr/src/sys/compat/linux/linux.c:253:2: error: call to undeclared function=
 'CURVNET_ASSERT_SET'; ISO C99 and later do not support implicit function d=
eclarations [-Werror,-Wimplicit-function-declaration]
  253 |         CURVNET_ASSERT_SET();
      |         ^
1 error generated.
*** Error code 1

Stop.
make[4]: stopped in /usr/src/sys/modules/linux_common
*** Error code 1

Stop.
make[3]: stopped in /usr/src/sys/modules
*** Error code 1

Stop.
make[2]: stopped in /usr/obj/usr/src/amd64.amd64/sys/HMO
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src


IMHO same behaviour with 14.

Kind regards
Helge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202403151733.42FHXPrI046235>