netkit: Reject IFLA_NETKIT_PEER_INFO in netkit_change_link
authorDaniel Borkmann <daniel@iogearbox.net>
Mon, 27 Nov 2023 20:05:33 +0000 (21:05 +0100)
committerMartin KaFai Lau <martin.lau@kernel.org>
Tue, 28 Nov 2023 00:07:34 +0000 (16:07 -0800)
The IFLA_NETKIT_PEER_INFO attribute can only be used during device
creation, but not via changelink callback. Hence reject it there.

Fixes: 35dfaad7188c ("netkit, bpf: Add bpf programmable net device")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Cc: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/e86a277a1e8d3b19890312779e42f790b0605ea4.1701115314.git.daniel@iogearbox.net
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
drivers/net/netkit.c

index 97bd6705c24117cff255ebbe34fc9efc4c0da2bd..39171380ccf29e27412bb2b9cee7102acc4a83ab 100644 (file)
@@ -851,6 +851,12 @@ static int netkit_change_link(struct net_device *dev, struct nlattr *tb[],
                return -EACCES;
        }
 
+       if (data[IFLA_NETKIT_PEER_INFO]) {
+               NL_SET_ERR_MSG_ATTR(extack, data[IFLA_NETKIT_PEER_INFO],
+                                   "netkit peer info cannot be changed after device creation");
+               return -EINVAL;
+       }
+
        if (data[IFLA_NETKIT_POLICY]) {
                attr = data[IFLA_NETKIT_POLICY];
                policy = nla_get_u32(attr);