net-ipv6: IPV6_TRANSPARENT - check NET_RAW prior to NET_ADMIN
authorMaciej Żenczykowski <maze@google.com>
Thu, 21 Nov 2019 21:19:08 +0000 (13:19 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Nov 2019 03:15:20 +0000 (19:15 -0800)
NET_RAW is less dangerous, so more likely to be available to a process,
so check it first to prevent some spurious logging.

This matches IP_TRANSPARENT which checks NET_RAW first.

Signed-off-by: Maciej Żenczykowski <maze@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ipv6_sockglue.c

index 264c292e7dcc479b0020a9c712291fac73ae3a06..79fc012dd2cae44b69057c168037b018775d1f49 100644 (file)
@@ -363,8 +363,8 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
                break;
 
        case IPV6_TRANSPARENT:
-               if (valbool && !ns_capable(net->user_ns, CAP_NET_ADMIN) &&
-                   !ns_capable(net->user_ns, CAP_NET_RAW)) {
+               if (valbool && !ns_capable(net->user_ns, CAP_NET_RAW) &&
+                   !ns_capable(net->user_ns, CAP_NET_ADMIN)) {
                        retv = -EPERM;
                        break;
                }