Commit a1d9d8e8 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from Jakub Kicinski:
 "Including fixes from wireless, Bluetooth and netfilter.

  Nothing too exciting here, mostly fixes for corner cases.

  Current release - fix to a fix:

   - bonding: prevent potential infinite loop in bond_header_parse()

  Current release - new code bugs:

   - wifi: mac80211: check tdls flag in ieee80211_tdls_oper

  Previous releases - regressions:

   - af_unix: give up GC if MSG_PEEK intervened

   - netfilter: conntrack: add missing netlink policy validations

   - NFC: nxp-nci: allow GPIOs to sleep"

* tag 'net-7.0-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (78 commits)
  MPTCP: fix lock class name family in pm_nl_create_listen_socket
  icmp: fix NULL pointer dereference in icmp_tag_validation()
  net: dsa: bcm_sf2: fix missing clk_disable_unprepare() in error paths
  net: shaper: protect from late creation of hierarchy
  net: shaper: protect late read accesses to the hierarchy
  net: mvpp2: guard flow control update with global_tx_fc in buffer switching
  nfnetlink_osf: validate individual option lengths in fingerprints
  netfilter: nf_tables: release flowtable after rcu grace period on error
  netfilter: bpf: defer hook memory release until rcu readers are done
  net: bonding: fix NULL deref in bond_debug_rlb_hash_show
  udp_tunnel: fix NULL deref caused by udp_sock_create6 when CONFIG_IPV6=n
  net/mlx5e: Fix race condition during IPSec ESN update
  net/mlx5e: Prevent concurrent access to IPSec ASO context
  net/mlx5: qos: Restrict RTNL area to avoid a lock cycle
  ipv6: add NULL checks for idev in SRv6 paths
  NFC: nxp-nci: allow GPIOs to sleep
  net: macb: fix uninitialized rx_fs_lock
  net: macb: fix use-after-free access to PTP clock
  netdevsim: drop PSP ext ref on forward failure
  wifi: mac80211: always free skb on ieee80211_tx_prepare_skb() failure
  ...
parents e9825d1c 7ab4a7c5
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -247,8 +247,8 @@ operations:
      flags: [admin-perm]

      do:
        pre: net-shaper-nl-pre-doit
        post: net-shaper-nl-post-doit
        pre: net-shaper-nl-pre-doit-write
        post: net-shaper-nl-post-doit-write
        request:
          attributes:
            - ifindex
@@ -278,8 +278,8 @@ operations:
      flags: [admin-perm]

      do:
        pre: net-shaper-nl-pre-doit
        post: net-shaper-nl-post-doit
        pre: net-shaper-nl-pre-doit-write
        post: net-shaper-nl-post-doit-write
        request:
          attributes: *ns-binding

@@ -309,8 +309,8 @@ operations:
      flags: [admin-perm]

      do:
        pre: net-shaper-nl-pre-doit
        post: net-shaper-nl-post-doit
        pre: net-shaper-nl-pre-doit-write
        post: net-shaper-nl-post-doit-write
        request:
          attributes:
            - ifindex
+2 −0
Original line number Diff line number Diff line
@@ -787,6 +787,8 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
	 */
	if (soc_type == QCA_WCN3988)
		rom_ver = ((soc_ver & 0x00000f00) >> 0x05) | (soc_ver & 0x0000000f);
	else if (soc_type == QCA_WCN3998)
		rom_ver = ((soc_ver & 0x0000f000) >> 0x07) | (soc_ver & 0x0000000f);
	else
		rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);

+3 −2
Original line number Diff line number Diff line
@@ -257,9 +257,10 @@ static void fwnet_header_cache_update(struct hh_cache *hh,
	memcpy((u8 *)hh->hh_data + HH_DATA_OFF(FWNET_HLEN), haddr, net->addr_len);
}

static int fwnet_header_parse(const struct sk_buff *skb, unsigned char *haddr)
static int fwnet_header_parse(const struct sk_buff *skb, const struct net_device *dev,
			      unsigned char *haddr)
{
	memcpy(haddr, skb->dev->dev_addr, FWNET_ALEN);
	memcpy(haddr, dev->dev_addr, FWNET_ALEN);

	return FWNET_ALEN;
}
+11 −5
Original line number Diff line number Diff line
@@ -34,11 +34,17 @@ static int bond_debug_rlb_hash_show(struct seq_file *m, void *v)
	for (; hash_index != RLB_NULL_INDEX;
	     hash_index = client_info->used_next) {
		client_info = &(bond_info->rx_hashtbl[hash_index]);
		if (client_info->slave)
			seq_printf(m, "%-15pI4 %-15pI4 %-17pM %s\n",
				   &client_info->ip_src,
				   &client_info->ip_dst,
				   &client_info->mac_dst,
				   client_info->slave->dev->name);
		else
			seq_printf(m, "%-15pI4 %-15pI4 %-17pM (none)\n",
				   &client_info->ip_src,
				   &client_info->ip_dst,
				   &client_info->mac_dst);
	}

	spin_unlock_bh(&bond->mode_lock);
+5 −3
Original line number Diff line number Diff line
@@ -1530,9 +1530,11 @@ static int bond_header_create(struct sk_buff *skb, struct net_device *bond_dev,
	return ret;
}

static int bond_header_parse(const struct sk_buff *skb, unsigned char *haddr)
static int bond_header_parse(const struct sk_buff *skb,
			     const struct net_device *dev,
			     unsigned char *haddr)
{
	struct bonding *bond = netdev_priv(skb->dev);
	struct bonding *bond = netdev_priv(dev);
	const struct header_ops *slave_ops;
	struct slave *slave;
	int ret = 0;
@@ -1542,7 +1544,7 @@ static int bond_header_parse(const struct sk_buff *skb, unsigned char *haddr)
	if (slave) {
		slave_ops = READ_ONCE(slave->dev->header_ops);
		if (slave_ops && slave_ops->parse)
			ret = slave_ops->parse(skb, haddr);
			ret = slave_ops->parse(skb, slave->dev, haddr);
	}
	rcu_read_unlock();
	return ret;
Loading