]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - net/core/rtnetlink.c
net: rtnetlink: validate IFLA_MTU attribute in rtnl_create_link()
[mirror_ubuntu-bionic-kernel.git] / net / core / rtnetlink.c
index b9bc95b0942c616550fd661f975aee4d1ae40cb0..f6084908fc40751288fdf18f2877f95e8446855d 100644 (file)
@@ -2706,8 +2706,17 @@ struct net_device *rtnl_create_link(struct net *net,
        dev->rtnl_link_ops = ops;
        dev->rtnl_link_state = RTNL_LINK_INITIALIZING;
 
-       if (tb[IFLA_MTU])
-               dev->mtu = nla_get_u32(tb[IFLA_MTU]);
+       if (tb[IFLA_MTU]) {
+               u32 mtu = nla_get_u32(tb[IFLA_MTU]);
+               int err;
+
+               err = dev_validate_mtu(dev, mtu);
+               if (err) {
+                       free_netdev(dev);
+                       return ERR_PTR(err);
+               }
+               dev->mtu = mtu;
+       }
        if (tb[IFLA_ADDRESS]) {
                memcpy(dev->dev_addr, nla_data(tb[IFLA_ADDRESS]),
                                nla_len(tb[IFLA_ADDRESS]));