Skip to content

Commit 0a80e38

Browse files
committed
Merge tag 'net-6.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from CAN and wireless. Pretty big, but hard to make up any cohesive story that would explain it, a random collection of fixes. The two reverts of bad patches from this release here feel like stuff that'd normally show up by rc5 or rc6. Perhaps obvious thing to say, given the holiday timing. That said, no active investigations / regressions. Let's see what the next week brings. Current release - fix to a fix: - can: alloc_candev_mqs(): add missing default CAN capabilities Current release - regressions: - usbnet: fix crash due to missing BQL accounting after resume - Revert "net: wwan: mhi_wwan_mbim: Avoid -Wflex-array-member-not ... Previous releases - regressions: - Revert "nfc/nci: Add the inconsistency check between the input ... Previous releases - always broken: - number of driver fixes for incorrect use of seqlocks on stats - rxrpc: fix recvmsg() unconditional requeue, don't corrupt rcv queue when MSG_PEEK was set - ipvlan: make the addrs_lock be per port avoid races in the port hash table - sched: enforce that teql can only be used as root qdisc - virtio: coalesce only linear skb - wifi: ath12k: fix dead lock while flushing management frames - eth: igc: reduce TSN TX packet buffer from 7KB to 5KB per queue" * tag 'net-6.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (96 commits) Octeontx2-af: Add proper checks for fwdata dpll: Prevent duplicate registrations net/sched: act_ife: avoid possible NULL deref hinic3: Fix netif_queue_set_napi queue_index input parameter error vsock/test: add stream TX credit bounds test vsock/virtio: cap TX credit to local buffer size vsock/test: fix seqpacket message bounds test vsock/virtio: fix potential underflow in virtio_transport_get_credit() net: fec: account for VLAN header in frame length calculations net: openvswitch: fix data race in ovs_vport_get_upcall_stats octeontx2-af: Fix error handling net: pcs: pcs-mtk-lynxi: report in-band capability for 2500Base-X rxrpc: Fix data-race warning and potential load/store tearing net: dsa: fix off-by-one in maximum bridge ID determination net: bcmasp: Fix network filter wake for asp-3.0 bonding: provide a net pointer to __skb_flow_dissect() selftests: net: amt: wait longer for connection before sending packets be2net: Fix NULL pointer dereference in be_cmd_get_mac_from_list Revert "net: wwan: mhi_wwan_mbim: Avoid -Wflex-array-member-not-at-end warning" netrom: fix double-free in nr_route_frame() ...
2 parents 0309fc3 + 4a3dba4 commit 0a80e38

108 files changed

Lines changed: 1144 additions & 472 deletions

File tree

Some content is hidden

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

CREDITS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2231,6 +2231,10 @@ S: Markham, Ontario
22312231
S: L3R 8B2
22322232
S: Canada
22332233

2234+
N: Krzysztof Kozlowski
2235+
E: krzk@kernel.org
2236+
D: NFC network subsystem and drivers maintainer
2237+
22342238
N: Christian Krafft
22352239
D: PowerPC Cell support
22362240

Documentation/netlink/specs/fou.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ attribute-sets:
3939
-
4040
name: ipproto
4141
type: u8
42+
checks:
43+
min: 1
4244
-
4345
name: type
4446
type: u8

Documentation/process/maintainer-netdev.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,18 @@ just do it. As a result, a sequence of smaller series gets merged quicker and
363363
with better review coverage. Re-posting large series also increases the mailing
364364
list traffic.
365365

366+
Limit patches outstanding on mailing list
367+
-----------------------------------------
368+
369+
Avoid having more than 15 patches, across all series, outstanding for
370+
review on the mailing list for a single tree. In other words, a maximum of
371+
15 patches under review on net, and a maximum of 15 patches under review on
372+
net-next.
373+
374+
This limit is intended to focus developer effort on testing patches before
375+
upstream review. Aiding the quality of upstream submissions, and easing the
376+
load on reviewers.
377+
366378
.. _rcs:
367379

368380
Local variable ordering ("reverse xmas tree", "RCS")

MAINTAINERS

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18486,9 +18486,8 @@ F: include/uapi/linux/nexthop.h
1848618486
F: net/ipv4/nexthop.c
1848718487

1848818488
NFC SUBSYSTEM
18489-
M: Krzysztof Kozlowski <krzk@kernel.org>
1849018489
L: netdev@vger.kernel.org
18491-
S: Maintained
18490+
S: Orphan
1849218491
F: Documentation/devicetree/bindings/net/nfc/
1849318492
F: drivers/nfc/
1849418493
F: include/net/nfc/

drivers/dpll/dpll_core.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,8 @@ dpll_xa_ref_pin_add(struct xarray *xa_pins, struct dpll_pin *pin,
8383
if (ref->pin != pin)
8484
continue;
8585
reg = dpll_pin_registration_find(ref, ops, priv, cookie);
86-
if (reg) {
87-
refcount_inc(&ref->refcount);
88-
return 0;
89-
}
86+
if (reg)
87+
return -EEXIST;
9088
ref_exists = true;
9189
break;
9290
}
@@ -164,10 +162,8 @@ dpll_xa_ref_dpll_add(struct xarray *xa_dplls, struct dpll_device *dpll,
164162
if (ref->dpll != dpll)
165163
continue;
166164
reg = dpll_pin_registration_find(ref, ops, priv, cookie);
167-
if (reg) {
168-
refcount_inc(&ref->refcount);
169-
return 0;
170-
}
165+
if (reg)
166+
return -EEXIST;
171167
ref_exists = true;
172168
break;
173169
}

drivers/isdn/mISDN/timerdev.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,14 @@ mISDN_read(struct file *filep, char __user *buf, size_t count, loff_t *off)
109109
spin_unlock_irq(&dev->lock);
110110
if (filep->f_flags & O_NONBLOCK)
111111
return -EAGAIN;
112-
wait_event_interruptible(dev->wait, (dev->work ||
112+
wait_event_interruptible(dev->wait, (READ_ONCE(dev->work) ||
113113
!list_empty(list)));
114114
if (signal_pending(current))
115115
return -ERESTARTSYS;
116116
spin_lock_irq(&dev->lock);
117117
}
118118
if (dev->work)
119-
dev->work = 0;
119+
WRITE_ONCE(dev->work, 0);
120120
if (!list_empty(list)) {
121121
timer = list_first_entry(list, struct mISDNtimer, list);
122122
list_del(&timer->list);
@@ -141,13 +141,16 @@ mISDN_poll(struct file *filep, poll_table *wait)
141141
if (*debug & DEBUG_TIMER)
142142
printk(KERN_DEBUG "%s(%p, %p)\n", __func__, filep, wait);
143143
if (dev) {
144+
u32 work;
145+
144146
poll_wait(filep, &dev->wait, wait);
145147
mask = 0;
146-
if (dev->work || !list_empty(&dev->expired))
148+
work = READ_ONCE(dev->work);
149+
if (work || !list_empty(&dev->expired))
147150
mask |= (EPOLLIN | EPOLLRDNORM);
148151
if (*debug & DEBUG_TIMER)
149152
printk(KERN_DEBUG "%s work(%d) empty(%d)\n", __func__,
150-
dev->work, list_empty(&dev->expired));
153+
work, list_empty(&dev->expired));
151154
}
152155
return mask;
153156
}
@@ -172,7 +175,7 @@ misdn_add_timer(struct mISDNtimerdev *dev, int timeout)
172175
struct mISDNtimer *timer;
173176

174177
if (!timeout) {
175-
dev->work = 1;
178+
WRITE_ONCE(dev->work, 1);
176179
wake_up_interruptible(&dev->wait);
177180
id = 0;
178181
} else {

drivers/net/bonding/bond_main.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1862,6 +1862,12 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
18621862
*/
18631863
if (!bond_has_slaves(bond)) {
18641864
if (bond_dev->type != slave_dev->type) {
1865+
if (slave_dev->type != ARPHRD_ETHER &&
1866+
BOND_MODE(bond) == BOND_MODE_8023AD) {
1867+
SLAVE_NL_ERR(bond_dev, slave_dev, extack,
1868+
"8023AD mode requires Ethernet devices");
1869+
return -EINVAL;
1870+
}
18651871
slave_dbg(bond_dev, slave_dev, "change device type from %d to %d\n",
18661872
bond_dev->type, slave_dev->type);
18671873

@@ -4090,8 +4096,9 @@ static bool bond_flow_dissect(struct bonding *bond, struct sk_buff *skb, const v
40904096
case BOND_XMIT_POLICY_ENCAP23:
40914097
case BOND_XMIT_POLICY_ENCAP34:
40924098
memset(fk, 0, sizeof(*fk));
4093-
return __skb_flow_dissect(NULL, skb, &flow_keys_bonding,
4094-
fk, data, l2_proto, nhoff, hlen, 0);
4099+
return __skb_flow_dissect(dev_net(bond->dev), skb,
4100+
&flow_keys_bonding, fk, data,
4101+
l2_proto, nhoff, hlen, 0);
40954102
default:
40964103
break;
40974104
}

drivers/net/can/dev/dev.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max,
332332

333333
can_ml = (void *)priv + ALIGN(sizeof_priv, NETDEV_ALIGN);
334334
can_set_ml_priv(dev, can_ml);
335+
can_set_cap(dev, CAN_CAP_CC);
335336

336337
if (echo_skb_max) {
337338
priv->echo_skb_max = echo_skb_max;

drivers/net/can/usb/ems_usb.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,11 +486,17 @@ static void ems_usb_read_bulk_callback(struct urb *urb)
486486
urb->transfer_buffer, RX_BUFFER_SIZE,
487487
ems_usb_read_bulk_callback, dev);
488488

489+
usb_anchor_urb(urb, &dev->rx_submitted);
490+
489491
retval = usb_submit_urb(urb, GFP_ATOMIC);
492+
if (!retval)
493+
return;
494+
495+
usb_unanchor_urb(urb);
490496

491497
if (retval == -ENODEV)
492498
netif_device_detach(netdev);
493-
else if (retval)
499+
else
494500
netdev_err(netdev,
495501
"failed resubmitting read bulk urb: %d\n", retval);
496502
}

drivers/net/can/usb/esd_usb.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,13 +541,20 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
541541
urb->transfer_buffer, ESD_USB_RX_BUFFER_SIZE,
542542
esd_usb_read_bulk_callback, dev);
543543

544+
usb_anchor_urb(urb, &dev->rx_submitted);
545+
544546
err = usb_submit_urb(urb, GFP_ATOMIC);
547+
if (!err)
548+
return;
549+
550+
usb_unanchor_urb(urb);
551+
545552
if (err == -ENODEV) {
546553
for (i = 0; i < dev->net_count; i++) {
547554
if (dev->nets[i])
548555
netif_device_detach(dev->nets[i]->netdev);
549556
}
550-
} else if (err) {
557+
} else {
551558
dev_err(dev->udev->dev.parent,
552559
"failed resubmitting read bulk urb: %pe\n", ERR_PTR(err));
553560
}

0 commit comments

Comments
 (0)