Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Sep 2025 11:07:15 +0800
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        Mateusz Guzik <mjguzik@gmail.com>
Cc:        Gleb Smirnoff <glebius@freebsd.org>, src-committers@freebsd.org, "<dev-commits-src-all@freebsd.org>" <dev-commits-src-all@freebsd.org>, "dev-commits-src-main@FreeBSD.org" <dev-commits-src-main@freebsd.org>, "Bjoern A. Zeeb" <bz@FreeBSD.org>, Kristof Provost <kp@FreeBSD.org>
Subject:   Re: svn commit: r256519 - in head/sys: net netatalk netinet netinet6 netipx
Message-ID:  <13C41285-E7E1-4B49-B9A7-1B157B445CDD@FreeBSD.org>
In-Reply-To: <CAGudoHHew1oZazNVMSnGDfCMV%2By1Q1_f9K_CtRDWuppaiKyydQ@mail.gmail.com>
References:  <201310151031.r9FAVgRP008282@svn.freebsd.org> <CAGudoHGN=6-dFQ791_=kLBnYfyz9zm75-vJKh=e9gibaXun5NQ@mail.gmail.com> <35D99D40-5534-402A-8479-64C71604206B@FreeBSD.org> <CAGudoHHew1oZazNVMSnGDfCMV%2By1Q1_f9K_CtRDWuppaiKyydQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_8A8C8FF2-DB0E-4602-97BC-9632550436C9
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8



> On Sep 30, 2025, at 10:59 AM, Mateusz Guzik <mjguzik@gmail.com> wrote:
>=20
> On Tue, Sep 30, 2025 at 4:38=E2=80=AFAM Zhenlei Huang =
<zlei@freebsd.org <mailto:zlei@freebsd.org>> wrote:
>>=20
>>=20
>>=20
>>> On Sep 29, 2025, at 10:29 PM, Mateusz Guzik <mjguzik@gmail.com> =
wrote:
>>>=20
>>> On Tue, Oct 15, 2013 at 12:31=E2=80=AFPM Gleb Smirnoff =
<glebius@freebsd.org> wrote:
>>>>=20
>>>> Author: glebius
>>>> Date: Tue Oct 15 10:31:42 2013
>>>> New Revision: 256519
>>>> URL: http://svnweb.freebsd.org/changeset/base/256519
>>>>=20
>>>> Log:
>>>>   Remove ifa_init() and provide ifa_alloc() that will allocate and =
setup
>>>> struct ifaddr internally.
>>>>=20
>>>> Sponsored by: Netflix
>>>> Sponsored by: Nginx, Inc.
>>>>=20
>>>> Modified:
>>>> head/sys/net/if.c
>>>> head/sys/net/if_var.h
>>>> head/sys/netatalk/at_control.c
>>>> head/sys/netinet/in.c
>>>> head/sys/netinet6/in6.c
>>>> head/sys/netipx/ipx.c
>>>>=20
>>>> Modified: head/sys/net/if.c
>>>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>>>> --- head/sys/net/if.c   Tue Oct 15 10:19:24 2013        (r256518)
>>>> +++ head/sys/net/if.c   Tue Oct 15 10:31:42 2013        (r256519)
>>>> @@ -633,8 +633,7 @@ if_attach_internal(struct ifnet *ifp, in
>>>>                       socksize =3D sizeof(*sdl);
>>>>               socksize =3D roundup2(socksize, sizeof(long));
>>>>               ifasize =3D sizeof(*ifa) + 2 * socksize;
>>>> -               ifa =3D malloc(ifasize, M_IFADDR, M_WAITOK | =
M_ZERO);
>>>> -               ifa_init(ifa);
>>>> +               ifa =3D ifa_alloc(ifasize, M_WAITOK);
>>>>               sdl =3D (struct sockaddr_dl *)(ifa + 1);
>>>>               sdl->sdl_len =3D socksize;
>>>>               sdl->sdl_family =3D AF_LINK;
>>>> @@ -1417,13 +1416,23 @@ if_maddr_runlock(struct ifnet *ifp)
>>>> /*
>>>> * Initialization, destruction and refcounting functions for =
ifaddrs.
>>>> */
>>>> -void
>>>> -ifa_init(struct ifaddr *ifa)
>>>> +struct ifaddr *
>>>> +ifa_alloc(size_t size, int flags)
>>>> {
>>>> +       struct ifaddr *ifa;
>>>> +
>>>> +       KASSERT(size >=3D sizeof(struct ifaddr),
>>>> +           ("%s: invalid size %zu", __func__, size));
>>>> +
>>>=20
>>> We have crashes stemming from this:
>>>=20
>>> panic: ifa_alloc: invalid size 16
>>>=20
>>> panic() at panic+0x43/frame 0xfffffe009e777760
>>> ifa_alloc() at ifa_alloc+0xd6/frame 0xfffffe009e777780
>>> in6_ifadd() at in6_ifadd+0xd8/frame 0xfffffe009e7778a0
>>> nd6_ra_input() at nd6_ra_input+0x1023/frame 0xfffffe009e777a80
>>> icmp6_input() at icmp6_input+0x5b6/frame 0xfffffe009e777c00
>>> ip6_input() at ip6_input+0xc94/frame 0xfffffe009e777ce0
>>> sppp_input() at sppp_input+0x502/frame 0xfffffe009e777d70
>>> pppoe_data_input() at pppoe_data_input+0x1e7/frame =
0xfffffe009e777de0
>>> swi_net() at swi_net+0x19b/frame 0xfffffe009e777e60
>>> ithread_loop() at ithread_loop+0x266/frame 0xfffffe009e777ef0
>>> fork_exit() at fork_exit+0x82/frame 0xfffffe009e777f30
>>> fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe009e777f30
>>>=20
>>> in6_ifadd has:
>>>                       struct in6_addr taddr;
>>>                       ifa =3D ifa_alloc(sizeof(taddr), M_WAITOK);
>>>=20
>>> should the assert be simply removed?
>>=20
>> Hi Mateusz,
>>=20
>> I believe you just found a bug.
>>=20
>> Try the following patch please,
>>=20
>> --- a/sys/netinet6/nd6_rtr.c
>> +++ b/sys/netinet6/nd6_rtr.c
>> @@ -1243,8 +1243,7 @@ in6_ifadd(struct nd_prefixctl *pr, int mcast)
>>=20
>>                /* No suitable LL address, get the ifid directly */
>>                if (ifid_addr =3D=3D NULL) {
>> -                       struct in6_addr taddr;
>> -                       ifa =3D ifa_alloc(sizeof(taddr), M_WAITOK);
>> +                       ifa =3D ifa_alloc(sizeof(struct in6_ifaddr), =
M_WAITOK);
>>                        if (ifa) {
>>                                ib =3D (struct in6_ifaddr *)ifa;
>>                                ifid_addr =3D &ib->ia_addr.sin6_addr;
>>=20
>=20
> Thanks for the patch. I don't have means to readily test it.
>=20
> This panic was getting in the way of looking at another panic so I did
> not pay much attention.
>=20
> But now that you point this out, I don't think the patch is =
sufficient.
>=20
> in6_get_ifid starts with NET_EPOCH_ASSERT.
>=20
> At the same time malloc(..., M_WAITOK) is illegal to call from an =
epoch section.

So M_NOWAIT should be used, instead of M_WAITOK .

>=20
> I don't know if in6_ifadd is called within net epoch, either way the
> above two are clearly contradictory.
>=20
> Is there are a reason to malloc this in the first place?

I have not look into the code throughly. That was introduced via commit =
https://cgit.freebsd.org/src/commit/?id=3D9e792f7ef7298080c058fbc2d36a4e60=
e596dae9 .

See https://reviews.freebsd.org/D51778 for more context.

Best regards,
Zhenlei


--Apple-Mail=_8A8C8FF2-DB0E-4602-97BC-9632550436C9
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">On Sep 30, 2025, at 10:59 AM, Mateusz Guzik &lt;<a =
href=3D"mailto:mjguzik@gmail.com" class=3D"">mjguzik@gmail.com</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><meta =
charset=3D"UTF-8" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); =
font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">On Tue, Sep 30, 2025 at 4:38=E2=80=AFAM Zhenlei Huang =
&lt;</span><a href=3D"mailto:zlei@freebsd.org" style=3D"font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; orphans: auto; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; =
-webkit-text-stroke-width: 0px;" class=3D"">zlei@freebsd.org</a><span =
style=3D"caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; =
font-size: 13px; font-style: normal; font-variant-caps: normal; =
font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">&gt; =
wrote:</span><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><blockquote type=3D"cite" style=3D"font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; orphans: auto; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><br =
class=3D""><br class=3D""><br class=3D""><blockquote type=3D"cite" =
class=3D"">On Sep 29, 2025, at 10:29 PM, Mateusz Guzik &lt;<a =
href=3D"mailto:mjguzik@gmail.com" class=3D"">mjguzik@gmail.com</a>&gt; =
wrote:<br class=3D""><br class=3D"">On Tue, Oct 15, 2013 at 12:31=E2=80=AF=
PM Gleb Smirnoff &lt;<a href=3D"mailto:glebius@freebsd.org" =
class=3D"">glebius@freebsd.org</a>&gt; wrote:<br class=3D""><blockquote =
type=3D"cite" class=3D""><br class=3D"">Author: glebius<br =
class=3D"">Date: Tue Oct 15 10:31:42 2013<br class=3D"">New Revision: =
256519<br class=3D"">URL: <a =
href=3D"http://svnweb.freebsd.org/changeset/base/256519" =
class=3D"">http://svnweb.freebsd.org/changeset/base/256519</a><br =
class=3D""><br class=3D"">Log:<br class=3D"">&nbsp;&nbsp;Remove =
ifa_init() and provide ifa_alloc() that will allocate and setup<br =
class=3D"">struct ifaddr internally.<br class=3D""><br =
class=3D"">Sponsored by: Netflix<br class=3D"">Sponsored by: Nginx, =
Inc.<br class=3D""><br class=3D"">Modified:<br =
class=3D"">head/sys/net/if.c<br class=3D"">head/sys/net/if_var.h<br =
class=3D"">head/sys/netatalk/at_control.c<br =
class=3D"">head/sys/netinet/in.c<br class=3D"">head/sys/netinet6/in6.c<br =
class=3D"">head/sys/netipx/ipx.c<br class=3D""><br class=3D"">Modified: =
head/sys/net/if.c<br =
class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D<br class=3D"">--- head/sys/net/if.c =
&nbsp;&nbsp;Tue Oct 15 10:19:24 2013 =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(r256518)<br class=3D"">+++ =
head/sys/net/if.c &nbsp;&nbsp;Tue Oct 15 10:31:42 2013 =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(r256519)<br class=3D"">@@ =
-633,8 +633,7 @@ if_attach_internal(struct ifnet *ifp, in<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socks=
ize =3D sizeof(*sdl);<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;socksize =3D roundup2(socksize, sizeof(long));<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;ifasize =3D sizeof(*ifa) + 2 * socksize;<br =
class=3D"">- =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;ifa =3D malloc(ifasize, M_IFADDR, M_WAITOK | M_ZERO);<br =
class=3D"">- =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;ifa_init(ifa);<br class=3D"">+ =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;ifa =3D ifa_alloc(ifasize, M_WAITOK);<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;sdl =3D (struct sockaddr_dl *)(ifa + 1);<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;sdl-&gt;sdl_len =3D socksize;<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;sdl-&gt;sdl_family =3D AF_LINK;<br class=3D"">@@ =
-1417,13 +1416,23 @@ if_maddr_runlock(struct ifnet *ifp)<br =
class=3D"">/*<br class=3D"">* Initialization, destruction and =
refcounting functions for ifaddrs.<br class=3D"">*/<br class=3D"">-void<br=
 class=3D"">-ifa_init(struct ifaddr *ifa)<br class=3D"">+struct ifaddr =
*<br class=3D"">+ifa_alloc(size_t size, int flags)<br class=3D"">{<br =
class=3D"">+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct ifaddr *ifa;<br =
class=3D"">+<br class=3D"">+ =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KASSERT(size &gt;=3D sizeof(struct =
ifaddr),<br class=3D"">+ =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;("%s: =
invalid size %zu", __func__, size));<br class=3D"">+<br =
class=3D""></blockquote><br class=3D"">We have crashes stemming from =
this:<br class=3D""><br class=3D"">panic: ifa_alloc: invalid size 16<br =
class=3D""><br class=3D"">panic() at panic+0x43/frame =
0xfffffe009e777760<br class=3D"">ifa_alloc() at ifa_alloc+0xd6/frame =
0xfffffe009e777780<br class=3D"">in6_ifadd() at in6_ifadd+0xd8/frame =
0xfffffe009e7778a0<br class=3D"">nd6_ra_input() at =
nd6_ra_input+0x1023/frame 0xfffffe009e777a80<br class=3D"">icmp6_input() =
at icmp6_input+0x5b6/frame 0xfffffe009e777c00<br class=3D"">ip6_input() =
at ip6_input+0xc94/frame 0xfffffe009e777ce0<br class=3D"">sppp_input() =
at sppp_input+0x502/frame 0xfffffe009e777d70<br =
class=3D"">pppoe_data_input() at pppoe_data_input+0x1e7/frame =
0xfffffe009e777de0<br class=3D"">swi_net() at swi_net+0x19b/frame =
0xfffffe009e777e60<br class=3D"">ithread_loop() at =
ithread_loop+0x266/frame 0xfffffe009e777ef0<br class=3D"">fork_exit() at =
fork_exit+0x82/frame 0xfffffe009e777f30<br class=3D"">fork_trampoline() =
at fork_trampoline+0xe/frame 0xfffffe009e777f30<br class=3D""><br =
class=3D"">in6_ifadd has:<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struc=
t in6_addr taddr;<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifa =
=3D ifa_alloc(sizeof(taddr), M_WAITOK);<br class=3D""><br =
class=3D"">should the assert be simply removed?<br =
class=3D""></blockquote><br class=3D"">Hi Mateusz,<br class=3D""><br =
class=3D"">I believe you just found a bug.<br class=3D""><br =
class=3D"">Try the following patch please,<br class=3D""><br =
class=3D"">--- a/sys/netinet6/nd6_rtr.c<br class=3D"">+++ =
b/sys/netinet6/nd6_rtr.c<br class=3D"">@@ -1243,8 +1243,7 @@ =
in6_ifadd(struct nd_prefixctl *pr, int mcast)<br class=3D""><br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;/* No suitable LL address, get the ifid =
directly */<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;if (ifid_addr =3D=3D NULL) {<br class=3D"">- =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct =
in6_addr taddr;<br class=3D"">- =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifa =3D =
ifa_alloc(sizeof(taddr), M_WAITOK);<br class=3D"">+ =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifa =3D =
ifa_alloc(sizeof(struct in6_ifaddr), M_WAITOK);<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;if (ifa) {<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ib =3D (struct =
in6_ifaddr *)ifa;<br =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifid_addr =3D =
&amp;ib-&gt;ia_addr.sin6_addr;<br class=3D""><br =
class=3D""></blockquote><br style=3D"caret-color: rgb(0, 0, 0); =
font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><span style=3D"caret-color: rgb(0, 0, =
0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">Thanks for the patch. I don't have means to readily test =
it.</span><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">This panic =
was getting in the way of looking at another panic so I did</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; =
font-size: 13px; font-style: normal; font-variant-caps: normal; =
font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">not pay much =
attention.</span><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">But now that =
you point this out, I don't think the patch is sufficient.</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; =
font-size: 13px; font-style: normal; font-variant-caps: normal; =
font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">in6_get_ifid =
starts with NET_EPOCH_ASSERT.</span><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><span style=3D"caret-color: rgb(0, 0, =
0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">At the same time malloc(..., M_WAITOK) is illegal to call =
from an epoch section.</span><br style=3D"caret-color: rgb(0, 0, 0); =
font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""></div></blockquote><div><br =
class=3D""></div><div>So M_NOWAIT should be used, instead of M_WAITOK =
.</div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D""><br style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">I don't know =
if in6_ifadd is called within net epoch, either way the</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; =
font-size: 13px; font-style: normal; font-variant-caps: normal; =
font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); font-family: =
Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; float: none; display: inline !important;" class=3D"">above two are =
clearly contradictory.</span><br style=3D"caret-color: rgb(0, 0, 0); =
font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><span style=3D"caret-color: rgb(0, 0, =
0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">Is there are a reason to malloc this in the first =
place?</span></div></blockquote><br class=3D""></div><div>I have not =
look into the code throughly. That was introduced via commit&nbsp;<a =
href=3D"https://cgit.freebsd.org/src/commit/?id=3D9e792f7ef7298080c058fbc2=
d36a4e60e596dae9" =
class=3D"">https://cgit.freebsd.org/src/commit/?id=3D9e792f7ef7298080c058f=
bc2d36a4e60e596dae9</a> .</div><div><br class=3D""></div><div>See&nbsp;<a =
href=3D"https://reviews.freebsd.org/D51778" =
class=3D"">https://reviews.freebsd.org/D51778</a>; for more =
context.</div><br class=3D""><div class=3D"">
<div>Best regards,</div><div>Zhenlei</div>

</div>
<br class=3D""></body></html>=

--Apple-Mail=_8A8C8FF2-DB0E-4602-97BC-9632550436C9--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?13C41285-E7E1-4B49-B9A7-1B157B445CDD>