Hajimu UMEMOTO wrote:
NOWAIT MAY return.
you have not handled the case for when it returns with a NULL allocation
so if it returns NULL you continue, and page-fault immediatly.
>
> 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
WAIT____
--
+------------------------------------+ ______ _ __
| __--_|\ Julian Elischer | \ U \/ / hard at work in
| / \ [EMAIL PROTECTED] +------>x USA \ a very strange
| ( OZ ) \___ ___ | country !
+- X_.---._/ presently in San Francisco \_/ \\
v
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message