Skip to content

Commit 40f71e7

Browse files
committed
Merge tag 'net-6.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from wireless, and netfilter. Selftests excluded - we have 58 patches and diff of +442/-199, which isn't really small but perhaps with the exception of the WiFi locking change it's old(ish) bugs. We have no known problems with v6.4. The selftest changes are rather large as MPTCP folks try to apply Greg's guidance that selftest from torvalds/linux should be able to run against stable kernels. Last thing I should call out is the DCCP/UDP-lite deprecation notices. We are fairly sure those are dead, but if we're wrong reverting them back in won't be fun. Current release - regressions: - wifi: - cfg80211: fix double lock bug in reg_wdev_chan_valid() - iwlwifi: mvm: spin_lock_bh() to fix lockdep regression Current release - new code bugs: - handshake: remove fput() that causes use-after-free Previous releases - regressions: - sched: cls_u32: fix reference counter leak leading to overflow - sched: cls_api: fix lockup on flushing explicitly created chain Previous releases - always broken: - nf_tables: integrate pipapo into commit protocol - nf_tables: incorrect error path handling with NFT_MSG_NEWRULE, fix dangling pointer on failure - ping6: fix send to link-local addresses with VRF - sched: act_pedit: parse L3 header for L4 offset, the skb may not have the offset saved - sched: act_ct: fix promotion of offloaded unreplied tuple - sched: refuse to destroy an ingress and clsact Qdiscs if there are lockless change operations in flight - wifi: mac80211: fix handful of bugs in multi-link operation - ipvlan: fix bound dev checking for IPv6 l3s mode - eth: enetc: correct the indexes of highest and 2nd highest TCs - eth: ice: fix XDP memory leak when NIC is brought up and down Misc: - add deprecation notices for UDP-lite and DCCP - selftests: mptcp: skip tests not supported by old kernels - sctp: handle invalid error codes without calling BUG()" * tag 'net-6.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (91 commits) dccp: Print deprecation notice. udplite: Print deprecation notice. octeon_ep: Add missing check for ioremap selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET net: ethernet: stmicro: stmmac: fix possible memory leak in __stmmac_open net: tipc: resize nlattr array to correct size sfc: fix XDP queues mode with legacy IRQ net: macsec: fix double free of percpu stats net: lapbether: only support ethernet devices MAINTAINERS: add reviewers for SMC Sockets s390/ism: Fix trying to free already-freed IRQ by repeated ism_dev_exit() net: dsa: felix: fix taprio guard band overflow at 10Mbps with jumbo frames net/sched: cls_api: Fix lockup on flushing explicitly created chain ice: Fix ice module unload net/handshake: remove fput() that causes use-after-free selftests: forwarding: hw_stats_l3: Set addrgenmode in a separate step net/sched: qdisc_destroy() old ingress and clsact Qdiscs before grafting net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs net/sched: act_ct: Fix promotion of offloaded unreplied tuple wifi: iwlwifi: mvm: spin_lock_bh() to fix lockdep regression ...
2 parents 627d858 + 8f0e370 commit 40f71e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+945
-442
lines changed

MAINTAINERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19140,6 +19140,9 @@ SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
1914019140
M: Karsten Graul <[email protected]>
1914119141
M: Wenjia Zhang <[email protected]>
1914219142
M: Jan Karcher <[email protected]>
19143+
R: D. Wythe <[email protected]>
19144+
R: Tony Lu <[email protected]>
19145+
R: Wen Gu <[email protected]>
1914319146
1914419147
S: Supported
1914519148
F: net/smc/

drivers/net/dsa/ocelot/felix_vsc9959.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1263,7 +1263,7 @@ static void vsc9959_tas_guard_bands_update(struct ocelot *ocelot, int port)
12631263
/* Consider the standard Ethernet overhead of 8 octets preamble+SFD,
12641264
* 4 octets FCS, 12 octets IFG.
12651265
*/
1266-
needed_bit_time_ps = (maxlen + 24) * picos_per_byte;
1266+
needed_bit_time_ps = (u64)(maxlen + 24) * picos_per_byte;
12671267

12681268
dev_dbg(ocelot->dev,
12691269
"port %d: max frame size %d needs %llu ps at speed %d\n",

drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14294,11 +14294,16 @@ static void bnx2x_io_resume(struct pci_dev *pdev)
1429414294
bp->fw_seq = SHMEM_RD(bp, func_mb[BP_FW_MB_IDX(bp)].drv_mb_header) &
1429514295
DRV_MSG_SEQ_NUMBER_MASK;
1429614296

14297-
if (netif_running(dev))
14298-
bnx2x_nic_load(bp, LOAD_NORMAL);
14297+
if (netif_running(dev)) {
14298+
if (bnx2x_nic_load(bp, LOAD_NORMAL)) {
14299+
netdev_err(bp->dev, "Error during driver initialization, try unloading/reloading the driver\n");
14300+
goto done;
14301+
}
14302+
}
1429914303

1430014304
netif_device_attach(dev);
1430114305

14306+
done:
1430214307
rtnl_unlock();
1430314308
}
1430414309

drivers/net/ethernet/freescale/enetc/enetc_qos.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,8 @@ int enetc_setup_tc_cbs(struct net_device *ndev, void *type_data)
181181
int bw_sum = 0;
182182
u8 bw;
183183

184-
prio_top = netdev_get_prio_tc_map(ndev, tc_nums - 1);
185-
prio_next = netdev_get_prio_tc_map(ndev, tc_nums - 2);
184+
prio_top = tc_nums - 1;
185+
prio_next = tc_nums - 2;
186186

187187
/* Support highest prio and second prio tc in cbs mode */
188188
if (tc != prio_top && tc != prio_next)

drivers/net/ethernet/intel/iavf/iavf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ void iavf_set_ethtool_ops(struct net_device *netdev);
525525
void iavf_update_stats(struct iavf_adapter *adapter);
526526
void iavf_reset_interrupt_capability(struct iavf_adapter *adapter);
527527
int iavf_init_interrupt_scheme(struct iavf_adapter *adapter);
528-
void iavf_irq_enable_queues(struct iavf_adapter *adapter, u32 mask);
528+
void iavf_irq_enable_queues(struct iavf_adapter *adapter);
529529
void iavf_free_all_tx_resources(struct iavf_adapter *adapter);
530530
void iavf_free_all_rx_resources(struct iavf_adapter *adapter);
531531

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -359,21 +359,18 @@ static void iavf_irq_disable(struct iavf_adapter *adapter)
359359
}
360360

361361
/**
362-
* iavf_irq_enable_queues - Enable interrupt for specified queues
362+
* iavf_irq_enable_queues - Enable interrupt for all queues
363363
* @adapter: board private structure
364-
* @mask: bitmap of queues to enable
365364
**/
366-
void iavf_irq_enable_queues(struct iavf_adapter *adapter, u32 mask)
365+
void iavf_irq_enable_queues(struct iavf_adapter *adapter)
367366
{
368367
struct iavf_hw *hw = &adapter->hw;
369368
int i;
370369

371370
for (i = 1; i < adapter->num_msix_vectors; i++) {
372-
if (mask & BIT(i - 1)) {
373-
wr32(hw, IAVF_VFINT_DYN_CTLN1(i - 1),
374-
IAVF_VFINT_DYN_CTLN1_INTENA_MASK |
375-
IAVF_VFINT_DYN_CTLN1_ITR_INDX_MASK);
376-
}
371+
wr32(hw, IAVF_VFINT_DYN_CTLN1(i - 1),
372+
IAVF_VFINT_DYN_CTLN1_INTENA_MASK |
373+
IAVF_VFINT_DYN_CTLN1_ITR_INDX_MASK);
377374
}
378375
}
379376

@@ -387,7 +384,7 @@ void iavf_irq_enable(struct iavf_adapter *adapter, bool flush)
387384
struct iavf_hw *hw = &adapter->hw;
388385

389386
iavf_misc_irq_enable(adapter);
390-
iavf_irq_enable_queues(adapter, ~0);
387+
iavf_irq_enable_queues(adapter);
391388

392389
if (flush)
393390
iavf_flush(hw);

drivers/net/ethernet/intel/iavf/iavf_register.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#define IAVF_VFINT_DYN_CTL01_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTL01_INTENA_SHIFT)
4141
#define IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT 3
4242
#define IAVF_VFINT_DYN_CTL01_ITR_INDX_MASK IAVF_MASK(0x3, IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT)
43-
#define IAVF_VFINT_DYN_CTLN1(_INTVF) (0x00003800 + ((_INTVF) * 4)) /* _i=0...15 */ /* Reset: VFR */
43+
#define IAVF_VFINT_DYN_CTLN1(_INTVF) (0x00003800 + ((_INTVF) * 4)) /* _i=0...63 */ /* Reset: VFR */
4444
#define IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT 0
4545
#define IAVF_VFINT_DYN_CTLN1_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT)
4646
#define IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT 2

drivers/net/ethernet/intel/ice/ice_gnss.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,7 @@ static void ice_gnss_read(struct kthread_work *work)
9696
int err = 0;
9797

9898
pf = gnss->back;
99-
if (!pf) {
100-
err = -EFAULT;
101-
goto exit;
102-
}
103-
104-
if (!test_bit(ICE_FLAG_GNSS, pf->flags))
99+
if (!pf || !test_bit(ICE_FLAG_GNSS, pf->flags))
105100
return;
106101

107102
hw = &pf->hw;
@@ -159,7 +154,6 @@ static void ice_gnss_read(struct kthread_work *work)
159154
free_page((unsigned long)buf);
160155
requeue:
161156
kthread_queue_delayed_work(gnss->kworker, &gnss->read_work, delay);
162-
exit:
163157
if (err)
164158
dev_dbg(ice_pf_to_dev(pf), "GNSS failed to read err=%d\n", err);
165159
}

drivers/net/ethernet/intel/ice/ice_main.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4802,9 +4802,13 @@ static int ice_init_dev(struct ice_pf *pf)
48024802
static void ice_deinit_dev(struct ice_pf *pf)
48034803
{
48044804
ice_free_irq_msix_misc(pf);
4805-
ice_clear_interrupt_scheme(pf);
48064805
ice_deinit_pf(pf);
48074806
ice_deinit_hw(&pf->hw);
4807+
4808+
/* Service task is already stopped, so call reset directly. */
4809+
ice_reset(&pf->hw, ICE_RESET_PFR);
4810+
pci_wait_for_pending_transaction(pf->pdev);
4811+
ice_clear_interrupt_scheme(pf);
48084812
}
48094813

48104814
static void ice_init_features(struct ice_pf *pf)
@@ -5094,10 +5098,6 @@ int ice_load(struct ice_pf *pf)
50945098
struct ice_vsi *vsi;
50955099
int err;
50965100

5097-
err = ice_reset(&pf->hw, ICE_RESET_PFR);
5098-
if (err)
5099-
return err;
5100-
51015101
err = ice_init_dev(pf);
51025102
if (err)
51035103
return err;
@@ -5354,12 +5354,6 @@ static void ice_remove(struct pci_dev *pdev)
53545354
ice_setup_mc_magic_wake(pf);
53555355
ice_set_wake(pf);
53565356

5357-
/* Issue a PFR as part of the prescribed driver unload flow. Do not
5358-
* do it via ice_schedule_reset() since there is no need to rebuild
5359-
* and the service task is already stopped.
5360-
*/
5361-
ice_reset(&pf->hw, ICE_RESET_PFR);
5362-
pci_wait_for_pending_transaction(pdev);
53635357
pci_disable_device(pdev);
53645358
}
53655359

@@ -7056,6 +7050,10 @@ int ice_down(struct ice_vsi *vsi)
70567050
ice_for_each_txq(vsi, i)
70577051
ice_clean_tx_ring(vsi->tx_rings[i]);
70587052

7053+
if (ice_is_xdp_ena_vsi(vsi))
7054+
ice_for_each_xdp_txq(vsi, i)
7055+
ice_clean_tx_ring(vsi->xdp_rings[i]);
7056+
70597057
ice_for_each_rxq(vsi, i)
70607058
ice_clean_rx_ring(vsi->rx_rings[i]);
70617059

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,8 @@ static int igb_set_eeprom(struct net_device *netdev,
822822
*/
823823
ret_val = hw->nvm.ops.read(hw, last_word, 1,
824824
&eeprom_buff[last_word - first_word]);
825+
if (ret_val)
826+
goto out;
825827
}
826828

827829
/* Device's eeprom is always little-endian, word addressable */
@@ -841,6 +843,7 @@ static int igb_set_eeprom(struct net_device *netdev,
841843
hw->nvm.ops.update(hw);
842844

843845
igb_set_fw_version(adapter);
846+
out:
844847
kfree(eeprom_buff);
845848
return ret_val;
846849
}

0 commit comments

Comments
 (0)