There is no point in copying the structure from userspace or looking up
a device if SIT support is not disabled and we'll eventually return
-ENODEV anyway.

Signed-off-by: Christoph Hellwig <h...@lst.de>
---
 net/ipv6/addrconf.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index ab7e839753aed..8300176f91e74 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2794,6 +2794,9 @@ int addrconf_set_dstaddr(struct net *net, void __user 
*arg)
        struct net_device *dev;
        int err = -EINVAL;
 
+       if (!IS_ENABLED(CONFIG_IPV6_SIT))
+               return -ENODEV;
+
        rtnl_lock();
 
        err = -EFAULT;
@@ -2806,7 +2809,6 @@ int addrconf_set_dstaddr(struct net *net, void __user 
*arg)
        if (!dev)
                goto err_exit;
 
-#if IS_ENABLED(CONFIG_IPV6_SIT)
        if (dev->type == ARPHRD_SIT) {
                const struct net_device_ops *ops = dev->netdev_ops;
                struct ifreq ifr;
@@ -2842,7 +2844,6 @@ int addrconf_set_dstaddr(struct net *net, void __user 
*arg)
                        err = dev_open(dev, NULL);
                }
        }
-#endif
 
 err_exit:
        rtnl_unlock();
-- 
2.26.2

Reply via email to