aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2009-04-17 18:59:23 -0400
committerDavid S. Miller <davem@davemloft.net>2009-04-17 18:59:23 -0400
commit7816a0a862d851d0b05710e7d94bfe390f3180e2 (patch)
tree0b4f9099df21b1f7295637e8c28aa72721150b7d /net
parent75a241f959a65ec9bde237d1af1a34ef794f0c9c (diff)
vlan/macvlan: fix NULL pointer dereferences in ethtool handlers
Check whether the underlying device provides a set of ethtool ops before checking for individual handlers to avoid NULL pointer dereferences. Reported-by: Art van Breemen <ard@telegraafnet.nl> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/8021q/vlan_dev.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 1b34135cf99..6b092136401 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -668,7 +668,8 @@ static int vlan_ethtool_get_settings(struct net_device *dev,
668 const struct vlan_dev_info *vlan = vlan_dev_info(dev); 668 const struct vlan_dev_info *vlan = vlan_dev_info(dev);
669 struct net_device *real_dev = vlan->real_dev; 669 struct net_device *real_dev = vlan->real_dev;
670 670
671 if (!real_dev->ethtool_ops->get_settings) 671 if (!real_dev->ethtool_ops ||
672 !real_dev->ethtool_ops->get_settings)
672 return -EOPNOTSUPP; 673 return -EOPNOTSUPP;
673 674
674 return real_dev->ethtool_ops->get_settings(real_dev, cmd); 675 return real_dev->ethtool_ops->get_settings(real_dev, cmd);