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

Reply via email to