Commit 9d32fa5d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from Jakub Kicinski:
 "Networking fixes, including fixes from bpf, wireless, netfilter and
  wireguard trees.

  The bpf vs lockdown+audit fix is the most notable.

  Things haven't slowed down just yet, both in terms of regressions in
  current release and largish fixes for older code, but we usually see a
  slowdown only after -rc5.

  Current release - regressions:

   - virtio-net: fix page faults and crashes when XDP is enabled

   - mlx5e: fix HW timestamping with CQE compression, and make sure they
     are only allowed to coexist with capable devices

   - stmmac:
      - fix kernel panic due to NULL pointer dereference of
        mdio_bus_data
      - fix double clk unprepare when no PHY device is connected

  Current release - new code bugs:

   - mt76: a few fixes for the recent MT7921 devices and runtime power
     management

  Previous releases - regressions:

   - ice:
      - track AF_XDP ZC enabled queues in bitmap to fix copy mode Tx
      - fix allowing VF to request more/less queues via virtchnl
      - correct supported and advertised autoneg by using PHY
        capabilities
      - allow all LLDP packets from PF to Tx

   - kbuild: quote OBJCOPY var to avoid a pahole call break the build

  Previous releases - always broken:

   - bpf, lockdown, audit: fix buggy SELinux lockdown permission checks

   - mt76: address the recent FragAttack vulnerabilities not covered by
     generic fixes

   - ipv6: fix KASAN: slab-out-of-bounds Read in
     fib6_nh_flush_exceptions

   - Bluetooth:
      - fix the erroneous flush_work() order, to avoid double free
      - use correct lock to prevent UAF of hdev object

   - nfc: fix NULL ptr dereference in llcp_sock_getname() after failed
     connect

   - ieee802154: multiple fixes to error checking and return values

   - igb: fix XDP with PTP enabled

   - intel: add correct exception tracing for XDP

   - tls: fix use-after-free when TLS offload device goes down and back
     up

   - ipvs: ignore IP_VS_SVC_F_HASHED flag when adding service

   - netfilter: nft_ct: skip expectations for confirmed conntrack

   - mptcp: fix falling back to TCP in presence of out of order packets
     early in connection lifetime

   - wireguard: switch from O(n) to a O(1) algorithm for maintaining
     peers, fixing stalls and a large memory leak in the process

  Misc:

   - devlink: correct VIRTUAL port to not have phys_port attributes

   - Bluetooth: fix VIRTIO_ID_BT assigned number

   - net: return the correct errno code ENOBUF -> ENOMEM

   - wireguard:
      - peer: allocate in kmem_cache saving 25% on peer memory
      - do not use -O3"

* tag 'net-5.13-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (91 commits)
  cxgb4: avoid link re-train during TC-MQPRIO configuration
  sch_htb: fix refcount leak in htb_parent_to_leaf_offload
  wireguard: allowedips: free empty intermediate nodes when removing single node
  wireguard: allowedips: allocate nodes in kmem_cache
  wireguard: allowedips: remove nodes in O(1)
  wireguard: allowedips: initialize list head in selftest
  wireguard: peer: allocate in kmem_cache
  wireguard: use synchronize_net rather than synchronize_rcu
  wireguard: do not use -O3
  wireguard: selftests: make sure rp_filter is disabled on vethc
  wireguard: selftests: remove old conntrack kconfig value
  virtchnl: Add missing padding to virtchnl_proto_hdrs
  ice: Allow all LLDP packets from PF to Tx
  ice: report supported and advertised autoneg using PHY capabilities
  ice: handle the VF VSI rebuild failure
  ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared
  ice: Fix allowing VF to request more/less queues via virtchnl
  virtio-net: fix for skb_over_panic inside big mode
  ipv6: Fix KASAN: slab-out-of-bounds Read in fib6_nh_flush_exceptions
  fib: Return the correct errno code
  ...
parents 2cb26c15 3822d067
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -12905,7 +12905,7 @@ F: net/ipv4/nexthop.c
NFC SUBSYSTEM
M:	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
L:	linux-nfc@lists.01.org (moderated for non-subscribers)
L:	linux-nfc@lists.01.org (subscribers-only)
L:	netdev@vger.kernel.org
S:	Maintained
F:	Documentation/devicetree/bindings/net/nfc/
@@ -12918,7 +12918,7 @@ F: net/nfc/
NFC VIRTUAL NCI DEVICE DRIVER
M:	Bongsu Jeon <bongsu.jeon@samsung.com>
L:	netdev@vger.kernel.org
L:	linux-nfc@lists.01.org (moderated for non-subscribers)
L:	linux-nfc@lists.01.org (subscribers-only)
S:	Supported
F:	drivers/nfc/virtual_ncidev.c
F:	tools/testing/selftests/nci/
@@ -13216,7 +13216,7 @@ F: sound/soc/codecs/tfa9879*
NXP-NCI NFC DRIVER
R:	Charles Gorand <charles.gorand@effinnov.com>
L:	linux-nfc@lists.01.org (moderated for non-subscribers)
L:	linux-nfc@lists.01.org (subscribers-only)
S:	Supported
F:	drivers/nfc/nxp-nci
@@ -16147,7 +16147,7 @@ F: include/media/drv-intf/s3c_camif.h
SAMSUNG S3FWRN5 NFC DRIVER
M:	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M:	Krzysztof Opasiak <k.opasiak@samsung.com>
L:	linux-nfc@lists.01.org (moderated for non-subscribers)
L:	linux-nfc@lists.01.org (subscribers-only)
S:	Maintained
F:	Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml
F:	drivers/nfc/s3fwrn5
@@ -18337,7 +18337,7 @@ F: sound/soc/codecs/tas571x*
TI TRF7970A NFC DRIVER
M:	Mark Greer <mgreer@animalcreek.com>
L:	linux-wireless@vger.kernel.org
L:	linux-nfc@lists.01.org (moderated for non-subscribers)
L:	linux-nfc@lists.01.org (subscribers-only)
S:	Supported
F:	Documentation/devicetree/bindings/net/nfc/trf7970a.txt
F:	drivers/nfc/trf7970a.c
+21 −2
Original line number Diff line number Diff line
@@ -2529,10 +2529,17 @@ static int btusb_intel_download_firmware_newgen(struct hci_dev *hdev,
	}

	btusb_setup_intel_newgen_get_fw_name(ver, fwname, sizeof(fwname), "sfi");
	err = request_firmware(&fw, fwname, &hdev->dev);
	err = firmware_request_nowarn(&fw, fwname, &hdev->dev);
	if (err < 0) {
		if (!test_bit(BTUSB_BOOTLOADER, &data->flags)) {
			/* Firmware has already been loaded */
			set_bit(BTUSB_FIRMWARE_LOADED, &data->flags);
			return 0;
		}

		bt_dev_err(hdev, "Failed to load Intel firmware file %s (%d)",
			   fwname, err);

		return err;
	}

@@ -2682,12 +2689,24 @@ static int btusb_intel_download_firmware(struct hci_dev *hdev,
	err = btusb_setup_intel_new_get_fw_name(ver, params, fwname,
						sizeof(fwname), "sfi");
	if (err < 0) {
		if (!test_bit(BTUSB_BOOTLOADER, &data->flags)) {
			/* Firmware has already been loaded */
			set_bit(BTUSB_FIRMWARE_LOADED, &data->flags);
			return 0;
		}

		bt_dev_err(hdev, "Unsupported Intel firmware naming");
		return -EINVAL;
	}

	err = request_firmware(&fw, fwname, &hdev->dev);
	err = firmware_request_nowarn(&fw, fwname, &hdev->dev);
	if (err < 0) {
		if (!test_bit(BTUSB_BOOTLOADER, &data->flags)) {
			/* Firmware has already been loaded */
			set_bit(BTUSB_FIRMWARE_LOADED, &data->flags);
			return 0;
		}

		bt_dev_err(hdev, "Failed to load Intel firmware file %s (%d)",
			   fwname, err);
		return err;
+0 −2
Original line number Diff line number Diff line
@@ -2177,8 +2177,6 @@ int cxgb4_update_mac_filt(struct port_info *pi, unsigned int viid,
			  bool persistent, u8 *smt_idx);
int cxgb4_get_msix_idx_from_bmap(struct adapter *adap);
void cxgb4_free_msix_idx_in_bmap(struct adapter *adap, u32 msix_idx);
int cxgb_open(struct net_device *dev);
int cxgb_close(struct net_device *dev);
void cxgb4_enable_rx(struct adapter *adap, struct sge_rspq *q);
void cxgb4_quiesce_rx(struct sge_rspq *q);
int cxgb4_port_mirror_alloc(struct net_device *dev);
+2 −2
Original line number Diff line number Diff line
@@ -2834,7 +2834,7 @@ static void cxgb_down(struct adapter *adapter)
/*
 * net_device operations
 */
int cxgb_open(struct net_device *dev)
static int cxgb_open(struct net_device *dev)
{
	struct port_info *pi = netdev_priv(dev);
	struct adapter *adapter = pi->adapter;
@@ -2882,7 +2882,7 @@ int cxgb_open(struct net_device *dev)
	return err;
}

int cxgb_close(struct net_device *dev)
static int cxgb_close(struct net_device *dev)
{
	struct port_info *pi = netdev_priv(dev);
	struct adapter *adapter = pi->adapter;
+5 −9
Original line number Diff line number Diff line
@@ -997,20 +997,16 @@ int cxgb4_tc_flower_destroy(struct net_device *dev,
	if (!ch_flower)
		return -ENOENT;

	rhashtable_remove_fast(&adap->flower_tbl, &ch_flower->node,
			       adap->flower_ht_params);

	ret = cxgb4_flow_rule_destroy(dev, ch_flower->fs.tc_prio,
				      &ch_flower->fs, ch_flower->filter_id);
	if (ret)
		goto err;
		netdev_err(dev, "Flow rule destroy failed for tid: %u, ret: %d",
			   ch_flower->filter_id, ret);

	ret = rhashtable_remove_fast(&adap->flower_tbl, &ch_flower->node,
				     adap->flower_ht_params);
	if (ret) {
		netdev_err(dev, "Flow remove from rhashtable failed");
		goto err;
	}
	kfree_rcu(ch_flower, rcu);

err:
	return ret;
}

Loading