OpenSolaris

Printable Version Enter a New Search
Bug ID 6755448
Synopsis ifconfig wedged in SIOCLIFREMOVEIF
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:tcp-ip
Keywords clearview | rtiq_reviewed
Responsible Engineer Phil Kirk
Reported Against snv_100
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_103
Fixed In snv_103
Release Fixed solaris_nevada(snv_103)
Related Bugs 6595874
Submit Date 2-October-2008
Last Update Date 2-November-2009
Description
It's possible to wedge kernel threads in ip by doing the following:

1. Plumb two IPv6 addresses on interface A (A and A:1).
2. Join an IPv6 multicast group on interface A.
3. Bring interface A down (ifconfig A inet6 down)
4. Unplumb A:1 (ifconfig A:1 inet6 unplumb)

4 becomes wedged issuing SIOCLIFREMOVEIF due to some inccorect logic in ipif_is_freeable():

        /* This is the last ipif going down or being deleted on this ill */
        if (!ILL_FREE_OK(ill) || ill->ill_refcnt != 0) {
                return (B_FALSE);
        }

ILL_FREE_OK() will return B_FALSE in this case (as it should), as there's another ipif on this ill.  It just happens to be down...
A simple C program that joins a multicast group to help to reproduce this problem is attached to this CR.
Work Around
N/A
Comments
N/A