VMXNET3: Check for map error in vmxnet3_set_mc
We should check if the map of the table actually succeeds, and also free resources accordingly. Version bumped to 1.2.1.0 Acked-by: Shelley Gong <shelleygong@vmware.com> Acked-by: Bhavesh Davda <bhavesh@vmware.com> Signed-off-by: Andy King <acking@vmware.com> Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c5eba0b6f8
commit
4ad9a64f53
|
@ -2056,7 +2056,6 @@ vmxnet3_set_mc(struct net_device *netdev)
|
|||
if (!netdev_mc_empty(netdev)) {
|
||||
new_table = vmxnet3_copy_mc(netdev);
|
||||
if (new_table) {
|
||||
new_mode |= VMXNET3_RXM_MCAST;
|
||||
rxConf->mfTableLen = cpu_to_le16(
|
||||
netdev_mc_count(netdev) * ETH_ALEN);
|
||||
new_table_pa = dma_map_single(
|
||||
|
@ -2064,15 +2063,18 @@ vmxnet3_set_mc(struct net_device *netdev)
|
|||
new_table,
|
||||
rxConf->mfTableLen,
|
||||
PCI_DMA_TODEVICE);
|
||||
}
|
||||
|
||||
if (new_table_pa) {
|
||||
new_mode |= VMXNET3_RXM_MCAST;
|
||||
rxConf->mfTablePA = cpu_to_le64(new_table_pa);
|
||||
} else {
|
||||
netdev_info(netdev, "failed to copy mcast list"
|
||||
", setting ALL_MULTI\n");
|
||||
netdev_info(netdev,
|
||||
"failed to copy mcast list, setting ALL_MULTI\n");
|
||||
new_mode |= VMXNET3_RXM_ALL_MULTI;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!(new_mode & VMXNET3_RXM_MCAST)) {
|
||||
rxConf->mfTableLen = 0;
|
||||
rxConf->mfTablePA = 0;
|
||||
|
@ -2091,11 +2093,10 @@ vmxnet3_set_mc(struct net_device *netdev)
|
|||
VMXNET3_CMD_UPDATE_MAC_FILTERS);
|
||||
spin_unlock_irqrestore(&adapter->cmd_lock, flags);
|
||||
|
||||
if (new_table) {
|
||||
if (new_table_pa)
|
||||
dma_unmap_single(&adapter->pdev->dev, new_table_pa,
|
||||
rxConf->mfTableLen, PCI_DMA_TODEVICE);
|
||||
kfree(new_table);
|
||||
}
|
||||
kfree(new_table);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -69,10 +69,10 @@
|
|||
/*
|
||||
* Version numbers
|
||||
*/
|
||||
#define VMXNET3_DRIVER_VERSION_STRING "1.2.0.0-k"
|
||||
#define VMXNET3_DRIVER_VERSION_STRING "1.2.1.0-k"
|
||||
|
||||
/* a 32-bit int, each byte encode a verion number in VMXNET3_DRIVER_VERSION */
|
||||
#define VMXNET3_DRIVER_VERSION_NUM 0x01020000
|
||||
#define VMXNET3_DRIVER_VERSION_NUM 0x01020100
|
||||
|
||||
#if defined(CONFIG_PCI_MSI)
|
||||
/* RSS only makes sense if MSI-X is supported. */
|
||||
|
|
Loading…
Reference in a new issue