Hi,

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.  So, I wish to change to use M_NOWAIT.
Any comment?

Index: sys/net/if.c
diff -u sys/net/if.c.orig sys/net/if.c
--- sys/net/if.c.orig   Wed Jul  4 20:28:47 2001
+++ sys/net/if.c        Sun Jul 15 23:47:15 2001
@@ -1412,8 +1412,8 @@
                llsa = 0;
        }
 
-       MALLOC(ifma, struct ifmultiaddr *, sizeof *ifma, M_IFMADDR, M_WAITOK);
-       MALLOC(dupsa, struct sockaddr *, sa->sa_len, M_IFMADDR, M_WAITOK);
+       MALLOC(ifma, struct ifmultiaddr *, sizeof *ifma, M_IFMADDR, M_NOWAIT);
+       MALLOC(dupsa, struct sockaddr *, sa->sa_len, M_IFMADDR, M_NOWAIT);
        bcopy(sa, dupsa, sa->sa_len);
 
        ifma->ifma_addr = dupsa;
@@ -1441,9 +1441,9 @@
                        ifma->ifma_refcount++;
                } else {
                        MALLOC(ifma, struct ifmultiaddr *, sizeof *ifma,
-                              M_IFMADDR, M_WAITOK);
+                              M_IFMADDR, M_NOWAIT);
                        MALLOC(dupsa, struct sockaddr *, llsa->sa_len,
-                              M_IFMADDR, M_WAITOK);
+                              M_IFMADDR, M_NOWAIT);
                        bcopy(llsa, dupsa, llsa->sa_len);
                        ifma->ifma_addr = dupsa;
                        ifma->ifma_ifp = ifp;

--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
[EMAIL PROTECTED]  [EMAIL PROTECTED]  ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/

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

Reply via email to