diff options
author | Patrick McHardy <kaber@trash.net> | 2009-04-17 15:59:23 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-17 15:59:23 -0700 |
commit | 7816a0a862d851d0b05710e7d94bfe390f3180e2 (patch) | |
tree | 0b4f9099df21b1f7295637e8c28aa72721150b7d /net | |
parent | 75a241f959a65ec9bde237d1af1a34ef794f0c9c (diff) | |
download | op-kernel-dev-7816a0a862d851d0b05710e7d94bfe390f3180e2.zip op-kernel-dev-7816a0a862d851d0b05710e7d94bfe390f3180e2.tar.gz |
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.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 1b34135..6b09213 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, const struct vlan_dev_info *vlan = vlan_dev_info(dev); struct net_device *real_dev = vlan->real_dev; - if (!real_dev->ethtool_ops->get_settings) + if (!real_dev->ethtool_ops || + !real_dev->ethtool_ops->get_settings) return -EOPNOTSUPP; return real_dev->ethtool_ops->get_settings(real_dev, cmd); |