diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2020-07-03 08:05:59 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2020-07-03 08:05:59 -0300 |
commit | 9434628fcee63b1f3c6a6881b70e8f69a1f68e88 (patch) | |
tree | 255d093aeda6c125f0158e883eb2bf400bb7f737 /drivers/net/wireguard/netlink.c | |
parent | c42ad5d4358230be166fc36c87bae0dd1680c570 (diff) | |
parent | cdd3bb54332f82295ed90cd0c09c78cd0c0ee822 (diff) | |
download | linux-9434628fcee63b1f3c6a6881b70e8f69a1f68e88.tar.bz2 |
Merge remote-tracking branch 'torvalds/master' into perf/urgent
To synchronize UAPI headers.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'drivers/net/wireguard/netlink.c')
-rw-r--r-- | drivers/net/wireguard/netlink.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/wireguard/netlink.c b/drivers/net/wireguard/netlink.c index 802099c8828a..20a4f3c0a0a1 100644 --- a/drivers/net/wireguard/netlink.c +++ b/drivers/net/wireguard/netlink.c @@ -511,11 +511,15 @@ static int wg_set_device(struct sk_buff *skb, struct genl_info *info) if (flags & ~__WGDEVICE_F_ALL) goto out; - ret = -EPERM; - if ((info->attrs[WGDEVICE_A_LISTEN_PORT] || - info->attrs[WGDEVICE_A_FWMARK]) && - !ns_capable(wg->creating_net->user_ns, CAP_NET_ADMIN)) - goto out; + if (info->attrs[WGDEVICE_A_LISTEN_PORT] || info->attrs[WGDEVICE_A_FWMARK]) { + struct net *net; + rcu_read_lock(); + net = rcu_dereference(wg->creating_net); + ret = !net || !ns_capable(net->user_ns, CAP_NET_ADMIN) ? -EPERM : 0; + rcu_read_unlock(); + if (ret) + goto out; + } ++wg->device_update_gen; |