>>>>> On Sun, 15 Jul 2001 16:50:36 -0400 (EDT), 
>>>>> Garrett Wollman <[EMAIL PROTECTED]> said:

>> Current if_addmulti() calls MALLOC() with M_WAITOK.  However,
>> if_addmulti() can be called from in[6]_addmulti() with splnet().  It
>> may lead kernel panic.

> This is not a problem (or should not be).  It is permissible to sleep
> while some interrupts are blocked; it is just not (in 4-stable)
> permissible to sleep in interrupt context.  The PR that I sent a few
> days ago was an example of one such circumstance.  Is it really the
> case that in6_addmulti() can be invoked in interrupt context,

Yes, it is.  in6_update_ifa() can be called under an interrupt
context, as you pointed out, and it calls in6_joingroup(), which then
calls in6_addmulti().

> and if
> so, why?

When a new unicast address is configured, the configuring node must be
join the solicited-node multicast group corresponding to the unicast
address.  Since the autoconfiguration procedure runs under an
interrupt context, the joining routine also runs under the context.

                                        JINMEI, Tatuya
                                        Communication Platform Lab.
                                        Corporate R&D Center, Toshiba Corp.
                                        [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to