net: Fix oops in dev_ifsioc()
authorJarek Poplawski <jarkao2@gmail.com>
Tue, 23 Dec 2008 03:35:28 +0000 (19:35 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Dec 2008 03:35:28 +0000 (19:35 -0800)
A command like this: "brctl addif br1 eth1" issued as a user gave me
an oops when bridge module wasn't loaded. It's caused by using a dev
pointer before checking for NULL.

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 048cf1197872fca60dc12317b3dd8ccd0b11236f..daca72e6b37b12e7c8ea4d4ee5fa59e01cac1b59 100644 (file)
@@ -3745,11 +3745,13 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
 {
        int err;
        struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
-       const struct net_device_ops *ops = dev->netdev_ops;
+       const struct net_device_ops *ops;
 
        if (!dev)
                return -ENODEV;
 
+       ops = dev->netdev_ops;
+
        switch (cmd) {
                case SIOCSIFFLAGS:      /* Set interface flags */
                        return dev_change_flags(dev, ifr->ifr_flags);