Skip to content

Commit 01f856a

Browse files
committed
Merge tag 'net-6.1-rc8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from bpf, can and wifi. Current release - new code bugs: - eth: mlx5e: - use kvfree() in mlx5e_accel_fs_tcp_create() - MACsec, fix RX data path 16 RX security channel limit - MACsec, fix memory leak when MACsec device is deleted - MACsec, fix update Rx secure channel active field - MACsec, fix add Rx security association (SA) rule memory leak Previous releases - regressions: - wifi: cfg80211: don't allow multi-BSSID in S1G - stmmac: set MAC's flow control register to reflect current settings - eth: mlx5: - E-switch, fix duplicate lag creation - fix use-after-free when reverting termination table Previous releases - always broken: - ipv4: fix route deletion when nexthop info is not specified - bpf: fix a local storage BPF map bug where the value's spin lock field can get initialized incorrectly - tipc: re-fetch skb cb after tipc_msg_validate - wifi: wilc1000: fix Information Element parsing - packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE - sctp: fix memory leak in sctp_stream_outq_migrate() - can: can327: fix potential skb leak when netdev is down - can: add number of missing netdev freeing on error paths - aquantia: do not purge addresses when setting the number of rings - wwan: iosm: - fix incorrect skb length leading to truncated packet - fix crash in peek throughput test due to skb UAF" * tag 'net-6.1-rc8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (79 commits) net: ethernet: renesas: ravb: Fix promiscuous mode after system resumed MAINTAINERS: Update maintainer list for chelsio drivers ionic: update MAINTAINERS entry sctp: fix memory leak in sctp_stream_outq_migrate() packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE net/mlx5: Lag, Fix for loop when checking lag Revert "net/mlx5e: MACsec, remove replay window size limitation in offload path" net: marvell: prestera: Fix a NULL vs IS_ERR() check in some functions net: tun: Fix use-after-free in tun_detach() net: mdiobus: fix unbalanced node reference count net: hsr: Fix potential use-after-free tipc: re-fetch skb cb after tipc_msg_validate mptcp: fix sleep in atomic at close time mptcp: don't orphan ssk in mptcp_close() dsa: lan9303: Correct stat name ipv4: Fix route deletion when nexthop info is not specified net: wwan: iosm: fix incorrect skb length net: wwan: iosm: fix crash in peek throughput test net: wwan: iosm: fix dma_alloc_coherent incompatible pointer type net: wwan: iosm: fix kernel test robot reported error ...
2 parents ca57f02 + d66233a commit 01f856a

Some content is hidden

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

73 files changed

+480
-265
lines changed

.mailmap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ Sebastian Reichel <[email protected]> <[email protected]>
391391
392392
393393
394+
394395
395396
396397

MAINTAINERS

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5585,17 +5585,13 @@ F: drivers/scsi/cxgbi/cxgb3i
55855585

55865586
CXGB4 CRYPTO DRIVER (chcr)
55875587
M: Ayush Sawal <[email protected]>
5588-
M: Vinay Kumar Yadav <[email protected]>
5589-
M: Rohit Maheshwari <[email protected]>
55905588
55915589
S: Supported
55925590
W: http://www.chelsio.com
55935591
F: drivers/crypto/chelsio
55945592

55955593
CXGB4 INLINE CRYPTO DRIVER
55965594
M: Ayush Sawal <[email protected]>
5597-
M: Vinay Kumar Yadav <[email protected]>
5598-
M: Rohit Maheshwari <[email protected]>
55995595
56005596
S: Supported
56015597
W: http://www.chelsio.com
@@ -16149,7 +16145,8 @@ F: include/linux/peci-cpu.h
1614916145
F: include/linux/peci.h
1615016146

1615116147
PENSANDO ETHERNET DRIVERS
16152-
M: Shannon Nelson <[email protected]>
16148+
M: Shannon Nelson <[email protected]>
16149+
M: Brett Creeley <[email protected]>
1615316150
1615416151
1615516152
S: Supported
@@ -17485,10 +17482,8 @@ S: Maintained
1748517482
F: drivers/net/wireless/realtek/rtw89/
1748617483

1748717484
REDPINE WIRELESS DRIVER
17488-
M: Amitkumar Karwar <[email protected]>
17489-
M: Siva Rebbagondla <[email protected]>
1749017485
17491-
S: Maintained
17486+
S: Orphan
1749217487
F: drivers/net/wireless/rsi/
1749317488

1749417489
REGISTER MAP ABSTRACTION

drivers/net/can/can327.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,8 +263,10 @@ static void can327_feed_frame_to_netdev(struct can327 *elm, struct sk_buff *skb)
263263
{
264264
lockdep_assert_held(&elm->lock);
265265

266-
if (!netif_running(elm->dev))
266+
if (!netif_running(elm->dev)) {
267+
kfree_skb(skb);
267268
return;
269+
}
268270

269271
/* Queue for NAPI pickup.
270272
* rx-offload will update stats and LEDs for us.

drivers/net/can/cc770/cc770_isa.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -264,22 +264,24 @@ static int cc770_isa_probe(struct platform_device *pdev)
264264
if (err) {
265265
dev_err(&pdev->dev,
266266
"couldn't register device (err=%d)\n", err);
267-
goto exit_unmap;
267+
goto exit_free;
268268
}
269269

270270
dev_info(&pdev->dev, "device registered (reg_base=0x%p, irq=%d)\n",
271271
priv->reg_base, dev->irq);
272272
return 0;
273273

274-
exit_unmap:
274+
exit_free:
275+
free_cc770dev(dev);
276+
exit_unmap:
275277
if (mem[idx])
276278
iounmap(base);
277-
exit_release:
279+
exit_release:
278280
if (mem[idx])
279281
release_mem_region(mem[idx], iosize);
280282
else
281283
release_region(port[idx], iosize);
282-
exit:
284+
exit:
283285
return err;
284286
}
285287

drivers/net/can/m_can/m_can.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1909,7 +1909,7 @@ int m_can_class_get_clocks(struct m_can_classdev *cdev)
19091909
cdev->hclk = devm_clk_get(cdev->dev, "hclk");
19101910
cdev->cclk = devm_clk_get(cdev->dev, "cclk");
19111911

1912-
if (IS_ERR(cdev->cclk)) {
1912+
if (IS_ERR(cdev->hclk) || IS_ERR(cdev->cclk)) {
19131913
dev_err(cdev->dev, "no clock found\n");
19141914
ret = -ENODEV;
19151915
}

drivers/net/can/m_can/m_can_pci.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ static int m_can_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)
120120

121121
ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_ALL_TYPES);
122122
if (ret < 0)
123-
return ret;
123+
goto err_free_dev;
124124

125125
mcan_class->dev = &pci->dev;
126126
mcan_class->net->irq = pci_irq_vector(pci, 0);
@@ -132,7 +132,7 @@ static int m_can_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)
132132

133133
ret = m_can_class_register(mcan_class);
134134
if (ret)
135-
goto err;
135+
goto err_free_irq;
136136

137137
/* Enable interrupt control at CAN wrapper IP */
138138
writel(0x1, base + CTL_CSR_INT_CTL_OFFSET);
@@ -144,8 +144,10 @@ static int m_can_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)
144144

145145
return 0;
146146

147-
err:
147+
err_free_irq:
148148
pci_free_irq_vectors(pci);
149+
err_free_dev:
150+
m_can_class_free_dev(mcan_class->net);
149151
return ret;
150152
}
151153

@@ -161,6 +163,7 @@ static void m_can_pci_remove(struct pci_dev *pci)
161163
writel(0x0, priv->base + CTL_CSR_INT_CTL_OFFSET);
162164

163165
m_can_class_unregister(mcan_class);
166+
m_can_class_free_dev(mcan_class->net);
164167
pci_free_irq_vectors(pci);
165168
}
166169

drivers/net/can/sja1000/sja1000_isa.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,22 +202,24 @@ static int sja1000_isa_probe(struct platform_device *pdev)
202202
if (err) {
203203
dev_err(&pdev->dev, "registering %s failed (err=%d)\n",
204204
DRV_NAME, err);
205-
goto exit_unmap;
205+
goto exit_free;
206206
}
207207

208208
dev_info(&pdev->dev, "%s device registered (reg_base=0x%p, irq=%d)\n",
209209
DRV_NAME, priv->reg_base, dev->irq);
210210
return 0;
211211

212-
exit_unmap:
212+
exit_free:
213+
free_sja1000dev(dev);
214+
exit_unmap:
213215
if (mem[idx])
214216
iounmap(base);
215-
exit_release:
217+
exit_release:
216218
if (mem[idx])
217219
release_mem_region(mem[idx], iosize);
218220
else
219221
release_region(port[idx], iosize);
220-
exit:
222+
exit:
221223
return err;
222224
}
223225

drivers/net/can/usb/etas_es58x/es58x_core.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2091,8 +2091,11 @@ static int es58x_init_netdev(struct es58x_device *es58x_dev, int channel_idx)
20912091
netdev->dev_port = channel_idx;
20922092

20932093
ret = register_candev(netdev);
2094-
if (ret)
2094+
if (ret) {
2095+
es58x_dev->netdev[channel_idx] = NULL;
2096+
free_candev(netdev);
20952097
return ret;
2098+
}
20962099

20972100
netdev_queue_set_dql_min_limit(netdev_get_tx_queue(netdev, 0),
20982101
es58x_dev->param->dql_min_limit);

drivers/net/can/usb/mcba_usb.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747
#define MCBA_VER_REQ_USB 1
4848
#define MCBA_VER_REQ_CAN 2
4949

50+
/* Drive the CAN_RES signal LOW "0" to activate R24 and R25 */
51+
#define MCBA_VER_TERMINATION_ON 0
52+
#define MCBA_VER_TERMINATION_OFF 1
53+
5054
#define MCBA_SIDL_EXID_MASK 0x8
5155
#define MCBA_DLC_MASK 0xf
5256
#define MCBA_DLC_RTR_MASK 0x40
@@ -463,7 +467,7 @@ static void mcba_usb_process_ka_usb(struct mcba_priv *priv,
463467
priv->usb_ka_first_pass = false;
464468
}
465469

466-
if (msg->termination_state)
470+
if (msg->termination_state == MCBA_VER_TERMINATION_ON)
467471
priv->can.termination = MCBA_TERMINATION_ENABLED;
468472
else
469473
priv->can.termination = MCBA_TERMINATION_DISABLED;
@@ -785,9 +789,9 @@ static int mcba_set_termination(struct net_device *netdev, u16 term)
785789
};
786790

787791
if (term == MCBA_TERMINATION_ENABLED)
788-
usb_msg.termination = 1;
792+
usb_msg.termination = MCBA_VER_TERMINATION_ON;
789793
else
790-
usb_msg.termination = 0;
794+
usb_msg.termination = MCBA_VER_TERMINATION_OFF;
791795

792796
mcba_usb_xmit_cmd(priv, (struct mcba_usb_msg *)&usb_msg);
793797

drivers/net/dsa/lan9303-core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,7 @@ static const struct lan9303_mib_desc lan9303_mib[] = {
961961
{ .offset = LAN9303_MAC_TX_BRDCST_CNT_0, .name = "TxBroad", },
962962
{ .offset = LAN9303_MAC_TX_PAUSE_CNT_0, .name = "TxPause", },
963963
{ .offset = LAN9303_MAC_TX_MULCST_CNT_0, .name = "TxMulti", },
964-
{ .offset = LAN9303_MAC_RX_UNDSZE_CNT_0, .name = "TxUnderRun", },
964+
{ .offset = LAN9303_MAC_RX_UNDSZE_CNT_0, .name = "RxShort", },
965965
{ .offset = LAN9303_MAC_TX_64_CNT_0, .name = "Tx64Byte", },
966966
{ .offset = LAN9303_MAC_TX_127_CNT_0, .name = "Tx128Byte", },
967967
{ .offset = LAN9303_MAC_TX_255_CNT_0, .name = "Tx256Byte", },

drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "aq_ptp.h"
1414
#include "aq_filters.h"
1515
#include "aq_macsec.h"
16+
#include "aq_main.h"
1617

1718
#include <linux/ptp_clock_kernel.h>
1819

@@ -858,7 +859,7 @@ static int aq_set_ringparam(struct net_device *ndev,
858859

859860
if (netif_running(ndev)) {
860861
ndev_running = true;
861-
dev_close(ndev);
862+
aq_ndev_close(ndev);
862863
}
863864

864865
cfg->rxds = max(ring->rx_pending, hw_caps->rxds_min);
@@ -874,7 +875,7 @@ static int aq_set_ringparam(struct net_device *ndev,
874875
goto err_exit;
875876

876877
if (ndev_running)
877-
err = dev_open(ndev, NULL);
878+
err = aq_ndev_open(ndev);
878879

879880
err_exit:
880881
return err;

drivers/net/ethernet/aquantia/atlantic/aq_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ struct net_device *aq_ndev_alloc(void)
5858
return ndev;
5959
}
6060

61-
static int aq_ndev_open(struct net_device *ndev)
61+
int aq_ndev_open(struct net_device *ndev)
6262
{
6363
struct aq_nic_s *aq_nic = netdev_priv(ndev);
6464
int err = 0;
@@ -88,7 +88,7 @@ static int aq_ndev_open(struct net_device *ndev)
8888
return err;
8989
}
9090

91-
static int aq_ndev_close(struct net_device *ndev)
91+
int aq_ndev_close(struct net_device *ndev)
9292
{
9393
struct aq_nic_s *aq_nic = netdev_priv(ndev);
9494
int err = 0;

drivers/net/ethernet/aquantia/atlantic/aq_main.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ DECLARE_STATIC_KEY_FALSE(aq_xdp_locking_key);
1616

1717
void aq_ndev_schedule_work(struct work_struct *work);
1818
struct net_device *aq_ndev_alloc(void);
19+
int aq_ndev_open(struct net_device *ndev);
20+
int aq_ndev_close(struct net_device *ndev);
1921

2022
#endif /* AQ_MAIN_H */

drivers/net/ethernet/freescale/fec_main.c

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
#include "fec.h"
7575

7676
static void set_multicast_list(struct net_device *ndev);
77-
static void fec_enet_itr_coal_init(struct net_device *ndev);
77+
static void fec_enet_itr_coal_set(struct net_device *ndev);
7878

7979
#define DRIVER_NAME "fec"
8080

@@ -1220,8 +1220,7 @@ fec_restart(struct net_device *ndev)
12201220
writel(0, fep->hwp + FEC_IMASK);
12211221

12221222
/* Init the interrupt coalescing */
1223-
fec_enet_itr_coal_init(ndev);
1224-
1223+
fec_enet_itr_coal_set(ndev);
12251224
}
12261225

12271226
static int fec_enet_ipc_handle_init(struct fec_enet_private *fep)
@@ -2856,19 +2855,6 @@ static int fec_enet_set_coalesce(struct net_device *ndev,
28562855
return 0;
28572856
}
28582857

2859-
static void fec_enet_itr_coal_init(struct net_device *ndev)
2860-
{
2861-
struct ethtool_coalesce ec;
2862-
2863-
ec.rx_coalesce_usecs = FEC_ITR_ICTT_DEFAULT;
2864-
ec.rx_max_coalesced_frames = FEC_ITR_ICFT_DEFAULT;
2865-
2866-
ec.tx_coalesce_usecs = FEC_ITR_ICTT_DEFAULT;
2867-
ec.tx_max_coalesced_frames = FEC_ITR_ICFT_DEFAULT;
2868-
2869-
fec_enet_set_coalesce(ndev, &ec, NULL, NULL);
2870-
}
2871-
28722858
static int fec_enet_get_tunable(struct net_device *netdev,
28732859
const struct ethtool_tunable *tuna,
28742860
void *data)
@@ -3623,6 +3609,10 @@ static int fec_enet_init(struct net_device *ndev)
36233609
fep->rx_align = 0x3;
36243610
fep->tx_align = 0x3;
36253611
#endif
3612+
fep->rx_pkts_itr = FEC_ITR_ICFT_DEFAULT;
3613+
fep->tx_pkts_itr = FEC_ITR_ICFT_DEFAULT;
3614+
fep->rx_time_itr = FEC_ITR_ICTT_DEFAULT;
3615+
fep->tx_time_itr = FEC_ITR_ICTT_DEFAULT;
36263616

36273617
/* Check mask of the streaming and coherent API */
36283618
ret = dma_set_mask_and_coherent(&fep->pdev->dev, DMA_BIT_MASK(32));

drivers/net/ethernet/intel/e100.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1741,11 +1741,8 @@ static int e100_xmit_prepare(struct nic *nic, struct cb *cb,
17411741
dma_addr = dma_map_single(&nic->pdev->dev, skb->data, skb->len,
17421742
DMA_TO_DEVICE);
17431743
/* If we can't map the skb, have the upper layer try later */
1744-
if (dma_mapping_error(&nic->pdev->dev, dma_addr)) {
1745-
dev_kfree_skb_any(skb);
1746-
skb = NULL;
1744+
if (dma_mapping_error(&nic->pdev->dev, dma_addr))
17471745
return -ENOMEM;
1748-
}
17491746

17501747
/*
17511748
* Use the last 4 bytes of the SKB payload packet as the CRC, used for

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ struct workqueue_struct *fm10k_workqueue;
3232
**/
3333
static int __init fm10k_init_module(void)
3434
{
35+
int ret;
36+
3537
pr_info("%s\n", fm10k_driver_string);
3638
pr_info("%s\n", fm10k_copyright);
3739

@@ -43,7 +45,13 @@ static int __init fm10k_init_module(void)
4345

4446
fm10k_dbg_init();
4547

46-
return fm10k_register_pci_driver();
48+
ret = fm10k_register_pci_driver();
49+
if (ret) {
50+
fm10k_dbg_exit();
51+
destroy_workqueue(fm10k_workqueue);
52+
}
53+
54+
return ret;
4755
}
4856
module_init(fm10k_init_module);
4957

drivers/net/ethernet/intel/i40e/i40e_main.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16644,6 +16644,8 @@ static struct pci_driver i40e_driver = {
1664416644
**/
1664516645
static int __init i40e_init_module(void)
1664616646
{
16647+
int err;
16648+
1664716649
pr_info("%s: %s\n", i40e_driver_name, i40e_driver_string);
1664816650
pr_info("%s: %s\n", i40e_driver_name, i40e_copyright);
1664916651

@@ -16661,7 +16663,14 @@ static int __init i40e_init_module(void)
1666116663
}
1666216664

1666316665
i40e_dbg_init();
16664-
return pci_register_driver(&i40e_driver);
16666+
err = pci_register_driver(&i40e_driver);
16667+
if (err) {
16668+
destroy_workqueue(i40e_wq);
16669+
i40e_dbg_exit();
16670+
return err;
16671+
}
16672+
16673+
return 0;
1666516674
}
1666616675
module_init(i40e_init_module);
1666716676

0 commit comments

Comments
 (0)