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 <<a = href=3D"mailto:mjguzik@gmail.com" class=3D"">mjguzik@gmail.com</a>> = 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 = <</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"">> = 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 <<a = href=3D"mailto:mjguzik@gmail.com" class=3D"">mjguzik@gmail.com</a>> = wrote:<br class=3D""><br class=3D"">On Tue, Oct 15, 2013 at 12:31=E2=80=AF= PM Gleb Smirnoff <<a href=3D"mailto:glebius@freebsd.org" = class=3D"">glebius@freebsd.org</a>> 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""> 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 = Tue Oct 15 10:19:24 2013 = (r256518)<br class=3D"">+++ = head/sys/net/if.c Tue Oct 15 10:31:42 2013 = (r256519)<br class=3D"">@@ = -633,8 +633,7 @@ if_attach_internal(struct ifnet *ifp, in<br = class=3D""> &nb= sp; socks= ize =3D sizeof(*sdl);<br = class=3D""> &nb= sp; socksize =3D roundup2(socksize, sizeof(long));<br = class=3D""> &nb= sp; ifasize =3D sizeof(*ifa) + 2 * socksize;<br = class=3D"">- = &n= bsp; ifa =3D malloc(ifasize, M_IFADDR, M_WAITOK | M_ZERO);<br = class=3D"">- = &n= bsp; ifa_init(ifa);<br class=3D"">+ = &n= bsp; ifa =3D ifa_alloc(ifasize, M_WAITOK);<br = class=3D""> &nb= sp; sdl =3D (struct sockaddr_dl *)(ifa + 1);<br = class=3D""> &nb= sp; sdl->sdl_len =3D socksize;<br = class=3D""> &nb= sp; sdl->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"">+ struct ifaddr *ifa;<br = class=3D"">+<br class=3D"">+ = KASSERT(size >=3D sizeof(struct = ifaddr),<br class=3D"">+ = ("%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""> &nb= sp; struc= t in6_addr taddr;<br = class=3D""> &nb= sp; 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""> &nb= sp; /* No suitable LL address, get the ifid = directly */<br = class=3D""> &nb= sp; if (ifid_addr =3D=3D NULL) {<br class=3D"">- = &n= bsp; struct = in6_addr taddr;<br class=3D"">- = &n= bsp; ifa =3D = ifa_alloc(sizeof(taddr), M_WAITOK);<br class=3D"">+ = &n= bsp; ifa =3D = ifa_alloc(sizeof(struct in6_ifaddr), M_WAITOK);<br = class=3D""> &nb= sp;  = ;if (ifa) {<br = class=3D""> &nb= sp;  = ; ib =3D (struct = in6_ifaddr *)ifa;<br = class=3D""> &nb= sp;  = ; ifid_addr =3D = &ib->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 <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 <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>