diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-13 16:25:36 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-13 16:25:36 -0400 |
| commit | dbbffe6898fd0d7bac66ded5d3c58835b13ddefc (patch) | |
| tree | fc69faae77d9fd64139c13691c3895fd87f83111 | |
| parent | 1f638766ffcd9f08209afcabb3e2df961552fe18 (diff) | |
| parent | ba21fc696dd28ea7a5880345faf0168619a478d2 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller:
"Several small bug fixes all over:
1) be2net driver uses wrong payload length when submitting MAC list
get requests to the chip. From Sathya Perla.
2) Fix mwifiex memory leak on driver unload, from Amitkumar Karwar.
3) Prevent random memory access in batman-adv, from Marek Lindner.
4) batman-adv doesn't check for pskb_trim_rcsum() errors, also from
Marek Lindner.
5) Fix fec crashes on rapid link up/down, from Frank Li.
6) Fix inner protocol grovelling in GSO, from Pravin B Shelar.
7) Link event validation fix in qlcnic from Rajesh Borundia.
8) Not all FEC chips can support checksum offload, fix from Shawn
Guo.
9) EXPORT_SYMBOL + inline doesn't make any sense, from Denis Efremov.
10) Fix race in passthru mode during device removal in macvlan, from
Jiri Pirko.
11) Fix RCU hash table lookup socket state race in ipv6, leading to
NULL pointer derefs, from Eric Dumazet.
12) Add several missing HAS_DMA kconfig dependencies, from Geert
Uyttterhoeven.
13) Fix bogus PCI resource management in 3c59x driver, from Sergei
Shtylyov.
14) Fix info leak in ipv6 GRE tunnel driver, from Amerigo Wang.
15) Fix device leak in ipv6 IPSEC policy layer, from Cong Wang.
16) DMA mapping leak fix in qlge from Thadeu Lima de Souza Cascardo.
17) Missing iounmap on probe failure in bna driver, from Wei Yongjun."
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (40 commits)
bna: add missing iounmap() on error in bnad_init()
qlge: fix dma map leak when the last chunk is not allocated
xfrm6: release dev before returning error
ipv6,gre: do not leak info to user-space
virtio_net: use default napi weight by default
emac: Fix EMAC soft reset on 460EX/GT
3c59x: fix PCI resource management
caif: CAIF_VIRTIO should depend on HAS_DMA
net/ethernet: MACB should depend on HAS_DMA
net/ethernet: ARM_AT91_ETHER should depend on HAS_DMA
net/wireless: ATH9K should depend on HAS_DMA
net/ethernet: STMMAC_ETH should depend on HAS_DMA
net/ethernet: NET_CALXEDA_XGMAC should depend on HAS_DMA
ipv6: do not clear pinet6 field
macvlan: fix passthru mode race between dev removal and rx path
ipv4: ip_output: remove inline marking of EXPORT_SYMBOL functions
net/mlx4: Strengthen VLAN tags/priorities enforcement in VST mode
net/mlx4_core: Add missing report on VST and spoof-checking dev caps
net: fec: enable hardware checksum only on imx6q-fec
qlcnic: Fix validation of link event command.
...
48 files changed, 498 insertions, 263 deletions
diff --git a/drivers/net/caif/Kconfig b/drivers/net/caif/Kconfig index 7ffc756131a2..547098086773 100644 --- a/drivers/net/caif/Kconfig +++ b/drivers/net/caif/Kconfig | |||
| @@ -43,7 +43,7 @@ config CAIF_HSI | |||
| 43 | 43 | ||
| 44 | config CAIF_VIRTIO | 44 | config CAIF_VIRTIO |
| 45 | tristate "CAIF virtio transport driver" | 45 | tristate "CAIF virtio transport driver" |
| 46 | depends on CAIF | 46 | depends on CAIF && HAS_DMA |
| 47 | select VHOST_RING | 47 | select VHOST_RING |
| 48 | select VIRTIO | 48 | select VIRTIO |
| 49 | select GENERIC_ALLOCATOR | 49 | select GENERIC_ALLOCATOR |
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c index de570a8f8967..072c6f14e8fc 100644 --- a/drivers/net/ethernet/3com/3c59x.c +++ b/drivers/net/ethernet/3com/3c59x.c | |||
| @@ -632,7 +632,6 @@ struct vortex_private { | |||
| 632 | pm_state_valid:1, /* pci_dev->saved_config_space has sane contents */ | 632 | pm_state_valid:1, /* pci_dev->saved_config_space has sane contents */ |
| 633 | open:1, | 633 | open:1, |
| 634 | medialock:1, | 634 | medialock:1, |
| 635 | must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */ | ||
| 636 | large_frames:1, /* accept large frames */ | 635 | large_frames:1, /* accept large frames */ |
| 637 | handling_irq:1; /* private in_irq indicator */ | 636 | handling_irq:1; /* private in_irq indicator */ |
| 638 | /* {get|set}_wol operations are already serialized by rtnl. | 637 | /* {get|set}_wol operations are already serialized by rtnl. |
| @@ -1012,6 +1011,12 @@ static int vortex_init_one(struct pci_dev *pdev, | |||
| 1012 | if (rc < 0) | 1011 | if (rc < 0) |
| 1013 | goto out; | 1012 | goto out; |
| 1014 | 1013 | ||
| 1014 | rc = pci_request_regions(pdev, DRV_NAME); | ||
| 1015 | if (rc < 0) { | ||
| 1016 | pci_disable_device(pdev); | ||
| 1017 | goto out; | ||
| 1018 | } | ||
| 1019 | |||
| 1015 | unit = vortex_cards_found; | 1020 | unit = vortex_cards_found; |
| 1016 | 1021 | ||
| 1017 | if (global_use_mmio < 0 && (unit >= MAX_UNITS || use_mmio[unit] < 0)) { | 1022 | if (global_use_mmio < 0 && (unit >= MAX_UNITS || use_mmio[unit] < 0)) { |
| @@ -1027,6 +1032,7 @@ static int vortex_init_one(struct pci_dev *pdev, | |||
| 1027 | if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */ | 1032 | if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */ |
| 1028 | ioaddr = pci_iomap(pdev, 0, 0); | 1033 | ioaddr = pci_iomap(pdev, 0, 0); |
| 1029 | if (!ioaddr) { | 1034 | if (!ioaddr) { |
| 1035 | pci_release_regions(pdev); | ||
| 1030 | pci_disable_device(pdev); | 1036 | pci_disable_device(pdev); |
| 1031 | rc = -ENOMEM; | 1037 | rc = -ENOMEM; |
| 1032 | goto out; | 1038 | goto out; |
| @@ -1036,6 +1042,7 @@ static int vortex_init_one(struct pci_dev *pdev, | |||
| 1036 | ent->driver_data, unit); | 1042 | ent->driver_data, unit); |
| 1037 | if (rc < 0) { | 1043 | if (rc < 0) { |
| 1038 | pci_iounmap(pdev, ioaddr); | 1044 | pci_iounmap(pdev, ioaddr); |
| 1045 | pci_release_regions(pdev); | ||
| 1039 | pci_disable_device(pdev); | 1046 | pci_disable_device(pdev); |
| 1040 | goto out; | 1047 | goto out; |
| 1041 | } | 1048 | } |
| @@ -1178,11 +1185,6 @@ static int vortex_probe1(struct device *gendev, void __iomem *ioaddr, int irq, | |||
| 1178 | 1185 | ||
| 1179 | /* PCI-only startup logic */ | 1186 | /* PCI-only startup logic */ |
| 1180 | if (pdev) { | 1187 | if (pdev) { |
| 1181 | /* EISA resources already marked, so only PCI needs to do this here */ | ||
| 1182 | /* Ignore return value, because Cardbus drivers already allocate for us */ | ||
| 1183 | if (request_region(dev->base_addr, vci->io_size, print_name) != NULL) | ||
| 1184 | vp->must_free_region = 1; | ||
| 1185 | |||
| 1186 | /* enable bus-mastering if necessary */ | 1188 | /* enable bus-mastering if necessary */ |
| 1187 | if (vci->flags & PCI_USES_MASTER) | 1189 | if (vci->flags & PCI_USES_MASTER) |
| 1188 | pci_set_master(pdev); | 1190 | pci_set_master(pdev); |
| @@ -1220,7 +1222,7 @@ static int vortex_probe1(struct device *gendev, void __iomem *ioaddr, int irq, | |||
| 1220 | &vp->rx_ring_dma); | 1222 | &vp->rx_ring_dma); |
| 1221 | retval = -ENOMEM; | 1223 | retval = -ENOMEM; |
| 1222 | if (!vp->rx_ring) | 1224 | if (!vp->rx_ring) |
| 1223 | goto free_region; | 1225 | goto free_device; |
| 1224 | 1226 | ||
| 1225 | vp->tx_ring = (struct boom_tx_desc *)(vp->rx_ring + RX_RING_SIZE); | 1227 | vp->tx_ring = (struct boom_tx_desc *)(vp->rx_ring + RX_RING_SIZE); |
| 1226 | vp->tx_ring_dma = vp->rx_ring_dma + sizeof(struct boom_rx_desc) * RX_RING_SIZE; | 1228 | vp->tx_ring_dma = vp->rx_ring_dma + sizeof(struct boom_rx_desc) * RX_RING_SIZE; |
| @@ -1484,9 +1486,7 @@ free_ring: | |||
| 1484 | + sizeof(struct boom_tx_desc) * TX_RING_SIZE, | 1486 | + sizeof(struct boom_tx_desc) * TX_RING_SIZE, |
| 1485 | vp->rx_ring, | 1487 | vp->rx_ring, |
| 1486 | vp->rx_ring_dma); | 1488 | vp->rx_ring_dma); |
| 1487 | free_region: | 1489 | free_device: |
| 1488 | if (vp->must_free_region) | ||
| 1489 | release_region(dev->base_addr, vci->io_size); | ||
| 1490 | free_netdev(dev); | 1490 | free_netdev(dev); |
| 1491 | pr_err(PFX "vortex_probe1 fails. Returns %d\n", retval); | ||
