]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net: rmnet: do not allow to change mux id if mux id is duplicated
authorTaehee Yoo <ap420073@gmail.com>
Thu, 27 Feb 2020 12:25:19 +0000 (12:25 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Feb 2020 19:45:07 +0000 (11:45 -0800)
Basically, duplicate mux id isn't be allowed.
So, the creation of rmnet will be failed if there is duplicate mux id
is existing.
But, changelink routine doesn't check duplicate mux id.

Test commands:
    modprobe rmnet
    ip link add dummy0 type dummy
    ip link add rmnet0 link dummy0 type rmnet mux_id 1
    ip link add rmnet1 link dummy0 type rmnet mux_id 2
    ip link set rmnet1 type rmnet mux_id 1

Fixes: 23790ef12082 ("net: qualcomm: rmnet: Allow to configure flags for existing devices")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c

index 0ad64aa6659257a2f8f7488dfa524977fcc094d8..3c0e6d24d0834528f274d6a92378ddb10622b7f6 100644 (file)
@@ -306,6 +306,10 @@ static int rmnet_changelink(struct net_device *dev, struct nlattr *tb[],
 
        if (data[IFLA_RMNET_MUX_ID]) {
                mux_id = nla_get_u16(data[IFLA_RMNET_MUX_ID]);
+               if (rmnet_get_endpoint(port, mux_id)) {
+                       NL_SET_ERR_MSG_MOD(extack, "MUX ID already exists");
+                       return -EINVAL;
+               }
                ep = rmnet_get_endpoint(port, priv->mux_id);
                if (!ep)
                        return -ENODEV;