Skip to content

Commit aa3cf24

Browse files
committed
Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/t
nguy/net-queue Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2021-07-01 This series contains updates to igb, igc, ixgbe, e1000e, fm10k, and iavf drivers. Vinicius fixes a use-after-free issue present in igc and igb. Tom Rix fixes the return value for igc_read_phy_reg() when the operation is not supported for igc. Christophe Jaillet fixes unrolling of PCIe error reporting for ixgbe, igc, igb, fm10k, e10000e, and iavf. Alex ensures that q_vector array is not accessed beyond its bounds for igb. Jedrzej moves ring assignment to occur after bounds have been checked in igb. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 6b28a86 + 382a7c2 commit aa3cf24

File tree

7 files changed

+21
-3
lines changed

7 files changed

+21
-3
lines changed

drivers/net/ethernet/intel/e1000e/netdev.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7664,6 +7664,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
76647664
err_ioremap:
76657665
free_netdev(netdev);
76667666
err_alloc_etherdev:
7667+
pci_disable_pcie_error_reporting(pdev);
76677668
pci_release_mem_regions(pdev);
76687669
err_pci_reg:
76697670
err_dma:

drivers/net/ethernet/intel/fm10k/fm10k_pci.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2227,6 +2227,7 @@ static int fm10k_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
22272227
err_ioremap:
22282228
free_netdev(netdev);
22292229
err_alloc_netdev:
2230+
pci_disable_pcie_error_reporting(pdev);
22302231
pci_release_mem_regions(pdev);
22312232
err_pci_reg:
22322233
err_dma:

drivers/net/ethernet/intel/iavf/iavf_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,6 +3798,7 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
37983798
err_ioremap:
37993799
free_netdev(netdev);
38003800
err_alloc_etherdev:
3801+
pci_disable_pcie_error_reporting(pdev);
38013802
pci_release_regions(pdev);
38023803
err_pci_reg:
38033804
err_dma:

drivers/net/ethernet/intel/igb/igb_main.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -931,6 +931,7 @@ static void igb_configure_msix(struct igb_adapter *adapter)
931931
**/
932932
static int igb_request_msix(struct igb_adapter *adapter)
933933
{
934+
unsigned int num_q_vectors = adapter->num_q_vectors;
934935
struct net_device *netdev = adapter->netdev;
935936
int i, err = 0, vector = 0, free_vector = 0;
936937

@@ -939,7 +940,13 @@ static int igb_request_msix(struct igb_adapter *adapter)
939940
if (err)
940941
goto err_out;
941942

942-
for (i = 0; i < adapter->num_q_vectors; i++) {
943+
if (num_q_vectors > MAX_Q_VECTORS) {
944+
num_q_vectors = MAX_Q_VECTORS;
945+
dev_warn(&adapter->pdev->dev,
946+
"The number of queue vectors (%d) is higher than max allowed (%d)\n",
947+
adapter->num_q_vectors, MAX_Q_VECTORS);
948+
}
949+
for (i = 0; i < num_q_vectors; i++) {
943950
struct igb_q_vector *q_vector = adapter->q_vector[i];
944951

945952
vector++;
@@ -1678,14 +1685,15 @@ static bool is_any_txtime_enabled(struct igb_adapter *adapter)
16781685
**/
16791686
static void igb_config_tx_modes(struct igb_adapter *adapter, int queue)
16801687
{
1681-
struct igb_ring *ring = adapter->tx_ring[queue];
16821688
struct net_device *netdev = adapter->netdev;
16831689
struct e1000_hw *hw = &adapter->hw;
1690+
struct igb_ring *ring;
16841691
u32 tqavcc, tqavctrl;
16851692
u16 value;
16861693

16871694
WARN_ON(hw->mac.type != e1000_i210);
16881695
WARN_ON(queue < 0 || queue > 1);
1696+
ring = adapter->tx_ring[queue];
16891697

16901698
/* If any of the Qav features is enabled, configure queues as SR and
16911699
* with HIGH PRIO. If none is, then configure them with LOW PRIO and
@@ -3615,6 +3623,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
36153623
err_ioremap:
36163624
free_netdev(netdev);
36173625
err_alloc_etherdev:
3626+
pci_disable_pcie_error_reporting(pdev);
36183627
pci_release_mem_regions(pdev);
36193628
err_pci_reg:
36203629
err_dma:
@@ -4835,6 +4844,8 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring)
48354844
DMA_TO_DEVICE);
48364845
}
48374846

4847+
tx_buffer->next_to_watch = NULL;
4848+
48384849
/* move us one more past the eop_desc for start of next pkt */
48394850
tx_buffer++;
48404851
i++;

drivers/net/ethernet/intel/igc/igc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ static inline s32 igc_read_phy_reg(struct igc_hw *hw, u32 offset, u16 *data)
578578
if (hw->phy.ops.read_reg)
579579
return hw->phy.ops.read_reg(hw, offset, data);
580580

581-
return 0;
581+
return -EOPNOTSUPP;
582582
}
583583

584584
void igc_reinit_locked(struct igc_adapter *);

drivers/net/ethernet/intel/igc/igc_main.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ static void igc_clean_tx_ring(struct igc_ring *tx_ring)
232232
igc_unmap_tx_buffer(tx_ring->dev, tx_buffer);
233233
}
234234

235+
tx_buffer->next_to_watch = NULL;
236+
235237
/* move us one more past the eop_desc for start of next pkt */
236238
tx_buffer++;
237239
i++;
@@ -6054,6 +6056,7 @@ static int igc_probe(struct pci_dev *pdev,
60546056
err_ioremap:
60556057
free_netdev(netdev);
60566058
err_alloc_etherdev:
6059+
pci_disable_pcie_error_reporting(pdev);
60576060
pci_release_mem_regions(pdev);
60586061
err_pci_reg:
60596062
err_dma:

drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11067,6 +11067,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1106711067
disable_dev = !test_and_set_bit(__IXGBE_DISABLED, &adapter->state);
1106811068
free_netdev(netdev);
1106911069
err_alloc_etherdev:
11070+
pci_disable_pcie_error_reporting(pdev);
1107011071
pci_release_mem_regions(pdev);
1107111072
err_pci_reg:
1107211073
err_dma:

0 commit comments

Comments
 (0)