sit: use __GFP_NOWARN for user controlled allocation
authorWANG Cong <xiyou.wangcong@gmail.com>
Thu, 22 Jun 2017 22:29:33 +0000 (15:29 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 23 Jun 2017 18:08:40 +0000 (14:08 -0400)
The memory allocation size is controlled by user-space,
if it is too large just fail silently and return NULL,
not to mention there is a fallback allocation later.

Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Tested-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/sit.c

index 2378503577b0c8823049b7d17f857466481077b3..f8ad15891cd75576765560bd76b45417b5836f57 100644 (file)
@@ -305,7 +305,7 @@ static int ipip6_tunnel_get_prl(struct ip_tunnel *t,
         * we try harder to allocate.
         */
        kp = (cmax <= 1 || capable(CAP_NET_ADMIN)) ?
-               kcalloc(cmax, sizeof(*kp), GFP_KERNEL) :
+               kcalloc(cmax, sizeof(*kp), GFP_KERNEL | __GFP_NOWARN) :
                NULL;
 
        rcu_read_lock();