Commit ce55c22e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from Jakub Kicinski:
 "Including fixes from bluetooth, netfilter, WiFi.

  Feels like an up-tick in regression fixes, mostly for older releases.
  The hfsc fix, tcp_disconnect() and Intel WWAN fixes stand out as
  fairly clear-cut user reported regressions. The mlx5 DMA bug was
  causing strife for 390x folks. The fixes themselves are not
  particularly scary, tho. No open investigations / outstanding reports
  at the time of writing.

  Current release - regressions:

   - eth: mlx5: perform DMA operations in the right locations, make
     devices usable on s390x, again

   - sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner
     curve, previous fix of rejecting invalid config broke some scripts

   - rfkill: reduce data->mtx scope in rfkill_fop_open, avoid deadlock

   - revert "ethtool: Fix mod state of verbose no_mask bitset", needs
     more work

  Current release - new code bugs:

   - tcp: fix listen() warning with v4-mapped-v6 address

  Previous releases - regressions:

   - tcp: allow tcp_disconnect() again when threads are waiting, it was
     denied to plug a constant source of bugs but turns out .NET depends
     on it

   - eth: mlx5: fix double-free if buffer refill fails under OOM

   - revert "net: wwan: iosm: enable runtime pm support for 7560", it's
     causing regressions and the WWAN team at Intel disappeared

   - tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a
     single skb, fix single-stream perf regression on some devices

  Previous releases - always broken:

   - Bluetooth:
      - fix issues in legacy BR/EDR PIN code pairing
      - correctly bounds check and pad HCI_MON_NEW_INDEX name

   - netfilter:
      - more fixes / follow ups for the large "commit protocol" rework,
        which went in as a fix to 6.5
      - fix null-derefs on netlink attrs which user may not pass in

   - tcp: fix excessive TLP and RACK timeouts from HZ rounding (bless
     Debian for keeping HZ=250 alive)

   - net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation, prevent
     letting frankenstein UDP super-frames from getting into the stack

   - net: fix interface altnames when ifc moves to a new namespace

   - eth: qed: fix the size of the RX buffers

   - mptcp: avoid sending RST when closing the initial subflow"

* tag 'net-6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (94 commits)
  Revert "ethtool: Fix mod state of verbose no_mask bitset"
  selftests: mptcp: join: no RST when rm subflow/addr
  mptcp: avoid sending RST when closing the initial subflow
  mptcp: more conservative check for zero probes
  tcp: check mptcp-level constraints for backlog coalescing
  selftests: mptcp: join: correctly check for no RST
  net: ti: icssg-prueth: Fix r30 CMDs bitmasks
  selftests: net: add very basic test for netdev names and namespaces
  net: move altnames together with the netdevice
  net: avoid UAF on deleted altname
  net: check for altname conflicts when changing netdev's netns
  net: fix ifname in netlink ntf during netns move
  net: ethernet: ti: Fix mixed module-builtin object
  net: phy: bcm7xxx: Add missing 16nm EPHY statistics
  ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr
  tcp_bpf: properly release resources on error paths
  net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve
  net: mdio-mux: fix C45 access returning -EIO after API change
  tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a single skb
  octeon_ep: update BQL sent bytes before ringing doorbell
  ...
parents 74e9347e 52451502
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -323,7 +323,7 @@ operations:
            - dev-name
            - sb-index
        reply: &sb-get-reply
          value: 11
          value: 13
          attributes: *sb-id-attrs
      dump:
        request:
@@ -350,7 +350,7 @@ operations:
            - sb-index
            - sb-pool-index
        reply: &sb-pool-get-reply
          value: 15
          value: 17
          attributes: *sb-pool-id-attrs
      dump:
        request:
@@ -378,7 +378,7 @@ operations:
            - sb-index
            - sb-pool-index
        reply: &sb-port-pool-get-reply
          value: 19
          value: 21
          attributes: *sb-port-pool-id-attrs
      dump:
        request:
@@ -407,7 +407,7 @@ operations:
            - sb-pool-type
            - sb-tc-index
        reply: &sb-tc-pool-bind-get-reply
          value: 23
          value: 25
          attributes: *sb-tc-pool-bind-id-attrs
      dump:
        request:
@@ -538,7 +538,7 @@ operations:
            - dev-name
            - trap-name
        reply: &trap-get-reply
          value: 61
          value: 63
          attributes: *trap-id-attrs
      dump:
        request:
@@ -564,7 +564,7 @@ operations:
            - dev-name
            - trap-group-name
        reply: &trap-group-get-reply
          value: 65
          value: 67
          attributes: *trap-group-id-attrs
      dump:
        request:
@@ -590,7 +590,7 @@ operations:
            - dev-name
            - trap-policer-id
        reply: &trap-policer-get-reply
          value: 69
          value: 71
          attributes: *trap-policer-id-attrs
      dump:
        request:
@@ -617,7 +617,7 @@ operations:
            - port-index
            - rate-node-name
        reply: &rate-get-reply
          value: 74
          value: 76
          attributes: *rate-id-attrs
      dump:
        request:
@@ -643,7 +643,7 @@ operations:
            - dev-name
            - linecard-index
        reply: &linecard-get-reply
          value: 78
          value: 80
          attributes: *linecard-id-attrs
      dump:
        request:
+5 −3
Original line number Diff line number Diff line
@@ -162,9 +162,11 @@ How are representors identified?
The representor netdevice should *not* directly refer to a PCIe device (e.g.
through ``net_dev->dev.parent`` / ``SET_NETDEV_DEV()``), either of the
representee or of the switchdev function.
Instead, it should implement the ``ndo_get_devlink_port()`` netdevice op, which
the kernel uses to provide the ``phys_switch_id`` and ``phys_port_name`` sysfs
nodes.  (Some legacy drivers implement ``ndo_get_port_parent_id()`` and
Instead, the driver should use the ``SET_NETDEV_DEVLINK_PORT`` macro to
assign a devlink port instance to the netdevice before registering the
netdevice; the kernel uses the devlink port to provide the ``phys_switch_id``
and ``phys_port_name`` sysfs nodes.
(Some legacy drivers implement ``ndo_get_port_parent_id()`` and
``ndo_get_phys_port_name()`` directly, but this is deprecated.)  See
:ref:`Documentation/networking/devlink/devlink-port.rst <devlink_port>` for the
details of this API.
+3 −7
Original line number Diff line number Diff line
@@ -962,13 +962,10 @@ static void btrtl_dmp_hdr(struct hci_dev *hdev, struct sk_buff *skb)
	skb_put_data(skb, buf, strlen(buf));
}

static int btrtl_register_devcoredump_support(struct hci_dev *hdev)
static void btrtl_register_devcoredump_support(struct hci_dev *hdev)
{
	int err;
	hci_devcd_register(hdev, btrtl_coredump, btrtl_dmp_hdr, NULL);

	err = hci_devcd_register(hdev, btrtl_coredump, btrtl_dmp_hdr, NULL);

	return err;
}

void btrtl_set_driver_name(struct hci_dev *hdev, const char *driver_name)
@@ -1255,8 +1252,7 @@ int btrtl_download_firmware(struct hci_dev *hdev,
	}

done:
	if (!err)
		err = btrtl_register_devcoredump_support(hdev);
	btrtl_register_devcoredump_support(hdev);

	return err;
}
+3 −0
Original line number Diff line number Diff line
@@ -74,7 +74,10 @@ static int vhci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
	struct vhci_data *data = hci_get_drvdata(hdev);

	memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);

	mutex_lock(&data->open_mutex);
	skb_queue_tail(&data->readq, skb);
	mutex_unlock(&data->open_mutex);

	wake_up_interruptible(&data->read_wait);
	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -4023,7 +4023,7 @@ static inline const void *bond_pull_data(struct sk_buff *skb,
	if (likely(n <= hlen))
		return data;
	else if (skb && likely(pskb_may_pull(skb, n)))
		return skb->head;
		return skb->data;

	return NULL;
}
Loading