mirror of
				https://github.com/immortalwrt/immortalwrt.git
				synced 2025-11-02 16:21:21 +08:00 
			
		
		
		
	kernel: bump 6.12 to 6.12.53
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.53
Dropped patch
- /target/linux/generic/backport-6.12/541-v6.18-ksmbd-add-max-ip-connections-parameter.patch
merged upstream with commit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=8173dcfafe116adb08f8daf21c09c71ac5882d8f
Added backport
- target/linux/generic/backport-6.12/510-v6.18-ksmbd-fix-recursive-locking-in-RPC-handle-list-access.patch
cherry picked from 88f170814f
All other patches automatically rebased.
Build system: x86/64
Build-tested: mediatek/filogic
Run-tested: mediatek/filogic
Signed-off-by: Edoardo Pinci <epinci@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20408
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			
						parent
						
							eee5035a52
						
					
				
				
					commit
					d0e3320040
				
			@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 | 
			
		||||
 | 
			
		||||
--- a/net/bluetooth/hci_sync.c
 | 
			
		||||
+++ b/net/bluetooth/hci_sync.c
 | 
			
		||||
@@ -4928,6 +4928,7 @@ static const struct {
 | 
			
		||||
@@ -4930,6 +4930,7 @@ static const struct {
 | 
			
		||||
  */
 | 
			
		||||
 static int hci_dev_setup_sync(struct hci_dev *hdev)
 | 
			
		||||
 {
 | 
			
		||||
@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 | 
			
		||||
 	int ret = 0;
 | 
			
		||||
 	bool invalid_bdaddr;
 | 
			
		||||
 	size_t i;
 | 
			
		||||
@@ -4956,7 +4957,8 @@ static int hci_dev_setup_sync(struct hci
 | 
			
		||||
@@ -4958,7 +4959,8 @@ static int hci_dev_setup_sync(struct hci
 | 
			
		||||
 			 test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
 | 
			
		||||
 	if (!ret) {
 | 
			
		||||
 		if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) &&
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
 | 
			
		||||
 	if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
 | 
			
		||||
--- a/drivers/usb/host/xhci-ring.c
 | 
			
		||||
+++ b/drivers/usb/host/xhci-ring.c
 | 
			
		||||
@@ -3664,6 +3664,48 @@ static int xhci_align_td(struct xhci_hcd
 | 
			
		||||
@@ -3661,6 +3661,48 @@ static int xhci_align_td(struct xhci_hcd
 | 
			
		||||
 	return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
 | 
			
		||||
 /* This is very similar to what ehci-q.c qtd_fill() does */
 | 
			
		||||
 int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
 | 
			
		||||
 		struct urb *urb, int slot_id, unsigned int ep_index)
 | 
			
		||||
@@ -3818,6 +3860,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
 | 
			
		||||
@@ -3815,6 +3857,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	check_trb_math(urb, enqd_len);
 | 
			
		||||
@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
 | 
			
		||||
 	giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
 | 
			
		||||
 			start_cycle, start_trb);
 | 
			
		||||
 	return 0;
 | 
			
		||||
@@ -3966,6 +4010,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
 | 
			
		||||
@@ -3963,6 +4007,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
 | 
			
		||||
 			/* Event on completion */
 | 
			
		||||
 			field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 | 
			
		||||
 | 
			
		||||
--- a/net/bluetooth/hci_sync.c
 | 
			
		||||
+++ b/net/bluetooth/hci_sync.c
 | 
			
		||||
@@ -4928,7 +4928,8 @@ static const struct {
 | 
			
		||||
@@ -4930,7 +4930,8 @@ static const struct {
 | 
			
		||||
  */
 | 
			
		||||
 static int hci_dev_setup_sync(struct hci_dev *hdev)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,149 @@
 | 
			
		||||
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);
 | 
			
		||||
@ -1,119 +0,0 @@
 | 
			
		||||
From d8b6dc9256762293048bf122fc11c4e612d0ef5d Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Namjae Jeon <linkinjeon@kernel.org>
 | 
			
		||||
Date: Wed, 1 Oct 2025 09:25:35 +0900
 | 
			
		||||
Subject: ksmbd: add max ip connections parameter
 | 
			
		||||
 | 
			
		||||
This parameter set the maximum number of connections per ip address.
 | 
			
		||||
The default is 8.
 | 
			
		||||
 | 
			
		||||
Cc: stable@vger.kernel.org
 | 
			
		||||
Fixes: c0d41112f1a5 ("ksmbd: extend the connection limiting mechanism to support IPv6")
 | 
			
		||||
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
 | 
			
		||||
Signed-off-by: Steve French <stfrench@microsoft.com>
 | 
			
		||||
---
 | 
			
		||||
 fs/smb/server/ksmbd_netlink.h |  5 +++--
 | 
			
		||||
 fs/smb/server/server.h        |  1 +
 | 
			
		||||
 fs/smb/server/transport_ipc.c |  3 +++
 | 
			
		||||
 fs/smb/server/transport_tcp.c | 27 ++++++++++++++++-----------
 | 
			
		||||
 4 files changed, 23 insertions(+), 13 deletions(-)
 | 
			
		||||
 | 
			
		||||
(limited to 'fs/smb')
 | 
			
		||||
 | 
			
		||||
--- a/fs/smb/server/ksmbd_netlink.h
 | 
			
		||||
+++ b/fs/smb/server/ksmbd_netlink.h
 | 
			
		||||
@@ -112,10 +112,11 @@ struct ksmbd_startup_request {
 | 
			
		||||
 	__u32	smbd_max_io_size;	/* smbd read write size */
 | 
			
		||||
 	__u32	max_connections;	/* Number of maximum simultaneous connections */
 | 
			
		||||
 	__s8	bind_interfaces_only;
 | 
			
		||||
-	__s8	reserved[503];		/* Reserved room */
 | 
			
		||||
+	__u32	max_ip_connections;	/* Number of maximum connection per ip address */
 | 
			
		||||
+	__s8	reserved[499];		/* Reserved room */
 | 
			
		||||
 	__u32	ifc_list_sz;		/* interfaces list size */
 | 
			
		||||
 	__s8	____payload[];
 | 
			
		||||
-};
 | 
			
		||||
+} __packed;
 | 
			
		||||
 
 | 
			
		||||
 #define KSMBD_STARTUP_CONFIG_INTERFACES(s)	((s)->____payload)
 | 
			
		||||
 
 | 
			
		||||
--- a/fs/smb/server/server.h
 | 
			
		||||
+++ b/fs/smb/server/server.h
 | 
			
		||||
@@ -43,6 +43,7 @@ struct ksmbd_server_config {
 | 
			
		||||
 	unsigned int		auth_mechs;
 | 
			
		||||
 	unsigned int		max_connections;
 | 
			
		||||
 	unsigned int		max_inflight_req;
 | 
			
		||||
+	unsigned int		max_ip_connections;
 | 
			
		||||
 
 | 
			
		||||
 	char			*conf[SERVER_CONF_WORK_GROUP + 1];
 | 
			
		||||
 	struct task_struct	*dh_task;
 | 
			
		||||
--- a/fs/smb/server/transport_ipc.c
 | 
			
		||||
+++ b/fs/smb/server/transport_ipc.c
 | 
			
		||||
@@ -335,6 +335,9 @@ static int ipc_server_config_on_startup(
 | 
			
		||||
 	if (req->max_connections)
 | 
			
		||||
 		server_conf.max_connections = req->max_connections;
 | 
			
		||||
 
 | 
			
		||||
+	if (req->max_ip_connections)
 | 
			
		||||
+		server_conf.max_ip_connections = req->max_ip_connections;
 | 
			
		||||
+
 | 
			
		||||
 	ret = ksmbd_set_netbios_name(req->netbios_name);
 | 
			
		||||
 	ret |= ksmbd_set_server_string(req->server_string);
 | 
			
		||||
 	ret |= ksmbd_set_work_group(req->work_group);
 | 
			
		||||
--- a/fs/smb/server/transport_tcp.c
 | 
			
		||||
+++ b/fs/smb/server/transport_tcp.c
 | 
			
		||||
@@ -240,6 +240,7 @@ static int ksmbd_kthread_fn(void *p)
 | 
			
		||||
 	struct interface *iface = (struct interface *)p;
 | 
			
		||||
 	struct ksmbd_conn *conn;
 | 
			
		||||
 	int ret;
 | 
			
		||||
+	unsigned int max_ip_conns;
 | 
			
		||||
 
 | 
			
		||||
 	while (!kthread_should_stop()) {
 | 
			
		||||
 		mutex_lock(&iface->sock_release_lock);
 | 
			
		||||
@@ -257,34 +258,38 @@ static int ksmbd_kthread_fn(void *p)
 | 
			
		||||
 			continue;
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
+		if (!server_conf.max_ip_connections)
 | 
			
		||||
+			goto skip_max_ip_conns_limit;
 | 
			
		||||
+
 | 
			
		||||
 		/*
 | 
			
		||||
 		 * Limits repeated connections from clients with the same IP.
 | 
			
		||||
 		 */
 | 
			
		||||
+		max_ip_conns = 0;
 | 
			
		||||
 		down_read(&conn_list_lock);
 | 
			
		||||
-		list_for_each_entry(conn, &conn_list, conns_list)
 | 
			
		||||
+		list_for_each_entry(conn, &conn_list, conns_list) {
 | 
			
		||||
 #if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
 			if (client_sk->sk->sk_family == AF_INET6) {
 | 
			
		||||
 				if (memcmp(&client_sk->sk->sk_v6_daddr,
 | 
			
		||||
-					   &conn->inet6_addr, 16) == 0) {
 | 
			
		||||
-					ret = -EAGAIN;
 | 
			
		||||
-					break;
 | 
			
		||||
-				}
 | 
			
		||||
+					   &conn->inet6_addr, 16) == 0)
 | 
			
		||||
+					max_ip_conns++;
 | 
			
		||||
 			} else if (inet_sk(client_sk->sk)->inet_daddr ==
 | 
			
		||||
-				 conn->inet_addr) {
 | 
			
		||||
-				ret = -EAGAIN;
 | 
			
		||||
-				break;
 | 
			
		||||
-			}
 | 
			
		||||
+				 conn->inet_addr)
 | 
			
		||||
+				max_ip_conns++;
 | 
			
		||||
 #else
 | 
			
		||||
 			if (inet_sk(client_sk->sk)->inet_daddr ==
 | 
			
		||||
-			    conn->inet_addr) {
 | 
			
		||||
+			    conn->inet_addr)
 | 
			
		||||
+				max_ip_conns++;
 | 
			
		||||
+#endif
 | 
			
		||||
+			if (server_conf.max_ip_connections <= max_ip_conns) {
 | 
			
		||||
 				ret = -EAGAIN;
 | 
			
		||||
 				break;
 | 
			
		||||
 			}
 | 
			
		||||
-#endif
 | 
			
		||||
+		}
 | 
			
		||||
 		up_read(&conn_list_lock);
 | 
			
		||||
 		if (ret == -EAGAIN)
 | 
			
		||||
 			continue;
 | 
			
		||||
 
 | 
			
		||||
+skip_max_ip_conns_limit:
 | 
			
		||||
 		if (server_conf.max_connections &&
 | 
			
		||||
 		    atomic_inc_return(&active_num_conn) >= server_conf.max_connections) {
 | 
			
		||||
 			pr_info_ratelimited("Limit the maximum number of connections(%u)\n",
 | 
			
		||||
@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
 | 
			
		||||
 | 
			
		||||
--- a/init/Kconfig
 | 
			
		||||
+++ b/init/Kconfig
 | 
			
		||||
@@ -2062,7 +2062,7 @@ config PADATA
 | 
			
		||||
@@ -2063,7 +2063,7 @@ config PADATA
 | 
			
		||||
 	bool
 | 
			
		||||
 
 | 
			
		||||
 config ASN1
 | 
			
		||||
 | 
			
		||||
@ -1,2 +1,2 @@
 | 
			
		||||
LINUX_VERSION-6.12 = .52
 | 
			
		||||
LINUX_KERNEL_HASH-6.12.52 = b4850cf670a032c70f38b713a27d62046c5f747caf028c5f50b18f98606a9eb1
 | 
			
		||||
LINUX_VERSION-6.12 = .53
 | 
			
		||||
LINUX_KERNEL_HASH-6.12.53 = 663507accae673afcf4e210b4ae8d4352e61d926202e5da3f04bf71ca1d2c0b5
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 | 
			
		||||
--- a/init/Kconfig
 | 
			
		||||
+++ b/init/Kconfig
 | 
			
		||||
@@ -1533,6 +1533,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
 | 
			
		||||
@@ -1534,6 +1534,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
 | 
			
		||||
 	  the unaligned access emulation.
 | 
			
		||||
 	  see arch/parisc/kernel/unaligned.c for reference
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/init/Kconfig
 | 
			
		||||
+++ b/init/Kconfig
 | 
			
		||||
@@ -1887,6 +1887,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
 | 
			
		||||
@@ -1888,6 +1888,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
 | 
			
		||||
 config ARCH_HAS_MEMBARRIER_SYNC_CORE
 | 
			
		||||
 	bool
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/char/hw_random/Kconfig
 | 
			
		||||
+++ b/drivers/char/hw_random/Kconfig
 | 
			
		||||
@@ -451,6 +451,23 @@ config HW_RANDOM_MTK
 | 
			
		||||
@@ -452,6 +452,23 @@ config HW_RANDOM_MTK
 | 
			
		||||
 
 | 
			
		||||
 	  If unsure, say Y.
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -47,7 +47,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
 | 
			
		||||
 
 | 
			
		||||
 /**
 | 
			
		||||
  * qcom_q6v5_wait_for_start() - wait for remote processor start signal
 | 
			
		||||
@@ -177,7 +179,17 @@ static irqreturn_t q6v5_handover_interru
 | 
			
		||||
@@ -174,7 +176,17 @@ static irqreturn_t q6v5_handover_interru
 | 
			
		||||
 	return IRQ_HANDLED;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -66,7 +66,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
 | 
			
		||||
 {
 | 
			
		||||
 	struct qcom_q6v5 *q6v5 = data;
 | 
			
		||||
 
 | 
			
		||||
@@ -185,6 +197,7 @@ static irqreturn_t q6v5_stop_interrupt(i
 | 
			
		||||
@@ -182,6 +194,7 @@ static irqreturn_t q6v5_stop_interrupt(i
 | 
			
		||||
 
 | 
			
		||||
 	return IRQ_HANDLED;
 | 
			
		||||
 }
 | 
			
		||||
@ -74,7 +74,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
 | 
			
		||||
 
 | 
			
		||||
 /**
 | 
			
		||||
  * qcom_q6v5_request_stop() - request the remote processor to stop
 | 
			
		||||
@@ -215,6 +228,28 @@ int qcom_q6v5_request_stop(struct qcom_q
 | 
			
		||||
@@ -212,6 +225,28 @@ int qcom_q6v5_request_stop(struct qcom_q
 | 
			
		||||
 EXPORT_SYMBOL_GPL(qcom_q6v5_request_stop);
 | 
			
		||||
 
 | 
			
		||||
 /**
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/char/hw_random/Kconfig
 | 
			
		||||
+++ b/drivers/char/hw_random/Kconfig
 | 
			
		||||
@@ -580,7 +580,8 @@ config HW_RANDOM_ROCKCHIP
 | 
			
		||||
@@ -581,7 +581,8 @@ config HW_RANDOM_ROCKCHIP
 | 
			
		||||
 	default HW_RANDOM
 | 
			
		||||
 	help
 | 
			
		||||
 	  This driver provides kernel-side support for the True Random Number
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
 | 
			
		||||
 	struct combphy_reg pipe_clk_25m;
 | 
			
		||||
 	struct combphy_reg pipe_clk_100m;
 | 
			
		||||
 	struct combphy_reg pipe_phymode_sel;
 | 
			
		||||
@@ -587,6 +602,266 @@ static const struct rockchip_combphy_cfg
 | 
			
		||||
@@ -599,6 +614,266 @@ static const struct rockchip_combphy_cfg
 | 
			
		||||
 	.combphy_cfg	= rk3568_combphy_cfg,
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@ -342,7 +342,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
 | 
			
		||||
 static int rk3588_combphy_cfg(struct rockchip_combphy_priv *priv)
 | 
			
		||||
 {
 | 
			
		||||
 	const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg;
 | 
			
		||||
@@ -779,6 +1054,10 @@ static const struct of_device_id rockchi
 | 
			
		||||
@@ -791,6 +1066,10 @@ static const struct of_device_id rockchi
 | 
			
		||||
 		.data = &rk3568_combphy_cfgs,
 | 
			
		||||
 	},
 | 
			
		||||
 	{
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/char/hw_random/Kconfig
 | 
			
		||||
+++ b/drivers/char/hw_random/Kconfig
 | 
			
		||||
@@ -322,6 +322,19 @@ config HW_RANDOM_POWERNV
 | 
			
		||||
@@ -323,6 +323,19 @@ config HW_RANDOM_POWERNV
 | 
			
		||||
 
 | 
			
		||||
 	  If unsure, say Y.
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user