EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -4338,14 +4338,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -4337,14 +4337,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
}
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
-@@ -869,8 +869,14 @@ static int usb_audio_probe(struct usb_in
+@@ -875,8 +875,14 @@ static int usb_audio_probe(struct usb_in
if (ignore_ctl_error)
chip->quirk_flags |= QUIRK_FLAG_IGNORE_CTL_ERROR;
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -3444,8 +3453,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3464,8 +3473,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -4428,7 +4433,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4448,7 +4453,13 @@ static int lan78xx_probe(struct usb_inte
if (ret < 0)
goto out4;
+ .get_ts_info = ethtool_op_get_ts_info,
};
- static void lan78xx_init_mac_address(struct lan78xx_net *dev)
+ static int lan78xx_init_mac_address(struct lan78xx_net *dev)
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2897,6 +2897,11 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2915,6 +2915,11 @@ static int lan78xx_reset(struct lan78xx_
int ret;
u32 buf;
u8 sig;
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
if (ret < 0)
-@@ -2963,6 +2968,10 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2983,6 +2988,10 @@ static int lan78xx_reset(struct lan78xx_
buf |= HW_CFG_CLK125_EN_;
buf |= HW_CFG_REFCLK25_EN_;
ret = lan78xx_write_reg(dev, HW_CFG, buf);
if (ret < 0)
return ret;
-@@ -3065,6 +3074,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -3085,6 +3094,9 @@ static int lan78xx_reset(struct lan78xx_
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
}
}
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2422,7 +2422,26 @@ static int lan78xx_phy_init(struct lan78
+@@ -2440,7 +2440,26 @@ static int lan78xx_phy_init(struct lan78
mii_adv_to_linkmode_adv_t(fc, mii_adv);
linkmode_or(phydev->advertising, fc, phydev->advertising);
+++ /dev/null
-From 88f170814fea74911ceab798a43cbd7c5599bed4 Mon Sep 17 00:00:00 2001
-From: Marios Makassikis <mmakassikis@freebox.fr>
-Date: Wed, 15 Oct 2025 09:25:46 +0200
-Subject: [PATCH] ksmbd: fix recursive locking in RPC handle list access
-
-Since commit 305853cce3794 ("ksmbd: Fix race condition in RPC handle list
-access"), ksmbd_session_rpc_method() attempts to lock sess->rpc_lock.
-
-This causes hung connections / tasks when a client attempts to open
-a named pipe. Using Samba's rpcclient tool:
-
- $ rpcclient //192.168.1.254 -U user%password
- $ rpcclient $> srvinfo
- <connection hung here>
-
-Kernel side:
- "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
- task:kworker/0:0 state:D stack:0 pid:5021 tgid:5021 ppid:2 flags:0x00200000
- Workqueue: ksmbd-io handle_ksmbd_work
- Call trace:
- __schedule from schedule+0x3c/0x58
- schedule from schedule_preempt_disabled+0xc/0x10
- schedule_preempt_disabled from rwsem_down_read_slowpath+0x1b0/0x1d8
- rwsem_down_read_slowpath from down_read+0x28/0x30
- down_read from ksmbd_session_rpc_method+0x18/0x3c
- ksmbd_session_rpc_method from ksmbd_rpc_open+0x34/0x68
- ksmbd_rpc_open from ksmbd_session_rpc_open+0x194/0x228
- ksmbd_session_rpc_open from create_smb2_pipe+0x8c/0x2c8
- create_smb2_pipe from smb2_open+0x10c/0x27ac
- smb2_open from handle_ksmbd_work+0x238/0x3dc
- handle_ksmbd_work from process_scheduled_works+0x160/0x25c
- process_scheduled_works from worker_thread+0x16c/0x1e8
- worker_thread from kthread+0xa8/0xb8
- kthread from ret_from_fork+0x14/0x38
- Exception stack(0x8529ffb0 to 0x8529fff8)
-
-The task deadlocks because the lock is already held:
- ksmbd_session_rpc_open
- down_write(&sess->rpc_lock)
- ksmbd_rpc_open
- ksmbd_session_rpc_method
- down_read(&sess->rpc_lock) <-- deadlock
-
-Adjust ksmbd_session_rpc_method() callers to take the lock when necessary.
-
-Fixes: 305853cce3794 ("ksmbd: Fix race condition in RPC handle list access")
-Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
-Acked-by: Namjae Jeon <linkinjeon@kernel.org>
-Signed-off-by: Steve French <stfrench@microsoft.com>
----
- fs/smb/server/mgmt/user_session.c | 7 ++-----
- fs/smb/server/smb2pdu.c | 9 ++++++++-
- fs/smb/server/transport_ipc.c | 12 ++++++++++++
- 3 files changed, 22 insertions(+), 6 deletions(-)
-
---- a/fs/smb/server/mgmt/user_session.c
-+++ b/fs/smb/server/mgmt/user_session.c
-@@ -147,14 +147,11 @@ void ksmbd_session_rpc_close(struct ksmb
- int ksmbd_session_rpc_method(struct ksmbd_session *sess, int id)
- {
- struct ksmbd_session_rpc *entry;
-- int method;
-
-- down_read(&sess->rpc_lock);
-+ lockdep_assert_held(&sess->rpc_lock);
- entry = xa_load(&sess->rpc_handle_list, id);
-- method = entry ? entry->method : 0;
-- up_read(&sess->rpc_lock);
-
-- return method;
-+ return entry ? entry->method : 0;
- }
-
- void ksmbd_session_destroy(struct ksmbd_session *sess)
---- a/fs/smb/server/smb2pdu.c
-+++ b/fs/smb/server/smb2pdu.c
-@@ -4623,8 +4623,15 @@ static int smb2_get_info_file_pipe(struc
- * pipe without opening it, checking error condition here
- */
- id = req->VolatileFileId;
-- if (!ksmbd_session_rpc_method(sess, id))
-+
-+ lockdep_assert_not_held(&sess->rpc_lock);
-+
-+ down_read(&sess->rpc_lock);
-+ if (!ksmbd_session_rpc_method(sess, id)) {
-+ up_read(&sess->rpc_lock);
- return -ENOENT;
-+ }
-+ up_read(&sess->rpc_lock);
-
- ksmbd_debug(SMB, "FileInfoClass %u, FileId 0x%llx\n",
- req->FileInfoClass, req->VolatileFileId);
---- a/fs/smb/server/transport_ipc.c
-+++ b/fs/smb/server/transport_ipc.c
-@@ -825,6 +825,9 @@ struct ksmbd_rpc_command *ksmbd_rpc_writ
- if (!msg)
- return NULL;
-
-+ lockdep_assert_not_held(&sess->rpc_lock);
-+
-+ down_read(&sess->rpc_lock);
- msg->type = KSMBD_EVENT_RPC_REQUEST;
- req = (struct ksmbd_rpc_command *)msg->payload;
- req->handle = handle;
-@@ -833,6 +836,7 @@ struct ksmbd_rpc_command *ksmbd_rpc_writ
- req->flags |= KSMBD_RPC_WRITE_METHOD;
- req->payload_sz = payload_sz;
- memcpy(req->payload, payload, payload_sz);
-+ up_read(&sess->rpc_lock);
-
- resp = ipc_msg_send_request(msg, req->handle);
- ipc_msg_free(msg);
-@@ -849,6 +853,9 @@ struct ksmbd_rpc_command *ksmbd_rpc_read
- if (!msg)
- return NULL;
-
-+ lockdep_assert_not_held(&sess->rpc_lock);
-+
-+ down_read(&sess->rpc_lock);
- msg->type = KSMBD_EVENT_RPC_REQUEST;
- req = (struct ksmbd_rpc_command *)msg->payload;
- req->handle = handle;
-@@ -856,6 +863,7 @@ struct ksmbd_rpc_command *ksmbd_rpc_read
- req->flags |= rpc_context_flags(sess);
- req->flags |= KSMBD_RPC_READ_METHOD;
- req->payload_sz = 0;
-+ up_read(&sess->rpc_lock);
-
- resp = ipc_msg_send_request(msg, req->handle);
- ipc_msg_free(msg);
-@@ -876,6 +884,9 @@ struct ksmbd_rpc_command *ksmbd_rpc_ioct
- if (!msg)
- return NULL;
-
-+ lockdep_assert_not_held(&sess->rpc_lock);
-+
-+ down_read(&sess->rpc_lock);
- msg->type = KSMBD_EVENT_RPC_REQUEST;
- req = (struct ksmbd_rpc_command *)msg->payload;
- req->handle = handle;
-@@ -884,6 +895,7 @@ struct ksmbd_rpc_command *ksmbd_rpc_ioct
- req->flags |= KSMBD_RPC_IOCTL_METHOD;
- req->payload_sz = payload_sz;
- memcpy(req->payload, payload, payload_sz);
-+ up_read(&sess->rpc_lock);
-
- resp = ipc_msg_send_request(msg, req->handle);
- ipc_msg_free(msg);
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5526,11 +5526,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5527,11 +5527,6 @@ static int rtl_init_one(struct pci_dev *
dev->features |= dev->hw_features;
if (rtl_chip_supports_csum_v2(tp)) {
dev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
netif_set_tso_max_size(dev, RTL_GSO_MAX_SIZE_V2);
-@@ -5541,6 +5536,17 @@ static int rtl_init_one(struct pci_dev *
+@@ -5542,6 +5537,17 @@ static int rtl_init_one(struct pci_dev *
netif_set_tso_max_segs(dev, RTL_GSO_MAX_SEGS_V1);
}
free_irq(tp->irq, tp);
phy_disconnect(tp->phydev);
-@@ -5201,7 +5194,7 @@ static void rtl_remove_one(struct pci_de
+@@ -5202,7 +5195,7 @@ static void rtl_remove_one(struct pci_de
if (pci_dev_run_wake(pdev))
pm_runtime_get_noresume(&pdev->dev);
if (IS_ENABLED(CONFIG_R8169_LEDS))
r8169_remove_leds(tp->leds);
-@@ -5579,6 +5572,7 @@ static int rtl_init_one(struct pci_dev *
+@@ -5580,6 +5573,7 @@ static int rtl_init_one(struct pci_dev *
tp->irq = pci_irq_vector(pdev, 0);
INIT_WORK(&tp->wk.work, rtl_task);
switch (tp->mac_version) {
case RTL_GIGA_MAC_VER_02 ... RTL_GIGA_MAC_VER_06:
-@@ -5479,8 +5456,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5480,8 +5457,6 @@ static int rtl_init_one(struct pci_dev *
tp->supports_gmii = ent->driver_data == RTL_CFG_NO_GBIT ? 0 : 1;
tp->ocp_base = OCP_STD_PHY_BASE;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5255,6 +5255,11 @@ static int r8169_mdio_register(struct rt
+@@ -5256,6 +5256,11 @@ static int r8169_mdio_register(struct rt
phy_support_eee(tp->phydev);
phy_support_asym_pause(tp->phydev);
rtl_irq_disable(tp);
napi_schedule(&tp->napi);
out:
-@@ -5126,9 +5118,6 @@ static void rtl_set_irq_mask(struct rtl8
+@@ -5127,9 +5119,6 @@ static void rtl_set_irq_mask(struct rtl8
if (tp->mac_version <= RTL_GIGA_MAC_VER_06)
tp->irq_mask |= SYSErr | RxFIFOOver;
}
static int rtl_alloc_irq(struct rtl8169_private *tp)
-@@ -5323,7 +5312,6 @@ static int rtl_jumbo_max(struct rtl8169_
+@@ -5324,7 +5313,6 @@ static int rtl_jumbo_max(struct rtl8169_
case RTL_GIGA_MAC_VER_02 ... RTL_GIGA_MAC_VER_06:
return JUMBO_7K;
/* RTL8168b */
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
-@@ -5293,7 +5293,7 @@ static void rtl_hw_initialize(struct rtl
+@@ -5294,7 +5294,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5227,6 +5227,33 @@ static int r8169_mdio_write_reg(struct m
+@@ -5228,6 +5228,33 @@ static int r8169_mdio_write_reg(struct m
return 0;
}
static int r8169_mdio_register(struct rtl8169_private *tp)
{
struct pci_dev *pdev = tp->pci_dev;
-@@ -5257,6 +5284,11 @@ static int r8169_mdio_register(struct rt
+@@ -5258,6 +5285,11 @@ static int r8169_mdio_register(struct rt
new_bus->read = r8169_mdio_read_reg;
new_bus->write = r8169_mdio_write_reg;
static const struct {
const char *name;
-@@ -5386,6 +5387,9 @@ static int rtl_jumbo_max(struct rtl8169_
+@@ -5387,6 +5388,9 @@ static int rtl_jumbo_max(struct rtl8169_
/* RTL8168c */
case RTL_GIGA_MAC_VER_18 ... RTL_GIGA_MAC_VER_24:
return JUMBO_6K;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5473,11 +5473,10 @@ static int rtl_init_one(struct pci_dev *
+@@ -5474,11 +5474,10 @@ static int rtl_init_one(struct pci_dev *
if (region < 0)
return dev_err_probe(&pdev->dev, -ENODEV, "no MMIO resource found\n");
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5424,7 +5424,7 @@ done:
+@@ -5425,7 +5425,7 @@ done:
/* register is set if system vendor successfully tested ASPM 1.2 */
static bool rtl_aspm_is_safe(struct rtl8169_private *tp)
{
}
static void rtl_release_firmware(struct rtl8169_private *tp)
-@@ -5439,9 +5371,9 @@ static bool rtl_aspm_is_safe(struct rtl8
+@@ -5440,9 +5372,9 @@ static bool rtl_aspm_is_safe(struct rtl8
static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct net_device *dev;
u32 txconfig;
u16 xid;
-@@ -5491,12 +5423,13 @@ static int rtl_init_one(struct pci_dev *
+@@ -5492,12 +5424,13 @@ static int rtl_init_one(struct pci_dev *
xid = (txconfig >> 20) & 0xfcf;
/* Identify chip attached to board */
/* Disable ASPM L1 as that cause random device stop working
* problems as well as full system hangs for some PCIe devices users.
-@@ -5601,8 +5534,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5602,8 +5535,6 @@ static int rtl_init_one(struct pci_dev *
rtl_set_irq_mask(tp);
tp->counters = dmam_alloc_coherent (&pdev->dev, sizeof(*tp->counters),
&tp->counters_phys_addr,
GFP_KERNEL);
-@@ -5627,7 +5558,7 @@ static int rtl_init_one(struct pci_dev *
+@@ -5628,7 +5559,7 @@ static int rtl_init_one(struct pci_dev *
}
netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n",
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
-@@ -5301,7 +5301,7 @@ static void rtl_hw_initialize(struct rtl
+@@ -5302,7 +5302,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;
rtl_hw_init_8125(tp);
break;
default:
-@@ -5326,7 +5326,7 @@ static int rtl_jumbo_max(struct rtl8169_
+@@ -5327,7 +5327,7 @@ static int rtl_jumbo_max(struct rtl8169_
case RTL_GIGA_MAC_VER_18 ... RTL_GIGA_MAC_VER_24:
return JUMBO_6K;
/* RTL8125/8126 */
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5039,10 +5039,8 @@ static void rtl_shutdown(struct pci_dev
+@@ -5040,10 +5040,8 @@ static void rtl_shutdown(struct pci_dev
/* Restore original MAC address */
rtl_rar_set(tp, tp->dev->perm_addr);
[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
[RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
-@@ -5284,7 +5281,7 @@ static void rtl_hw_init_8125(struct rtl8
+@@ -5285,7 +5282,7 @@ static void rtl_hw_init_8125(struct rtl8
static void rtl_hw_initialize(struct rtl8169_private *tp)
{
switch (tp->mac_version) {
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -4273,6 +4273,8 @@ static __net_initdata struct pernet_oper
+@@ -4277,6 +4277,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
-LINUX_VERSION-6.12 = .54
-LINUX_KERNEL_HASH-6.12.54 = 1b0dcd3390efeec44e528748609bafcf36eae895bb68c8f62ac5e5940943de62
+LINUX_VERSION-6.12 = .55
+LINUX_KERNEL_HASH-6.12.55 = 328f8f4608a653063a5fd82d29b17163faab2825fa419fa85b961740a342fb9f
/**
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
* @t: the outgoing tunnel device
-@@ -1294,6 +1442,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1293,6 +1441,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
u8 protocol)
{
struct ip6_tnl *t = netdev_priv(dev);
struct ipv6hdr *ipv6h;
const struct iphdr *iph;
int encap_limit = -1;
-@@ -1393,6 +1542,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1392,6 +1541,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
dsfield = INET_ECN_encapsulate(dsfield, orig_dsfield);
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
return -1;
-@@ -1546,6 +1707,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1545,6 +1706,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.link = p->link;
t->parms.proto = p->proto;
t->parms.fwmark = p->fwmark;
dst_cache_reset(&t->dst_cache);
ip6_tnl_link_config(t);
}
-@@ -1580,6 +1749,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1579,6 +1748,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
p->flowinfo = u->flowinfo;
p->link = u->link;
p->proto = u->proto;
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1963,6 +2133,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1962,6 +2132,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -2000,6 +2179,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1999,6 +2178,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_FWMARK])
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
}
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -2084,6 +2303,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2083,6 +2302,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2113,6 +2338,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2112,6 +2337,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
0;
}
-@@ -2120,6 +2363,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2119,6 +2362,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2129,9 +2375,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2128,9 +2374,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2171,6 +2435,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2170,6 +2434,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
}
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -2550,7 +2550,7 @@ void sk_setup_caps(struct sock *sk, stru
- if (sk_is_tcp(sk))
- sk->sk_route_caps |= NETIF_F_GSO;
+@@ -2554,7 +2554,7 @@ void sk_setup_caps(struct sock *sk, stru
+ icsk->icsk_ack.dst_quick_ack = dst_metric(dst, RTAX_QUICKACK);
+ }
if (sk->sk_route_caps & NETIF_F_GSO)
- sk->sk_route_caps |= NETIF_F_GSO_SOFTWARE;
+ sk->sk_route_caps |= NETIF_F_GSO_SOFTWARE_ALL;
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -17802,8 +17802,10 @@ static int tg3_init_one(struct pci_dev *
+@@ -17799,8 +17799,10 @@ static int tg3_init_one(struct pci_dev *
} else
persist_dma_mask = dma_mask = DMA_BIT_MASK(64);
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -1644,6 +1644,8 @@ void pci_walk_bus_locked(struct pci_bus
+@@ -1658,6 +1658,8 @@ void pci_walk_bus_locked(struct pci_bus
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
* CONFIG_CMDLINE is meant to be a default in case nothing else
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -2380,6 +2380,14 @@ config CMDLINE_FORCE
+@@ -2381,6 +2381,14 @@ config CMDLINE_FORCE
endchoice
--- a/Documentation/arch/arm64/silicon-errata.rst
+++ b/Documentation/arch/arm64/silicon-errata.rst
-@@ -283,6 +283,8 @@ stable kernels.
+@@ -285,6 +285,8 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| Rockchip | RK3588 | #3588001 | ROCKCHIP_ERRATUM_3588001 |
+----------------+-----------------+-----------------+-----------------------------+
+----------------+-----------------+-----------------+-----------------------------+
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1295,6 +1295,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM
+@@ -1296,6 +1296,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM
If unsure, say Y.