Skip to content

Commit 79c0c1f

Browse files
committed
Merge tag 'net-5.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Networking fixes for 5.10-rc6, including fixes from the WiFi driver, and CAN subtrees. Current release - regressions: - gro_cells: reduce number of synchronize_net() calls - ch_ktls: release a lock before jumping to an error path Current release - always broken: - tcp: Allow full IP tos/IPv6 tclass to be reflected in L3 header Previous release - regressions: - net/tls: fix missing received data after fast remote close - vsock/virtio: discard packets only when socket is really closed - sock: set sk_err to ee_errno on dequeue from errq - cxgb4: fix the panic caused by non smac rewrite Previous release - always broken: - tcp: fix corner cases around setting ECN with BPF selection of congestion control - tcp: fix race condition when creating child sockets from syncookies on loopback interface - usbnet: ipheth: fix connectivity with iOS 14 - tun: honor IOCB_NOWAIT flag - net/packet: fix packet receive on L3 devices without visible hard header - devlink: Make sure devlink instance and port are in same net namespace - net: openvswitch: fix TTL decrement action netlink message format - bonding: wait for sysfs kobject destruction before freeing struct slave - net: stmmac: fix upstream patch applied to the wrong context - bnxt_en: fix return value and unwind in probe error paths Misc: - devlink: add extra layer of categorization to the reload stats uAPI before it's released" * tag 'net-5.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (68 commits) sock: set sk_err to ee_errno on dequeue from errq mptcp: fix NULL ptr dereference on bad MPJ net: openvswitch: fix TTL decrement action netlink message format can: af_can: can_rx_unregister(): remove WARN() statement from list operation sanity check can: m_can: m_can_dev_setup(): add support for bosch mcan version 3.3.0 can: m_can: fix nominal bitiming tseg2 min for version >= 3.1 can: m_can: m_can_open(): remove IRQF_TRIGGER_FALLING from request_threaded_irq()'s flags can: mcp251xfd: mcp251xfd_probe(): bail out if no IRQ was given can: gs_usb: fix endianess problem with candleLight firmware ch_ktls: lock is not freed net/tls: Protect from calling tls_dev_del for TLS RX twice devlink: Make sure devlink instance and port are in same net namespace devlink: Hold rtnl lock while reading netdev attributes ptp: clockmatrix: bug fix for idtcm_strverscmp enetc: Let the hardware auto-advance the taprio base-time of 0 gro_cells: reduce number of synchronize_net() calls net: stmmac: fix incorrect merge of patch upstream ipv6: addrlabel: fix possible memory leak in ip6addrlbl_net_init Documentation: netdev-FAQ: suggest how to post co-dependent series ibmvnic: enhance resetting status check during module exit ...
2 parents 80e1e17 + d0742c4 commit 79c0c1f

66 files changed

Lines changed: 864 additions & 507 deletions

Some content is hidden

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

Documentation/networking/netdev-FAQ.rst

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,32 @@ you will have done run-time testing specific to your change, but at a
254254
minimum, your changes should survive an ``allyesconfig`` and an
255255
``allmodconfig`` build without new warnings or failures.
256256

257+
Q: How do I post corresponding changes to user space components?
258+
----------------------------------------------------------------
259+
A: User space code exercising kernel features should be posted
260+
alongside kernel patches. This gives reviewers a chance to see
261+
how any new interface is used and how well it works.
262+
263+
When user space tools reside in the kernel repo itself all changes
264+
should generally come as one series. If series becomes too large
265+
or the user space project is not reviewed on netdev include a link
266+
to a public repo where user space patches can be seen.
267+
268+
In case user space tooling lives in a separate repository but is
269+
reviewed on netdev (e.g. patches to `iproute2` tools) kernel and
270+
user space patches should form separate series (threads) when posted
271+
to the mailing list, e.g.::
272+
273+
[PATCH net-next 0/3] net: some feature cover letter
274+
└─ [PATCH net-next 1/3] net: some feature prep
275+
└─ [PATCH net-next 2/3] net: some feature do it
276+
└─ [PATCH net-next 3/3] selftest: net: some feature
277+
278+
[PATCH iproute2-next] ip: add support for some feature
279+
280+
Posting as one thread is discouraged because it confuses patchwork
281+
(as of patchwork 2.2.2).
282+
257283
Q: Any other tips to help ensure my net/net-next patch gets OK'd?
258284
-----------------------------------------------------------------
259285
A: Attention to detail. Re-read your own work as if you were the

MAINTAINERS

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3528,11 +3528,12 @@ BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
35283528
M: Arend van Spriel <arend.vanspriel@broadcom.com>
35293529
M: Franky Lin <franky.lin@broadcom.com>
35303530
M: Hante Meuleman <hante.meuleman@broadcom.com>
3531-
M: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
3532-
M: Wright Feng <wright.feng@cypress.com>
3531+
M: Chi-hsien Lin <chi-hsien.lin@infineon.com>
3532+
M: Wright Feng <wright.feng@infineon.com>
3533+
M: Chung-hsien Hsu <chung-hsien.hsu@infineon.com>
35333534
L: linux-wireless@vger.kernel.org
35343535
L: brcm80211-dev-list.pdl@broadcom.com
3535-
L: brcm80211-dev-list@cypress.com
3536+
L: SHA-cyfmac-dev-list@infineon.com
35363537
S: Supported
35373538
F: drivers/net/wireless/broadcom/brcm80211/
35383539

@@ -13162,7 +13163,9 @@ M: Jesper Dangaard Brouer <hawk@kernel.org>
1316213163
M: Ilias Apalodimas <ilias.apalodimas@linaro.org>
1316313164
L: netdev@vger.kernel.org
1316413165
S: Supported
13166+
F: Documentation/networking/page_pool.rst
1316513167
F: include/net/page_pool.h
13168+
F: include/trace/events/page_pool.h
1316613169
F: net/core/page_pool.c
1316713170

1316813171
PANASONIC LAPTOP ACPI EXTRAS DRIVER
@@ -14804,7 +14807,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.g
1480414807
F: drivers/net/wireless/realtek/rtlwifi/
1480514808

1480614809
REALTEK WIRELESS DRIVER (rtw88)
14807-
M: Yan-Hsuan Chuang <yhchuang@realtek.com>
14810+
M: Yan-Hsuan Chuang <tony0620emma@gmail.com>
1480814811
L: linux-wireless@vger.kernel.org
1480914812
S: Maintained
1481014813
F: drivers/net/wireless/realtek/rtw88/
@@ -15777,9 +15780,8 @@ F: drivers/slimbus/
1577715780
F: include/linux/slimbus.h
1577815781

1577915782
SFC NETWORK DRIVER
15780-
M: Solarflare linux maintainers <linux-net-drivers@solarflare.com>
15781-
M: Edward Cree <ecree@solarflare.com>
15782-
M: Martin Habets <mhabets@solarflare.com>
15783+
M: Edward Cree <ecree.xilinx@gmail.com>
15784+
M: Martin Habets <habetsm.xilinx@gmail.com>
1578315785
L: netdev@vger.kernel.org
1578415786
S: Supported
1578515787
F: drivers/net/ethernet/sfc/

drivers/net/bonding/bond_main.c

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,19 +1460,57 @@ static void bond_upper_dev_unlink(struct bonding *bond, struct slave *slave)
14601460
slave->dev->flags &= ~IFF_SLAVE;
14611461
}
14621462

1463-
static struct slave *bond_alloc_slave(struct bonding *bond)
1463+
static void slave_kobj_release(struct kobject *kobj)
1464+
{
1465+
struct slave *slave = to_slave(kobj);
1466+
struct bonding *bond = bond_get_bond_by_slave(slave);
1467+
1468+
cancel_delayed_work_sync(&slave->notify_work);
1469+
if (BOND_MODE(bond) == BOND_MODE_8023AD)
1470+
kfree(SLAVE_AD_INFO(slave));
1471+
1472+
kfree(slave);
1473+
}
1474+
1475+
static struct kobj_type slave_ktype = {
1476+
.release = slave_kobj_release,
1477+
#ifdef CONFIG_SYSFS
1478+
.sysfs_ops = &slave_sysfs_ops,
1479+
#endif
1480+
};
1481+
1482+
static int bond_kobj_init(struct slave *slave)
1483+
{
1484+
int err;
1485+
1486+
err = kobject_init_and_add(&slave->kobj, &slave_ktype,
1487+
&(slave->dev->dev.kobj), "bonding_slave");
1488+
if (err)
1489+
kobject_put(&slave->kobj);
1490+
1491+
return err;
1492+
}
1493+
1494+
static struct slave *bond_alloc_slave(struct bonding *bond,
1495+
struct net_device *slave_dev)
14641496
{
14651497
struct slave *slave = NULL;
14661498

14671499
slave = kzalloc(sizeof(*slave), GFP_KERNEL);
14681500
if (!slave)
14691501
return NULL;
14701502

1503+
slave->bond = bond;
1504+
slave->dev = slave_dev;
1505+
1506+
if (bond_kobj_init(slave))
1507+
return NULL;
1508+
14711509
if (BOND_MODE(bond) == BOND_MODE_8023AD) {
14721510
SLAVE_AD_INFO(slave) = kzalloc(sizeof(struct ad_slave_info),
14731511
GFP_KERNEL);
14741512
if (!SLAVE_AD_INFO(slave)) {
1475-
kfree(slave);
1513+
kobject_put(&slave->kobj);
14761514
return NULL;
14771515
}
14781516
}
@@ -1481,17 +1519,6 @@ static struct slave *bond_alloc_slave(struct bonding *bond)
14811519
return slave;
14821520
}
14831521

1484-
static void bond_free_slave(struct slave *slave)
1485-
{
1486-
struct bonding *bond = bond_get_bond_by_slave(slave);
1487-
1488-
cancel_delayed_work_sync(&slave->notify_work);
1489-
if (BOND_MODE(bond) == BOND_MODE_8023AD)
1490-
kfree(SLAVE_AD_INFO(slave));
1491-
1492-
kfree(slave);
1493-
}
1494-
14951522
static void bond_fill_ifbond(struct bonding *bond, struct ifbond *info)
14961523
{
14971524
info->bond_mode = BOND_MODE(bond);
@@ -1678,14 +1705,12 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
16781705
goto err_undo_flags;
16791706
}
16801707

1681-
new_slave = bond_alloc_slave(bond);
1708+
new_slave = bond_alloc_slave(bond, slave_dev);
16821709
if (!new_slave) {
16831710
res = -ENOMEM;
16841711
goto err_undo_flags;
16851712
}
16861713

1687-
new_slave->bond = bond;
1688-
new_slave->dev = slave_dev;
16891714
/* Set the new_slave's queue_id to be zero. Queue ID mapping
16901715
* is set via sysfs or module option if desired.
16911716
*/
@@ -2007,7 +2032,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
20072032
dev_set_mtu(slave_dev, new_slave->original_mtu);
20082033

20092034
err_free:
2010-
bond_free_slave(new_slave);
2035+
kobject_put(&new_slave->kobj);
20112036

20122037
err_undo_flags:
20132038
/* Enslave of first slave has failed and we need to fix master's mac */
@@ -2187,7 +2212,7 @@ static int __bond_release_one(struct net_device *bond_dev,
21872212
if (!netif_is_bond_master(slave_dev))
21882213
slave_dev->priv_flags &= ~IFF_BONDING;
21892214

2190-
bond_free_slave(slave);
2215+
kobject_put(&slave->kobj);
21912216

21922217
return 0;
21932218
}

drivers/net/bonding/bond_sysfs_slave.c

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ static const struct slave_attribute *slave_attrs[] = {
121121
};
122122

123123
#define to_slave_attr(_at) container_of(_at, struct slave_attribute, attr)
124-
#define to_slave(obj) container_of(obj, struct slave, kobj)
125124

126125
static ssize_t slave_show(struct kobject *kobj,
127126
struct attribute *attr, char *buf)
@@ -132,28 +131,15 @@ static ssize_t slave_show(struct kobject *kobj,
132131
return slave_attr->show(slave, buf);
133132
}
134133

135-
static const struct sysfs_ops slave_sysfs_ops = {
134+
const struct sysfs_ops slave_sysfs_ops = {
136135
.show = slave_show,
137136
};
138137

139-
static struct kobj_type slave_ktype = {
140-
#ifdef CONFIG_SYSFS
141-
.sysfs_ops = &slave_sysfs_ops,
142-
#endif
143-
};
144-
145138
int bond_sysfs_slave_add(struct slave *slave)
146139
{
147140
const struct slave_attribute **a;
148141
int err;
149142

150-
err = kobject_init_and_add(&slave->kobj, &slave_ktype,
151-
&(slave->dev->dev.kobj), "bonding_slave");
152-
if (err) {
153-
kobject_put(&slave->kobj);
154-
return err;
155-
}
156-
157143
for (a = slave_attrs; *a; ++a) {
158144
err = sysfs_create_file(&slave->kobj, &((*a)->attr));
159145
if (err) {
@@ -171,6 +157,4 @@ void bond_sysfs_slave_del(struct slave *slave)
171157

172158
for (a = slave_attrs; *a; ++a)
173159
sysfs_remove_file(&slave->kobj, &((*a)->attr));
174-
175-
kobject_put(&slave->kobj);
176160
}

drivers/net/can/m_can/m_can.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,7 +1033,7 @@ static const struct can_bittiming_const m_can_bittiming_const_31X = {
10331033
.name = KBUILD_MODNAME,
10341034
.tseg1_min = 2, /* Time segment 1 = prop_seg + phase_seg1 */
10351035
.tseg1_max = 256,
1036-
.tseg2_min = 1, /* Time segment 2 = phase_seg2 */
1036+
.tseg2_min = 2, /* Time segment 2 = phase_seg2 */
10371037
.tseg2_max = 128,
10381038
.sjw_max = 128,
10391039
.brp_min = 1,
@@ -1385,6 +1385,8 @@ static int m_can_dev_setup(struct m_can_classdev *m_can_dev)
13851385
&m_can_data_bittiming_const_31X;
13861386
break;
13871387
case 32:
1388+
case 33:
1389+
/* Support both MCAN version v3.2.x and v3.3.0 */
13881390
m_can_dev->can.bittiming_const = m_can_dev->bit_timing ?
13891391
m_can_dev->bit_timing : &m_can_bittiming_const_31X;
13901392

@@ -1653,7 +1655,7 @@ static int m_can_open(struct net_device *dev)
16531655
INIT_WORK(&cdev->tx_work, m_can_tx_work_queue);
16541656

16551657
err = request_threaded_irq(dev->irq, NULL, m_can_isr,
1656-
IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
1658+
IRQF_ONESHOT,
16571659
dev->name, dev);
16581660
} else {
16591661
err = request_irq(dev->irq, m_can_isr, IRQF_SHARED, dev->name,

drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2738,6 +2738,10 @@ static int mcp251xfd_probe(struct spi_device *spi)
27382738
u32 freq;
27392739
int err;
27402740

2741+
if (!spi->irq)
2742+
return dev_err_probe(&spi->dev, -ENXIO,
2743+
"No IRQ specified (maybe node \"interrupts-extended\" in DT missing)!\n");
2744+
27412745
rx_int = devm_gpiod_get_optional(&spi->dev, "microchip,rx-int",
27422746
GPIOD_IN);
27432747
if (PTR_ERR(rx_int) == -EPROBE_DEFER)

0 commit comments

Comments
 (0)