Skip to content

Commit 52afb15

Browse files
committed
Merge tag 'net-6.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from netfilter, wireless and bluetooth. Nothing major, regression fixes are mostly in drivers, two more of those are flowing towards us thru various trees. I wish some of the changes went into -rc5, we'll try to keep an eye on frequency of PRs from sub-trees. Also disproportional number of fixes for bugs added in v6.4, strange coincidence. Current release - regressions: - igc: fix LED-related deadlock on driver unbind - wifi: mac80211: small fixes to recent clean up of the connection process - Revert "wifi: iwlwifi: bump FW API to 90 for BZ/SC devices", kernel doesn't have all the code to deal with that version, yet - Bluetooth: - set power_ctrl_enabled on NULL returned by gpiod_get_optional() - qca: fix invalid device address check, again - eth: ravb: fix registered interrupt names Current release - new code bugs: - wifi: mac80211: check EHT/TTLM action frame length Previous releases - regressions: - fix sk_memory_allocated_{add|sub} for architectures where __this_cpu_{add|sub}* are not IRQ-safe - dsa: mv88e6xx: fix link setup for 88E6250 Previous releases - always broken: - ip: validate dev returned from __in_dev_get_rcu(), prevent possible null-derefs in a few places - switch number of for_each_rcu() loops using call_rcu() on the iterator to for_each_safe() - macsec: fix isolation of broadcast traffic in presence of offload - vxlan: drop packets from invalid source address - eth: mlxsw: trap and ACL programming fixes - eth: bnxt: PCIe error recovery fixes, fix counting dropped packets - Bluetooth: - lots of fixes for the command submission rework from v6.4 - qca: fix NULL-deref on non-serdev suspend Misc: - tools: ynl: don't ignore errors in NLMSG_DONE messages" * tag 'net-6.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (88 commits) af_unix: Suppress false-positive lockdep splat for spin_lock() in __unix_gc(). net: b44: set pause params only when interface is up tls: fix lockless read of strp->msg_ready in ->poll dpll: fix dpll_pin_on_pin_register() for multiple parent pins net: ravb: Fix registered interrupt names octeontx2-af: fix the double free in rvu_npc_freemem() net: ethernet: ti: am65-cpts: Fix PTPv1 message type on TX packets ice: fix LAG and VF lock dependency in ice_reset_vf() iavf: Fix TC config comparison with existing adapter TC config i40e: Report MFS in decimal base instead of hex i40e: Do not use WQ_MEM_RECLAIM flag for workqueue net: ti: icssg-prueth: Fix signedness bug in prueth_init_rx_chns() net/mlx5e: Advertise mlx5 ethernet driver updates sk_buff md_dst for MACsec macsec: Detect if Rx skb is macsec-related for offloading devices that update md_dst ethernet: Add helper for assigning packet type when dest address does not match device address macsec: Enable devices to advertise whether they update sk_buff md_dst during offloads net: phy: dp83869: Fix MII mode failure netfilter: nf_tables: honor table dormant flag from netdev release event path eth: bnxt: fix counting packets discarded due to OOM and netpoll igc: Fix LED-related deadlock on driver unbind ...
2 parents e33c496 + e8baa63 commit 52afb15

Some content is hidden

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

85 files changed

+830
-384
lines changed

.mailmap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ Alexei Starovoitov <[email protected]> <[email protected]>
3838
Alexei Starovoitov <[email protected]> <[email protected]>
3939
Alexei Starovoitov <[email protected]> <[email protected]>
4040
41+
Alex Elder <[email protected]>
42+
43+
44+
45+
46+
47+
48+
49+
50+
4151
4252
4353

MAINTAINERS

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7829,9 +7829,8 @@ W: http://aeschi.ch.eu.org/efs/
78297829
F: fs/efs/
78307830

78317831
EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
7832-
M: Douglas Miller <[email protected]>
78337832
7834-
S: Maintained
7833+
S: Orphan
78357834
F: drivers/net/ethernet/ibm/ehea/
78367835

78377836
ELM327 CAN NETWORK DRIVER

drivers/bluetooth/btmtk.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,10 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
380380
switch (data->cd_info.state) {
381381
case HCI_DEVCOREDUMP_IDLE:
382382
err = hci_devcd_init(hdev, MTK_COREDUMP_SIZE);
383-
if (err < 0)
383+
if (err < 0) {
384+
kfree_skb(skb);
384385
break;
386+
}
385387
data->cd_info.cnt = 0;
386388

387389
/* It is supposed coredump can be done within 5 seconds */
@@ -407,9 +409,6 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
407409
break;
408410
}
409411

410-
if (err < 0)
411-
kfree_skb(skb);
412-
413412
return err;
414413
}
415414
EXPORT_SYMBOL_GPL(btmtk_process_coredump);

drivers/bluetooth/btqca.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
#define VERSION "0.1"
1717

18+
#define QCA_BDADDR_DEFAULT (&(bdaddr_t) {{ 0xad, 0x5a, 0x00, 0x00, 0x00, 0x00 }})
19+
1820
int qca_read_soc_version(struct hci_dev *hdev, struct qca_btsoc_version *ver,
1921
enum qca_btsoc_type soc_type)
2022
{
@@ -612,6 +614,38 @@ int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr)
612614
}
613615
EXPORT_SYMBOL_GPL(qca_set_bdaddr_rome);
614616

617+
static int qca_check_bdaddr(struct hci_dev *hdev)
618+
{
619+
struct hci_rp_read_bd_addr *bda;
620+
struct sk_buff *skb;
621+
int err;
622+
623+
if (bacmp(&hdev->public_addr, BDADDR_ANY))
624+
return 0;
625+
626+
skb = __hci_cmd_sync(hdev, HCI_OP_READ_BD_ADDR, 0, NULL,
627+
HCI_INIT_TIMEOUT);
628+
if (IS_ERR(skb)) {
629+
err = PTR_ERR(skb);
630+
bt_dev_err(hdev, "Failed to read device address (%d)", err);
631+
return err;
632+
}
633+
634+
if (skb->len != sizeof(*bda)) {
635+
bt_dev_err(hdev, "Device address length mismatch");
636+
kfree_skb(skb);
637+
return -EIO;
638+
}
639+
640+
bda = (struct hci_rp_read_bd_addr *)skb->data;
641+
if (!bacmp(&bda->bdaddr, QCA_BDADDR_DEFAULT))
642+
set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
643+
644+
kfree_skb(skb);
645+
646+
return 0;
647+
}
648+
615649
static void qca_generate_hsp_nvm_name(char *fwname, size_t max_size,
616650
struct qca_btsoc_version ver, u8 rom_ver, u16 bid)
617651
{
@@ -818,6 +852,10 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
818852
break;
819853
}
820854

855+
err = qca_check_bdaddr(hdev);
856+
if (err)
857+
return err;
858+
821859
bt_dev_info(hdev, "QCA setup on UART is completed");
822860

823861
return 0;

drivers/bluetooth/btusb.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,8 @@ static const struct usb_device_id quirks_table[] = {
542542
/* Realtek 8852BE Bluetooth devices */
543543
{ USB_DEVICE(0x0cb8, 0xc559), .driver_info = BTUSB_REALTEK |
544544
BTUSB_WIDEBAND_SPEECH },
545+
{ USB_DEVICE(0x0bda, 0x4853), .driver_info = BTUSB_REALTEK |
546+
BTUSB_WIDEBAND_SPEECH },
545547
{ USB_DEVICE(0x0bda, 0x887b), .driver_info = BTUSB_REALTEK |
546548
BTUSB_WIDEBAND_SPEECH },
547549
{ USB_DEVICE(0x0bda, 0xb85b), .driver_info = BTUSB_REALTEK |
@@ -3480,13 +3482,12 @@ static void btusb_dump_hdr_qca(struct hci_dev *hdev, struct sk_buff *skb)
34803482

34813483
static void btusb_coredump_qca(struct hci_dev *hdev)
34823484
{
3485+
int err;
34833486
static const u8 param[] = { 0x26 };
3484-
struct sk_buff *skb;
34853487

3486-
skb = __hci_cmd_sync(hdev, 0xfc0c, 1, param, HCI_CMD_TIMEOUT);
3487-
if (IS_ERR(skb))
3488-
bt_dev_err(hdev, "%s: triggle crash failed (%ld)", __func__, PTR_ERR(skb));
3489-
kfree_skb(skb);
3488+
err = __hci_cmd_send(hdev, 0xfc0c, 1, param);
3489+
if (err < 0)
3490+
bt_dev_err(hdev, "%s: triggle crash failed (%d)", __func__, err);
34903491
}
34913492

34923493
/*

drivers/bluetooth/hci_qca.c

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1672,6 +1672,9 @@ static bool qca_wakeup(struct hci_dev *hdev)
16721672
struct hci_uart *hu = hci_get_drvdata(hdev);
16731673
bool wakeup;
16741674

1675+
if (!hu->serdev)
1676+
return true;
1677+
16751678
/* BT SoC attached through the serial bus is handled by the serdev driver.
16761679
* So we need to use the device handle of the serdev driver to get the
16771680
* status of device may wakeup.
@@ -1905,8 +1908,6 @@ static int qca_setup(struct hci_uart *hu)
19051908
case QCA_WCN6750:
19061909
case QCA_WCN6855:
19071910
case QCA_WCN7850:
1908-
set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
1909-
19101911
qcadev = serdev_device_get_drvdata(hu->serdev);
19111912
if (qcadev->bdaddr_property_broken)
19121913
set_bit(HCI_QUIRK_BDADDR_PROPERTY_BROKEN, &hdev->quirks);
@@ -1957,8 +1958,10 @@ static int qca_setup(struct hci_uart *hu)
19571958
qca_debugfs_init(hdev);
19581959
hu->hdev->hw_error = qca_hw_error;
19591960
hu->hdev->cmd_timeout = qca_cmd_timeout;
1960-
if (device_can_wakeup(hu->serdev->ctrl->dev.parent))
1961-
hu->hdev->wakeup = qca_wakeup;
1961+
if (hu->serdev) {
1962+
if (device_can_wakeup(hu->serdev->ctrl->dev.parent))
1963+
hu->hdev->wakeup = qca_wakeup;
1964+
}
19621965
} else if (ret == -ENOENT) {
19631966
/* No patch/nvm-config found, run with original fw/config */
19641967
set_bit(QCA_ROM_FW, &qca->flags);
@@ -2329,16 +2332,21 @@ static int qca_serdev_probe(struct serdev_device *serdev)
23292332
(data->soc_type == QCA_WCN6750 ||
23302333
data->soc_type == QCA_WCN6855)) {
23312334
dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
2332-
power_ctrl_enabled = false;
2335+
return PTR_ERR(qcadev->bt_en);
23332336
}
23342337

2338+
if (!qcadev->bt_en)
2339+
power_ctrl_enabled = false;
2340+
23352341
qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",
23362342
GPIOD_IN);
23372343
if (IS_ERR(qcadev->sw_ctrl) &&
23382344
(data->soc_type == QCA_WCN6750 ||
23392345
data->soc_type == QCA_WCN6855 ||
2340-
data->soc_type == QCA_WCN7850))
2341-
dev_warn(&serdev->dev, "failed to acquire SW_CTRL gpio\n");
2346+
data->soc_type == QCA_WCN7850)) {
2347+
dev_err(&serdev->dev, "failed to acquire SW_CTRL gpio\n");
2348+
return PTR_ERR(qcadev->sw_ctrl);
2349+
}
23422350

23432351
qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL);
23442352
if (IS_ERR(qcadev->susclk)) {
@@ -2357,10 +2365,13 @@ static int qca_serdev_probe(struct serdev_device *serdev)
23572365
qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
23582366
GPIOD_OUT_LOW);
23592367
if (IS_ERR(qcadev->bt_en)) {
2360-
dev_warn(&serdev->dev, "failed to acquire enable gpio\n");
2361-
power_ctrl_enabled = false;
2368+
dev_err(&serdev->dev, "failed to acquire enable gpio\n");
2369+
return PTR_ERR(qcadev->bt_en);
23622370
}
23632371

2372+
if (!qcadev->bt_en)
2373+
power_ctrl_enabled = false;
2374+
23642375
qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL);
23652376
if (IS_ERR(qcadev->susclk)) {
23662377
dev_warn(&serdev->dev, "failed to acquire clk\n");

0 commit comments

Comments
 (0)