diff options
author | Bhavesh Davda <bhavesh@vmware.com> | 2013-03-06 12:04:53 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-07 16:10:47 -0500 |
commit | e4fabf2b6e6d75752d5eede57f23ff8e9c6aa09b (patch) | |
tree | 9ec06708fed8c38ad59273d58a629a6852bfa577 /drivers/net/vmxnet3/vmxnet3_ethtool.c | |
parent | c5b156794736142fa3120d488f260ff26da3d134 (diff) | |
download | op-kernel-dev-e4fabf2b6e6d75752d5eede57f23ff8e9c6aa09b.zip op-kernel-dev-e4fabf2b6e6d75752d5eede57f23ff8e9c6aa09b.tar.gz |
vmxnet3: prevent div-by-zero panic when ring resizing uninitialized dev
Linux is free to call ethtool ops as soon as a netdev exists when probe
finishes. However, we only allocate vmxnet3 tx/rx queues and initialize the
rx_buf_per_pkt field in struct vmxnet3_adapter when the interface is
opened (UP).
Signed-off-by: Bhavesh Davda <bhavesh@vmware.com>
Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/vmxnet3/vmxnet3_ethtool.c')
-rw-r--r-- | drivers/net/vmxnet3/vmxnet3_ethtool.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c index a0feb17..63a1243 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c @@ -472,6 +472,12 @@ vmxnet3_set_ringparam(struct net_device *netdev, VMXNET3_RX_RING_MAX_SIZE) return -EINVAL; + /* if adapter not yet initialized, do nothing */ + if (adapter->rx_buf_per_pkt == 0) { + netdev_err(netdev, "adapter not completely initialized, " + "ring size cannot be changed yet\n"); + return -EOPNOTSUPP; + } /* round it up to a multiple of VMXNET3_RING_SIZE_ALIGN */ new_tx_ring_size = (param->tx_pending + VMXNET3_RING_SIZE_MASK) & |