Commit d20339fa authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from Paolo Abeni:
 "Including fixes from wireless and netfilter.

  Current release - regressions:

   - smc: fix af_ops of child socket pointing to released memory

   - wifi: ath9k: fix usage of driver-private space in tx_info

  Previous releases - regressions:

   - ipv6: fix panic when forwarding a pkt with no in6 dev

   - sctp: use the correct skb for security_sctp_assoc_request

   - smc: fix NULL pointer dereference in smc_pnet_find_ib()

   - sched: fix initialization order when updating chain 0 head

   - phy: don't defer probe forever if PHY IRQ provider is missing

   - dsa: revert "net: dsa: setup master before ports"

   - dsa: felix: fix tagging protocol changes with multiple CPU ports

   - eth: ice:
      - fix use-after-free when freeing @rx_cpu_rmap
      - revert "iavf: fix deadlock occurrence during resetting VF
        interface"

   - eth: lan966x: stop processing the MAC entry is port is wrong

  Previous releases - always broken:

   - sched:
      - flower: fix parsing of ethertype following VLAN header
      - taprio: check if socket flags are valid

   - nfc: add flush_workqueue to prevent uaf

   - veth: ensure eth header is in skb's linear part

   - eth: stmmac: fix altr_tse_pcs function when using a fixed-link

   - eth: macb: restart tx only if queue pointer is lagging

   - eth: macvlan: fix leaking skb in source mode with nodst option"

* tag 'net-5.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (52 commits)
  net: bcmgenet: Revert "Use stronger register read/writes to assure ordering"
  rtnetlink: Fix handling of disabled L3 stats in RTM_GETSTATS replies
  net: dsa: felix: fix tagging protocol changes with multiple CPU ports
  tun: annotate access to queue->trans_start
  nfc: nci: add flush_workqueue to prevent uaf
  net: dsa: realtek: don't parse compatible string for RTL8366S
  net: dsa: realtek: fix Kconfig to assure consistent driver linkage
  net: ftgmac100: access hardware register after clock ready
  Revert "net: dsa: setup master before ports"
  macvlan: Fix leaking skb in source mode with nodst option
  netfilter: nf_tables: nft_parse_register can return a negative value
  net: lan966x: Stop processing the MAC entry is port is wrong.
  net: lan966x: Fix when a port's upper is changed.
  net: lan966x: Fix IGMP snooping when frames have vlan tag
  net: lan966x: Update lan966x_ptp_get_nominal_value
  sctp: Initialize daddr on peeled off socket
  net/smc: Fix af_ops of child socket pointing to released memory
  net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()
  net/smc: use memcpy instead of snprintf to avoid out of bounds read
  net: macb: Restart tx only if queue pointer is lagging
  ...
parents b9b4c79e 2df3fc4a
Loading
Loading
Loading
Loading
+39 −18
Original line number Original line Diff line number Diff line
@@ -13,9 +13,6 @@ description: |
  This describes the devicetree bindings for AVE ethernet controller
  This describes the devicetree bindings for AVE ethernet controller
  implemented on Socionext UniPhier SoCs.
  implemented on Socionext UniPhier SoCs.


allOf:
  - $ref: ethernet-controller.yaml#

properties:
properties:
  compatible:
  compatible:
    enum:
    enum:
@@ -44,25 +41,13 @@ properties:
    minItems: 1
    minItems: 1
    maxItems: 4
    maxItems: 4


  clock-names:
  clock-names: true
    oneOf:
      - items:          # for Pro4
          - const: gio
          - const: ether
          - const: ether-gb
          - const: ether-phy
      - const: ether    # for others


  resets:
  resets:
    minItems: 1
    minItems: 1
    maxItems: 2
    maxItems: 2


  reset-names:
  reset-names: true
    oneOf:
      - items:          # for Pro4
          - const: gio
          - const: ether
      - const: ether    # for others


  socionext,syscon-phy-mode:
  socionext,syscon-phy-mode:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    $ref: /schemas/types.yaml#/definitions/phandle-array
@@ -78,6 +63,42 @@ properties:
    $ref: mdio.yaml#
    $ref: mdio.yaml#
    unevaluatedProperties: false
    unevaluatedProperties: false


allOf:
  - $ref: ethernet-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            const: socionext,uniphier-pro4-ave4
    then:
      properties:
        clocks:
          minItems: 4
          maxItems: 4
        clock-names:
          items:
            - const: gio
            - const: ether
            - const: ether-gb
            - const: ether-phy
        resets:
          minItems: 2
          maxItems: 2
        reset-names:
          items:
            - const: gio
            - const: ether
    else:
      properties:
        clocks:
          maxItems: 1
        clock-names:
          const: ether
        resets:
          maxItems: 1
        reset-names:
          const: ether

required:
required:
  - compatible
  - compatible
  - reg
  - reg
@@ -90,7 +111,7 @@ required:
  - reset-names
  - reset-names
  - mdio
  - mdio


additionalProperties: false
unevaluatedProperties: false


examples:
examples:
  - |
  - |
+2 −2
Original line number Original line Diff line number Diff line
@@ -894,7 +894,7 @@ xmit_hash_policy
		Uses XOR of hardware MAC addresses and packet type ID
		Uses XOR of hardware MAC addresses and packet type ID
		field to generate the hash. The formula is
		field to generate the hash. The formula is


		hash = source MAC XOR destination MAC XOR packet type ID
		hash = source MAC[5] XOR destination MAC[5] XOR packet type ID
		slave number = hash modulo slave count
		slave number = hash modulo slave count


		This algorithm will place all traffic to a particular
		This algorithm will place all traffic to a particular
@@ -910,7 +910,7 @@ xmit_hash_policy
		Uses XOR of hardware MAC addresses and IP addresses to
		Uses XOR of hardware MAC addresses and IP addresses to
		generate the hash.  The formula is
		generate the hash.  The formula is


		hash = source MAC XOR destination MAC XOR packet type ID
		hash = source MAC[5] XOR destination MAC[5] XOR packet type ID
		hash = hash XOR source IP XOR destination IP
		hash = hash XOR source IP XOR destination IP
		hash = hash XOR (hash RSHIFT 16)
		hash = hash XOR (hash RSHIFT 16)
		hash = hash XOR (hash RSHIFT 8)
		hash = hash XOR (hash RSHIFT 8)
+3 −4
Original line number Original line Diff line number Diff line
@@ -201,6 +201,7 @@ F: include/net/ieee80211_radiotap.h
F:	include/net/iw_handler.h
F:	include/net/iw_handler.h
F:	include/net/wext.h
F:	include/net/wext.h
F:	include/uapi/linux/nl80211.h
F:	include/uapi/linux/nl80211.h
F:	include/uapi/linux/wireless.h
F:	net/wireless/
F:	net/wireless/
8169 10/100/1000 GIGABIT ETHERNET DRIVER
8169 10/100/1000 GIGABIT ETHERNET DRIVER
@@ -12402,7 +12403,7 @@ F: drivers/mmc/host/mtk-sd.c
MEDIATEK MT76 WIRELESS LAN DRIVER
MEDIATEK MT76 WIRELESS LAN DRIVER
M:	Felix Fietkau <nbd@nbd.name>
M:	Felix Fietkau <nbd@nbd.name>
M:	Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
M:	Lorenzo Bianconi <lorenzo@kernel.org>
M:	Ryder Lee <ryder.lee@mediatek.com>
M:	Ryder Lee <ryder.lee@mediatek.com>
R:	Shayne Chen <shayne.chen@mediatek.com>
R:	Shayne Chen <shayne.chen@mediatek.com>
R:	Sean Wang <sean.wang@mediatek.com>
R:	Sean Wang <sean.wang@mediatek.com>
@@ -21227,10 +21228,8 @@ S: Maintained
F:	drivers/hid/hid-wiimote*
F:	drivers/hid/hid-wiimote*
WILOCITY WIL6210 WIRELESS DRIVER
WILOCITY WIL6210 WIRELESS DRIVER
M:	Maya Erez <merez@codeaurora.org>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
L:	wil6210@qti.qualcomm.com
S:	Orphan
S:	Supported
W:	https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
W:	https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
F:	drivers/net/wireless/ath/wil6210/
F:	drivers/net/wireless/ath/wil6210/
+1 −0
Original line number Original line Diff line number Diff line
@@ -296,6 +296,7 @@ int driver_deferred_probe_check_state(struct device *dev)


	return -EPROBE_DEFER;
	return -EPROBE_DEFER;
}
}
EXPORT_SYMBOL_GPL(driver_deferred_probe_check_state);


static void deferred_probe_timeout_work_func(struct work_struct *work)
static void deferred_probe_timeout_work_func(struct work_struct *work)
{
{
+23 −0
Original line number Original line Diff line number Diff line
@@ -670,6 +670,8 @@ static int felix_change_tag_protocol(struct dsa_switch *ds, int cpu,
	struct ocelot *ocelot = ds->priv;
	struct ocelot *ocelot = ds->priv;
	struct felix *felix = ocelot_to_felix(ocelot);
	struct felix *felix = ocelot_to_felix(ocelot);
	enum dsa_tag_protocol old_proto = felix->tag_proto;
	enum dsa_tag_protocol old_proto = felix->tag_proto;
	bool cpu_port_active = false;
	struct dsa_port *dp;
	int err;
	int err;


	if (proto != DSA_TAG_PROTO_SEVILLE &&
	if (proto != DSA_TAG_PROTO_SEVILLE &&
@@ -677,6 +679,27 @@ static int felix_change_tag_protocol(struct dsa_switch *ds, int cpu,
	    proto != DSA_TAG_PROTO_OCELOT_8021Q)
	    proto != DSA_TAG_PROTO_OCELOT_8021Q)
		return -EPROTONOSUPPORT;
		return -EPROTONOSUPPORT;


	/* We don't support multiple CPU ports, yet the DT blob may have
	 * multiple CPU ports defined. The first CPU port is the active one,
	 * the others are inactive. In this case, DSA will call
	 * ->change_tag_protocol() multiple times, once per CPU port.
	 * Since we implement the tagging protocol change towards "ocelot" or
	 * "seville" as effectively initializing the NPI port, what we are
	 * doing is effectively changing who the NPI port is to the last @cpu
	 * argument passed, which is an unused DSA CPU port and not the one
	 * that should actively pass traffic.
	 * Suppress DSA's calls on CPU ports that are inactive.
	 */
	dsa_switch_for_each_user_port(dp, ds) {
		if (dp->cpu_dp->index == cpu) {
			cpu_port_active = true;
			break;
		}
	}

	if (!cpu_port_active)
		return 0;

	felix_del_tag_protocol(ds, cpu, old_proto);
	felix_del_tag_protocol(ds, cpu, old_proto);


	err = felix_set_tag_protocol(ds, cpu, proto);
	err = felix_set_tag_protocol(ds, cpu, proto);
Loading