From 1fd51ec9f92994df176d15be3cf5f14c5e6f93a0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:05 +0800 Subject: [PATCH 0001/1421] Revert "Linux 6.6.101" This reverts commit 9eb5dedc4901a693206640cfd2ff49ddffde321a. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 116eb523392a..8d6550abc9cb 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 101 +SUBLEVEL = 100 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From 3d6dd2f278493072f3cc4683d857a8437328bc74 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:05 +0800 Subject: [PATCH 0002/1421] Revert "Revert "selftests/bpf: Add a cgroup prog bpf_get_ns_current_pid_tgid() test"" This reverts commit 23caea35806a9e47edbd43cec6f782278d60fb2f. --- .../bpf/prog_tests/ns_current_pid_tgid.c | 73 +++++++++++++++++++ .../bpf/progs/test_ns_current_pid_tgid.c | 7 ++ 2 files changed, 80 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c b/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c index a84c41862ff8..2c57ceede095 100644 --- a/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c +++ b/tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c @@ -12,6 +12,7 @@ #include #include #include +#include "network_helpers.h" #define STACK_SIZE (1024 * 1024) static char child_stack[STACK_SIZE]; @@ -74,6 +75,50 @@ static int test_current_pid_tgid_tp(void *args) return ret; } +static int test_current_pid_tgid_cgrp(void *args) +{ + struct test_ns_current_pid_tgid__bss *bss; + struct test_ns_current_pid_tgid *skel; + int server_fd = -1, ret = -1, err; + int cgroup_fd = *(int *)args; + pid_t tgid, pid; + + skel = test_ns_current_pid_tgid__open(); + if (!ASSERT_OK_PTR(skel, "test_ns_current_pid_tgid__open")) + return ret; + + bpf_program__set_autoload(skel->progs.cgroup_bind4, true); + + err = test_ns_current_pid_tgid__load(skel); + if (!ASSERT_OK(err, "test_ns_current_pid_tgid__load")) + goto cleanup; + + bss = skel->bss; + if (get_pid_tgid(&pid, &tgid, bss)) + goto cleanup; + + skel->links.cgroup_bind4 = bpf_program__attach_cgroup( + skel->progs.cgroup_bind4, cgroup_fd); + if (!ASSERT_OK_PTR(skel->links.cgroup_bind4, "bpf_program__attach_cgroup")) + goto cleanup; + + server_fd = start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); + if (!ASSERT_GE(server_fd, 0, "start_server")) + goto cleanup; + + if (!ASSERT_EQ(bss->user_pid, pid, "pid")) + goto cleanup; + if (!ASSERT_EQ(bss->user_tgid, tgid, "tgid")) + goto cleanup; + ret = 0; + +cleanup: + if (server_fd >= 0) + close(server_fd); + test_ns_current_pid_tgid__destroy(skel); + return ret; +} + static void test_ns_current_pid_tgid_new_ns(int (*fn)(void *), void *arg) { int wstatus; @@ -95,6 +140,25 @@ static void test_ns_current_pid_tgid_new_ns(int (*fn)(void *), void *arg) return; } +static void test_in_netns(int (*fn)(void *), void *arg) +{ + struct nstoken *nstoken = NULL; + + SYS(cleanup, "ip netns add ns_current_pid_tgid"); + SYS(cleanup, "ip -net ns_current_pid_tgid link set dev lo up"); + + nstoken = open_netns("ns_current_pid_tgid"); + if (!ASSERT_OK_PTR(nstoken, "open_netns")) + goto cleanup; + + test_ns_current_pid_tgid_new_ns(fn, arg); + +cleanup: + if (nstoken) + close_netns(nstoken); + SYS_NOFAIL("ip netns del ns_current_pid_tgid"); +} + /* TODO: use a different tracepoint */ void serial_test_ns_current_pid_tgid(void) { @@ -102,4 +166,13 @@ void serial_test_ns_current_pid_tgid(void) test_current_pid_tgid_tp(NULL); if (test__start_subtest("new_ns_tp")) test_ns_current_pid_tgid_new_ns(test_current_pid_tgid_tp, NULL); + if (test__start_subtest("new_ns_cgrp")) { + int cgroup_fd = -1; + + cgroup_fd = test__join_cgroup("/sock_addr"); + if (ASSERT_GE(cgroup_fd, 0, "join_cgroup")) { + test_in_netns(test_current_pid_tgid_cgrp, &cgroup_fd); + close(cgroup_fd); + } + } } diff --git a/tools/testing/selftests/bpf/progs/test_ns_current_pid_tgid.c b/tools/testing/selftests/bpf/progs/test_ns_current_pid_tgid.c index aa3ec7ca16d9..d0010e698f66 100644 --- a/tools/testing/selftests/bpf/progs/test_ns_current_pid_tgid.c +++ b/tools/testing/selftests/bpf/progs/test_ns_current_pid_tgid.c @@ -28,4 +28,11 @@ int tp_handler(const void *ctx) return 0; } +SEC("?cgroup/bind4") +int cgroup_bind4(struct bpf_sock_addr *ctx) +{ + get_pid_tgid(); + return 1; +} + char _license[] SEC("license") = "GPL"; -- Gitee From 417a84ac5cfc68940605ab225004e0454dcb2f5c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:05 +0800 Subject: [PATCH 0003/1421] Revert "spi: cadence-quadspi: fix cleanup of rx_chan on failure paths" This reverts commit 4a6652b99538270bcc10a3ca2f512cdaa2990847. --- drivers/spi/spi-cadence-quadspi.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c index 7c17b8c0425e..9285a683324f 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1870,6 +1870,11 @@ static int cqspi_probe(struct platform_device *pdev) pm_runtime_enable(dev); + if (cqspi->rx_chan) { + dma_release_channel(cqspi->rx_chan); + goto probe_setup_failed; + } + ret = spi_register_controller(host); if (ret) { dev_err(&pdev->dev, "failed to register SPI ctlr %d\n", ret); -- Gitee From 08f4e8b13c3908d36e5b8a6b16c698f413b5877d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:05 +0800 Subject: [PATCH 0004/1421] Revert "drm/sched: Remove optimization that causes hang when killing dependent jobs" This reverts commit 6456ab07a13a1d6b7471c41d8e154bb41ca6dc81. --- drivers/gpu/drm/scheduler/sched_entity.c | 25 ++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c index 245a1ef5278e..eed3b8bed9e4 100644 --- a/drivers/gpu/drm/scheduler/sched_entity.c +++ b/drivers/gpu/drm/scheduler/sched_entity.c @@ -346,9 +346,20 @@ void drm_sched_entity_destroy(struct drm_sched_entity *entity) } EXPORT_SYMBOL(drm_sched_entity_destroy); +/* drm_sched_entity_clear_dep - callback to clear the entities dependency */ +static void drm_sched_entity_clear_dep(struct dma_fence *f, + struct dma_fence_cb *cb) +{ + struct drm_sched_entity *entity = + container_of(cb, struct drm_sched_entity, cb); + + entity->dependency = NULL; + dma_fence_put(f); +} + /* - * drm_sched_entity_wakeup - callback to clear the entity's dependency and - * wake up the scheduler + * drm_sched_entity_clear_dep - callback to clear the entities dependency and + * wake up scheduler */ static void drm_sched_entity_wakeup(struct dma_fence *f, struct dma_fence_cb *cb) @@ -356,8 +367,7 @@ static void drm_sched_entity_wakeup(struct dma_fence *f, struct drm_sched_entity *entity = container_of(cb, struct drm_sched_entity, cb); - entity->dependency = NULL; - dma_fence_put(f); + drm_sched_entity_clear_dep(f, cb); drm_sched_wakeup_if_can_queue(entity->rq->sched); } @@ -410,6 +420,13 @@ static bool drm_sched_entity_add_dependency_cb(struct drm_sched_entity *entity) fence = dma_fence_get(&s_fence->scheduled); dma_fence_put(entity->dependency); entity->dependency = fence; + if (!dma_fence_add_callback(fence, &entity->cb, + drm_sched_entity_clear_dep)) + return true; + + /* Ignore it when it is already scheduled */ + dma_fence_put(fence); + return false; } if (!dma_fence_add_callback(entity->dependency, &entity->cb, -- Gitee From b6c36131959b830d7bc45f6f7f3d7a4316150d95 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:06 +0800 Subject: [PATCH 0005/1421] Revert "ARM: 9448/1: Use an absolute path to unified.h in KBUILD_AFLAGS" This reverts commit 4edb2a37c4307b03af3c44999446102b420034e5. --- arch/arm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 351d0b039b5c..5ba42f69f8ce 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -142,7 +142,7 @@ endif # Need -Uarm for gcc < 3.x KBUILD_CPPFLAGS +=$(cpp-y) KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm -KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include $(srctree)/arch/arm/include/asm/unified.h -msoft-float +KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include asm/unified.h -msoft-float CHECKFLAGS += -D__arm__ -- Gitee From 50b4e10562ca6c574895c797c345cbcd52a8f49b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:06 +0800 Subject: [PATCH 0006/1421] Revert "mptcp: reset fallback status gracefully at disconnect() time" This reverts commit 483134f01d69e501f473957f425cc5a523c55eb3. --- net/mptcp/protocol.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index e3f09467b36b..d95fc113d317 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3208,16 +3208,7 @@ static int mptcp_disconnect(struct sock *sk, int flags) * subflow */ mptcp_destroy_common(msk, MPTCP_CF_FASTCLOSE); - - /* The first subflow is already in TCP_CLOSE status, the following - * can't overlap with a fallback anymore - */ - spin_lock_bh(&msk->fallback_lock); - msk->allow_subflows = true; - msk->allow_infinite_fallback = true; WRITE_ONCE(msk->flags, 0); - spin_unlock_bh(&msk->fallback_lock); - msk->cb_flags = 0; msk->recovery = false; msk->can_ack = false; -- Gitee From 85b49e905cd71e20cb2e8120e4da5a745a910a6e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:06 +0800 Subject: [PATCH 0007/1421] Revert "mptcp: plug races between subflow fail and subflow creation" This reverts commit 02f26f83840d81ace211860ff87cb919fb31d528. --- net/mptcp/pm.c | 8 +------- net/mptcp/protocol.c | 11 +++++------ net/mptcp/protocol.h | 7 ++----- net/mptcp/subflow.c | 19 +++++-------------- 4 files changed, 13 insertions(+), 32 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 29c167e5fc02..157a574fab0c 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -304,14 +304,8 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq) pr_debug("fail_seq=%llu\n", fail_seq); - /* After accepting the fail, we can't create any other subflows */ - spin_lock_bh(&msk->fallback_lock); - if (!msk->allow_infinite_fallback) { - spin_unlock_bh(&msk->fallback_lock); + if (!READ_ONCE(msk->allow_infinite_fallback)) return; - } - msk->allow_subflows = false; - spin_unlock_bh(&msk->fallback_lock); if (!subflow->fail_tout) { pr_debug("send MP_FAIL response and infinite map\n"); diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index d95fc113d317..2595ace615fe 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -875,7 +875,7 @@ void mptcp_data_ready(struct sock *sk, struct sock *ssk) static void mptcp_subflow_joined(struct mptcp_sock *msk, struct sock *ssk) { mptcp_subflow_ctx(ssk)->map_seq = READ_ONCE(msk->ack_seq); - msk->allow_infinite_fallback = false; + WRITE_ONCE(msk->allow_infinite_fallback, false); mptcp_event(MPTCP_EVENT_SUB_ESTABLISHED, msk, ssk, GFP_ATOMIC); } @@ -887,7 +887,7 @@ static bool __mptcp_finish_join(struct mptcp_sock *msk, struct sock *ssk) return false; spin_lock_bh(&msk->fallback_lock); - if (!msk->allow_subflows) { + if (__mptcp_check_fallback(msk)) { spin_unlock_bh(&msk->fallback_lock); return false; } @@ -2688,7 +2688,7 @@ static void __mptcp_retrans(struct sock *sk) len = max(copied, len); tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, info.size_goal); - msk->allow_infinite_fallback = false; + WRITE_ONCE(msk->allow_infinite_fallback, false); } spin_unlock_bh(&msk->fallback_lock); @@ -2819,8 +2819,7 @@ static void __mptcp_init_sock(struct sock *sk) WRITE_ONCE(msk->first, NULL); inet_csk(sk)->icsk_sync_mss = mptcp_sync_mss; WRITE_ONCE(msk->csum_enabled, mptcp_is_checksum_enabled(sock_net(sk))); - msk->allow_infinite_fallback = true; - msk->allow_subflows = true; + WRITE_ONCE(msk->allow_infinite_fallback, true); msk->recovery = false; msk->subflow_id = 1; @@ -3625,7 +3624,7 @@ bool mptcp_finish_join(struct sock *ssk) /* active subflow, already present inside the conn_list */ if (!list_empty(&subflow->node)) { spin_lock_bh(&msk->fallback_lock); - if (!msk->allow_subflows) { + if (__mptcp_check_fallback(msk)) { spin_unlock_bh(&msk->fallback_lock); return false; } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c5f41cdb36c4..7e637f468065 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -330,15 +330,13 @@ struct mptcp_sock { u64 rtt_us; /* last maximum rtt of subflows */ } rcvq_space; u8 scaling_ratio; - bool allow_subflows; u32 subflow_id; u32 setsockopt_seq; char ca_name[TCP_CA_NAME_MAX]; - spinlock_t fallback_lock; /* protects fallback, - * allow_infinite_fallback and - * allow_join + spinlock_t fallback_lock; /* protects fallback and + * allow_infinite_fallback */ }; @@ -1115,7 +1113,6 @@ static inline bool __mptcp_try_fallback(struct mptcp_sock *msk) return false; } - msk->allow_subflows = false; set_bit(MPTCP_FALLBACK_DONE, &msk->flags); spin_unlock_bh(&msk->fallback_lock); return true; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index a01ea18283c7..5a8990536f8e 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1257,29 +1257,20 @@ static void subflow_sched_work_if_closed(struct mptcp_sock *msk, struct sock *ss mptcp_schedule_work(sk); } -static bool mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk) +static void mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk) { struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); unsigned long fail_tout; - /* we are really failing, prevent any later subflow join */ - spin_lock_bh(&msk->fallback_lock); - if (!msk->allow_infinite_fallback) { - spin_unlock_bh(&msk->fallback_lock); - return false; - } - msk->allow_subflows = false; - spin_unlock_bh(&msk->fallback_lock); - /* greceful failure can happen only on the MPC subflow */ if (WARN_ON_ONCE(ssk != READ_ONCE(msk->first))) - return false; + return; /* since the close timeout take precedence on the fail one, * no need to start the latter when the first is already set */ if (sock_flag((struct sock *)msk, SOCK_DEAD)) - return true; + return; /* we don't need extreme accuracy here, use a zero fail_tout as special * value meaning no fail timeout at all; @@ -1291,7 +1282,6 @@ static bool mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk) tcp_send_ack(ssk); mptcp_reset_tout_timer(msk, subflow->fail_tout); - return true; } static bool subflow_check_data_avail(struct sock *ssk) @@ -1352,11 +1342,12 @@ static bool subflow_check_data_avail(struct sock *ssk) (subflow->mp_join || subflow->valid_csum_seen)) { subflow->send_mp_fail = 1; - if (!mptcp_subflow_fail(msk, ssk)) { + if (!READ_ONCE(msk->allow_infinite_fallback)) { subflow->reset_transient = 0; subflow->reset_reason = MPTCP_RST_EMIDDLEBOX; goto reset; } + mptcp_subflow_fail(msk, ssk); WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_DATA_AVAIL); return true; } -- Gitee From 209485e7bc9f5bfabd81bbdc6f004ad07b8dbc79 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:06 +0800 Subject: [PATCH 0008/1421] Revert "mptcp: make fallback action and fallback decision atomic" This reverts commit da079756f2f0d18796958cd9d9611c5c011c4380. --- net/mptcp/options.c | 3 +-- net/mptcp/protocol.c | 42 ++++++------------------------------------ net/mptcp/protocol.h | 24 ++++++------------------ net/mptcp/subflow.c | 11 ++++++----- 4 files changed, 19 insertions(+), 61 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 8d4889a73006..6ef98608ac64 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -979,9 +979,8 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *ssk, if (subflow->mp_join) goto reset; subflow->mp_capable = 0; - if (!mptcp_try_fallback(ssk)) - goto reset; pr_fallback(msk); + mptcp_do_fallback(ssk); return false; } diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 2595ace615fe..140c3ffcb86b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -623,9 +623,10 @@ static bool mptcp_check_data_fin(struct sock *sk) static void mptcp_dss_corruption(struct mptcp_sock *msk, struct sock *ssk) { - if (mptcp_try_fallback(ssk)) { + if (READ_ONCE(msk->allow_infinite_fallback)) { MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSCORRUPTIONFALLBACK); + mptcp_do_fallback(ssk); } else { MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSCORRUPTIONRESET); mptcp_subflow_reset(ssk); @@ -886,14 +887,6 @@ static bool __mptcp_finish_join(struct mptcp_sock *msk, struct sock *ssk) if (sk->sk_state != TCP_ESTABLISHED) return false; - spin_lock_bh(&msk->fallback_lock); - if (__mptcp_check_fallback(msk)) { - spin_unlock_bh(&msk->fallback_lock); - return false; - } - mptcp_subflow_joined(msk, ssk); - spin_unlock_bh(&msk->fallback_lock); - /* attach to msk socket only after we are sure we will deal with it * at close time */ @@ -902,6 +895,7 @@ static bool __mptcp_finish_join(struct mptcp_sock *msk, struct sock *ssk) mptcp_subflow_ctx(ssk)->subflow_id = msk->subflow_id++; mptcp_sockopt_sync_locked(msk, ssk); + mptcp_subflow_joined(msk, ssk); mptcp_stop_tout_timer(sk); __mptcp_propagate_sndbuf(sk, ssk); return true; @@ -1237,14 +1231,10 @@ static void mptcp_update_infinite_map(struct mptcp_sock *msk, mpext->infinite_map = 1; mpext->data_len = 0; - if (!mptcp_try_fallback(ssk)) { - mptcp_subflow_reset(ssk); - return; - } - MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPTX); mptcp_subflow_ctx(ssk)->send_infinite_map = 0; pr_fallback(msk); + mptcp_do_fallback(ssk); } #define MPTCP_MAX_GSO_SIZE (GSO_LEGACY_MAX_SIZE - (MAX_TCP_HEADER + 1)) @@ -2616,9 +2606,9 @@ static void mptcp_check_fastclose(struct mptcp_sock *msk) static void __mptcp_retrans(struct sock *sk) { - struct mptcp_sendmsg_info info = { .data_lock_held = true, }; struct mptcp_sock *msk = mptcp_sk(sk); struct mptcp_subflow_context *subflow; + struct mptcp_sendmsg_info info = {}; struct mptcp_data_frag *dfrag; struct sock *ssk; int ret, err; @@ -2663,18 +2653,6 @@ static void __mptcp_retrans(struct sock *sk) info.sent = 0; info.limit = READ_ONCE(msk->csum_enabled) ? dfrag->data_len : dfrag->already_sent; - - /* - * make the whole retrans decision, xmit, disallow - * fallback atomic - */ - spin_lock_bh(&msk->fallback_lock); - if (__mptcp_check_fallback(msk)) { - spin_unlock_bh(&msk->fallback_lock); - release_sock(ssk); - return; - } - while (info.sent < info.limit) { ret = mptcp_sendmsg_frag(sk, ssk, dfrag, &info); if (ret <= 0) @@ -2690,7 +2668,6 @@ static void __mptcp_retrans(struct sock *sk) info.size_goal); WRITE_ONCE(msk->allow_infinite_fallback, false); } - spin_unlock_bh(&msk->fallback_lock); release_sock(ssk); } @@ -2824,7 +2801,6 @@ static void __mptcp_init_sock(struct sock *sk) msk->subflow_id = 1; mptcp_pm_data_init(msk); - spin_lock_init(&msk->fallback_lock); /* re-use the csk retrans timer for MPTCP-level retrans */ timer_setup(&msk->sk.icsk_retransmit_timer, mptcp_retransmit_timer, 0); @@ -3623,13 +3599,7 @@ bool mptcp_finish_join(struct sock *ssk) /* active subflow, already present inside the conn_list */ if (!list_empty(&subflow->node)) { - spin_lock_bh(&msk->fallback_lock); - if (__mptcp_check_fallback(msk)) { - spin_unlock_bh(&msk->fallback_lock); - return false; - } mptcp_subflow_joined(msk, ssk); - spin_unlock_bh(&msk->fallback_lock); mptcp_propagate_sndbuf(parent, ssk); return true; } @@ -3742,7 +3712,7 @@ static void mptcp_subflow_early_fallback(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow) { subflow->request_mptcp = 0; - WARN_ON_ONCE(!__mptcp_try_fallback(msk)); + __mptcp_do_fallback(msk); } static int mptcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 7e637f468065..d67add91c9b9 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -334,10 +334,6 @@ struct mptcp_sock { u32 subflow_id; u32 setsockopt_seq; char ca_name[TCP_CA_NAME_MAX]; - - spinlock_t fallback_lock; /* protects fallback and - * allow_infinite_fallback - */ }; #define mptcp_data_lock(sk) spin_lock_bh(&(sk)->sk_lock.slock) @@ -1101,32 +1097,25 @@ static inline bool mptcp_check_fallback(const struct sock *sk) return __mptcp_check_fallback(msk); } -static inline bool __mptcp_try_fallback(struct mptcp_sock *msk) +static inline void __mptcp_do_fallback(struct mptcp_sock *msk) { if (test_bit(MPTCP_FALLBACK_DONE, &msk->flags)) { pr_debug("TCP fallback already done (msk=%p)\n", msk); - return true; - } - spin_lock_bh(&msk->fallback_lock); - if (!msk->allow_infinite_fallback) { - spin_unlock_bh(&msk->fallback_lock); - return false; + return; } - + if (WARN_ON_ONCE(!READ_ONCE(msk->allow_infinite_fallback))) + return; set_bit(MPTCP_FALLBACK_DONE, &msk->flags); - spin_unlock_bh(&msk->fallback_lock); - return true; } -static inline bool mptcp_try_fallback(struct sock *ssk) +static inline void mptcp_do_fallback(struct sock *ssk) { struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); struct sock *sk = subflow->conn; struct mptcp_sock *msk; msk = mptcp_sk(sk); - if (!__mptcp_try_fallback(msk)) - return false; + __mptcp_do_fallback(msk); if (READ_ONCE(msk->snd_data_fin_enable) && !(ssk->sk_shutdown & SEND_SHUTDOWN)) { gfp_t saved_allocation = ssk->sk_allocation; @@ -1138,7 +1127,6 @@ static inline bool mptcp_try_fallback(struct sock *ssk) tcp_shutdown(ssk, SEND_SHUTDOWN); ssk->sk_allocation = saved_allocation; } - return true; } #define pr_fallback(a) pr_debug("%s:fallback to TCP (msk=%p)\n", __func__, a) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 5a8990536f8e..f4b8ca8be81e 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -524,11 +524,9 @@ static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb) mptcp_get_options(skb, &mp_opt); if (subflow->request_mptcp) { if (!(mp_opt.suboptions & OPTION_MPTCP_MPC_SYNACK)) { - if (!mptcp_try_fallback(sk)) - goto do_reset; - MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPCAPABLEACTIVEFALLBACK); + mptcp_do_fallback(sk); pr_fallback(msk); goto fallback; } @@ -1352,7 +1350,7 @@ static bool subflow_check_data_avail(struct sock *ssk) return true; } - if (!mptcp_try_fallback(ssk)) { + if (!READ_ONCE(msk->allow_infinite_fallback)) { /* fatal protocol error, close the socket. * subflow_error_report() will introduce the appropriate barriers */ @@ -1368,6 +1366,8 @@ static bool subflow_check_data_avail(struct sock *ssk) WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); return false; } + + mptcp_do_fallback(ssk); } skb = skb_peek(&ssk->sk_receive_queue); @@ -1612,6 +1612,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc, /* discard the subflow socket */ mptcp_sock_graft(ssk, sk->sk_socket); iput(SOCK_INODE(sf)); + WRITE_ONCE(msk->allow_infinite_fallback, false); mptcp_stop_tout_timer(sk); return 0; @@ -1789,7 +1790,7 @@ static void subflow_state_change(struct sock *sk) msk = mptcp_sk(parent); if (subflow_simultaneous_connect(sk)) { - WARN_ON_ONCE(!mptcp_try_fallback(sk)); + mptcp_do_fallback(sk); pr_fallback(msk); subflow->conn_finished = 1; mptcp_propagate_state(parent, sk, subflow, NULL); -- Gitee From 1c7f14957d57bce434f8d60d3cb951c878c9d8ea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:06 +0800 Subject: [PATCH 0009/1421] Revert "arm64/cpufeatures/kvm: Add ARMv8.9 FEAT_ECBHB bits in ID_AA64MMFR1 register" This reverts commit 602f8b3edce599742f92d88817c7b5552fd8c681. --- arch/arm64/kernel/cpufeature.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 2ce9ef9d924a..b6d381f743f3 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -364,7 +364,6 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr0[] = { }; static const struct arm64_ftr_bits ftr_id_aa64mmfr1[] = { - ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR1_EL1_ECBHB_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR1_EL1_TIDCP1_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR1_EL1_AFP_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR1_EL1_HCX_SHIFT, 4, 0), -- Gitee From c7e989a7d59700ab0f0a2cc7114499facb760ab6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:07 +0800 Subject: [PATCH 0010/1421] Revert "ksmbd: add free_transport ops in ksmbd connection" This reverts commit 1b457bd8608c88544895c5270c5544e85e55c554. --- fs/smb/server/connection.c | 2 +- fs/smb/server/connection.h | 1 - fs/smb/server/transport_rdma.c | 10 ++-------- fs/smb/server/transport_tcp.c | 3 +-- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/fs/smb/server/connection.c b/fs/smb/server/connection.c index 66b20c3d963e..abbf756891a9 100644 --- a/fs/smb/server/connection.c +++ b/fs/smb/server/connection.c @@ -40,7 +40,7 @@ void ksmbd_conn_free(struct ksmbd_conn *conn) kvfree(conn->request_buf); kfree(conn->preauth_info); if (atomic_dec_and_test(&conn->refcnt)) { - conn->transport->ops->free_transport(conn->transport); + ksmbd_free_transport(conn->transport); kfree(conn); } } diff --git a/fs/smb/server/connection.h b/fs/smb/server/connection.h index 47e6a8694c0f..dc07c6eb8c19 100644 --- a/fs/smb/server/connection.h +++ b/fs/smb/server/connection.h @@ -132,7 +132,6 @@ struct ksmbd_transport_ops { void *buf, unsigned int len, struct smb2_buffer_desc_v1 *desc, unsigned int desc_len); - void (*free_transport)(struct ksmbd_transport *kt); }; struct ksmbd_transport { diff --git a/fs/smb/server/transport_rdma.c b/fs/smb/server/transport_rdma.c index eaef45977615..7b6639949c25 100644 --- a/fs/smb/server/transport_rdma.c +++ b/fs/smb/server/transport_rdma.c @@ -158,8 +158,7 @@ struct smb_direct_transport { }; #define KSMBD_TRANS(t) ((struct ksmbd_transport *)&((t)->transport)) -#define SMBD_TRANS(t) ((struct smb_direct_transport *)container_of(t, \ - struct smb_direct_transport, transport)) + enum { SMB_DIRECT_MSG_NEGOTIATE_REQ = 0, SMB_DIRECT_MSG_DATA_TRANSFER @@ -410,11 +409,6 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id) return NULL; } -static void smb_direct_free_transport(struct ksmbd_transport *kt) -{ - kfree(SMBD_TRANS(kt)); -} - static void free_transport(struct smb_direct_transport *t) { struct smb_direct_recvmsg *recvmsg; @@ -461,6 +455,7 @@ static void free_transport(struct smb_direct_transport *t) smb_direct_destroy_pools(t); ksmbd_conn_free(KSMBD_TRANS(t)->conn); + kfree(t); } static struct smb_direct_sendmsg @@ -2306,5 +2301,4 @@ static struct ksmbd_transport_ops ksmbd_smb_direct_transport_ops = { .read = smb_direct_read, .rdma_read = smb_direct_rdma_read, .rdma_write = smb_direct_rdma_write, - .free_transport = smb_direct_free_transport, }; diff --git a/fs/smb/server/transport_tcp.c b/fs/smb/server/transport_tcp.c index 64941a49438f..c27f0cef3b59 100644 --- a/fs/smb/server/transport_tcp.c +++ b/fs/smb/server/transport_tcp.c @@ -93,7 +93,7 @@ static struct tcp_transport *alloc_transport(struct socket *client_sk) return t; } -static void ksmbd_tcp_free_transport(struct ksmbd_transport *kt) +void ksmbd_free_transport(struct ksmbd_transport *kt) { struct tcp_transport *t = TCP_TRANS(kt); @@ -659,5 +659,4 @@ static struct ksmbd_transport_ops ksmbd_tcp_transport_ops = { .read = ksmbd_tcp_read, .writev = ksmbd_tcp_writev, .disconnect = ksmbd_tcp_disconnect, - .free_transport = ksmbd_tcp_free_transport, }; -- Gitee From 7acf0b043ced4b6dae0d486289a5a6a0e7cd8ed5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:07 +0800 Subject: [PATCH 0011/1421] Revert "wifi: mt76: mt7921: prevent decap offload config before STA initialization" This reverts commit 8090da405bc4034014146ac2ad69ba3b64c0ae3a. --- drivers/net/wireless/mediatek/mt76/mt7921/main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c index 15b7d22d3639..8e2ec3956331 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c @@ -1087,9 +1087,6 @@ static void mt7921_sta_set_decap_offload(struct ieee80211_hw *hw, struct mt792x_sta *msta = (struct mt792x_sta *)sta->drv_priv; struct mt792x_dev *dev = mt792x_hw_dev(hw); - if (!msta->wcid.sta) - return; - mt792x_mutex_acquire(dev); if (enabled) -- Gitee From af2dac8621b9c5be739a70733e27b43f03b1bb94 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:07 +0800 Subject: [PATCH 0012/1421] Revert "perf/x86/intel: Fix crash in icl_update_topdown_event()" This reverts commit 2bd75a9811b4031bd916e6881f1b54b44a4ccf73. --- arch/x86/events/intel/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c index 87ea4339e03a..835c9febb6a8 100644 --- a/arch/x86/events/intel/core.c +++ b/arch/x86/events/intel/core.c @@ -2734,7 +2734,7 @@ static void intel_pmu_read_event(struct perf_event *event) if (pmu_enabled) intel_pmu_disable_all(); - if (is_topdown_count(event)) + if (is_topdown_event(event)) static_call(intel_pmu_update_topdown_event)(event); else intel_pmu_drain_pebs_buffer(); -- Gitee From 6a6b74440ed76c262ab3c5eb1b85b872a2b9ae9d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:07 +0800 Subject: [PATCH 0013/1421] Revert "mtd: rawnand: qcom: Fix last codeword read in qcom_param_page_type_exec()" This reverts commit 2dccc9a5a63b5eb7013e7771df2c61d2286c5f81. --- drivers/mtd/nand/raw/qcom_nandc.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c index 275d34119acd..beafca6ba0df 100644 --- a/drivers/mtd/nand/raw/qcom_nandc.c +++ b/drivers/mtd/nand/raw/qcom_nandc.c @@ -2858,12 +2858,7 @@ static int qcom_param_page_type_exec(struct nand_chip *chip, const struct nand_ const struct nand_op_instr *instr = NULL; unsigned int op_id = 0; unsigned int len = 0; - int ret, reg_base; - - reg_base = NAND_READ_LOCATION_0; - - if (nandc->props->qpic_v2) - reg_base = NAND_READ_LOCATION_LAST_CW_0; + int ret; ret = qcom_parse_instructions(chip, subop, &q_op); if (ret) @@ -2915,10 +2910,7 @@ static int qcom_param_page_type_exec(struct nand_chip *chip, const struct nand_ op_id = q_op.data_instr_idx; len = nand_subop_get_data_len(subop, op_id); - if (nandc->props->qpic_v2) - nandc_set_read_loc_last(chip, reg_base, 0, len, 1); - else - nandc_set_read_loc_first(chip, reg_base, 0, len, 1); + nandc_set_read_loc(chip, 0, 0, 0, len, 1); if (!nandc->props->qpic_v2) { write_reg_dma(nandc, NAND_DEV_CMD_VLD, 1, 0); -- Gitee From b842f4872a1c6cca740224b30b02c5eefc03d25c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:07 +0800 Subject: [PATCH 0014/1421] Revert "ksmbd: fix use-after-free in __smb2_lease_break_noti()" This reverts commit d631666a43d9d3ec4473f19d37658a6da2e28cb9. --- fs/smb/server/connection.c | 4 +--- fs/smb/server/transport_tcp.c | 14 +++++--------- fs/smb/server/transport_tcp.h | 1 - 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/fs/smb/server/connection.c b/fs/smb/server/connection.c index abbf756891a9..e7bcc3830031 100644 --- a/fs/smb/server/connection.c +++ b/fs/smb/server/connection.c @@ -39,10 +39,8 @@ void ksmbd_conn_free(struct ksmbd_conn *conn) xa_destroy(&conn->sessions); kvfree(conn->request_buf); kfree(conn->preauth_info); - if (atomic_dec_and_test(&conn->refcnt)) { - ksmbd_free_transport(conn->transport); + if (atomic_dec_and_test(&conn->refcnt)) kfree(conn); - } } /** diff --git a/fs/smb/server/transport_tcp.c b/fs/smb/server/transport_tcp.c index c27f0cef3b59..2ce7f75059cb 100644 --- a/fs/smb/server/transport_tcp.c +++ b/fs/smb/server/transport_tcp.c @@ -93,19 +93,15 @@ static struct tcp_transport *alloc_transport(struct socket *client_sk) return t; } -void ksmbd_free_transport(struct ksmbd_transport *kt) -{ - struct tcp_transport *t = TCP_TRANS(kt); - - sock_release(t->sock); - kfree(t->iov); - kfree(t); -} - static void free_transport(struct tcp_transport *t) { kernel_sock_shutdown(t->sock, SHUT_RDWR); + sock_release(t->sock); + t->sock = NULL; + ksmbd_conn_free(KSMBD_TRANS(t)->conn); + kfree(t->iov); + kfree(t); } /** diff --git a/fs/smb/server/transport_tcp.h b/fs/smb/server/transport_tcp.h index 5925ec5df475..e338bebe322f 100644 --- a/fs/smb/server/transport_tcp.h +++ b/fs/smb/server/transport_tcp.h @@ -7,7 +7,6 @@ #define __KSMBD_TRANSPORT_TCP_H__ int ksmbd_tcp_set_interfaces(char *ifc_list, int ifc_list_sz); -void ksmbd_free_transport(struct ksmbd_transport *kt); int ksmbd_tcp_init(void); void ksmbd_tcp_destroy(void); -- Gitee From 1a1a72a6fee4ff39e67a2bc63f8f5929917ab1ea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:08 +0800 Subject: [PATCH 0015/1421] Revert "iio: hid-sensor-prox: Restore lost scale assignments" This reverts commit a6d376687c635575b711f0e49284a01a4b45b4a2. --- drivers/iio/light/hid-sensor-prox.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c index 24f732790753..95f675e2e532 100644 --- a/drivers/iio/light/hid-sensor-prox.c +++ b/drivers/iio/light/hid-sensor-prox.c @@ -226,11 +226,6 @@ static int prox_parse_report(struct platform_device *pdev, dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr.index, st->prox_attr.report_id); - st->scale_precision = hid_sensor_format_scale(hsdev->usage, - &st->prox_attr, - &st->scale_pre_decml, - &st->scale_post_decml); - return ret; } -- Gitee From f96e861c44ac82a7ee2da4c030391fb796e2a150 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:08 +0800 Subject: [PATCH 0016/1421] Revert "iio: hid-sensor-prox: Fix incorrect OFFSET calculation" This reverts commit 93d10868df11d79db8a4d09bc169235fe3cfe751. --- drivers/iio/light/hid-sensor-prox.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c index 95f675e2e532..a47591e1bad9 100644 --- a/drivers/iio/light/hid-sensor-prox.c +++ b/drivers/iio/light/hid-sensor-prox.c @@ -102,7 +102,8 @@ static int prox_read_raw(struct iio_dev *indio_dev, ret_type = prox_state->scale_precision; break; case IIO_CHAN_INFO_OFFSET: - *val = 0; + *val = hid_sensor_convert_exponent( + prox_state->prox_attr.unit_expo); ret_type = IIO_VAL_INT; break; case IIO_CHAN_INFO_SAMP_FREQ: -- Gitee From c5915fa6635932a223d6ab6dd6aa8c7e39f6be78 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:08 +0800 Subject: [PATCH 0017/1421] Revert "crypto: qat - add shutdown handler to qat_dh895xcc" This reverts commit 414d663a3f430d8b00bab50f453aa1f5f8f68cd7. --- drivers/crypto/intel/qat/qat_dh895xcc/adf_drv.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/crypto/intel/qat/qat_dh895xcc/adf_drv.c b/drivers/crypto/intel/qat/qat_dh895xcc/adf_drv.c index b68903212b64..1e748e8ce12d 100644 --- a/drivers/crypto/intel/qat/qat_dh895xcc/adf_drv.c +++ b/drivers/crypto/intel/qat/qat_dh895xcc/adf_drv.c @@ -27,14 +27,12 @@ MODULE_DEVICE_TABLE(pci, adf_pci_tbl); static int adf_probe(struct pci_dev *dev, const struct pci_device_id *ent); static void adf_remove(struct pci_dev *dev); -static void adf_shutdown(struct pci_dev *dev); static struct pci_driver adf_driver = { .id_table = adf_pci_tbl, .name = ADF_DH895XCC_DEVICE_NAME, .probe = adf_probe, .remove = adf_remove, - .shutdown = adf_shutdown, .sriov_configure = adf_sriov_configure, .err_handler = &adf_err_handler, }; @@ -229,13 +227,6 @@ static void adf_remove(struct pci_dev *pdev) kfree(accel_dev); } -static void adf_shutdown(struct pci_dev *pdev) -{ - struct adf_accel_dev *accel_dev = adf_devmgr_pci_to_accel_dev(pdev); - - adf_dev_down(accel_dev, false); -} - static int __init adfdrv_init(void) { request_module("intel_qat"); -- Gitee From 76be86d4f41beb36ef9906fa9ff9334f6f89c6ff Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:08 +0800 Subject: [PATCH 0018/1421] Revert "crypto: powerpc/poly1305 - add depends on BROKEN for now" This reverts commit 981e65920085aafea36e08354f93a902bc6b8489. --- arch/powerpc/crypto/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/powerpc/crypto/Kconfig b/arch/powerpc/crypto/Kconfig index 5c1619f25188..fccf742c55c2 100644 --- a/arch/powerpc/crypto/Kconfig +++ b/arch/powerpc/crypto/Kconfig @@ -129,7 +129,6 @@ config CRYPTO_CHACHA20_P10 config CRYPTO_POLY1305_P10 tristate "Hash functions: Poly1305 (P10 or later)" depends on PPC64 && CPU_LITTLE_ENDIAN && VSX - depends on BROKEN # Needs to be fixed to work in softirq context select CRYPTO_HASH select CRYPTO_LIB_POLY1305_GENERIC help -- Gitee From 8f2975a957cace701204ea32be8b6661ac9b2d6e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:08 +0800 Subject: [PATCH 0019/1421] Revert "erofs: address D-cache aliasing" This reverts commit a8c03236b21104548cf30d96c1a6100bc68584a4. --- fs/erofs/decompressor.c | 6 ++++-- fs/erofs/zdata.c | 32 +++++++++++++------------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 86e088fd386e..aa59788a61e6 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -342,12 +342,14 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq, if (outpages > inpages) { DBG_BUGON(!rq->out[outpages - 1]); - if (rq->out[outpages - 1] != rq->in[inpages - 1]) + if (rq->out[outpages - 1] != rq->in[inpages - 1]) { memcpy_to_page(rq->out[outpages - 1], 0, src + (interlaced_offset ? 0 : righthalf), lefthalf); - else if (!interlaced_offset) + } else if (!interlaced_offset) { memmove(src, src + righthalf, lefthalf); + flush_dcache_page(rq->in[inpages - 1]); + } } kunmap_local(src); return 0; diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index d852b43ac43e..496e4c7c52a4 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -122,11 +122,9 @@ static inline unsigned int z_erofs_pclusterpages(struct z_erofs_pcluster *pcl) /* * bit 30: I/O error occurred on this page - * bit 29: CPU has dirty data in D-cache (needs aliasing handling); * bit 0 - 29: remaining parts to complete this page */ -#define Z_EROFS_ONLINEPAGE_EIO 30 -#define Z_EROFS_ONLINEPAGE_DIRTY 29 +#define Z_EROFS_PAGE_EIO (1 << 30) static inline void z_erofs_onlinepage_init(struct page *page) { @@ -145,7 +143,7 @@ static inline void z_erofs_onlinepage_split(struct page *page) atomic_inc((atomic_t *)&page->private); } -static void z_erofs_onlinepage_end(struct page *page, int err, bool dirty) +static void z_erofs_onlinepage_endio(struct page *page, int err) { int orig, v; @@ -153,20 +151,16 @@ static void z_erofs_onlinepage_end(struct page *page, int err, bool dirty) do { orig = atomic_read((atomic_t *)&page->private); - DBG_BUGON(orig <= 0); - v = dirty << Z_EROFS_ONLINEPAGE_DIRTY; - v |= (orig - 1) | (!!err << Z_EROFS_ONLINEPAGE_EIO); + v = (orig - 1) | (err ? Z_EROFS_PAGE_EIO : 0); } while (atomic_cmpxchg((atomic_t *)&page->private, orig, v) != orig); - if (v & (BIT(Z_EROFS_ONLINEPAGE_DIRTY) - 1)) - return; - set_page_private(page, 0); - ClearPagePrivate(page); - if (v & BIT(Z_EROFS_ONLINEPAGE_DIRTY)) - flush_dcache_page(page); - if (!(v & BIT(Z_EROFS_ONLINEPAGE_EIO))) - SetPageUptodate(page); - unlock_page(page); + if (!(v & ~Z_EROFS_PAGE_EIO)) { + set_page_private(page, 0); + ClearPagePrivate(page); + if (!(v & Z_EROFS_PAGE_EIO)) + SetPageUptodate(page); + unlock_page(page); + } } #define Z_EROFS_ONSTACK_PAGES 32 @@ -1066,7 +1060,7 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe, goto repeat; out: - z_erofs_onlinepage_end(page, err, false); + z_erofs_onlinepage_endio(page, err); return err; } @@ -1169,7 +1163,7 @@ static void z_erofs_fill_other_copies(struct z_erofs_decompress_backend *be, cur += len; } kunmap_local(dst); - z_erofs_onlinepage_end(bvi->bvec.page, err, true); + z_erofs_onlinepage_endio(bvi->bvec.page, err); list_del(p); kfree(bvi); } @@ -1339,7 +1333,7 @@ static int z_erofs_decompress_pcluster(struct z_erofs_decompress_backend *be, /* recycle all individual short-lived pages */ if (z_erofs_put_shortlivedpage(be->pagepool, page)) continue; - z_erofs_onlinepage_end(page, err, true); + z_erofs_onlinepage_endio(page, err); } if (be->decompressed_pages != be->onstack_pages) -- Gitee From 27349aad7d0e89e177dc398bd8b024069973b402 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:09 +0800 Subject: [PATCH 0020/1421] Revert "mm: khugepaged: fix call hpage_collapse_scan_file() for anonymous vma" This reverts commit 1e74dc55fa8ef62231f33dd62c2a10dc1af3baa9. --- mm/khugepaged.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index f227b39ae4cf..a87cfe1d4b7b 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -2387,7 +2387,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, VM_BUG_ON(khugepaged_scan.address < hstart || khugepaged_scan.address + HPAGE_PMD_SIZE > hend); - if (IS_ENABLED(CONFIG_SHMEM) && !vma_is_anonymous(vma)) { + if (IS_ENABLED(CONFIG_SHMEM) && vma->vm_file) { struct file *file = get_file(vma->vm_file); pgoff_t pgoff = linear_page_index(vma, khugepaged_scan.address); @@ -2734,7 +2734,7 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev, mmap_assert_locked(mm); memset(cc->node_load, 0, sizeof(cc->node_load)); nodes_clear(cc->alloc_nmask); - if (IS_ENABLED(CONFIG_SHMEM) && !vma_is_anonymous(vma)) { + if (IS_ENABLED(CONFIG_SHMEM) && vma->vm_file) { struct file *file = get_file(vma->vm_file); pgoff_t pgoff = linear_page_index(vma, addr); -- Gitee From 23ec6612ba808f7d75333795e452750b5df42cf6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:09 +0800 Subject: [PATCH 0021/1421] Revert "drm/i915/dp: Fix 2.7 Gbps DP_LINK_BW value on g4x" This reverts commit fe87915f9a03aed59c45a310acd8cd4cc011b749. --- drivers/gpu/drm/i915/display/intel_dp.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 9a894e234f62..c8b6d0f79c9b 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -1293,12 +1293,6 @@ int intel_dp_rate_select(struct intel_dp *intel_dp, int rate) void intel_dp_compute_rate(struct intel_dp *intel_dp, int port_clock, u8 *link_bw, u8 *rate_select) { - struct drm_i915_private *i915 = dp_to_i915(intel_dp); - - /* FIXME g4x can't generate an exact 2.7GHz with the 96MHz non-SSC refclk */ - if (IS_G4X(i915) && port_clock == 268800) - port_clock = 270000; - /* eDP 1.4 rate select method. */ if (intel_dp->use_rate_select) { *link_bw = 0; -- Gitee From 69e8b4c1cc00c3c4eb89842ffa02e21759e079fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:09 +0800 Subject: [PATCH 0022/1421] Revert "ALSA: hda: Add missing NVIDIA HDA codec IDs" This reverts commit 470de96ece804b238ac3ce2b9aafcaaec3969719. --- sound/pci/hda/patch_hdmi.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index f2c03fbf892f..8ad3eb43874d 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -4559,9 +4559,7 @@ HDA_CODEC_ENTRY(0x10de002e, "Tegra186 HDMI/DP1", patch_tegra_hdmi), HDA_CODEC_ENTRY(0x10de002f, "Tegra194 HDMI/DP2", patch_tegra_hdmi), HDA_CODEC_ENTRY(0x10de0030, "Tegra194 HDMI/DP3", patch_tegra_hdmi), HDA_CODEC_ENTRY(0x10de0031, "Tegra234 HDMI/DP", patch_tegra234_hdmi), -HDA_CODEC_ENTRY(0x10de0033, "SoC 33 HDMI/DP", patch_tegra234_hdmi), HDA_CODEC_ENTRY(0x10de0034, "Tegra264 HDMI/DP", patch_tegra234_hdmi), -HDA_CODEC_ENTRY(0x10de0035, "SoC 35 HDMI/DP", patch_tegra234_hdmi), HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi), @@ -4600,32 +4598,15 @@ HDA_CODEC_ENTRY(0x10de0097, "GPU 97 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de0098, "GPU 98 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de0099, "GPU 99 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de009a, "GPU 9a HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de009b, "GPU 9b HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de009c, "GPU 9c HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de009d, "GPU 9d HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de009e, "GPU 9e HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de009f, "GPU 9f HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de00a0, "GPU a0 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00a1, "GPU a1 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de00a3, "GPU a3 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de00a4, "GPU a4 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de00a5, "GPU a5 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de00a6, "GPU a6 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de00a7, "GPU a7 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00a8, "GPU a8 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00a9, "GPU a9 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00aa, "GPU aa HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00ab, "GPU ab HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00ad, "GPU ad HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00ae, "GPU ae HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00af, "GPU af HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00b0, "GPU b0 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00b1, "GPU b1 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00c0, "GPU c0 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00c1, "GPU c1 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00c3, "GPU c3 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00c4, "GPU c4 HDMI/DP", patch_nvhdmi), -HDA_CODEC_ENTRY(0x10de00c5, "GPU c5 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI", patch_nvhdmi_2ch), HDA_CODEC_ENTRY(0x10de8067, "MCP67/68 HDMI", patch_nvhdmi_2ch), HDA_CODEC_ENTRY(0x67663d82, "Arise 82 HDMI/DP", patch_gf_hdmi), -- Gitee From c2b7a03c7d1a42e47957f8a3bdb56879d0df3a31 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:09 +0800 Subject: [PATCH 0023/1421] Revert "ALSA: hda/tegra: Add Tegra264 support" This reverts commit e66b278f2d86e4ed648c0fc3aeba2d3208aed0b8. --- sound/pci/hda/hda_tegra.c | 51 +++++--------------------------------- sound/pci/hda/patch_hdmi.c | 1 - 2 files changed, 6 insertions(+), 46 deletions(-) diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c index 12a144a269ee..d967e70a7058 100644 --- a/sound/pci/hda/hda_tegra.c +++ b/sound/pci/hda/hda_tegra.c @@ -72,10 +72,6 @@ struct hda_tegra_soc { bool has_hda2codec_2x_reset; bool has_hda2hdmi; - bool has_hda2codec_2x; - bool input_stream; - bool always_on; - bool requires_init; }; struct hda_tegra { @@ -191,9 +187,7 @@ static int __maybe_unused hda_tegra_runtime_resume(struct device *dev) if (rc != 0) return rc; if (chip->running) { - if (hda->soc->requires_init) - hda_tegra_init(hda); - + hda_tegra_init(hda); azx_init_chip(chip, 1); /* disable controller wake up event*/ azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & @@ -258,8 +252,7 @@ static int hda_tegra_init_chip(struct azx *chip, struct platform_device *pdev) bus->remap_addr = hda->regs + HDA_BAR0; bus->addr = res->start + HDA_BAR0; - if (hda->soc->requires_init) - hda_tegra_init(hda); + hda_tegra_init(hda); return 0; } @@ -332,7 +325,7 @@ static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev) * starts with offset 0 which is wrong as HW register for output stream * offset starts with 4. */ - if (!hda->soc->input_stream) + if (of_device_is_compatible(np, "nvidia,tegra234-hda")) chip->capture_streams = 4; chip->playback_streams = (gcap >> 12) & 0x0f; @@ -428,6 +421,7 @@ static int hda_tegra_create(struct snd_card *card, chip->driver_caps = driver_caps; chip->driver_type = driver_caps & 0xff; chip->dev_index = 0; + chip->jackpoll_interval = msecs_to_jiffies(5000); INIT_LIST_HEAD(&chip->pcm_list); chip->codec_probe_mask = -1; @@ -444,16 +438,7 @@ static int hda_tegra_create(struct snd_card *card, chip->bus.core.sync_write = 0; chip->bus.core.needs_damn_long_delay = 1; chip->bus.core.aligned_mmio = 1; - - /* - * HDA power domain and clocks are always on for Tegra264 and - * the jack detection logic would work always, so no need of - * jack polling mechanism running. - */ - if (!hda->soc->always_on) { - chip->jackpoll_interval = msecs_to_jiffies(5000); - chip->bus.jackpoll_in_suspend = 1; - } + chip->bus.jackpoll_in_suspend = 1; err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); if (err < 0) { @@ -467,44 +452,22 @@ static int hda_tegra_create(struct snd_card *card, static const struct hda_tegra_soc tegra30_data = { .has_hda2codec_2x_reset = true, .has_hda2hdmi = true, - .has_hda2codec_2x = true, - .input_stream = true, - .always_on = false, - .requires_init = true, }; static const struct hda_tegra_soc tegra194_data = { .has_hda2codec_2x_reset = false, .has_hda2hdmi = true, - .has_hda2codec_2x = true, - .input_stream = true, - .always_on = false, - .requires_init = true, }; static const struct hda_tegra_soc tegra234_data = { .has_hda2codec_2x_reset = true, .has_hda2hdmi = false, - .has_hda2codec_2x = true, - .input_stream = false, - .always_on = false, - .requires_init = true, -}; - -static const struct hda_tegra_soc tegra264_data = { - .has_hda2codec_2x_reset = true, - .has_hda2hdmi = false, - .has_hda2codec_2x = false, - .input_stream = false, - .always_on = true, - .requires_init = false, }; static const struct of_device_id hda_tegra_match[] = { { .compatible = "nvidia,tegra30-hda", .data = &tegra30_data }, { .compatible = "nvidia,tegra194-hda", .data = &tegra194_data }, { .compatible = "nvidia,tegra234-hda", .data = &tegra234_data }, - { .compatible = "nvidia,tegra264-hda", .data = &tegra264_data }, {}, }; MODULE_DEVICE_TABLE(of, hda_tegra_match); @@ -559,9 +522,7 @@ static int hda_tegra_probe(struct platform_device *pdev) hda->clocks[hda->nclocks++].id = "hda"; if (hda->soc->has_hda2hdmi) hda->clocks[hda->nclocks++].id = "hda2hdmi"; - - if (hda->soc->has_hda2codec_2x) - hda->clocks[hda->nclocks++].id = "hda2codec_2x"; + hda->clocks[hda->nclocks++].id = "hda2codec_2x"; err = devm_clk_bulk_get(&pdev->dev, hda->nclocks, hda->clocks); if (err < 0) diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 8ad3eb43874d..f030700cd60d 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -4559,7 +4559,6 @@ HDA_CODEC_ENTRY(0x10de002e, "Tegra186 HDMI/DP1", patch_tegra_hdmi), HDA_CODEC_ENTRY(0x10de002f, "Tegra194 HDMI/DP2", patch_tegra_hdmi), HDA_CODEC_ENTRY(0x10de0030, "Tegra194 HDMI/DP3", patch_tegra_hdmi), HDA_CODEC_ENTRY(0x10de0031, "Tegra234 HDMI/DP", patch_tegra234_hdmi), -HDA_CODEC_ENTRY(0x10de0034, "Tegra264 HDMI/DP", patch_tegra234_hdmi), HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi), HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi), -- Gitee From 3a318bbe5939519f05d750a75f808c83ae50bd4f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:09 +0800 Subject: [PATCH 0024/1421] Revert "comedi: comedi_test: Fix possible deletion of uninitialized timers" This reverts commit c82b40c002820c91621ff903ab62185e9823f6f7. --- drivers/comedi/drivers/comedi_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/comedi/drivers/comedi_test.c b/drivers/comedi/drivers/comedi_test.c index e713ef611434..05ae9122823f 100644 --- a/drivers/comedi/drivers/comedi_test.c +++ b/drivers/comedi/drivers/comedi_test.c @@ -790,7 +790,7 @@ static void waveform_detach(struct comedi_device *dev) { struct waveform_private *devpriv = dev->private; - if (devpriv && dev->n_subdevices) { + if (devpriv) { del_timer_sync(&devpriv->ai_timer); del_timer_sync(&devpriv->ao_timer); } -- Gitee From fcbc0655504ff3dfd6b3a6922eacc4e24b56d182 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:10 +0800 Subject: [PATCH 0025/1421] Revert "jfs: reject on-disk inodes of an unsupported type" This reverts commit c07f96c651e575aea4e6210b546a377493bb5548. --- fs/jfs/jfs_imap.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c index 35f3144d703b..9a6d504228e7 100644 --- a/fs/jfs/jfs_imap.c +++ b/fs/jfs/jfs_imap.c @@ -3029,23 +3029,14 @@ static void duplicateIXtree(struct super_block *sb, s64 blkno, * * RETURN VALUES: * 0 - success - * -EINVAL - unexpected inode type + * -ENOMEM - insufficient memory */ static int copy_from_dinode(struct dinode * dip, struct inode *ip) { struct jfs_inode_info *jfs_ip = JFS_IP(ip); struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); - int fileset = le32_to_cpu(dip->di_fileset); - - switch (fileset) { - case AGGR_RESERVED_I: case AGGREGATE_I: case BMAP_I: - case LOG_I: case BADBLOCK_I: case FILESYSTEM_I: - break; - default: - return -EINVAL; - } - jfs_ip->fileset = fileset; + jfs_ip->fileset = le32_to_cpu(dip->di_fileset); jfs_ip->mode2 = le32_to_cpu(dip->di_mode); jfs_set_inode_flags(ip); -- Gitee From d82b1c540d259875047d1c6ede28cf7cf9eccbb4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:10 +0800 Subject: [PATCH 0026/1421] Revert "x86/bugs: Fix use of possibly uninit value in amd_check_tsa_microcode()" This reverts commit 225f7f5eae8194fa624fc833c3ba134b6bad1e0b. --- arch/x86/kernel/cpu/amd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 864d62e94614..5fcdfbb792bd 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -549,8 +549,6 @@ static bool amd_check_tsa_microcode(void) p.model = c->x86_model; p.ext_model = c->x86_model >> 4; p.stepping = c->x86_stepping; - /* reserved bits are expected to be 0 in test below */ - p.__reserved = 0; if (cpu_has(c, X86_FEATURE_ZEN3) || cpu_has(c, X86_FEATURE_ZEN4)) { -- Gitee From b259413c3accbdd87b2a6aab536f7d09d6a676c1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:10 +0800 Subject: [PATCH 0027/1421] Revert "usb: typec: tcpm: apply vbus before data bringup in tcpm_src_attach" This reverts commit 07adb637cdb189c6a8d9b0d62b4722f4d336182e. --- drivers/usb/typec/tcpm/tcpm.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 5774b50eeaf7..c7680e10b622 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3622,6 +3622,17 @@ static int tcpm_src_attach(struct tcpm_port *port) tcpm_enable_auto_vbus_discharge(port, true); + ret = tcpm_set_roles(port, true, TYPEC_STATE_USB, + TYPEC_SOURCE, tcpm_data_role_for_source(port)); + if (ret < 0) + return ret; + + if (port->pd_supported) { + ret = port->tcpc->set_pd_rx(port->tcpc, true); + if (ret < 0) + goto out_disable_mux; + } + /* * USB Type-C specification, version 1.2, * chapter 4.5.2.2.8.1 (Attached.SRC Requirements) @@ -3631,24 +3642,13 @@ static int tcpm_src_attach(struct tcpm_port *port) (polarity == TYPEC_POLARITY_CC2 && port->cc1 == TYPEC_CC_RA)) { ret = tcpm_set_vconn(port, true); if (ret < 0) - return ret; + goto out_disable_pd; } ret = tcpm_set_vbus(port, true); if (ret < 0) goto out_disable_vconn; - ret = tcpm_set_roles(port, true, TYPEC_STATE_USB, TYPEC_SOURCE, - tcpm_data_role_for_source(port)); - if (ret < 0) - goto out_disable_vbus; - - if (port->pd_supported) { - ret = port->tcpc->set_pd_rx(port->tcpc, true); - if (ret < 0) - goto out_disable_mux; - } - port->pd_capable = false; port->partner = NULL; @@ -3658,14 +3658,14 @@ static int tcpm_src_attach(struct tcpm_port *port) return 0; +out_disable_vconn: + tcpm_set_vconn(port, false); +out_disable_pd: + if (port->pd_supported) + port->tcpc->set_pd_rx(port->tcpc, false); out_disable_mux: tcpm_mux_set(port, TYPEC_STATE_SAFE, USB_ROLE_NONE, TYPEC_ORIENTATION_NONE); -out_disable_vbus: - tcpm_set_vbus(port, false); -out_disable_vconn: - tcpm_set_vconn(port, false); - return ret; } -- Gitee From 89eb7f8916ccdffd795fa0eb3f75d679e4d3778e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:10 +0800 Subject: [PATCH 0028/1421] Revert "usb: typec: tcpm: allow switching to mode accessory to mux properly" This reverts commit 06508048bae1de63f034e476fb64b9706bb56b86. --- drivers/usb/typec/tcpm/tcpm.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c7680e10b622..af7e18f6e930 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -1041,7 +1041,7 @@ static int tcpm_set_attached_state(struct tcpm_port *port, bool attached) port->data_role); } -static int tcpm_set_roles(struct tcpm_port *port, bool attached, int state, +static int tcpm_set_roles(struct tcpm_port *port, bool attached, enum typec_role role, enum typec_data_role data) { enum typec_orientation orientation; @@ -1078,7 +1078,7 @@ static int tcpm_set_roles(struct tcpm_port *port, bool attached, int state, } } - ret = tcpm_mux_set(port, state, usb_role, orientation); + ret = tcpm_mux_set(port, TYPEC_STATE_USB, usb_role, orientation); if (ret < 0) return ret; @@ -3622,8 +3622,7 @@ static int tcpm_src_attach(struct tcpm_port *port) tcpm_enable_auto_vbus_discharge(port, true); - ret = tcpm_set_roles(port, true, TYPEC_STATE_USB, - TYPEC_SOURCE, tcpm_data_role_for_source(port)); + ret = tcpm_set_roles(port, true, TYPEC_SOURCE, tcpm_data_role_for_source(port)); if (ret < 0) return ret; @@ -3781,8 +3780,7 @@ static int tcpm_snk_attach(struct tcpm_port *port) tcpm_enable_auto_vbus_discharge(port, true); - ret = tcpm_set_roles(port, true, TYPEC_STATE_USB, - TYPEC_SINK, tcpm_data_role_for_sink(port)); + ret = tcpm_set_roles(port, true, TYPEC_SINK, tcpm_data_role_for_sink(port)); if (ret < 0) return ret; @@ -3806,7 +3804,6 @@ static int tcpm_acc_attach(struct tcpm_port *port) int ret; enum typec_role role; enum typec_data_role data; - int state = TYPEC_STATE_USB; if (port->attached) return 0; @@ -3815,13 +3812,7 @@ static int tcpm_acc_attach(struct tcpm_port *port) data = tcpm_port_is_sink(port) ? tcpm_data_role_for_sink(port) : tcpm_data_role_for_source(port); - if (tcpm_port_is_audio(port)) - state = TYPEC_MODE_AUDIO; - - if (tcpm_port_is_debug(port)) - state = TYPEC_MODE_DEBUG; - - ret = tcpm_set_roles(port, true, state, role, data); + ret = tcpm_set_roles(port, true, role, data); if (ret < 0) return ret; @@ -4523,7 +4514,7 @@ static void run_state_machine(struct tcpm_port *port) */ tcpm_set_vconn(port, false); tcpm_set_vbus(port, false); - tcpm_set_roles(port, port->self_powered, TYPEC_STATE_USB, TYPEC_SOURCE, + tcpm_set_roles(port, port->self_powered, TYPEC_SOURCE, tcpm_data_role_for_source(port)); /* * If tcpc fails to notify vbus off, TCPM will wait for PD_T_SAFE_0V + @@ -4555,7 +4546,7 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_vconn(port, false); if (port->pd_capable) tcpm_set_charge(port, false); - tcpm_set_roles(port, port->self_powered, TYPEC_STATE_USB, TYPEC_SINK, + tcpm_set_roles(port, port->self_powered, TYPEC_SINK, tcpm_data_role_for_sink(port)); /* * VBUS may or may not toggle, depending on the adapter. @@ -4661,10 +4652,10 @@ static void run_state_machine(struct tcpm_port *port) case DR_SWAP_CHANGE_DR: tcpm_unregister_altmodes(port); if (port->data_role == TYPEC_HOST) - tcpm_set_roles(port, true, TYPEC_STATE_USB, port->pwr_role, + tcpm_set_roles(port, true, port->pwr_role, TYPEC_DEVICE); else - tcpm_set_roles(port, true, TYPEC_STATE_USB, port->pwr_role, + tcpm_set_roles(port, true, port->pwr_role, TYPEC_HOST); tcpm_ams_finish(port); tcpm_set_state(port, ready_state(port), 0); -- Gitee From f72b844b41a98ebc12fa67e99fd645c5e38603fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:11 +0800 Subject: [PATCH 0029/1421] Revert "usb: typec: tcpm: allow to use sink in accessory mode" This reverts commit 5e38e00897f1449bb7ddf19ab43e5554245a0ff4. --- drivers/usb/typec/tcpm/tcpm.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index af7e18f6e930..bfcbccb400c3 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3802,17 +3802,12 @@ static void tcpm_snk_detach(struct tcpm_port *port) static int tcpm_acc_attach(struct tcpm_port *port) { int ret; - enum typec_role role; - enum typec_data_role data; if (port->attached) return 0; - role = tcpm_port_is_sink(port) ? TYPEC_SINK : TYPEC_SOURCE; - data = tcpm_port_is_sink(port) ? tcpm_data_role_for_sink(port) - : tcpm_data_role_for_source(port); - - ret = tcpm_set_roles(port, true, role, data); + ret = tcpm_set_roles(port, true, TYPEC_SOURCE, + tcpm_data_role_for_source(port)); if (ret < 0) return ret; -- Gitee From 0101a709be4b9c952e945dc48f8c875f19ebc8ac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:11 +0800 Subject: [PATCH 0030/1421] Revert "drm/amdkfd: Don't call mmput from MMU notifier callback" This reverts commit f3385165c7bc412154ce5032482527de1fa7c5c2. --- drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 47 +++++++++++++++------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c index b77b47233231..6b7c6f45a80a 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c @@ -1130,12 +1130,13 @@ svm_range_split_head(struct svm_range *prange, } static void -svm_range_add_child(struct svm_range *prange, struct svm_range *pchild, enum svm_work_list_ops op) +svm_range_add_child(struct svm_range *prange, struct mm_struct *mm, + struct svm_range *pchild, enum svm_work_list_ops op) { pr_debug("add child 0x%p [0x%lx 0x%lx] to prange 0x%p child list %d\n", pchild, pchild->start, pchild->last, prange, op); - pchild->work_item.mm = NULL; + pchild->work_item.mm = mm; pchild->work_item.op = op; list_add_tail(&pchild->child_list, &prange->child_list); } @@ -1181,14 +1182,14 @@ svm_range_split_by_granularity(struct kfd_process *p, struct mm_struct *mm, r = svm_range_split(prange, start, prange->last, &head); if (r) return r; - svm_range_add_child(parent, head, SVM_OP_ADD_RANGE); + svm_range_add_child(parent, mm, head, SVM_OP_ADD_RANGE); } if (last < prange->last) { r = svm_range_split(prange, prange->start, last, &tail); if (r) return r; - svm_range_add_child(parent, tail, SVM_OP_ADD_RANGE); + svm_range_add_child(parent, mm, tail, SVM_OP_ADD_RANGE); } /* xnack on, update mapping on GPUs with ACCESS_IN_PLACE */ @@ -2392,17 +2393,15 @@ svm_range_add_list_work(struct svm_range_list *svms, struct svm_range *prange, prange->work_item.op != SVM_OP_UNMAP_RANGE) prange->work_item.op = op; } else { - /* Pairs with mmput in deferred_list_work. - * If process is exiting and mm is gone, don't update mmu notifier. - */ - if (mmget_not_zero(mm)) { - prange->work_item.mm = mm; - prange->work_item.op = op; - list_add_tail(&prange->deferred_list, - &prange->svms->deferred_range_list); - pr_debug("add prange 0x%p [0x%lx 0x%lx] to work list op %d\n", - prange, prange->start, prange->last, op); - } + prange->work_item.op = op; + + /* Pairs with mmput in deferred_list_work */ + mmget(mm); + prange->work_item.mm = mm; + list_add_tail(&prange->deferred_list, + &prange->svms->deferred_range_list); + pr_debug("add prange 0x%p [0x%lx 0x%lx] to work list op %d\n", + prange, prange->start, prange->last, op); } spin_unlock(&svms->deferred_list_lock); } @@ -2416,7 +2415,8 @@ void schedule_deferred_list_work(struct svm_range_list *svms) } static void -svm_range_unmap_split(struct svm_range *parent, struct svm_range *prange, unsigned long start, +svm_range_unmap_split(struct mm_struct *mm, struct svm_range *parent, + struct svm_range *prange, unsigned long start, unsigned long last) { struct svm_range *head; @@ -2437,12 +2437,12 @@ svm_range_unmap_split(struct svm_range *parent, struct svm_range *prange, unsign svm_range_split(tail, last + 1, tail->last, &head); if (head != prange && tail != prange) { - svm_range_add_child(parent, head, SVM_OP_UNMAP_RANGE); - svm_range_add_child(parent, tail, SVM_OP_ADD_RANGE); + svm_range_add_child(parent, mm, head, SVM_OP_UNMAP_RANGE); + svm_range_add_child(parent, mm, tail, SVM_OP_ADD_RANGE); } else if (tail != prange) { - svm_range_add_child(parent, tail, SVM_OP_UNMAP_RANGE); + svm_range_add_child(parent, mm, tail, SVM_OP_UNMAP_RANGE); } else if (head != prange) { - svm_range_add_child(parent, head, SVM_OP_UNMAP_RANGE); + svm_range_add_child(parent, mm, head, SVM_OP_UNMAP_RANGE); } else if (parent != prange) { prange->work_item.op = SVM_OP_UNMAP_RANGE; } @@ -2481,14 +2481,14 @@ svm_range_unmap_from_cpu(struct mm_struct *mm, struct svm_range *prange, l = min(last, pchild->last); if (l >= s) svm_range_unmap_from_gpus(pchild, s, l, trigger); - svm_range_unmap_split(prange, pchild, start, last); + svm_range_unmap_split(mm, prange, pchild, start, last); mutex_unlock(&pchild->lock); } s = max(start, prange->start); l = min(last, prange->last); if (l >= s) svm_range_unmap_from_gpus(prange, s, l, trigger); - svm_range_unmap_split(prange, prange, start, last); + svm_range_unmap_split(mm, prange, prange, start, last); if (unmap_parent) svm_range_add_list_work(svms, prange, mm, SVM_OP_UNMAP_RANGE); @@ -2531,6 +2531,8 @@ svm_range_cpu_invalidate_pagetables(struct mmu_interval_notifier *mni, if (range->event == MMU_NOTIFY_RELEASE) return true; + if (!mmget_not_zero(mni->mm)) + return true; start = mni->interval_tree.start; last = mni->interval_tree.last; @@ -2557,6 +2559,7 @@ svm_range_cpu_invalidate_pagetables(struct mmu_interval_notifier *mni, } svm_range_unlock(prange); + mmput(mni->mm); return true; } -- Gitee From 4e5c67d6c09e0edf3a0019655aee13e36d4345a7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:11 +0800 Subject: [PATCH 0031/1421] Revert "mm/zsmalloc: do not pass __GFP_MOVABLE if CONFIG_COMPACTION=n" This reverts commit 0fbeb292e17ca44bf47d978d04b62c98c3601c05. --- mm/zsmalloc.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index c82070167d8a..b58f957429f0 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -988,9 +988,6 @@ static struct zspage *alloc_zspage(struct zs_pool *pool, if (!zspage) return NULL; - if (!IS_ENABLED(CONFIG_COMPACTION)) - gfp &= ~__GFP_MOVABLE; - zspage->magic = ZSPAGE_MAGIC; migrate_lock_init(zspage); -- Gitee From 4425a44798faa6746b391740415682307d5e12c0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:11 +0800 Subject: [PATCH 0032/1421] Revert "selftests: mptcp: connect: also cover checksum" This reverts commit 7d903e000e24e8ad13da92c31b534331ebfcbd5b. --- tools/testing/selftests/net/mptcp/Makefile | 2 +- tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile index 3c2fb9efb0b1..89c44bf84e70 100644 --- a/tools/testing/selftests/net/mptcp/Makefile +++ b/tools/testing/selftests/net/mptcp/Makefile @@ -5,7 +5,7 @@ top_srcdir = ../../../../.. CFLAGS = -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES) TEST_PROGS := mptcp_connect.sh mptcp_connect_mmap.sh mptcp_connect_sendfile.sh \ - mptcp_connect_checksum.sh pm_netlink.sh mptcp_join.sh diag.sh \ + pm_netlink.sh mptcp_join.sh diag.sh \ simult_flows.sh mptcp_sockopt.sh userspace_pm.sh TEST_GEN_FILES = mptcp_connect pm_nl_ctl mptcp_sockopt mptcp_inq diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh b/tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh deleted file mode 100644 index ce93ec2f107f..000000000000 --- a/tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 - -MPTCP_LIB_KSFT_TEST="$(basename "${0}" .sh)" \ - "$(dirname "${0}")/mptcp_connect.sh" -C "${@}" -- Gitee From 7968a59f73b0216b9cf77a79cad7078a1710d753 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:12 +0800 Subject: [PATCH 0033/1421] Revert "selftests: mptcp: connect: also cover alt modes" This reverts commit 47b9fa10fc40368be41d957eb83e3a87312a4230. --- tools/testing/selftests/net/mptcp/Makefile | 3 +-- tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh | 5 ----- tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh | 5 ----- 3 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh delete mode 100644 tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile index 89c44bf84e70..7b936a926859 100644 --- a/tools/testing/selftests/net/mptcp/Makefile +++ b/tools/testing/selftests/net/mptcp/Makefile @@ -4,8 +4,7 @@ top_srcdir = ../../../../.. CFLAGS = -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES) -TEST_PROGS := mptcp_connect.sh mptcp_connect_mmap.sh mptcp_connect_sendfile.sh \ - pm_netlink.sh mptcp_join.sh diag.sh \ +TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \ simult_flows.sh mptcp_sockopt.sh userspace_pm.sh TEST_GEN_FILES = mptcp_connect pm_nl_ctl mptcp_sockopt mptcp_inq diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh b/tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh deleted file mode 100644 index 5dd30f9394af..000000000000 --- a/tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 - -MPTCP_LIB_KSFT_TEST="$(basename "${0}" .sh)" \ - "$(dirname "${0}")/mptcp_connect.sh" -m mmap "${@}" diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh b/tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh deleted file mode 100644 index 1d16fb1cc9bb..000000000000 --- a/tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 - -MPTCP_LIB_KSFT_TEST="$(basename "${0}" .sh)" \ - "$(dirname "${0}")/mptcp_connect.sh" -m sendfile "${@}" -- Gitee From a3973bfb2f29f678408f0e3544e42483d0ef24a8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:12 +0800 Subject: [PATCH 0034/1421] Revert "resource: fix false warning in __request_region()" This reverts commit 40ff1ebe319e165dc3a5ee1636525ba00e15c547. --- kernel/resource.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/resource.c b/kernel/resource.c index 6506839f8a81..635e858db0fe 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -1222,9 +1222,8 @@ static int __request_region_locked(struct resource *res, struct resource *parent * become unavailable to other users. Conflicts are * not expected. Warn to aid debugging if encountered. */ - if (parent == &iomem_resource && - conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) { - pr_warn("Unaddressable device %s %pR conflicts with %pR\n", + if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) { + pr_warn("Unaddressable device %s %pR conflicts with %pR", conflict->name, conflict, res); } if (conflict != parent) { -- Gitee From 22bc52152f6e04461cc17a7a0dd9c8b9f4754387 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:12 +0800 Subject: [PATCH 0035/1421] Revert "nilfs2: reject invalid file types when reading inodes" This reverts commit d439633f04e6af2cf7a0f735f97743a6d0cace5d. --- fs/nilfs2/inode.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c index 8c47c13c8e71..5f2d73f36e0d 100644 --- a/fs/nilfs2/inode.c +++ b/fs/nilfs2/inode.c @@ -517,18 +517,11 @@ static int __nilfs_read_inode(struct super_block *sb, inode->i_op = &nilfs_symlink_inode_operations; inode_nohighmem(inode); inode->i_mapping->a_ops = &nilfs_aops; - } else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || - S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { + } else { inode->i_op = &nilfs_special_inode_operations; init_special_inode( inode, inode->i_mode, huge_decode_dev(le64_to_cpu(raw_inode->i_device_code))); - } else { - nilfs_error(sb, - "invalid file type bits in mode 0%o for inode %lu", - inode->i_mode, ino); - err = -EIO; - goto failed_unmap; } nilfs_ifile_unmap_inode(root->ifile, ino, bh); brelse(bh); -- Gitee From 16dc88734d8f2942fc341fee7d51d449c9dd2fed Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:12 +0800 Subject: [PATCH 0036/1421] Revert "kasan: use vmalloc_dump_obj() for vmalloc error reports" This reverts commit b45669c6c21f7f5c89e611a538fbfe958c34d50d. --- mm/kasan/report.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 7301773b5208..44636fa953a7 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -385,9 +385,7 @@ static void print_address_description(void *addr, u8 tag, } if (is_vmalloc_addr(addr)) { - pr_err("The buggy address belongs to a"); - if (!vmalloc_dump_obj(addr)) - pr_cont(" vmalloc virtual mapping\n"); + pr_err("The buggy address %px belongs to a vmalloc virtual mapping\n", addr); page = vmalloc_to_page(addr); } -- Gitee From 0c2eafa890d45a178c716da4bb1cf4342c8f8794 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:13 +0800 Subject: [PATCH 0037/1421] Revert "ice: Fix a null pointer dereference in ice_copy_and_init_pkg()" This reverts commit 627abf5cf5cbbdf9fa8f85d2fff58846a04fb127. --- drivers/net/ethernet/intel/ice/ice_ddp.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.c b/drivers/net/ethernet/intel/ice/ice_ddp.c index cd97974b451a..b27ec93638b6 100644 --- a/drivers/net/ethernet/intel/ice/ice_ddp.c +++ b/drivers/net/ethernet/intel/ice/ice_ddp.c @@ -1884,8 +1884,6 @@ enum ice_ddp_state ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, return ICE_DDP_PKG_ERR; buf_copy = devm_kmemdup(ice_hw_to_dev(hw), buf, len, GFP_KERNEL); - if (!buf_copy) - return ICE_DDP_PKG_ERR; state = ice_init_pkg(hw, buf_copy, len); if (!ice_is_init_pkg_successful(state)) { -- Gitee From 040de48b69d7d1addfa859e8eee12ac485f994a1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:13 +0800 Subject: [PATCH 0038/1421] Revert "gve: Fix stuck TX queue for DQ queue format" This reverts commit 38a1187b925d6696cbdc3c69fa398024784cf235. --- drivers/net/ethernet/google/gve/gve_main.c | 67 ++++++++++------------ 1 file changed, 30 insertions(+), 37 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c index ec189f0703f9..b4745d94cbbd 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -1801,56 +1801,49 @@ static void gve_turnup(struct gve_priv *priv) gve_set_napi_enabled(priv); } -static struct gve_notify_block *gve_get_tx_notify_block(struct gve_priv *priv, - unsigned int txqueue) +static void gve_tx_timeout(struct net_device *dev, unsigned int txqueue) { + struct gve_notify_block *block; + struct gve_tx_ring *tx = NULL; + struct gve_priv *priv; + u32 last_nic_done; + u32 current_time; u32 ntfy_idx; + netdev_info(dev, "Timeout on tx queue, %d", txqueue); + priv = netdev_priv(dev); if (txqueue > priv->tx_cfg.num_queues) - return NULL; + goto reset; ntfy_idx = gve_tx_idx_to_ntfy(priv, txqueue); if (ntfy_idx >= priv->num_ntfy_blks) - return NULL; - - return &priv->ntfy_blocks[ntfy_idx]; -} - -static bool gve_tx_timeout_try_q_kick(struct gve_priv *priv, - unsigned int txqueue) -{ - struct gve_notify_block *block; - u32 current_time; - - block = gve_get_tx_notify_block(priv, txqueue); + goto reset; - if (!block) - return false; + block = &priv->ntfy_blocks[ntfy_idx]; + tx = block->tx; current_time = jiffies_to_msecs(jiffies); - if (block->tx->last_kick_msec + MIN_TX_TIMEOUT_GAP > current_time) - return false; - - netdev_info(priv->dev, "Kicking queue %d", txqueue); - napi_schedule(&block->napi); - block->tx->last_kick_msec = current_time; - return true; -} - -static void gve_tx_timeout(struct net_device *dev, unsigned int txqueue) -{ - struct gve_notify_block *block; - struct gve_priv *priv; + if (tx->last_kick_msec + MIN_TX_TIMEOUT_GAP > current_time) + goto reset; - netdev_info(dev, "Timeout on tx queue, %d", txqueue); - priv = netdev_priv(dev); + /* Check to see if there are missed completions, which will allow us to + * kick the queue. + */ + last_nic_done = gve_tx_load_event_counter(priv, tx); + if (last_nic_done - tx->done) { + netdev_info(dev, "Kicking queue %d", txqueue); + iowrite32be(GVE_IRQ_MASK, gve_irq_doorbell(priv, block)); + napi_schedule(&block->napi); + tx->last_kick_msec = current_time; + goto out; + } // Else reset. - if (!gve_tx_timeout_try_q_kick(priv, txqueue)) - gve_schedule_reset(priv); +reset: + gve_schedule_reset(priv); - block = gve_get_tx_notify_block(priv, txqueue); - if (block) - block->tx->queue_timeout++; +out: + if (tx) + tx->queue_timeout++; priv->tx_timeo_cnt++; } -- Gitee From cdee41516425ca5205fa56593f2bc04698caffb3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:13 +0800 Subject: [PATCH 0039/1421] Revert "e1000e: ignore uninitialized checksum word on tgp" This reverts commit 80712e9c3ec2321b42cd4858ccb0841d9658f27f. --- drivers/net/ethernet/intel/e1000e/defines.h | 3 --- drivers/net/ethernet/intel/e1000e/nvm.c | 6 ------ 2 files changed, 9 deletions(-) diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h index 955bb1161857..0a35d36c2c85 100644 --- a/drivers/net/ethernet/intel/e1000e/defines.h +++ b/drivers/net/ethernet/intel/e1000e/defines.h @@ -638,9 +638,6 @@ /* For checksumming, the sum of all words in the NVM should equal 0xBABA. */ #define NVM_SUM 0xBABA -/* Uninitialized ("empty") checksum word value */ -#define NVM_CHECKSUM_UNINITIALIZED 0xFFFF - /* PBA (printed board assembly) number words */ #define NVM_PBA_OFFSET_0 8 #define NVM_PBA_OFFSET_1 9 diff --git a/drivers/net/ethernet/intel/e1000e/nvm.c b/drivers/net/ethernet/intel/e1000e/nvm.c index 16369e6d245a..e609f4df86f4 100644 --- a/drivers/net/ethernet/intel/e1000e/nvm.c +++ b/drivers/net/ethernet/intel/e1000e/nvm.c @@ -558,12 +558,6 @@ s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw) checksum += nvm_data; } - if (hw->mac.type == e1000_pch_tgp && - nvm_data == NVM_CHECKSUM_UNINITIALIZED) { - e_dbg("Uninitialized NVM Checksum on TGP platform - ignoring\n"); - return 0; - } - if (checksum != (u16)NVM_SUM) { e_dbg("NVM Checksum Invalid\n"); return -E1000_ERR_NVM; -- Gitee From 4316883a0ab11540d1713c9d4f8d93df64a00b83 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:13 +0800 Subject: [PATCH 0040/1421] Revert "e1000e: disregard NVM checksum on tgp when valid checksum bit is not set" This reverts commit 82ee612a278c8fa9f110fd00d125e7bc9c3e12dd. --- drivers/net/ethernet/intel/e1000e/ich8lan.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c index df4e7d781cb1..364378133526 100644 --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c @@ -4274,8 +4274,6 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw) ret_val = e1000e_update_nvm_checksum(hw); if (ret_val) return ret_val; - } else if (hw->mac.type == e1000_pch_tgp) { - return 0; } } -- Gitee From 6cdb97457dac8576d07886b3c3380df516205bab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:13 +0800 Subject: [PATCH 0041/1421] Revert "dpaa2-switch: Fix device reference count leak in MAC endpoint handling" This reverts commit 5df083c3c89f23cf3ecf8fc58beae4991a65ffb3. --- .../net/ethernet/freescale/dpaa2/dpaa2-switch.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c index 76795bb0b564..a05a8525caa4 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c @@ -1447,19 +1447,12 @@ static int dpaa2_switch_port_connect_mac(struct ethsw_port_priv *port_priv) if (PTR_ERR(dpmac_dev) == -EPROBE_DEFER) return PTR_ERR(dpmac_dev); - if (IS_ERR(dpmac_dev)) + if (IS_ERR(dpmac_dev) || dpmac_dev->dev.type != &fsl_mc_bus_dpmac_type) return 0; - if (dpmac_dev->dev.type != &fsl_mc_bus_dpmac_type) { - err = 0; - goto out_put_device; - } - mac = kzalloc(sizeof(*mac), GFP_KERNEL); - if (!mac) { - err = -ENOMEM; - goto out_put_device; - } + if (!mac) + return -ENOMEM; mac->mc_dev = dpmac_dev; mac->mc_io = port_priv->ethsw_data->mc_io; @@ -1489,8 +1482,6 @@ static int dpaa2_switch_port_connect_mac(struct ethsw_port_priv *port_priv) dpaa2_mac_close(mac); err_free_mac: kfree(mac); -out_put_device: - put_device(&dpmac_dev->dev); return err; } -- Gitee From db8a231ddc4cbd3afb24b65accb9e4d02bf76f1a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:14 +0800 Subject: [PATCH 0042/1421] Revert "dpaa2-eth: Fix device reference count leak in MAC endpoint handling" This reverts commit 9807e4517a87c345a9048817511f122588346886. --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 81a99f4824d0..d3c36a6f84b0 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -4654,19 +4654,12 @@ static int dpaa2_eth_connect_mac(struct dpaa2_eth_priv *priv) return PTR_ERR(dpmac_dev); } - if (IS_ERR(dpmac_dev)) + if (IS_ERR(dpmac_dev) || dpmac_dev->dev.type != &fsl_mc_bus_dpmac_type) return 0; - if (dpmac_dev->dev.type != &fsl_mc_bus_dpmac_type) { - err = 0; - goto out_put_device; - } - mac = kzalloc(sizeof(struct dpaa2_mac), GFP_KERNEL); - if (!mac) { - err = -ENOMEM; - goto out_put_device; - } + if (!mac) + return -ENOMEM; mac->mc_dev = dpmac_dev; mac->mc_io = priv->mc_io; @@ -4700,8 +4693,6 @@ static int dpaa2_eth_connect_mac(struct dpaa2_eth_priv *priv) dpaa2_mac_close(mac); err_free_mac: kfree(mac); -out_put_device: - put_device(&dpmac_dev->dev); return err; } -- Gitee From 774a7ee515ce1e7e6d63017981f67d8db25e814f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:14 +0800 Subject: [PATCH 0043/1421] Revert "arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack()" This reverts commit ce7d271f9de0e18789d26fdd9ee315a7de9fd5b3. --- arch/arm64/include/asm/assembler.h | 5 ----- arch/arm64/kernel/entry.S | 6 ------ 2 files changed, 11 deletions(-) diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index 0fa067c2324d..376a980f2bad 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h @@ -45,11 +45,6 @@ /* * Save/restore interrupts. */ - .macro save_and_disable_daif, flags - mrs \flags, daif - msr daifset, #0xf - .endm - .macro save_and_disable_irq, flags mrs \flags, daif msr daifset, #3 diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 60a3cf3da718..7fcbee0f6c0e 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -824,7 +824,6 @@ SYM_CODE_END(__bp_harden_el1_vectors) * */ SYM_FUNC_START(cpu_switch_to) - save_and_disable_daif x11 mov x10, #THREAD_CPU_CONTEXT add x8, x0, x10 mov x9, sp @@ -848,7 +847,6 @@ SYM_FUNC_START(cpu_switch_to) ptrauth_keys_install_kernel x1, x8, x9, x10 scs_save x0 scs_load_current - restore_irq x11 ret SYM_FUNC_END(cpu_switch_to) NOKPROBE(cpu_switch_to) @@ -875,7 +873,6 @@ NOKPROBE(ret_from_fork) * Calls func(regs) using this CPU's irq stack and shadow irq stack. */ SYM_FUNC_START(call_on_irq_stack) - save_and_disable_daif x9 #ifdef CONFIG_SHADOW_CALL_STACK get_current_task x16 scs_save x16 @@ -890,10 +887,8 @@ SYM_FUNC_START(call_on_irq_stack) /* Move to the new stack and call the function there */ add sp, x16, #IRQ_STACK_SIZE - restore_irq x9 blr x1 - save_and_disable_daif x9 /* * Restore the SP from the FP, and restore the FP and LR from the frame * record. @@ -901,7 +896,6 @@ SYM_FUNC_START(call_on_irq_stack) mov sp, x29 ldp x29, x30, [sp], #16 scs_load_current - restore_irq x9 ret SYM_FUNC_END(call_on_irq_stack) NOKPROBE(call_on_irq_stack) -- Gitee From 92b5792e9cee70f106f9548b21a04d21eaae7ab8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:14 +0800 Subject: [PATCH 0044/1421] Revert "ALSA: hda/realtek - Add mute LED support for HP Pavilion 15-eg0xxx" This reverts commit 54184f891acab32ad4f56a533e26831cca8b8f04. --- sound/pci/hda/patch_realtek.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index e12e3134b5e1..614784c0ba31 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -10103,7 +10103,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x87b7, "HP Laptop 14-fq0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2), SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED), - SND_PCI_QUIRK(0x103c, 0x87cc, "HP Pavilion 15-eg0xxx", ALC287_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87d3, "HP Laptop 15-gw0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2), SND_PCI_QUIRK(0x103c, 0x87df, "HP ProBook 430 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87e5, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), -- Gitee From caeb0cc524a6108dcafc7aad560a6218ecbd332a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:14 +0800 Subject: [PATCH 0045/1421] Revert "sprintf.h requires stdarg.h" This reverts commit 91df1658724153693d57b997b771a04c1791fc34. --- include/linux/sprintf.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/linux/sprintf.h b/include/linux/sprintf.h index 9e13b8040b12..33dcbec71925 100644 --- a/include/linux/sprintf.h +++ b/include/linux/sprintf.h @@ -4,7 +4,6 @@ #include #include -#include int num_to_str(char *buf, int size, unsigned long long num, unsigned int width); -- Gitee From cd29ed51e07c2b9693dc4caf3518196ecdb83190 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:15 +0800 Subject: [PATCH 0046/1421] Revert "bus: fsl-mc: Fix potential double device reference in fsl_mc_get_endpoint()" This reverts commit 4998e37900118c5746a69fc2cbc04479305b339c. --- drivers/bus/fsl-mc/fsl-mc-bus.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c b/drivers/bus/fsl-mc/fsl-mc-bus.c index 350e7b24ee2b..b405ee330af1 100644 --- a/drivers/bus/fsl-mc/fsl-mc-bus.c +++ b/drivers/bus/fsl-mc/fsl-mc-bus.c @@ -942,7 +942,6 @@ struct fsl_mc_device *fsl_mc_get_endpoint(struct fsl_mc_device *mc_dev, struct fsl_mc_obj_desc endpoint_desc = {{ 0 }}; struct dprc_endpoint endpoint1 = {{ 0 }}; struct dprc_endpoint endpoint2 = {{ 0 }}; - struct fsl_mc_bus *mc_bus; int state, err; mc_bus_dev = to_fsl_mc_device(mc_dev->dev.parent); @@ -966,8 +965,6 @@ struct fsl_mc_device *fsl_mc_get_endpoint(struct fsl_mc_device *mc_dev, strcpy(endpoint_desc.type, endpoint2.type); endpoint_desc.id = endpoint2.id; endpoint = fsl_mc_device_lookup(&endpoint_desc, mc_bus_dev); - if (endpoint) - return endpoint; /* * We know that the device has an endpoint because we verified by @@ -975,13 +972,17 @@ struct fsl_mc_device *fsl_mc_get_endpoint(struct fsl_mc_device *mc_dev, * yet discovered by the fsl-mc bus, thus the lookup returned NULL. * Force a rescan of the devices in this container and retry the lookup. */ - mc_bus = to_fsl_mc_bus(mc_bus_dev); - if (mutex_trylock(&mc_bus->scan_mutex)) { - err = dprc_scan_objects(mc_bus_dev, true); - mutex_unlock(&mc_bus->scan_mutex); + if (!endpoint) { + struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev); + + if (mutex_trylock(&mc_bus->scan_mutex)) { + err = dprc_scan_objects(mc_bus_dev, true); + mutex_unlock(&mc_bus->scan_mutex); + } + + if (err < 0) + return ERR_PTR(err); } - if (err < 0) - return ERR_PTR(err); endpoint = fsl_mc_device_lookup(&endpoint_desc, mc_bus_dev); /* -- Gitee From e3f76a036a2da8ac14f40e7bd93eb324bafef650 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:15 +0800 Subject: [PATCH 0047/1421] Revert "i2c: virtio: Avoid hang by using interruptible completion wait" This reverts commit 2b07e3da4dc1eece5696321363a268a3ef4ce750. --- drivers/i2c/busses/i2c-virtio.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c index 726c162cabd8..c60ae531ba57 100644 --- a/drivers/i2c/busses/i2c-virtio.c +++ b/drivers/i2c/busses/i2c-virtio.c @@ -116,16 +116,15 @@ static int virtio_i2c_complete_reqs(struct virtqueue *vq, for (i = 0; i < num; i++) { struct virtio_i2c_req *req = &reqs[i]; - if (!failed) { - if (wait_for_completion_interruptible(&req->completion)) - failed = true; - else if (req->in_hdr.status != VIRTIO_I2C_MSG_OK) - failed = true; - else - j++; - } + wait_for_completion(&req->completion); + + if (!failed && req->in_hdr.status != VIRTIO_I2C_MSG_OK) + failed = true; i2c_put_dma_safe_msg_buf(reqs[i].buf, &msgs[i], !failed); + + if (!failed) + j++; } return j; -- Gitee From b037df9a92f95cf67325c63f58bddf5b01495dc8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:15 +0800 Subject: [PATCH 0048/1421] Revert "i2c: tegra: Fix reset error handling with ACPI" This reverts commit 1e9a9c5904964b65cb9d4931802a7dc08b0f62cb. --- drivers/i2c/busses/i2c-tegra.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 5766231b13cd..08a81daedc11 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -607,6 +607,7 @@ static int tegra_i2c_wait_for_config_load(struct tegra_i2c_dev *i2c_dev) static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev) { u32 val, clk_divisor, clk_multiplier, tsu_thd, tlow, thigh, non_hs_mode; + acpi_handle handle = ACPI_HANDLE(i2c_dev->dev); struct i2c_timings *t = &i2c_dev->timings; int err; @@ -618,7 +619,11 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev) * emit a noisy warning on error, which won't stay unnoticed and * won't hose machine entirely. */ - err = device_reset(i2c_dev->dev); + if (handle) + err = acpi_evaluate_object(handle, "_RST", NULL, NULL); + else + err = reset_control_reset(i2c_dev->rst); + WARN_ON_ONCE(err); if (IS_DVC(i2c_dev)) @@ -1663,6 +1668,19 @@ static void tegra_i2c_parse_dt(struct tegra_i2c_dev *i2c_dev) i2c_dev->is_vi = true; } +static int tegra_i2c_init_reset(struct tegra_i2c_dev *i2c_dev) +{ + if (ACPI_HANDLE(i2c_dev->dev)) + return 0; + + i2c_dev->rst = devm_reset_control_get_exclusive(i2c_dev->dev, "i2c"); + if (IS_ERR(i2c_dev->rst)) + return dev_err_probe(i2c_dev->dev, PTR_ERR(i2c_dev->rst), + "failed to get reset control\n"); + + return 0; +} + static int tegra_i2c_init_clocks(struct tegra_i2c_dev *i2c_dev) { int err; @@ -1772,6 +1790,10 @@ static int tegra_i2c_probe(struct platform_device *pdev) tegra_i2c_parse_dt(i2c_dev); + err = tegra_i2c_init_reset(i2c_dev); + if (err) + return err; + err = tegra_i2c_init_clocks(i2c_dev); if (err) return err; -- Gitee From c069d80d15da56029fc09ef169f674a3a084d453 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:15 +0800 Subject: [PATCH 0049/1421] Revert "i2c: qup: jump out of the loop in case of timeout" This reverts commit a151cf66f27a6ad83d5f7400653e0cf34f547763. --- drivers/i2c/busses/i2c-qup.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c index f324f397356c..ee92a315f074 100644 --- a/drivers/i2c/busses/i2c-qup.c +++ b/drivers/i2c/busses/i2c-qup.c @@ -452,10 +452,8 @@ static int qup_i2c_bus_active(struct qup_i2c_dev *qup, int len) if (!(status & I2C_STATUS_BUS_ACTIVE)) break; - if (time_after(jiffies, timeout)) { + if (time_after(jiffies, timeout)) ret = -ETIMEDOUT; - break; - } usleep_range(len, len * 2); } -- Gitee From b6983fa37fa80455c366b801d8619e0ca8ebd970 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:15 +0800 Subject: [PATCH 0050/1421] Revert "platform/x86: ideapad-laptop: Fix kbd backlight not remembered among boots" This reverts commit fe3a7c25facb11cda278d3a101bc615580bc8cfa. --- drivers/platform/x86/ideapad-laptop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index 17a9e4bd638d..e84fcb444d87 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -1600,7 +1600,7 @@ static int ideapad_kbd_bl_init(struct ideapad_private *priv) priv->kbd_bl.led.name = "platform::" LED_FUNCTION_KBD_BACKLIGHT; priv->kbd_bl.led.brightness_get = ideapad_kbd_bl_led_cdev_brightness_get; priv->kbd_bl.led.brightness_set_blocking = ideapad_kbd_bl_led_cdev_brightness_set; - priv->kbd_bl.led.flags = LED_BRIGHT_HW_CHANGED | LED_RETAIN_AT_SHUTDOWN; + priv->kbd_bl.led.flags = LED_BRIGHT_HW_CHANGED; err = led_classdev_register(&priv->platform_device->dev, &priv->kbd_bl.led); if (err) -- Gitee From b872b92ae3fe09729a8cf9f895acfd76a711e189 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:16 +0800 Subject: [PATCH 0051/1421] Revert "net: hns3: default enable tx bounce buffer when smmu enabled" This reverts commit 0deebc94dc9ec6051984d70df8832718e7dee66b. --- .../net/ethernet/hisilicon/hns3/hns3_enet.c | 31 ------------------- .../net/ethernet/hisilicon/hns3/hns3_enet.h | 2 -- 2 files changed, 33 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index dbf44a17987e..0ed01f4d6806 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -1040,8 +1039,6 @@ static bool hns3_can_use_tx_sgl(struct hns3_enet_ring *ring, static void hns3_init_tx_spare_buffer(struct hns3_enet_ring *ring) { u32 alloc_size = ring->tqp->handle->kinfo.tx_spare_buf_size; - struct net_device *netdev = ring_to_netdev(ring); - struct hns3_nic_priv *priv = netdev_priv(netdev); struct hns3_tx_spare *tx_spare; struct page *page; dma_addr_t dma; @@ -1083,7 +1080,6 @@ static void hns3_init_tx_spare_buffer(struct hns3_enet_ring *ring) tx_spare->buf = page_address(page); tx_spare->len = PAGE_SIZE << order; ring->tx_spare = tx_spare; - ring->tx_copybreak = priv->tx_copybreak; return; dma_mapping_error: @@ -4883,30 +4879,6 @@ static void hns3_nic_dealloc_vector_data(struct hns3_nic_priv *priv) devm_kfree(&pdev->dev, priv->tqp_vector); } -static void hns3_update_tx_spare_buf_config(struct hns3_nic_priv *priv) -{ -#define HNS3_MIN_SPARE_BUF_SIZE (2 * 1024 * 1024) -#define HNS3_MAX_PACKET_SIZE (64 * 1024) - - struct iommu_domain *domain = iommu_get_domain_for_dev(priv->dev); - struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(priv->ae_handle); - struct hnae3_handle *handle = priv->ae_handle; - - if (ae_dev->dev_version < HNAE3_DEVICE_VERSION_V3) - return; - - if (!(domain && iommu_is_dma_domain(domain))) - return; - - priv->min_tx_copybreak = HNS3_MAX_PACKET_SIZE; - priv->min_tx_spare_buf_size = HNS3_MIN_SPARE_BUF_SIZE; - - if (priv->tx_copybreak < priv->min_tx_copybreak) - priv->tx_copybreak = priv->min_tx_copybreak; - if (handle->kinfo.tx_spare_buf_size < priv->min_tx_spare_buf_size) - handle->kinfo.tx_spare_buf_size = priv->min_tx_spare_buf_size; -} - static void hns3_ring_get_cfg(struct hnae3_queue *q, struct hns3_nic_priv *priv, unsigned int ring_type) { @@ -5141,7 +5113,6 @@ int hns3_init_all_ring(struct hns3_nic_priv *priv) int i, j; int ret; - hns3_update_tx_spare_buf_config(priv); for (i = 0; i < ring_num; i++) { ret = hns3_alloc_ring_memory(&priv->ring[i]); if (ret) { @@ -5346,8 +5317,6 @@ static int hns3_client_init(struct hnae3_handle *handle) priv->ae_handle = handle; priv->tx_timeout_count = 0; priv->max_non_tso_bd_num = ae_dev->dev_specs.max_non_tso_bd_num; - priv->min_tx_copybreak = 0; - priv->min_tx_spare_buf_size = 0; set_bit(HNS3_NIC_STATE_DOWN, &priv->state); handle->msg_enable = netif_msg_init(debug, DEFAULT_MSG_LEVEL); diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.h b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.h index caf7a4df8585..d36c4ed16d8d 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.h @@ -596,8 +596,6 @@ struct hns3_nic_priv { struct hns3_enet_coalesce rx_coal; u32 tx_copybreak; u32 rx_copybreak; - u32 min_tx_copybreak; - u32 min_tx_spare_buf_size; }; union l3_hdr_info { -- Gitee From b538857bc2870f24f1c4477626049c1485c005ec Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:16 +0800 Subject: [PATCH 0052/1421] Revert "net: hns3: fixed vf get max channels bug" This reverts commit 5b995c02c7b67c5c9dd1a51419557dd8f78665a4. --- drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c index 68a9aeeed3da..1ba0b57c7a72 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c @@ -3029,7 +3029,11 @@ static void hclgevf_uninit_ae_dev(struct hnae3_ae_dev *ae_dev) static u32 hclgevf_get_max_channels(struct hclgevf_dev *hdev) { - return min(hdev->rss_size_max, hdev->num_tqps); + struct hnae3_handle *nic = &hdev->nic; + struct hnae3_knic_private_info *kinfo = &nic->kinfo; + + return min_t(u32, hdev->rss_size_max, + hdev->num_tqps / kinfo->tc_info.num_tc); } /** -- Gitee From f85a168721b5a00caf1494121c249212badafc7e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:16 +0800 Subject: [PATCH 0053/1421] Revert "net: hns3: disable interrupt when ptp init failed" This reverts commit d0d64f3c1de466a2dea35b24c2c7541d4047d23e. --- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c index c1e88e67ebb6..9a806ac727cf 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c @@ -497,14 +497,14 @@ int hclge_ptp_init(struct hclge_dev *hdev) if (ret) { dev_err(&hdev->pdev->dev, "failed to init freq, ret = %d\n", ret); - goto out_clear_int; + goto out; } ret = hclge_ptp_set_ts_mode(hdev, &hdev->ptp->ts_cfg); if (ret) { dev_err(&hdev->pdev->dev, "failed to init ts mode, ret = %d\n", ret); - goto out_clear_int; + goto out; } ktime_get_real_ts64(&ts); @@ -512,7 +512,7 @@ int hclge_ptp_init(struct hclge_dev *hdev) if (ret) { dev_err(&hdev->pdev->dev, "failed to init ts time, ret = %d\n", ret); - goto out_clear_int; + goto out; } set_bit(HCLGE_STATE_PTP_EN, &hdev->state); @@ -520,9 +520,6 @@ int hclge_ptp_init(struct hclge_dev *hdev) return 0; -out_clear_int: - clear_bit(HCLGE_PTP_FLAG_EN, &hdev->ptp->flags); - hclge_ptp_int_en(hdev, false); out: hclge_ptp_destroy_clock(hdev); -- Gitee From ce01ced9d0242ae91a878ebead9a783832d9dd5c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:16 +0800 Subject: [PATCH 0054/1421] Revert "net: hns3: fix concurrent setting vlan filter issue" This reverts commit a1510d8edab26e191507372fd69d75b98090f7fa. --- .../hisilicon/hns3/hns3pf/hclge_main.c | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 789f72d1067f..4d318af748a0 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -9493,36 +9493,33 @@ static bool hclge_need_enable_vport_vlan_filter(struct hclge_vport *vport) return false; } -static int __hclge_enable_vport_vlan_filter(struct hclge_vport *vport, - bool request_en) +int hclge_enable_vport_vlan_filter(struct hclge_vport *vport, bool request_en) { + struct hclge_dev *hdev = vport->back; bool need_en; int ret; + mutex_lock(&hdev->vport_lock); + + vport->req_vlan_fltr_en = request_en; + need_en = hclge_need_enable_vport_vlan_filter(vport); - if (need_en == vport->cur_vlan_fltr_en) + if (need_en == vport->cur_vlan_fltr_en) { + mutex_unlock(&hdev->vport_lock); return 0; + } ret = hclge_set_vport_vlan_filter(vport, need_en); - if (ret) + if (ret) { + mutex_unlock(&hdev->vport_lock); return ret; + } vport->cur_vlan_fltr_en = need_en; - return 0; -} - -int hclge_enable_vport_vlan_filter(struct hclge_vport *vport, bool request_en) -{ - struct hclge_dev *hdev = vport->back; - int ret; - - mutex_lock(&hdev->vport_lock); - vport->req_vlan_fltr_en = request_en; - ret = __hclge_enable_vport_vlan_filter(vport, request_en); mutex_unlock(&hdev->vport_lock); - return ret; + return 0; } static int hclge_enable_vlan_filter(struct hnae3_handle *handle, bool enable) @@ -10543,19 +10540,16 @@ static void hclge_sync_vlan_fltr_state(struct hclge_dev *hdev) &vport->state)) continue; - mutex_lock(&hdev->vport_lock); - ret = __hclge_enable_vport_vlan_filter(vport, - vport->req_vlan_fltr_en); + ret = hclge_enable_vport_vlan_filter(vport, + vport->req_vlan_fltr_en); if (ret) { dev_err(&hdev->pdev->dev, "failed to sync vlan filter state for vport%u, ret = %d\n", vport->vport_id, ret); set_bit(HCLGE_VPORT_STATE_VLAN_FLTR_CHANGE, &vport->state); - mutex_unlock(&hdev->vport_lock); return; } - mutex_unlock(&hdev->vport_lock); } } -- Gitee From 69c0a9cf335598d323475ff8ffc2198130c33f57 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:17 +0800 Subject: [PATCH 0055/1421] Revert "s390/ism: fix concurrency management in ism_cmd()" This reverts commit 1425f557514268031a46edb994667f0ec3a0a116. --- drivers/s390/net/ism_drv.c | 3 --- include/linux/ism.h | 1 - 2 files changed, 4 deletions(-) diff --git a/drivers/s390/net/ism_drv.c b/drivers/s390/net/ism_drv.c index 76ba36c83e52..af0d90beba63 100644 --- a/drivers/s390/net/ism_drv.c +++ b/drivers/s390/net/ism_drv.c @@ -130,7 +130,6 @@ static int ism_cmd(struct ism_dev *ism, void *cmd) struct ism_req_hdr *req = cmd; struct ism_resp_hdr *resp = cmd; - spin_lock(&ism->cmd_lock); __ism_write_cmd(ism, req + 1, sizeof(*req), req->len - sizeof(*req)); __ism_write_cmd(ism, req, 0, sizeof(*req)); @@ -144,7 +143,6 @@ static int ism_cmd(struct ism_dev *ism, void *cmd) } __ism_read_cmd(ism, resp + 1, sizeof(*resp), resp->len - sizeof(*resp)); out: - spin_unlock(&ism->cmd_lock); return resp->ret; } @@ -632,7 +630,6 @@ static int ism_probe(struct pci_dev *pdev, const struct pci_device_id *id) return -ENOMEM; spin_lock_init(&ism->lock); - spin_lock_init(&ism->cmd_lock); dev_set_drvdata(&pdev->dev, ism); ism->pdev = pdev; ism->dev.parent = &pdev->dev; diff --git a/include/linux/ism.h b/include/linux/ism.h index 04e2fc1973ce..9a4c204df3da 100644 --- a/include/linux/ism.h +++ b/include/linux/ism.h @@ -28,7 +28,6 @@ struct ism_dmb { struct ism_dev { spinlock_t lock; /* protects the ism device */ - spinlock_t cmd_lock; /* serializes cmds */ struct list_head list; struct pci_dev *pdev; -- Gitee From dee3cd6422f26ca86d4277767bb9247a4f4eb303 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:17 +0800 Subject: [PATCH 0056/1421] Revert "drm/bridge: ti-sn65dsi86: Remove extra semicolon in ti_sn_bridge_probe()" This reverts commit 3b380963251f15aa59f185560af2d9c89154385b. --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 59cbff209acd..002f8aaa509b 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -1352,7 +1352,7 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, HPD_DISABLE, 0); mutex_unlock(&pdata->comms_mutex); - } + }; drm_bridge_add(&pdata->bridge); -- Gitee From 4f7938edf25369b746b4fbb6c4ba4ce814653c2f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:17 +0800 Subject: [PATCH 0057/1421] Revert "can: netlink: can_changelink(): fix NULL pointer deref of struct can_priv::do_set_mode" This reverts commit ac533d91854e9820cbc15906ef82751fdda64164. --- drivers/net/can/dev/dev.c | 12 +++--------- drivers/net/can/dev/netlink.c | 12 ------------ 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index 6018444a76b9..88f345966c99 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -125,16 +125,13 @@ void can_change_state(struct net_device *dev, struct can_frame *cf, EXPORT_SYMBOL_GPL(can_change_state); /* CAN device restart for bus-off recovery */ -static int can_restart(struct net_device *dev) +static void can_restart(struct net_device *dev) { struct can_priv *priv = netdev_priv(dev); struct sk_buff *skb; struct can_frame *cf; int err; - if (!priv->do_set_mode) - return -EOPNOTSUPP; - if (netif_carrier_ok(dev)) netdev_err(dev, "Attempt to restart for bus-off recovery, but carrier is OK?\n"); @@ -156,14 +153,10 @@ static int can_restart(struct net_device *dev) if (err) { netdev_err(dev, "Restart failed, error %pe\n", ERR_PTR(err)); netif_carrier_off(dev); - - return err; } else { netdev_dbg(dev, "Restarted\n"); priv->can_stats.restarts++; } - - return 0; } static void can_restart_work(struct work_struct *work) @@ -188,8 +181,9 @@ int can_restart_now(struct net_device *dev) return -EBUSY; cancel_delayed_work_sync(&priv->restart_work); + can_restart(dev); - return can_restart(dev); + return 0; } /* CAN bus-off diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c index abe8dc051d94..01aacdcda260 100644 --- a/drivers/net/can/dev/netlink.c +++ b/drivers/net/can/dev/netlink.c @@ -285,12 +285,6 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[], } if (data[IFLA_CAN_RESTART_MS]) { - if (!priv->do_set_mode) { - NL_SET_ERR_MSG(extack, - "Device doesn't support restart from Bus Off"); - return -EOPNOTSUPP; - } - /* Do not allow changing restart delay while running */ if (dev->flags & IFF_UP) return -EBUSY; @@ -298,12 +292,6 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[], } if (data[IFLA_CAN_RESTART]) { - if (!priv->do_set_mode) { - NL_SET_ERR_MSG(extack, - "Device doesn't support restart from Bus Off"); - return -EOPNOTSUPP; - } - /* Do not allow a restart while not running */ if (!(dev->flags & IFF_UP)) return -EINVAL; -- Gitee From 0fc3e698f96ce1522121883091638a71bc04aea3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:17 +0800 Subject: [PATCH 0058/1421] Revert "can: dev: can_restart(): move debug message and stats after successful restart" This reverts commit 4f86b388e17f6eb2e7e16c95f4cb390af80ea5eb. --- drivers/net/can/dev/dev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index 88f345966c99..6c1ceb8ce6c4 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -147,15 +147,15 @@ static void can_restart(struct net_device *dev) netif_rx(skb); } + netdev_dbg(dev, "restarted\n"); + priv->can_stats.restarts++; + /* Now restart the device */ netif_carrier_on(dev); err = priv->do_set_mode(dev, CAN_MODE_START); if (err) { - netdev_err(dev, "Restart failed, error %pe\n", ERR_PTR(err)); + netdev_err(dev, "Error %d during restart", err); netif_carrier_off(dev); - } else { - netdev_dbg(dev, "Restarted\n"); - priv->can_stats.restarts++; } } -- Gitee From d52b5b92d0d0d0d096dffc83364fe20ad0896f21 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:17 +0800 Subject: [PATCH 0059/1421] Revert "can: dev: can_restart(): reverse logic to remove need for goto" This reverts commit 44b9f360071a5edb74500ae2f6c658193922ef3f. --- drivers/net/can/dev/dev.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index 6c1ceb8ce6c4..7d9a7c92d4cf 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -142,11 +142,14 @@ static void can_restart(struct net_device *dev) /* send restart message upstream */ skb = alloc_can_err_skb(dev, &cf); - if (skb) { - cf->can_id |= CAN_ERR_RESTARTED; - netif_rx(skb); - } + if (!skb) + goto restart; + + cf->can_id |= CAN_ERR_RESTARTED; + + netif_rx(skb); +restart: netdev_dbg(dev, "restarted\n"); priv->can_stats.restarts++; -- Gitee From e0549b15e72e054a23b8627a0b064a6bd7f947d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:18 +0800 Subject: [PATCH 0060/1421] Revert "net/sched: sch_qfq: Avoid triggering might_sleep in atomic context in qfq_delete_class" This reverts commit 83c5ec9d802bac2798f2d768d0ddc015a7931804. --- net/sched/sch_qfq.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c index c3f9a6375b4e..a2b321fec13c 100644 --- a/net/sched/sch_qfq.c +++ b/net/sched/sch_qfq.c @@ -539,6 +539,9 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, static void qfq_destroy_class(struct Qdisc *sch, struct qfq_class *cl) { + struct qfq_sched *q = qdisc_priv(sch); + + qfq_rm_from_agg(q, cl); gen_kill_estimator(&cl->rate_est); qdisc_put(cl->qdisc); kfree(cl); @@ -559,11 +562,10 @@ static int qfq_delete_class(struct Qdisc *sch, unsigned long arg, qdisc_purge_queue(cl->qdisc); qdisc_class_hash_remove(&q->clhash, &cl->common); - qfq_rm_from_agg(q, cl); + qfq_destroy_class(sch, cl); sch_tree_unlock(sch); - qfq_destroy_class(sch, cl); return 0; } @@ -1504,7 +1506,6 @@ static void qfq_destroy_qdisc(struct Qdisc *sch) for (i = 0; i < q->clhash.hashsize; i++) { hlist_for_each_entry_safe(cl, next, &q->clhash.hash[i], common.hnode) { - qfq_rm_from_agg(q, cl); qfq_destroy_class(sch, cl); } } -- Gitee From 369ac9ddc662b7b988916f97f034bf8f45db28ca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:18 +0800 Subject: [PATCH 0061/1421] Revert "net: appletalk: Fix use-after-free in AARP proxy probe" This reverts commit bf8dd21dd01ab65556c4845fb9bf72f5b58c3f25. --- net/appletalk/aarp.c | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c index 0d7c14a49668..c7236daa2415 100644 --- a/net/appletalk/aarp.c +++ b/net/appletalk/aarp.c @@ -35,7 +35,6 @@ #include #include #include -#include int sysctl_aarp_expiry_time = AARP_EXPIRY_TIME; int sysctl_aarp_tick_time = AARP_TICK_TIME; @@ -45,7 +44,6 @@ int sysctl_aarp_resolve_time = AARP_RESOLVE_TIME; /* Lists of aarp entries */ /** * struct aarp_entry - AARP entry - * @refcnt: Reference count * @last_sent: Last time we xmitted the aarp request * @packet_queue: Queue of frames wait for resolution * @status: Used for proxy AARP @@ -57,7 +55,6 @@ int sysctl_aarp_resolve_time = AARP_RESOLVE_TIME; * @next: Next entry in chain */ struct aarp_entry { - refcount_t refcnt; /* These first two are only used for unresolved entries */ unsigned long last_sent; struct sk_buff_head packet_queue; @@ -82,17 +79,6 @@ static DEFINE_RWLOCK(aarp_lock); /* Used to walk the list and purge/kick entries. */ static struct timer_list aarp_timer; -static inline void aarp_entry_get(struct aarp_entry *a) -{ - refcount_inc(&a->refcnt); -} - -static inline void aarp_entry_put(struct aarp_entry *a) -{ - if (refcount_dec_and_test(&a->refcnt)) - kfree(a); -} - /* * Delete an aarp queue * @@ -101,7 +87,7 @@ static inline void aarp_entry_put(struct aarp_entry *a) static void __aarp_expire(struct aarp_entry *a) { skb_queue_purge(&a->packet_queue); - aarp_entry_put(a); + kfree(a); } /* @@ -394,11 +380,9 @@ static void aarp_purge(void) static struct aarp_entry *aarp_alloc(void) { struct aarp_entry *a = kmalloc(sizeof(*a), GFP_ATOMIC); - if (!a) - return NULL; - refcount_set(&a->refcnt, 1); - skb_queue_head_init(&a->packet_queue); + if (a) + skb_queue_head_init(&a->packet_queue); return a; } @@ -524,7 +508,6 @@ int aarp_proxy_probe_network(struct atalk_iface *atif, struct atalk_addr *sa) entry->dev = atif->dev; write_lock_bh(&aarp_lock); - aarp_entry_get(entry); hash = sa->s_node % (AARP_HASH_SIZE - 1); entry->next = proxies[hash]; @@ -550,7 +533,6 @@ int aarp_proxy_probe_network(struct atalk_iface *atif, struct atalk_addr *sa) retval = 1; } - aarp_entry_put(entry); write_unlock_bh(&aarp_lock); out: return retval; -- Gitee From 0c5da6f5872d24364630d28cb02f651b6714bead Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:18 +0800 Subject: [PATCH 0062/1421] Revert "i40e: When removing VF MAC filters, only check PF-set MAC" This reverts commit 13a0ac0edf64afe4670da013dec9eb1033cadf75. --- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 6d7a4f2c3a49..b233ae45d89c 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -3143,10 +3143,10 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg) const u8 *addr = al->list[i].addr; /* Allow to delete VF primary MAC only if it was not set - * administratively by PF. + * administratively by PF or if VF is trusted. */ if (ether_addr_equal(addr, vf->default_lan_addr.addr)) { - if (!vf->pf_set_mac) + if (i40e_can_vf_change_mac(vf)) was_unimac_deleted = true; else continue; -- Gitee From f94784ffdd822e7be45f4f43c2ed07842e33e73f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:18 +0800 Subject: [PATCH 0063/1421] Revert "i40e: report VF tx_dropped with tx_errors instead of tx_discards" This reverts commit 75941e6cec3e49e55f37364f593104b7accf4ba4. --- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index b233ae45d89c..18720e9c24f7 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -5011,7 +5011,7 @@ int i40e_get_vf_stats(struct net_device *netdev, int vf_id, vf_stats->broadcast = stats->rx_broadcast; vf_stats->multicast = stats->rx_multicast; vf_stats->rx_dropped = stats->rx_discards + stats->rx_discards_other; - vf_stats->tx_dropped = stats->tx_errors; + vf_stats->tx_dropped = stats->tx_discards; return 0; } -- Gitee From 59afcf817e34d45ab3e0324c4b8bf5d37802f6d1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:18 +0800 Subject: [PATCH 0064/1421] Revert "i40e: Add rx_missed_errors for buffer exhaustion" This reverts commit cf8ce57041cab8f19a057e1bbec048afd41bd2dd. --- drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 3 +-- drivers/net/ethernet/intel/i40e/i40e_main.c | 18 +++++++++++------- .../net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index a89f7ca510fd..4e90570ba780 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -246,7 +246,6 @@ static const struct i40e_stats i40e_gstrings_net_stats[] = { I40E_NETDEV_STAT(rx_errors), I40E_NETDEV_STAT(tx_errors), I40E_NETDEV_STAT(rx_dropped), - I40E_NETDEV_STAT(rx_missed_errors), I40E_NETDEV_STAT(tx_dropped), I40E_NETDEV_STAT(collisions), I40E_NETDEV_STAT(rx_length_errors), @@ -323,7 +322,7 @@ static const struct i40e_stats i40e_gstrings_stats[] = { I40E_PF_STAT("port.rx_broadcast", stats.eth.rx_broadcast), I40E_PF_STAT("port.tx_broadcast", stats.eth.tx_broadcast), I40E_PF_STAT("port.tx_errors", stats.eth.tx_errors), - I40E_PF_STAT("port.rx_discards", stats.eth.rx_discards), + I40E_PF_STAT("port.rx_dropped", stats.eth.rx_discards), I40E_PF_STAT("port.tx_dropped_link_down", stats.tx_dropped_link_down), I40E_PF_STAT("port.rx_crc_errors", stats.crc_errors), I40E_PF_STAT("port.illegal_bytes", stats.illegal_bytes), diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index b749aa3e783f..806cec458a07 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -509,7 +509,6 @@ static void i40e_get_netdev_stats_struct(struct net_device *netdev, stats->tx_dropped = vsi_stats->tx_dropped; stats->rx_errors = vsi_stats->rx_errors; stats->rx_dropped = vsi_stats->rx_dropped; - stats->rx_missed_errors = vsi_stats->rx_missed_errors; stats->rx_crc_errors = vsi_stats->rx_crc_errors; stats->rx_length_errors = vsi_stats->rx_length_errors; } @@ -701,13 +700,17 @@ i40e_stats_update_rx_discards(struct i40e_vsi *vsi, struct i40e_hw *hw, struct i40e_eth_stats *stat_offset, struct i40e_eth_stats *stat) { + u64 rx_rdpc, rx_rxerr; + i40e_stat_update32(hw, I40E_GLV_RDPC(stat_idx), offset_loaded, - &stat_offset->rx_discards, &stat->rx_discards); + &stat_offset->rx_discards, &rx_rdpc); i40e_stat_update64(hw, I40E_GL_RXERR1H(i40e_compute_pci_to_hw_id(vsi, hw)), I40E_GL_RXERR1L(i40e_compute_pci_to_hw_id(vsi, hw)), offset_loaded, &stat_offset->rx_discards_other, - &stat->rx_discards_other); + &rx_rxerr); + + stat->rx_discards = rx_rdpc + rx_rxerr; } /** @@ -729,6 +732,9 @@ void i40e_update_eth_stats(struct i40e_vsi *vsi) i40e_stat_update32(hw, I40E_GLV_TEPC(stat_idx), vsi->stat_offsets_loaded, &oes->tx_errors, &es->tx_errors); + i40e_stat_update32(hw, I40E_GLV_RDPC(stat_idx), + vsi->stat_offsets_loaded, + &oes->rx_discards, &es->rx_discards); i40e_stat_update32(hw, I40E_GLV_RUPP(stat_idx), vsi->stat_offsets_loaded, &oes->rx_unknown_protocol, &es->rx_unknown_protocol); @@ -985,10 +991,8 @@ static void i40e_update_vsi_stats(struct i40e_vsi *vsi) ns->tx_errors = es->tx_errors; ons->multicast = oes->rx_multicast; ns->multicast = es->rx_multicast; - ons->rx_dropped = oes->rx_discards_other; - ns->rx_dropped = es->rx_discards_other; - ons->rx_missed_errors = oes->rx_discards; - ns->rx_missed_errors = es->rx_discards; + ons->rx_dropped = oes->rx_discards; + ns->rx_dropped = es->rx_discards; ons->tx_dropped = oes->tx_discards; ns->tx_dropped = es->tx_discards; diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 18720e9c24f7..80036942dc76 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -5010,7 +5010,7 @@ int i40e_get_vf_stats(struct net_device *netdev, int vf_id, vf_stats->tx_bytes = stats->tx_bytes; vf_stats->broadcast = stats->rx_broadcast; vf_stats->multicast = stats->rx_multicast; - vf_stats->rx_dropped = stats->rx_discards + stats->rx_discards_other; + vf_stats->rx_dropped = stats->rx_discards; vf_stats->tx_dropped = stats->tx_discards; return 0; -- Gitee From 71501bde5af6bc2786f8561efdc116b8882e5d78 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:19 +0800 Subject: [PATCH 0065/1421] Revert "net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch" This reverts commit 443faf43ad59ac148a61de35adf1781817a8f7ac. --- .../mellanox/mlx5/core/eswitch_offloads.c | 108 +++++++++--------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c index 86fb8197594f..326c72b3df86 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -1170,19 +1170,19 @@ static void esw_set_peer_miss_rule_source_port(struct mlx5_eswitch *esw, static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, struct mlx5_core_dev *peer_dev) { - struct mlx5_eswitch *peer_esw = peer_dev->priv.eswitch; struct mlx5_flow_destination dest = {}; struct mlx5_flow_act flow_act = {0}; struct mlx5_flow_handle **flows; + /* total vports is the same for both e-switches */ + int nvports = esw->total_vports; struct mlx5_flow_handle *flow; - struct mlx5_vport *peer_vport; struct mlx5_flow_spec *spec; + struct mlx5_vport *vport; int err, pfindex; unsigned long i; void *misc; - if (!MLX5_VPORT_MANAGER(peer_dev) && - !mlx5_core_is_ecpf_esw_manager(peer_dev)) + if (!MLX5_VPORT_MANAGER(esw->dev) && !mlx5_core_is_ecpf_esw_manager(esw->dev)) return 0; spec = kvzalloc(sizeof(*spec), GFP_KERNEL); @@ -1191,7 +1191,7 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, peer_miss_rules_setup(esw, peer_dev, spec, &dest); - flows = kvcalloc(peer_esw->total_vports, sizeof(*flows), GFP_KERNEL); + flows = kvcalloc(nvports, sizeof(*flows), GFP_KERNEL); if (!flows) { err = -ENOMEM; goto alloc_flows_err; @@ -1201,10 +1201,10 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, misc = MLX5_ADDR_OF(fte_match_param, spec->match_value, misc_parameters); - if (mlx5_core_is_ecpf_esw_manager(peer_dev)) { - peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF); - esw_set_peer_miss_rule_source_port(esw, peer_esw, spec, - MLX5_VPORT_PF); + if (mlx5_core_is_ecpf_esw_manager(esw->dev)) { + vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF); + esw_set_peer_miss_rule_source_port(esw, peer_dev->priv.eswitch, + spec, MLX5_VPORT_PF); flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw), spec, &flow_act, &dest, 1); @@ -1212,11 +1212,11 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, err = PTR_ERR(flow); goto add_pf_flow_err; } - flows[peer_vport->index] = flow; + flows[vport->index] = flow; } - if (mlx5_ecpf_vport_exists(peer_dev)) { - peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_ECPF); + if (mlx5_ecpf_vport_exists(esw->dev)) { + vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF); MLX5_SET(fte_match_set_misc, misc, source_port, MLX5_VPORT_ECPF); flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw), spec, &flow_act, &dest, 1); @@ -1224,14 +1224,13 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, err = PTR_ERR(flow); goto add_ecpf_flow_err; } - flows[peer_vport->index] = flow; + flows[vport->index] = flow; } - mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport, - mlx5_core_max_vfs(peer_dev)) { + mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev)) { esw_set_peer_miss_rule_source_port(esw, - peer_esw, - spec, peer_vport->vport); + peer_dev->priv.eswitch, + spec, vport->vport); flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw), spec, &flow_act, &dest, 1); @@ -1239,22 +1238,22 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, err = PTR_ERR(flow); goto add_vf_flow_err; } - flows[peer_vport->index] = flow; + flows[vport->index] = flow; } - if (mlx5_core_ec_sriov_enabled(peer_dev)) { - mlx5_esw_for_each_ec_vf_vport(peer_esw, i, peer_vport, - mlx5_core_max_ec_vfs(peer_dev)) { - esw_set_peer_miss_rule_source_port(esw, peer_esw, - spec, - peer_vport->vport); + if (mlx5_core_ec_sriov_enabled(esw->dev)) { + mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) { + if (i >= mlx5_core_max_ec_vfs(peer_dev)) + break; + esw_set_peer_miss_rule_source_port(esw, peer_dev->priv.eswitch, + spec, vport->vport); flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb, spec, &flow_act, &dest, 1); if (IS_ERR(flow)) { err = PTR_ERR(flow); goto add_ec_vf_flow_err; } - flows[peer_vport->index] = flow; + flows[vport->index] = flow; } } @@ -1271,27 +1270,25 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, return 0; add_ec_vf_flow_err: - mlx5_esw_for_each_ec_vf_vport(peer_esw, i, peer_vport, - mlx5_core_max_ec_vfs(peer_dev)) { - if (!flows[peer_vport->index]) + mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) { + if (!flows[vport->index]) continue; - mlx5_del_flow_rules(flows[peer_vport->index]); + mlx5_del_flow_rules(flows[vport->index]); } add_vf_flow_err: - mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport, - mlx5_core_max_vfs(peer_dev)) { - if (!flows[peer_vport->index]) + mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev)) { + if (!flows[vport->index]) continue; - mlx5_del_flow_rules(flows[peer_vport->index]); + mlx5_del_flow_rules(flows[vport->index]); } - if (mlx5_ecpf_vport_exists(peer_dev)) { - peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_ECPF); - mlx5_del_flow_rules(flows[peer_vport->index]); + if (mlx5_ecpf_vport_exists(esw->dev)) { + vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF); + mlx5_del_flow_rules(flows[vport->index]); } add_ecpf_flow_err: - if (mlx5_core_is_ecpf_esw_manager(peer_dev)) { - peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF); - mlx5_del_flow_rules(flows[peer_vport->index]); + if (mlx5_core_is_ecpf_esw_manager(esw->dev)) { + vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF); + mlx5_del_flow_rules(flows[vport->index]); } add_pf_flow_err: esw_warn(esw->dev, "FDB: Failed to add peer miss flow rule err %d\n", err); @@ -1304,34 +1301,37 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw, static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw, struct mlx5_core_dev *peer_dev) { - struct mlx5_eswitch *peer_esw = peer_dev->priv.eswitch; u16 peer_index = mlx5_get_dev_index(peer_dev); struct mlx5_flow_handle **flows; - struct mlx5_vport *peer_vport; + struct mlx5_vport *vport; unsigned long i; flows = esw->fdb_table.offloads.peer_miss_rules[peer_index]; if (!flows) return; - if (mlx5_core_ec_sriov_enabled(peer_dev)) { - mlx5_esw_for_each_ec_vf_vport(peer_esw, i, peer_vport, - mlx5_core_max_ec_vfs(peer_dev)) - mlx5_del_flow_rules(flows[peer_vport->index]); + if (mlx5_core_ec_sriov_enabled(esw->dev)) { + mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) { + /* The flow for a particular vport could be NULL if the other ECPF + * has fewer or no VFs enabled + */ + if (!flows[vport->index]) + continue; + mlx5_del_flow_rules(flows[vport->index]); + } } - mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport, - mlx5_core_max_vfs(peer_dev)) - mlx5_del_flow_rules(flows[peer_vport->index]); + mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev)) + mlx5_del_flow_rules(flows[vport->index]); - if (mlx5_ecpf_vport_exists(peer_dev)) { - peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_ECPF); - mlx5_del_flow_rules(flows[peer_vport->index]); + if (mlx5_ecpf_vport_exists(esw->dev)) { + vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF); + mlx5_del_flow_rules(flows[vport->index]); } - if (mlx5_core_is_ecpf_esw_manager(peer_dev)) { - peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF); - mlx5_del_flow_rules(flows[peer_vport->index]); + if (mlx5_core_is_ecpf_esw_manager(esw->dev)) { + vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF); + mlx5_del_flow_rules(flows[vport->index]); } kvfree(flows); -- Gitee From bbd96a190b121c89eed8cac345f7934eb0078fbd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:19 +0800 Subject: [PATCH 0066/1421] Revert "net/mlx5: Fix memory leak in cmd_exec()" This reverts commit 8a27ce067b73a1d9c31b97cceb00a0273c105040. --- drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c index 5a2126679415..3e6bd27f6315 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -1916,8 +1916,8 @@ static int cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out, err = mlx5_cmd_invoke(dev, inb, outb, out, out_size, callback, context, pages_queue, token, force_polling); - if (callback && !err) - return 0; + if (callback) + return err; if (err > 0) /* Failed in FW, command didn't execute */ err = deliv_status_to_err(err); -- Gitee From 62228dc7be7b9ad994034bd93e768b062aed5fed Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:19 +0800 Subject: [PATCH 0067/1421] Revert "xfrm: interface: fix use-after-free after changing collect_md xfrm interface" This reverts commit 4bfb7e54401b25de535aebbf73448b560092ba69. --- net/xfrm/xfrm_interface_core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/net/xfrm/xfrm_interface_core.c b/net/xfrm/xfrm_interface_core.c index ca6db1e960ce..e21cc71095bb 100644 --- a/net/xfrm/xfrm_interface_core.c +++ b/net/xfrm/xfrm_interface_core.c @@ -880,7 +880,7 @@ static int xfrmi_changelink(struct net_device *dev, struct nlattr *tb[], return -EINVAL; } - if (p.collect_md || xi->p.collect_md) { + if (p.collect_md) { NL_SET_ERR_MSG(extack, "collect_md can't be changed"); return -EINVAL; } @@ -891,6 +891,11 @@ static int xfrmi_changelink(struct net_device *dev, struct nlattr *tb[], } else { if (xi->dev != dev) return -EEXIST; + if (xi->p.collect_md) { + NL_SET_ERR_MSG(extack, + "device can't be changed to collect_md"); + return -EINVAL; + } } return xfrmi_update(xi, &p); -- Gitee From b9f194cc47742e3b3f32012cbf8263e1f4f65f78 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:19 +0800 Subject: [PATCH 0068/1421] Revert "staging: vchiq_arm: Make vchiq_shutdown never fail" This reverts commit a6122f5b56bdd0e4a5310ed122ec6503f00297f5. --- drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index 6028558f9611..92aa98bbdc66 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -720,7 +720,8 @@ int vchiq_shutdown(struct vchiq_instance *instance) int status = 0; struct vchiq_state *state = instance->state; - mutex_lock(&state->mutex); + if (mutex_lock_killable(&state->mutex)) + return -EAGAIN; /* Remove all services */ vchiq_shutdown_internal(state, instance); -- Gitee From c614cc3c634de2830c6822244af445042dcec853 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:19 +0800 Subject: [PATCH 0069/1421] Revert "platform/x86: Fix initialization order for firmware_attributes_class" This reverts commit c1b9343fdbd3549db2d99623408f1c4c2b520695. --- drivers/platform/x86/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile index 8012de299174..b457de5abf7d 100644 --- a/drivers/platform/x86/Makefile +++ b/drivers/platform/x86/Makefile @@ -58,8 +58,6 @@ obj-$(CONFIG_X86_PLATFORM_DRIVERS_HP) += hp/ # Hewlett Packard Enterprise obj-$(CONFIG_UV_SYSFS) += uv_sysfs.o -obj-$(CONFIG_FW_ATTR_CLASS) += firmware_attributes_class.o - # IBM Thinkpad and Lenovo obj-$(CONFIG_IBM_RTL) += ibm_rtl.o obj-$(CONFIG_IDEAPAD_LAPTOP) += ideapad-laptop.o @@ -110,6 +108,7 @@ obj-$(CONFIG_SYSTEM76_ACPI) += system76_acpi.o obj-$(CONFIG_TOPSTAR_LAPTOP) += topstar-laptop.o # Platform drivers +obj-$(CONFIG_FW_ATTR_CLASS) += firmware_attributes_class.o obj-$(CONFIG_SERIAL_MULTI_INSTANTIATE) += serial-multi-instantiate.o obj-$(CONFIG_MLX_PLATFORM) += mlx-platform.o obj-$(CONFIG_TOUCHSCREEN_DMI) += touchscreen_dmi.o -- Gitee From 075b8134148d6268862b03418fe72d525b4c436b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:20 +0800 Subject: [PATCH 0070/1421] Revert "x86/hyperv: Fix usage of cpu_online_mask to get valid cpu" This reverts commit 7661cd96c10cfd47d3ebb7319f4489683d0bd68d. --- arch/x86/hyperv/irqdomain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/hyperv/irqdomain.c b/arch/x86/hyperv/irqdomain.c index 865ae4be233b..42c70d28ef27 100644 --- a/arch/x86/hyperv/irqdomain.c +++ b/arch/x86/hyperv/irqdomain.c @@ -192,6 +192,7 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) struct pci_dev *dev; struct hv_interrupt_entry out_entry, *stored_entry; struct irq_cfg *cfg = irqd_cfg(data); + const cpumask_t *affinity; int cpu; u64 status; @@ -203,7 +204,8 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) return; } - cpu = cpumask_first(irq_data_get_effective_affinity_mask(data)); + affinity = irq_data_get_effective_affinity_mask(data); + cpu = cpumask_first_and(affinity, cpu_online_mask); if (data->chip_data) { /* -- Gitee From 43c552232e8c7834fe2633a4dfb461fcfbb01d54 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:20 +0800 Subject: [PATCH 0071/1421] Revert "regmap: fix potential memory leak of regmap_bus" This reverts commit c3ad836ab35bfb0c3f9b01d1b9dc6ba2d537917b. --- drivers/base/regmap/regmap.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 1209e01f8c7f..3011f7f9381b 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -1173,8 +1173,6 @@ struct regmap *__regmap_init(struct device *dev, err_map: kfree(map); err: - if (bus && bus->free_on_exit) - kfree(bus); return ERR_PTR(ret); } EXPORT_SYMBOL_GPL(__regmap_init); -- Gitee From 5f11b41e832619ea1e0f6d62173dfbe724e0bcbf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:20 +0800 Subject: [PATCH 0072/1421] Revert "iio: adc: ad7949: use spi_is_bpw_supported()" This reverts commit 306d68074c4f61bb1e88046aae4436ac5de95c2d. --- drivers/iio/adc/ad7949.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/iio/adc/ad7949.c b/drivers/iio/adc/ad7949.c index 202561cad401..edd0c3a35ab7 100644 --- a/drivers/iio/adc/ad7949.c +++ b/drivers/iio/adc/ad7949.c @@ -308,6 +308,7 @@ static void ad7949_disable_reg(void *reg) static int ad7949_spi_probe(struct spi_device *spi) { + u32 spi_ctrl_mask = spi->controller->bits_per_word_mask; struct device *dev = &spi->dev; const struct ad7949_adc_spec *spec; struct ad7949_adc_chip *ad7949_adc; @@ -336,11 +337,11 @@ static int ad7949_spi_probe(struct spi_device *spi) ad7949_adc->resolution = spec->resolution; /* Set SPI bits per word */ - if (spi_is_bpw_supported(spi, ad7949_adc->resolution)) { + if (spi_ctrl_mask & SPI_BPW_MASK(ad7949_adc->resolution)) { spi->bits_per_word = ad7949_adc->resolution; - } else if (spi_is_bpw_supported(spi, 16)) { + } else if (spi_ctrl_mask == SPI_BPW_MASK(16)) { spi->bits_per_word = 16; - } else if (spi_is_bpw_supported(spi, 8)) { + } else if (spi_ctrl_mask == SPI_BPW_MASK(8)) { spi->bits_per_word = 8; } else { dev_err(dev, "unable to find common BPW with spi controller\n"); -- Gitee From 7d6c030fffec34399f4746b9c7ccc593c816cdd9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:20 +0800 Subject: [PATCH 0073/1421] Revert "interconnect: qcom: sc7280: Add missing num_links to xm_pcie3_1 node" This reverts commit 094541ea71b334a5d242af9e5b50ca82d99bd5bc. --- drivers/interconnect/qcom/sc7280.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/interconnect/qcom/sc7280.c b/drivers/interconnect/qcom/sc7280.c index 728589ec8026..a626dbc71999 100644 --- a/drivers/interconnect/qcom/sc7280.c +++ b/drivers/interconnect/qcom/sc7280.c @@ -165,7 +165,6 @@ static struct qcom_icc_node xm_pcie3_1 = { .id = SC7280_MASTER_PCIE_1, .channels = 1, .buswidth = 8, - .num_links = 1, .links = { SC7280_SLAVE_ANOC_PCIE_GEM_NOC }, }; -- Gitee From 12a1251b34b07b1e8a2125e9ae456183165c9efd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:21 +0800 Subject: [PATCH 0074/1421] Revert "RDMA/core: Rate limit GID cache warning messages" This reverts commit d66d781d9f13ec9450542363e555527e16133975. --- drivers/infiniband/core/cache.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index 77c0b8925991..0b88203720b0 100644 --- a/drivers/infiniband/core/cache.c +++ b/drivers/infiniband/core/cache.c @@ -582,8 +582,8 @@ static int __ib_cache_gid_add(struct ib_device *ib_dev, u32 port, out_unlock: mutex_unlock(&table->lock); if (ret) - pr_warn_ratelimited("%s: unable to add gid %pI6 error=%d\n", - __func__, gid->raw, ret); + pr_warn("%s: unable to add gid %pI6 error=%d\n", + __func__, gid->raw, ret); return ret; } -- Gitee From d092cb8c786f9981706f08ec5cba1103f9ec808c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:21 +0800 Subject: [PATCH 0075/1421] Revert "regulator: core: fix NULL dereference on unbind due to stale coupling data" This reverts commit 6f33f1c664f6fd19aef71d2a0418af08027efb3f. --- drivers/regulator/core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 1d49612eeb7e..d2e21dc61dd7 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -5422,7 +5422,6 @@ static void regulator_remove_coupling(struct regulator_dev *rdev) ERR_PTR(err)); } - rdev->coupling_desc.n_coupled = 0; kfree(rdev->coupling_desc.coupled_rdevs); rdev->coupling_desc.coupled_rdevs = NULL; } -- Gitee From be31f28c5ab1d594298fe6953f76ca795f5a0b5e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:21 +0800 Subject: [PATCH 0076/1421] Revert "virtio_ring: Fix error reporting in virtqueue_resize" This reverts commit 065b354adc6f858fb3a297153e4291fa6db7ff79. --- drivers/virtio/virtio_ring.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index db4582687b95..c5f04234d951 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -2739,7 +2739,7 @@ int virtqueue_resize(struct virtqueue *_vq, u32 num, void (*recycle)(struct virtqueue *vq, void *buf)) { struct vring_virtqueue *vq = to_vvq(_vq); - int err, err_reset; + int err; if (num > vq->vq.num_max) return -E2BIG; @@ -2759,11 +2759,7 @@ int virtqueue_resize(struct virtqueue *_vq, u32 num, else err = virtqueue_resize_split(_vq, num); - err_reset = virtqueue_enable_after_reset(_vq); - if (err_reset) - return err_reset; - - return err; + return virtqueue_enable_after_reset(_vq); } EXPORT_SYMBOL_GPL(virtqueue_resize); -- Gitee From e4d63217f56c9b4a30b4d8f9d9b9076994a3b3f4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:21 +0800 Subject: [PATCH 0077/1421] Revert "Input: gpio-keys - fix a sleep while atomic with PREEMPT_RT" This reverts commit 69ed267401a56a374ddb8ea7bf756b0e241e7edc. --- drivers/input/keyboard/gpio_keys.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index a34b9533d8f1..c5f4207fddce 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -495,7 +495,7 @@ static irqreturn_t gpio_keys_irq_isr(int irq, void *dev_id) if (bdata->release_delay) hrtimer_start(&bdata->release_timer, ms_to_ktime(bdata->release_delay), - HRTIMER_MODE_REL); + HRTIMER_MODE_REL_HARD); out: spin_unlock_irqrestore(&bdata->lock, flags); return IRQ_HANDLED; @@ -632,7 +632,7 @@ static int gpio_keys_setup_key(struct platform_device *pdev, bdata->release_delay = button->debounce_interval; hrtimer_init(&bdata->release_timer, - CLOCK_REALTIME, HRTIMER_MODE_REL); + CLOCK_REALTIME, HRTIMER_MODE_REL_HARD); bdata->release_timer.function = gpio_keys_irq_timer; isr = gpio_keys_irq_isr; -- Gitee From 995d8bb86cd88d9ce6c66ca2cd13f40a141a4c25 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:21 +0800 Subject: [PATCH 0078/1421] Revert "Linux 6.6.100" This reverts commit 9dc6477649698e561ed1232adb9e4e0c309734f3. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8d6550abc9cb..2aede51d98ea 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 100 +SUBLEVEL = 99 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From 7c85acc130d5da7a66b3e9349468b763791e7fac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:22 +0800 Subject: [PATCH 0079/1421] Revert "KVM: x86/xen: Fix cleanup logic in emulation of Xen schedop poll hypercalls" This reverts commit f33c9f5b8cc0c9e4f1272bf7b567f3496be4d598. --- arch/x86/kvm/xen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 94c7fee7a225..c4a158758cb7 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -1260,7 +1260,7 @@ static bool kvm_xen_schedop_poll(struct kvm_vcpu *vcpu, bool longmode, if (kvm_read_guest_virt(vcpu, (gva_t)sched_poll.ports, ports, sched_poll.nr_ports * sizeof(*ports), &e)) { *r = -EFAULT; - goto out; + return true; } for (i = 0; i < sched_poll.nr_ports; i++) { -- Gitee From 36e8be515a314988846bf1b3f479fc0b5acc716b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:22 +0800 Subject: [PATCH 0080/1421] Revert "nvmem: layouts: u-boot-env: remove crc32 endianness conversion" This reverts commit 030c74c07acf98c278572b2792e9cf37c4ca0377. --- drivers/nvmem/u-boot-env.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/nvmem/u-boot-env.c b/drivers/nvmem/u-boot-env.c index 8712d3709a26..adabbfdad6fb 100644 --- a/drivers/nvmem/u-boot-env.c +++ b/drivers/nvmem/u-boot-env.c @@ -132,7 +132,7 @@ static int u_boot_env_parse(struct u_boot_env *priv) size_t crc32_data_offset; size_t crc32_data_len; size_t crc32_offset; - uint32_t *crc32_addr; + __le32 *crc32_addr; size_t data_offset; size_t data_len; size_t dev_size; @@ -183,8 +183,8 @@ static int u_boot_env_parse(struct u_boot_env *priv) goto err_kfree; } - crc32_addr = (uint32_t *)(buf + crc32_offset); - crc32 = *crc32_addr; + crc32_addr = (__le32 *)(buf + crc32_offset); + crc32 = le32_to_cpu(*crc32_addr); crc32_data_len = dev_size - crc32_data_offset; data_len = dev_size - data_offset; -- Gitee From 1e571209e908238d13fc74a458e653a0d933e14f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:22 +0800 Subject: [PATCH 0081/1421] Revert "i2c: omap: fix deprecated of_property_read_bool() use" This reverts commit 12f2c0064d02fe084c19f1f8898f402980d9b807. --- drivers/i2c/busses/i2c-omap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index fad88ab32716..534ca652c3b2 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -1457,7 +1457,7 @@ omap_i2c_probe(struct platform_device *pdev) (1000 * omap->speed / 8); } - if (of_property_present(node, "mux-states")) { + if (of_property_read_bool(node, "mux-states")) { struct mux_state *mux_state; mux_state = devm_mux_state_get(&pdev->dev, NULL); -- Gitee From 2cab370464e8995208fa4a9b8ba93f341b9453db Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:22 +0800 Subject: [PATCH 0082/1421] Revert "Revert "selftests/bpf: dummy_st_ops should reject 0 for non-nullable params"" This reverts commit 9dbb6af7f4d672103baec5c99bd0cfaab95c9f73. --- .../selftests/bpf/prog_tests/dummy_st_ops.c | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c b/tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c index dd926c00f414..d3d94596ab79 100644 --- a/tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c +++ b/tools/testing/selftests/bpf/prog_tests/dummy_st_ops.c @@ -147,6 +147,31 @@ static void test_dummy_sleepable(void) dummy_st_ops_success__destroy(skel); } +/* dummy_st_ops.test_sleepable() parameter is not marked as nullable, + * thus bpf_prog_test_run_opts() below should be rejected as it tries + * to pass NULL for this parameter. + */ +static void test_dummy_sleepable_reject_null(void) +{ + __u64 args[1] = {0}; + LIBBPF_OPTS(bpf_test_run_opts, attr, + .ctx_in = args, + .ctx_size_in = sizeof(args), + ); + struct dummy_st_ops_success *skel; + int fd, err; + + skel = dummy_st_ops_success__open_and_load(); + if (!ASSERT_OK_PTR(skel, "dummy_st_ops_load")) + return; + + fd = bpf_program__fd(skel->progs.test_sleepable); + err = bpf_prog_test_run_opts(fd, &attr); + ASSERT_EQ(err, -EINVAL, "test_run"); + + dummy_st_ops_success__destroy(skel); +} + void test_dummy_st_ops(void) { if (test__start_subtest("dummy_st_ops_attach")) @@ -159,6 +184,8 @@ void test_dummy_st_ops(void) test_dummy_multiple_args(); if (test__start_subtest("dummy_sleepable")) test_dummy_sleepable(); + if (test__start_subtest("dummy_sleepable_reject_null")) + test_dummy_sleepable_reject_null(); RUN_TESTS(dummy_st_ops_fail); } -- Gitee From 1a1f377b5f1f958fb88633f0e9a65645a1992938 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:22 +0800 Subject: [PATCH 0083/1421] Revert "Revert "selftests/bpf: adjust dummy_st_ops_success to detect additional error"" This reverts commit 0359e404fe647379cf43bba7033c8f5348440ba5. --- .../selftests/bpf/progs/dummy_st_ops_success.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/dummy_st_ops_success.c b/tools/testing/selftests/bpf/progs/dummy_st_ops_success.c index 151e3a3ea27f..ec0c595d47af 100644 --- a/tools/testing/selftests/bpf/progs/dummy_st_ops_success.c +++ b/tools/testing/selftests/bpf/progs/dummy_st_ops_success.c @@ -11,8 +11,17 @@ int BPF_PROG(test_1, struct bpf_dummy_ops_state *state) { int ret; - if (!state) - return 0xf2f3f4f5; + /* Check that 'state' nullable status is detected correctly. + * If 'state' argument would be assumed non-null by verifier + * the code below would be deleted as dead (which it shouldn't). + * Hide it from the compiler behind 'asm' block to avoid + * unnecessary optimizations. + */ + asm volatile ( + "if %[state] != 0 goto +2;" + "r0 = 0xf2f3f4f5;" + "exit;" + ::[state]"p"(state)); ret = state->val; state->val = 0x5a; -- Gitee From f0d8b054491c05ba04fd65323f1f8c9817929c91 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:23 +0800 Subject: [PATCH 0084/1421] Revert "ASoC: fsl_sai: Force a software reset when starting in consumer mode" This reverts commit 618a9cf516e9d5d6c21e1b1cd0d5e433c73e8c78. --- sound/soc/fsl/fsl_sai.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index 886f5c29939b..aa15f56ca139 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -762,15 +762,13 @@ static void fsl_sai_config_disable(struct fsl_sai *sai, int dir) * anymore. Add software reset to fix this issue. * This is a hardware bug, and will be fix in the * next sai version. - * - * In consumer mode, this can happen even after a - * single open/close, especially if both tx and rx - * are running concurrently. */ - /* Software Reset */ - regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR); - /* Clear SR bit to finish the reset */ - regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), 0); + if (!sai->is_consumer_mode) { + /* Software Reset */ + regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR); + /* Clear SR bit to finish the reset */ + regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), 0); + } } static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd, -- Gitee From 7f870a90d61ee8fc426a74e9ef12e6efc851ed09 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:23 +0800 Subject: [PATCH 0085/1421] Revert "regulator: pwm-regulator: Manage boot-on with disabled PWM channels" This reverts commit edabdb68dab280d81d76b27ee049ce3e95941f17. --- drivers/regulator/pwm-regulator.c | 33 ------------------------------- 1 file changed, 33 deletions(-) diff --git a/drivers/regulator/pwm-regulator.c b/drivers/regulator/pwm-regulator.c index 60cfcd741c2a..d27b9a7a30c9 100644 --- a/drivers/regulator/pwm-regulator.c +++ b/drivers/regulator/pwm-regulator.c @@ -323,32 +323,6 @@ static int pwm_regulator_init_continuous(struct platform_device *pdev, return 0; } -static int pwm_regulator_init_boot_on(struct platform_device *pdev, - struct pwm_regulator_data *drvdata, - const struct regulator_init_data *init_data) -{ - struct pwm_state pstate; - - if (!init_data->constraints.boot_on || drvdata->enb_gpio) - return 0; - - pwm_get_state(drvdata->pwm, &pstate); - if (pstate.enabled) - return 0; - - /* - * Update the duty cycle so the output does not change - * when the regulator core enables the regulator (and - * thus the PWM channel). - */ - if (pstate.polarity == PWM_POLARITY_INVERSED) - pstate.duty_cycle = pstate.period; - else - pstate.duty_cycle = 0; - - return pwm_apply_might_sleep(drvdata->pwm, &pstate); -} - static int pwm_regulator_probe(struct platform_device *pdev) { const struct regulator_init_data *init_data; @@ -408,13 +382,6 @@ static int pwm_regulator_probe(struct platform_device *pdev) if (ret) return ret; - ret = pwm_regulator_init_boot_on(pdev, drvdata, init_data); - if (ret) { - dev_err(&pdev->dev, "Failed to apply boot_on settings: %d\n", - ret); - return ret; - } - regulator = devm_regulator_register(&pdev->dev, &drvdata->desc, &config); if (IS_ERR(regulator)) { -- Gitee From 3d7d63f8ef546d91424a4fdf234a0b019af463a9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:23 +0800 Subject: [PATCH 0086/1421] Revert "regulator: pwm-regulator: Calculate the output voltage for disabled PWMs" This reverts commit 019070a754ce4ddf97e30111838b7eb853101b4f. --- drivers/regulator/pwm-regulator.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/regulator/pwm-regulator.c b/drivers/regulator/pwm-regulator.c index d27b9a7a30c9..226ca4c62673 100644 --- a/drivers/regulator/pwm-regulator.c +++ b/drivers/regulator/pwm-regulator.c @@ -157,13 +157,6 @@ static int pwm_regulator_get_voltage(struct regulator_dev *rdev) pwm_get_state(drvdata->pwm, &pstate); - if (!pstate.enabled) { - if (pstate.polarity == PWM_POLARITY_INVERSED) - pstate.duty_cycle = pstate.period; - else - pstate.duty_cycle = 0; - } - voltage = pwm_get_relative_duty_cycle(&pstate, duty_unit); if (voltage < min(max_uV_duty, min_uV_duty) || voltage > max(max_uV_duty, min_uV_duty)) -- Gitee From 8aba5f745ba02bae3f459cca95c4f1f9c80dd168 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:23 +0800 Subject: [PATCH 0087/1421] Revert "i2c: omap: Handle omap_i2c_init() errors in omap_i2c_probe()" This reverts commit b59bd7b50ce7941c96c3f21701af61615268bd21. --- drivers/i2c/busses/i2c-omap.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 534ca652c3b2..16c5d79143ff 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -1475,9 +1475,7 @@ omap_i2c_probe(struct platform_device *pdev) } /* reset ASAP, clearing any IRQs */ - r = omap_i2c_init(omap); - if (r) - goto err_mux_state_deselect; + omap_i2c_init(omap); if (omap->rev < OMAP_I2C_OMAP1_REV_2) r = devm_request_irq(&pdev->dev, omap->irq, omap_i2c_omap1_isr, @@ -1520,7 +1518,6 @@ omap_i2c_probe(struct platform_device *pdev) err_unuse_clocks: omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0); -err_mux_state_deselect: if (omap->mux_state) mux_state_deselect(omap->mux_state); err_put_pm: -- Gitee From 79775ca2e28784c7e557736fe9f46e1d94beea47 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:23 +0800 Subject: [PATCH 0088/1421] Revert "i2c: omap: Fix an error handling path in omap_i2c_probe()" This reverts commit baa5cec24198067de7a6f80a41949c0f6d79def4. --- drivers/i2c/busses/i2c-omap.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 16c5d79143ff..ffc116e76ba1 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -1464,13 +1464,13 @@ omap_i2c_probe(struct platform_device *pdev) if (IS_ERR(mux_state)) { r = PTR_ERR(mux_state); dev_dbg(&pdev->dev, "failed to get I2C mux: %d\n", r); - goto err_put_pm; + goto err_disable_pm; } omap->mux_state = mux_state; r = mux_state_select(omap->mux_state); if (r) { dev_err(&pdev->dev, "failed to select I2C mux: %d\n", r); - goto err_put_pm; + goto err_disable_pm; } } @@ -1518,9 +1518,6 @@ omap_i2c_probe(struct platform_device *pdev) err_unuse_clocks: omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0); - if (omap->mux_state) - mux_state_deselect(omap->mux_state); -err_put_pm: pm_runtime_dont_use_autosuspend(omap->dev); pm_runtime_put_sync(omap->dev); err_disable_pm: -- Gitee From 2fb5e09618c03bf6ac3c88ee5935abe38f174aed Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:24 +0800 Subject: [PATCH 0089/1421] Revert "i2c: omap: Add support for setting mux" This reverts commit f6e213986d43bd79913f7a557eb8b9ffa59d9cab. --- drivers/i2c/busses/Kconfig | 1 - drivers/i2c/busses/i2c-omap.c | 22 ---------------------- 2 files changed, 23 deletions(-) diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig index 8d4270664ebd..982007a112c2 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig @@ -899,7 +899,6 @@ config I2C_OMAP tristate "OMAP I2C adapter" depends on ARCH_OMAP || ARCH_K3 || COMPILE_TEST default MACH_OMAP_OSK - select MULTIPLEXER help If you say yes to this option, support will be included for the I2C interface on the Texas Instruments OMAP1/2 family of processors. diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index ffc116e76ba1..22975bfd6b25 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -212,7 +211,6 @@ struct omap_i2c_dev { u16 syscstate; u16 westate; u16 errata; - struct mux_state *mux_state; }; static const u8 reg_map_ip_v1[] = { @@ -1457,23 +1455,6 @@ omap_i2c_probe(struct platform_device *pdev) (1000 * omap->speed / 8); } - if (of_property_read_bool(node, "mux-states")) { - struct mux_state *mux_state; - - mux_state = devm_mux_state_get(&pdev->dev, NULL); - if (IS_ERR(mux_state)) { - r = PTR_ERR(mux_state); - dev_dbg(&pdev->dev, "failed to get I2C mux: %d\n", r); - goto err_disable_pm; - } - omap->mux_state = mux_state; - r = mux_state_select(omap->mux_state); - if (r) { - dev_err(&pdev->dev, "failed to select I2C mux: %d\n", r); - goto err_disable_pm; - } - } - /* reset ASAP, clearing any IRQs */ omap_i2c_init(omap); @@ -1533,9 +1514,6 @@ static void omap_i2c_remove(struct platform_device *pdev) i2c_del_adapter(&omap->adapter); - if (omap->mux_state) - mux_state_deselect(omap->mux_state); - ret = pm_runtime_get_sync(&pdev->dev); if (ret < 0) dev_err(omap->dev, "Failed to resume hardware, skip disable\n"); -- Gitee From 6bd34545aa7e043f579aee54bf23b62f638117b6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:24 +0800 Subject: [PATCH 0090/1421] Revert "usb: dwc3: qcom: Don't leave BCR asserted" This reverts commit f37db3cfa226653c27642dee9dcb17f96af87ec8. --- drivers/usb/dwc3/dwc3-qcom.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c index add808efb871..82544374110b 100644 --- a/drivers/usb/dwc3/dwc3-qcom.c +++ b/drivers/usb/dwc3/dwc3-qcom.c @@ -854,13 +854,13 @@ static int dwc3_qcom_probe(struct platform_device *pdev) ret = reset_control_deassert(qcom->resets); if (ret) { dev_err(&pdev->dev, "failed to deassert resets, err=%d\n", ret); - return ret; + goto reset_assert; } ret = dwc3_qcom_clk_init(qcom, of_clk_get_parent_count(np)); if (ret) { dev_err_probe(dev, ret, "failed to get clocks\n"); - return ret; + goto reset_assert; } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); @@ -964,6 +964,8 @@ static int dwc3_qcom_probe(struct platform_device *pdev) clk_disable_unprepare(qcom->clks[i]); clk_put(qcom->clks[i]); } +reset_assert: + reset_control_assert(qcom->resets); return ret; } @@ -993,6 +995,8 @@ static void dwc3_qcom_remove(struct platform_device *pdev) qcom->num_clocks = 0; dwc3_qcom_interconnect_exit(qcom); + reset_control_assert(qcom->resets); + pm_runtime_allow(dev); pm_runtime_disable(dev); } -- Gitee From ee606b0f5cde41e5a3faee0749c909f13a909752 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:24 +0800 Subject: [PATCH 0091/1421] Revert "usb: hub: Don't try to recover devices lost during warm reset." This reverts commit efbe36e583bb8df3b3aabb239cdc425c5287a18d. --- drivers/usb/core/hub.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index bebc41308ca9..acaaffb0d918 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5714,7 +5714,6 @@ static void port_event(struct usb_hub *hub, int port1) struct usb_device *hdev = hub->hdev; u16 portstatus, portchange; int i = 0; - int err; connect_change = test_bit(port1, hub->change_bits); clear_bit(port1, hub->event_bits); @@ -5811,11 +5810,8 @@ static void port_event(struct usb_hub *hub, int port1) } else if (!udev || !(portstatus & USB_PORT_STAT_CONNECTION) || udev->state == USB_STATE_NOTATTACHED) { dev_dbg(&port_dev->dev, "do warm reset, port only\n"); - err = hub_port_reset(hub, port1, NULL, - HUB_BH_RESET_TIME, true); - if (!udev && err == -ENOTCONN) - connect_change = 0; - else if (err < 0) + if (hub_port_reset(hub, port1, NULL, + HUB_BH_RESET_TIME, true) < 0) hub_port_disable(hub, port1, 1); } else { dev_dbg(&port_dev->dev, "do warm reset, full device\n"); -- Gitee From 83735fafebd18a42cee29fc336f0fb72cb6bebaf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:24 +0800 Subject: [PATCH 0092/1421] Revert "usb: hub: Fix flushing of delayed work used for post resume purposes" This reverts commit 65e85ef04ad7ad8fca4e68294d9e2b2b75d95288. --- drivers/usb/core/hub.c | 21 +++++++++++++-------- drivers/usb/core/hub.h | 1 - 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index acaaffb0d918..22f2170f0742 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1044,11 +1044,12 @@ int usb_remove_device(struct usb_device *udev) enum hub_activation_type { HUB_INIT, HUB_INIT2, HUB_INIT3, /* INITs must come first */ - HUB_POST_RESET, HUB_RESUME, HUB_RESET_RESUME, + HUB_POST_RESET, HUB_RESUME, HUB_RESET_RESUME, HUB_POST_RESUME, }; static void hub_init_func2(struct work_struct *ws); static void hub_init_func3(struct work_struct *ws); +static void hub_post_resume(struct work_struct *ws); static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) { @@ -1072,6 +1073,12 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) goto init3; } + if (type == HUB_POST_RESUME) { + usb_autopm_put_interface_async(to_usb_interface(hub->intfdev)); + hub_put(hub); + return; + } + hub_get(hub); /* The superspeed hub except for root hub has to use Hub Depth @@ -1325,8 +1332,8 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) usb_autopm_get_interface_no_resume( to_usb_interface(hub->intfdev)); - queue_delayed_work(system_power_efficient_wq, - &hub->post_resume_work, + INIT_DELAYED_WORK(&hub->init_work, hub_post_resume); + queue_delayed_work(system_power_efficient_wq, &hub->init_work, msecs_to_jiffies(USB_SS_PORT_U0_WAKE_TIME)); return; } @@ -1351,10 +1358,9 @@ static void hub_init_func3(struct work_struct *ws) static void hub_post_resume(struct work_struct *ws) { - struct usb_hub *hub = container_of(ws, struct usb_hub, post_resume_work.work); + struct usb_hub *hub = container_of(ws, struct usb_hub, init_work.work); - usb_autopm_put_interface_async(to_usb_interface(hub->intfdev)); - hub_put(hub); + hub_activate(hub, HUB_POST_RESUME); } enum hub_quiescing_type { @@ -1382,7 +1388,7 @@ static void hub_quiesce(struct usb_hub *hub, enum hub_quiescing_type type) /* Stop hub_wq and related activity */ del_timer_sync(&hub->irq_urb_retry); - flush_delayed_work(&hub->post_resume_work); + flush_delayed_work(&hub->init_work); usb_kill_urb(hub->urb); if (hub->has_indicators) cancel_delayed_work_sync(&hub->leds); @@ -1941,7 +1947,6 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id) hub->hdev = hdev; INIT_DELAYED_WORK(&hub->leds, led_work); INIT_DELAYED_WORK(&hub->init_work, NULL); - INIT_DELAYED_WORK(&hub->post_resume_work, hub_post_resume); INIT_WORK(&hub->events, hub_event); INIT_LIST_HEAD(&hub->onboard_hub_devs); spin_lock_init(&hub->irq_urb_lock); diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h index 59c426e0e0b9..6610cf6131c6 100644 --- a/drivers/usb/core/hub.h +++ b/drivers/usb/core/hub.h @@ -69,7 +69,6 @@ struct usb_hub { u8 indicator[USB_MAXCHILDREN]; struct delayed_work leds; struct delayed_work init_work; - struct delayed_work post_resume_work; struct work_struct events; spinlock_t irq_urb_lock; struct timer_list irq_urb_retry; -- Gitee From e801473778c3c3b76dd0607cf3e955639d5a6eee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:25 +0800 Subject: [PATCH 0093/1421] Revert "usb: hub: Fix flushing and scheduling of delayed work that tunes runtime pm" This reverts commit a689004230048c07d9932e4c18f40d43596f3d4c. --- drivers/usb/core/hub.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 22f2170f0742..3e0967ec8db7 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1329,12 +1329,11 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) if (type == HUB_RESUME && hub_is_superspeed(hub->hdev)) { /* give usb3 downstream links training time after hub resume */ - usb_autopm_get_interface_no_resume( - to_usb_interface(hub->intfdev)); - INIT_DELAYED_WORK(&hub->init_work, hub_post_resume); queue_delayed_work(system_power_efficient_wq, &hub->init_work, msecs_to_jiffies(USB_SS_PORT_U0_WAKE_TIME)); + usb_autopm_get_interface_no_resume( + to_usb_interface(hub->intfdev)); return; } @@ -1388,7 +1387,6 @@ static void hub_quiesce(struct usb_hub *hub, enum hub_quiescing_type type) /* Stop hub_wq and related activity */ del_timer_sync(&hub->irq_urb_retry); - flush_delayed_work(&hub->init_work); usb_kill_urb(hub->urb); if (hub->has_indicators) cancel_delayed_work_sync(&hub->leds); -- Gitee From 8ee3be17cebd6e975c8930f37f24187f10bb3cd5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:25 +0800 Subject: [PATCH 0094/1421] Revert "usb: hub: fix detection of high tier USB3 devices behind suspended hubs" This reverts commit 183e6ab551406a1c61a16ca616fe86bf4a4c1887. --- drivers/usb/core/hub.c | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 3e0967ec8db7..855356752380 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -66,12 +66,6 @@ */ #define USB_SHORT_SET_ADDRESS_REQ_TIMEOUT 500 /* ms */ -/* - * Give SS hubs 200ms time after wake to train downstream links before - * assuming no port activity and allowing hub to runtime suspend back. - */ -#define USB_SS_PORT_U0_WAKE_TIME 200 /* ms */ - /* Protect struct usb_device->state and ->children members * Note: Both are also protected by ->dev.sem, except that ->state can * change to USB_STATE_NOTATTACHED even when the semaphore isn't held. */ @@ -1044,12 +1038,11 @@ int usb_remove_device(struct usb_device *udev) enum hub_activation_type { HUB_INIT, HUB_INIT2, HUB_INIT3, /* INITs must come first */ - HUB_POST_RESET, HUB_RESUME, HUB_RESET_RESUME, HUB_POST_RESUME, + HUB_POST_RESET, HUB_RESUME, HUB_RESET_RESUME, }; static void hub_init_func2(struct work_struct *ws); static void hub_init_func3(struct work_struct *ws); -static void hub_post_resume(struct work_struct *ws); static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) { @@ -1072,13 +1065,6 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) goto init2; goto init3; } - - if (type == HUB_POST_RESUME) { - usb_autopm_put_interface_async(to_usb_interface(hub->intfdev)); - hub_put(hub); - return; - } - hub_get(hub); /* The superspeed hub except for root hub has to use Hub Depth @@ -1327,16 +1313,6 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) device_unlock(&hdev->dev); } - if (type == HUB_RESUME && hub_is_superspeed(hub->hdev)) { - /* give usb3 downstream links training time after hub resume */ - INIT_DELAYED_WORK(&hub->init_work, hub_post_resume); - queue_delayed_work(system_power_efficient_wq, &hub->init_work, - msecs_to_jiffies(USB_SS_PORT_U0_WAKE_TIME)); - usb_autopm_get_interface_no_resume( - to_usb_interface(hub->intfdev)); - return; - } - hub_put(hub); } @@ -1355,13 +1331,6 @@ static void hub_init_func3(struct work_struct *ws) hub_activate(hub, HUB_INIT3); } -static void hub_post_resume(struct work_struct *ws) -{ - struct usb_hub *hub = container_of(ws, struct usb_hub, init_work.work); - - hub_activate(hub, HUB_POST_RESUME); -} - enum hub_quiescing_type { HUB_DISCONNECT, HUB_PRE_RESET, HUB_SUSPEND }; -- Gitee From 0a5fcd196d66948b21aafec194be176c91a684a4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:25 +0800 Subject: [PATCH 0095/1421] Revert "arm64: Filter out SME hwcaps when FEAT_SME isn't implemented" This reverts commit 392de3ac37ba2a3ff3d54e20afa601f9841640e3. --- arch/arm64/kernel/cpufeature.c | 35 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index b6d381f743f3..82778258855d 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -2804,13 +2804,6 @@ static bool has_sve_feature(const struct arm64_cpu_capabilities *cap, int scope) } #endif -#ifdef CONFIG_ARM64_SME -static bool has_sme_feature(const struct arm64_cpu_capabilities *cap, int scope) -{ - return system_supports_sme() && has_user_cpuid_feature(cap, scope); -} -#endif - static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = { HWCAP_CAP(ID_AA64ISAR0_EL1, AES, PMULL, CAP_HWCAP, KERNEL_HWCAP_PMULL), HWCAP_CAP(ID_AA64ISAR0_EL1, AES, AES, CAP_HWCAP, KERNEL_HWCAP_AES), @@ -2882,20 +2875,20 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = { HWCAP_CAP(ID_AA64ISAR2_EL1, MOPS, IMP, CAP_HWCAP, KERNEL_HWCAP_MOPS), HWCAP_CAP(ID_AA64ISAR2_EL1, BC, IMP, CAP_HWCAP, KERNEL_HWCAP_HBC), #ifdef CONFIG_ARM64_SME - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64PFR1_EL1, SME, IMP, CAP_HWCAP, KERNEL_HWCAP_SME), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, FA64, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_FA64), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, SMEver, SME2p1, CAP_HWCAP, KERNEL_HWCAP_SME2P1), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, SMEver, SME2, CAP_HWCAP, KERNEL_HWCAP_SME2), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, I16I64, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_I16I64), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, F64F64, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F64F64), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, I16I32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_I16I32), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, B16B16, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_B16B16), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, F16F16, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F16F16), - HWCAP_CAP(ID_MATCH_ID(has_sme_feature, AA64SMFR0_EL1, I8I32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_I8I32), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, F16F32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F16F32), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, B16F32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_B16F32), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, BI32I32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_BI32I32), - HWCAP_CAP_MATCH_ID(has_sme_feature, ID_AA64SMFR0_EL1, F32F32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F32F32), + HWCAP_CAP(ID_AA64PFR1_EL1, SME, IMP, CAP_HWCAP, KERNEL_HWCAP_SME), + HWCAP_CAP(ID_AA64SMFR0_EL1, FA64, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_FA64), + HWCAP_CAP(ID_AA64SMFR0_EL1, SMEver, SME2p1, CAP_HWCAP, KERNEL_HWCAP_SME2P1), + HWCAP_CAP(ID_AA64SMFR0_EL1, SMEver, SME2, CAP_HWCAP, KERNEL_HWCAP_SME2), + HWCAP_CAP(ID_AA64SMFR0_EL1, I16I64, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_I16I64), + HWCAP_CAP(ID_AA64SMFR0_EL1, F64F64, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F64F64), + HWCAP_CAP(ID_AA64SMFR0_EL1, I16I32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_I16I32), + HWCAP_CAP(ID_AA64SMFR0_EL1, B16B16, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_B16B16), + HWCAP_CAP(ID_AA64SMFR0_EL1, F16F16, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F16F16), + HWCAP_CAP(ID_AA64SMFR0_EL1, I8I32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_I8I32), + HWCAP_CAP(ID_AA64SMFR0_EL1, F16F32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F16F32), + HWCAP_CAP(ID_AA64SMFR0_EL1, B16F32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_B16F32), + HWCAP_CAP(ID_AA64SMFR0_EL1, BI32I32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_BI32I32), + HWCAP_CAP(ID_AA64SMFR0_EL1, F32F32, IMP, CAP_HWCAP, KERNEL_HWCAP_SME_F32F32), #endif /* CONFIG_ARM64_SME */ {}, }; -- Gitee From 5d153b471a1327420a166c7d3e5e0e6862469aac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:25 +0800 Subject: [PATCH 0096/1421] Revert "clone_private_mnt(): make sure that caller has CAP_SYS_ADMIN in the right userns" This reverts commit 8469e0efb4298da5f4275396cbe7fe2e1af952ec. --- fs/namespace.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 6a9c53c800c4..cebcb9fa2acc 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2110,11 +2110,6 @@ struct vfsmount *clone_private_mount(const struct path *path) if (!check_mnt(old_mnt)) goto invalid; - if (!ns_capable(old_mnt->mnt_ns->user_ns, CAP_SYS_ADMIN)) { - up_read(&namespace_sem); - return ERR_PTR(-EPERM); - } - if (has_locked_children(old_mnt, path->dentry)) goto invalid; -- Gitee From 9a09f9757626699a683f3d708e9a4c8cea740412 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:25 +0800 Subject: [PATCH 0097/1421] Revert "ipv6: make addrconf_wq single threaded" This reverts commit fce2654dc56fb90ced91b0405af626da92a293fe. --- net/ipv6/addrconf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index f6188bd9f55b..74f7f3e8d960 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -7383,8 +7383,7 @@ int __init addrconf_init(void) if (err < 0) goto out_addrlabel; - /* All works using addrconf_wq need to lock rtnl. */ - addrconf_wq = create_singlethread_workqueue("ipv6_addrconf"); + addrconf_wq = create_workqueue("ipv6_addrconf"); if (!addrconf_wq) { err = -ENOMEM; goto out_nowq; -- Gitee From a3916e1831c569a229a6290e7418029d5228d7c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:26 +0800 Subject: [PATCH 0098/1421] Revert "sched: Change nr_uninterruptible type to unsigned long" This reverts commit 0c752d18d1e41d4306be5120732124c88728a976. --- kernel/sched/loadavg.c | 2 +- kernel/sched/sched.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/loadavg.c b/kernel/sched/loadavg.c index 35537ea03fff..52c8f8226b0d 100644 --- a/kernel/sched/loadavg.c +++ b/kernel/sched/loadavg.c @@ -80,7 +80,7 @@ long calc_load_fold_active(struct rq *this_rq, long adjust) long nr_active, delta = 0; nr_active = this_rq->nr_running - adjust; - nr_active += (long)this_rq->nr_uninterruptible; + nr_active += (int)this_rq->nr_uninterruptible; if (nr_active != this_rq->calc_load_active) { delta = nr_active - this_rq->calc_load_active; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index fd883922cee7..e079a51cc60a 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1115,7 +1115,7 @@ struct rq { * one CPU and if it got migrated afterwards it may decrease * it on another CPU. Always updated under the runqueue lock: */ - unsigned long nr_uninterruptible; + unsigned int nr_uninterruptible; struct task_struct __rcu *curr; struct task_struct *idle; -- Gitee From 6eefebb28a074dd74313f0cb95f9601ea2f2838f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:26 +0800 Subject: [PATCH 0099/1421] Revert "Revert "cgroup_freezer: cgroup_freezing: Check if not frozen"" This reverts commit bff1078b80573c402f8a3dc6e82cac3e8f165db3. --- kernel/cgroup/legacy_freezer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c index bee2f9ea5e4a..a3e13e6d5ee4 100644 --- a/kernel/cgroup/legacy_freezer.c +++ b/kernel/cgroup/legacy_freezer.c @@ -66,9 +66,15 @@ static struct freezer *parent_freezer(struct freezer *freezer) bool cgroup_freezing(struct task_struct *task) { bool ret; + unsigned int state; rcu_read_lock(); - ret = task_freezer(task)->state & CGROUP_FREEZING; + /* Check if the cgroup is still FREEZING, but not FROZEN. The extra + * !FROZEN check is required, because the FREEZING bit is not cleared + * when the state FROZEN is reached. + */ + state = task_freezer(task)->state; + ret = (state & CGROUP_FREEZING) && !(state & CGROUP_FROZEN); rcu_read_unlock(); return ret; -- Gitee From 0b4ec876ebbd00a1b611ae51162ddc2a8e3ef941 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:26 +0800 Subject: [PATCH 0100/1421] Revert "rxrpc: Fix transmission of an abort in response to an abort" This reverts commit 812713674bc33c8a21e5c49fa30efd420beed303. --- net/rxrpc/output.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/rxrpc/output.c b/net/rxrpc/output.c index 4bbb27a48bd8..cad6a7d18e04 100644 --- a/net/rxrpc/output.c +++ b/net/rxrpc/output.c @@ -589,9 +589,6 @@ void rxrpc_reject_packet(struct rxrpc_local *local, struct sk_buff *skb) __be32 code; int ret, ioc; - if (sp->hdr.type == RXRPC_PACKET_TYPE_ABORT) - return; /* Never abort an abort. */ - rxrpc_see_skb(skb, rxrpc_skb_see_reject); iov[0].iov_base = &whdr; -- Gitee From 5486e4adaa95c0b4a50e31b0786c389191fe8ed8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:26 +0800 Subject: [PATCH 0101/1421] Revert "rxrpc: Fix recv-recv race of completed call" This reverts commit 580406c75b88bd6b7f72880ad813acdb5ba7e86c. --- include/trace/events/rxrpc.h | 3 --- net/rxrpc/call_accept.c | 1 - net/rxrpc/recvmsg.c | 19 ++----------------- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h index 743f8f1f42a7..e7c7b6389436 100644 --- a/include/trace/events/rxrpc.h +++ b/include/trace/events/rxrpc.h @@ -278,15 +278,12 @@ EM(rxrpc_call_put_userid, "PUT user-id ") \ EM(rxrpc_call_see_accept, "SEE accept ") \ EM(rxrpc_call_see_activate_client, "SEE act-clnt") \ - EM(rxrpc_call_see_already_released, "SEE alrdy-rl") \ EM(rxrpc_call_see_connect_failed, "SEE con-fail") \ EM(rxrpc_call_see_connected, "SEE connect ") \ EM(rxrpc_call_see_conn_abort, "SEE conn-abt") \ - EM(rxrpc_call_see_discard, "SEE discard ") \ EM(rxrpc_call_see_disconnected, "SEE disconn ") \ EM(rxrpc_call_see_distribute_error, "SEE dist-err") \ EM(rxrpc_call_see_input, "SEE input ") \ - EM(rxrpc_call_see_recvmsg, "SEE recvmsg ") \ EM(rxrpc_call_see_release, "SEE release ") \ EM(rxrpc_call_see_userid_exists, "SEE u-exists") \ EM(rxrpc_call_see_waiting_call, "SEE q-conn ") \ diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c index 37ac8a665678..773bdb2e37da 100644 --- a/net/rxrpc/call_accept.c +++ b/net/rxrpc/call_accept.c @@ -219,7 +219,6 @@ void rxrpc_discard_prealloc(struct rxrpc_sock *rx) tail = b->call_backlog_tail; while (CIRC_CNT(head, tail, size) > 0) { struct rxrpc_call *call = b->call_backlog[tail]; - rxrpc_see_call(call, rxrpc_call_see_discard); rcu_assign_pointer(call->socket, rx); if (rx->discard_new_call) { _debug("discard %lx", call->user_call_ID); diff --git a/net/rxrpc/recvmsg.c b/net/rxrpc/recvmsg.c index e24a44bae9a3..a482f88c5fc5 100644 --- a/net/rxrpc/recvmsg.c +++ b/net/rxrpc/recvmsg.c @@ -351,16 +351,6 @@ int rxrpc_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, goto try_again; } - rxrpc_see_call(call, rxrpc_call_see_recvmsg); - if (test_bit(RXRPC_CALL_RELEASED, &call->flags)) { - rxrpc_see_call(call, rxrpc_call_see_already_released); - list_del_init(&call->recvmsg_link); - spin_unlock_irq(&rx->recvmsg_lock); - release_sock(&rx->sk); - trace_rxrpc_recvmsg(call->debug_id, rxrpc_recvmsg_unqueue, 0); - rxrpc_put_call(call, rxrpc_call_put_recvmsg); - goto try_again; - } if (!(flags & MSG_PEEK)) list_del_init(&call->recvmsg_link); else @@ -384,13 +374,8 @@ int rxrpc_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, release_sock(&rx->sk); - if (test_bit(RXRPC_CALL_RELEASED, &call->flags)) { - rxrpc_see_call(call, rxrpc_call_see_already_released); - mutex_unlock(&call->user_mutex); - if (!(flags & MSG_PEEK)) - rxrpc_put_call(call, rxrpc_call_put_recvmsg); - goto try_again; - } + if (test_bit(RXRPC_CALL_RELEASED, &call->flags)) + BUG(); if (test_bit(RXRPC_CALL_HAS_USERID, &call->flags)) { if (flags & MSG_CMSG_COMPAT) { -- Gitee From 5dee62b15b1a60ed6a8b95ede01b00003a7b69c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:26 +0800 Subject: [PATCH 0102/1421] Revert "net/sched: Return NULL when htb_lookup_leaf encounters an empty rbtree" This reverts commit 1c3a84fb3b243291a48634f75636a808c367a022. --- net/sched/sch_htb.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index 113b305b0d15..716da8c6b3de 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c @@ -821,9 +821,7 @@ static struct htb_class *htb_lookup_leaf(struct htb_prio *hprio, const int prio) u32 *pid; } stk[TC_HTB_MAXDEPTH], *sp = stk; - if (unlikely(!hprio->row.rb_node)) - return NULL; - + BUG_ON(!hprio->row.rb_node); sp->root = hprio->row.rb_node; sp->pptr = &hprio->ptr; sp->pid = &hprio->last_ptr_id; -- Gitee From 744af1b1af0fb72d0e90e620a8d23e8957dc31fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:27 +0800 Subject: [PATCH 0103/1421] Revert "net: bridge: Do not offload IGMP/MLD messages" This reverts commit d85ddd2794915bbb444615653cf23f6e7fd7d78e. --- net/bridge/br_switchdev.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c index f10bd6a233dc..7b41ee8740cb 100644 --- a/net/bridge/br_switchdev.c +++ b/net/bridge/br_switchdev.c @@ -17,9 +17,6 @@ static bool nbp_switchdev_can_offload_tx_fwd(const struct net_bridge_port *p, if (!static_branch_unlikely(&br_switchdev_tx_fwd_offload)) return false; - if (br_multicast_igmp_type(skb)) - return false; - return (p->flags & BR_TX_FWD_OFFLOAD) && (p->hwdom != BR_INPUT_SKB_CB(skb)->src_hwdom); } -- Gitee From 563fc6ac5dc024ac7d3e61b2b036ac73210c72a1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:27 +0800 Subject: [PATCH 0104/1421] Revert "net: vlan: fix VLAN 0 refcount imbalance of toggling filtering during runtime" This reverts commit f7360170f3af722f6ee94175629f33dd4afb55f6. --- net/8021q/vlan.c | 42 +++++++++--------------------------------- net/8021q/vlan.h | 1 - 2 files changed, 9 insertions(+), 34 deletions(-) diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index 422f726346ea..b477ba37a699 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c @@ -358,35 +358,6 @@ static int __vlan_device_event(struct net_device *dev, unsigned long event) return err; } -static void vlan_vid0_add(struct net_device *dev) -{ - struct vlan_info *vlan_info; - int err; - - if (!(dev->features & NETIF_F_HW_VLAN_CTAG_FILTER)) - return; - - pr_info("adding VLAN 0 to HW filter on device %s\n", dev->name); - - err = vlan_vid_add(dev, htons(ETH_P_8021Q), 0); - if (err) - return; - - vlan_info = rtnl_dereference(dev->vlan_info); - vlan_info->auto_vid0 = true; -} - -static void vlan_vid0_del(struct net_device *dev) -{ - struct vlan_info *vlan_info = rtnl_dereference(dev->vlan_info); - - if (!vlan_info || !vlan_info->auto_vid0) - return; - - vlan_info->auto_vid0 = false; - vlan_vid_del(dev, htons(ETH_P_8021Q), 0); -} - static int vlan_device_event(struct notifier_block *unused, unsigned long event, void *ptr) { @@ -408,10 +379,15 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event, return notifier_from_errno(err); } - if (event == NETDEV_UP) - vlan_vid0_add(dev); - else if (event == NETDEV_DOWN) - vlan_vid0_del(dev); + if ((event == NETDEV_UP) && + (dev->features & NETIF_F_HW_VLAN_CTAG_FILTER)) { + pr_info("adding VLAN 0 to HW filter on device %s\n", + dev->name); + vlan_vid_add(dev, htons(ETH_P_8021Q), 0); + } + if (event == NETDEV_DOWN && + (dev->features & NETIF_F_HW_VLAN_CTAG_FILTER)) + vlan_vid_del(dev, htons(ETH_P_8021Q), 0); vlan_info = rtnl_dereference(dev->vlan_info); if (!vlan_info) diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h index c7ffe591d593..5eaf38875554 100644 --- a/net/8021q/vlan.h +++ b/net/8021q/vlan.h @@ -33,7 +33,6 @@ struct vlan_info { struct vlan_group grp; struct list_head vid_list; unsigned int nr_vids; - bool auto_vid0; struct rcu_head rcu; }; -- Gitee From ecd51977510f37d32d16a5fc7c88314d441c4e66 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:27 +0800 Subject: [PATCH 0105/1421] Revert "tls: always refresh the queue when reading sock" This reverts commit 19388e3aa6613889dd85574f616bde2b09743216. --- net/tls/tls_strp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/tls/tls_strp.c b/net/tls/tls_strp.c index bea60b0160d1..1852fac3e72b 100644 --- a/net/tls/tls_strp.c +++ b/net/tls/tls_strp.c @@ -511,8 +511,9 @@ static int tls_strp_read_sock(struct tls_strparser *strp) if (inq < strp->stm.full_len) return tls_strp_read_copy(strp, true); - tls_strp_load_anchor_with_queue(strp, inq); if (!strp->stm.full_len) { + tls_strp_load_anchor_with_queue(strp, inq); + sz = tls_rx_msg_size(strp, strp->anchor); if (sz < 0) { tls_strp_abort_strp(strp, sz); -- Gitee From 786d839060ec86f9c40fe1d3b41eabdefb607b91 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:27 +0800 Subject: [PATCH 0106/1421] Revert "hv_netvsc: Set VF priv_flags to IFF_NO_ADDRCONF before open to prevent IPv6 addrconf" This reverts commit b2d74a49b579244fefff738d8b53b96566785bab. --- drivers/net/hyperv/netvsc_drv.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index f33f9167ba6b..ce6ac26131b3 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -2313,11 +2313,8 @@ static int netvsc_prepare_bonding(struct net_device *vf_netdev) if (!ndev) return NOTIFY_DONE; - /* Set slave flag and no addrconf flag before open - * to prevent IPv6 addrconf. - */ + /* set slave flag before open to prevent IPv6 addrconf */ vf_netdev->flags |= IFF_SLAVE; - vf_netdev->priv_flags |= IFF_NO_ADDRCONF; return NOTIFY_DONE; } -- Gitee From a5f9fddf38f116ffc23347e2acd981b783036761 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:27 +0800 Subject: [PATCH 0107/1421] Revert "Bluetooth: L2CAP: Fix attempting to adjust outgoing MTU" This reverts commit 119f16bb1a7f615a2504ef38f22e49af1bd3dff2. --- net/bluetooth/l2cap_core.c | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index dabc07700197..f9995a405e35 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -3485,28 +3485,12 @@ static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data, size_t data /* Configure output options and let the other side know * which ones we don't like. */ - /* If MTU is not provided in configure request, try adjusting it - * to the current output MTU if it has been set - * - * Bluetooth Core 6.1, Vol 3, Part A, Section 4.5 - * - * Each configuration parameter value (if any is present) in an - * L2CAP_CONFIGURATION_RSP packet reflects an ‘adjustment’ to a - * configuration parameter value that has been sent (or, in case - * of default values, implied) in the corresponding - * L2CAP_CONFIGURATION_REQ packet. + /* If MTU is not provided in configure request, use the most recently + * explicitly or implicitly accepted value for the other direction, + * or the default value. */ - if (!mtu) { - /* Only adjust for ERTM channels as for older modes the - * remote stack may not be able to detect that the - * adjustment causing it to silently drop packets. - */ - if (chan->mode == L2CAP_MODE_ERTM && - chan->omtu && chan->omtu != L2CAP_DEFAULT_MTU) - mtu = chan->omtu; - else - mtu = L2CAP_DEFAULT_MTU; - } + if (mtu == 0) + mtu = chan->imtu ? chan->imtu : L2CAP_DEFAULT_MTU; if (mtu < L2CAP_DEFAULT_MIN_MTU) result = L2CAP_CONF_UNACCEPT; -- Gitee From fb41a627889b049b3b3e1fdad652b385a175b5be Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:28 +0800 Subject: [PATCH 0108/1421] Revert "netfilter: nf_conntrack: fix crash due to removal of uninitialised entry" This reverts commit 66cb942712e5386fee3db82f4dca8028be6e5eb0. --- include/net/netfilter/nf_conntrack.h | 15 ++------------- net/netfilter/nf_conntrack_core.c | 26 ++++++-------------------- 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index a2c987289401..4085765c3370 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h @@ -302,19 +302,8 @@ static inline bool nf_ct_is_expired(const struct nf_conn *ct) /* use after obtaining a reference count */ static inline bool nf_ct_should_gc(const struct nf_conn *ct) { - if (!nf_ct_is_confirmed(ct)) - return false; - - /* load ct->timeout after is_confirmed() test. - * Pairs with __nf_conntrack_confirm() which: - * 1. Increases ct->timeout value - * 2. Inserts ct into rcu hlist - * 3. Sets the confirmed bit - * 4. Unlocks the hlist lock - */ - smp_acquire__after_ctrl_dep(); - - return nf_ct_is_expired(ct) && !nf_ct_is_dying(ct); + return nf_ct_is_expired(ct) && nf_ct_is_confirmed(ct) && + !nf_ct_is_dying(ct); } #define NF_CT_DAY (86400 * HZ) diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 0081c1a0d5e5..34ad5975fbf3 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -1075,12 +1075,6 @@ static int nf_ct_resolve_clash_harder(struct sk_buff *skb, u32 repl_idx) hlist_nulls_add_head_rcu(&loser_ct->tuplehash[IP_CT_DIR_REPLY].hnnode, &nf_conntrack_hash[repl_idx]); - /* confirmed bit must be set after hlist add, not before: - * loser_ct can still be visible to other cpu due to - * SLAB_TYPESAFE_BY_RCU. - */ - smp_mb__before_atomic(); - set_bit(IPS_CONFIRMED_BIT, &loser_ct->status); NF_CT_STAT_INC(net, clash_resolve); return NF_ACCEPT; @@ -1217,6 +1211,8 @@ __nf_conntrack_confirm(struct sk_buff *skb) * user context, else we insert an already 'dead' hash, blocking * further use of that particular connection -JM. */ + ct->status |= IPS_CONFIRMED; + if (unlikely(nf_ct_is_dying(ct))) { NF_CT_STAT_INC(net, insert_failed); goto dying; @@ -1248,7 +1244,7 @@ __nf_conntrack_confirm(struct sk_buff *skb) } } - /* Timeout is relative to confirmation time, not original + /* Timer relative to confirmation time, not original setting time, otherwise we'd get timer wrap in weird delay cases. */ ct->timeout += nfct_time_stamp; @@ -1256,21 +1252,11 @@ __nf_conntrack_confirm(struct sk_buff *skb) __nf_conntrack_insert_prepare(ct); /* Since the lookup is lockless, hash insertion must be done after - * setting ct->timeout. The RCU barriers guarantee that no other CPU - * can find the conntrack before the above stores are visible. + * starting the timer and setting the CONFIRMED bit. The RCU barriers + * guarantee that no other CPU can find the conntrack before the above + * stores are visible. */ __nf_conntrack_hash_insert(ct, hash, reply_hash); - - /* IPS_CONFIRMED unset means 'ct not (yet) in hash', conntrack lookups - * skip entries that lack this bit. This happens when a CPU is looking - * at a stale entry that is being recycled due to SLAB_TYPESAFE_BY_RCU - * or when another CPU encounters this entry right after the insertion - * but before the set-confirm-bit below. This bit must not be set until - * after __nf_conntrack_hash_insert(). - */ - smp_mb__before_atomic(); - set_bit(IPS_CONFIRMED_BIT, &ct->status); - nf_conntrack_double_unlock(hash, reply_hash); local_bh_enable(); -- Gitee From dcdbfa17426d7019ec5e1985bc09a9e7c320765c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:28 +0800 Subject: [PATCH 0109/1421] Revert "ipv6: mcast: Delay put pmc->idev in mld_del_delrec()" This reverts commit 21c2cb253f963ef2af083a60f655f80917ce24ae. --- net/ipv6/mcast.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index e153dac47a53..9bb246c09fce 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c @@ -803,8 +803,8 @@ static void mld_del_delrec(struct inet6_dev *idev, struct ifmcaddr6 *im) } else { im->mca_crcount = idev->mc_qrv; } - ip6_mc_clear_src(pmc); in6_dev_put(pmc->idev); + ip6_mc_clear_src(pmc); kfree_rcu(pmc, rcu); } } -- Gitee From cd3f9a2961931fe15ea1947aced60e612028e5df Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:28 +0800 Subject: [PATCH 0110/1421] Revert "net/mlx5: Correctly set gso_size when LRO is used" This reverts commit 647ccdd59d34a3599232ac1a583023384be06a4f. --- drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c index d5731f7be04f..57b0e26696e3 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -1159,9 +1159,8 @@ static void mlx5e_lro_update_tcp_hdr(struct mlx5_cqe64 *cqe, struct tcphdr *tcp) } } -static unsigned int mlx5e_lro_update_hdr(struct sk_buff *skb, - struct mlx5_cqe64 *cqe, - u32 cqe_bcnt) +static void mlx5e_lro_update_hdr(struct sk_buff *skb, struct mlx5_cqe64 *cqe, + u32 cqe_bcnt) { struct ethhdr *eth = (struct ethhdr *)(skb->data); struct tcphdr *tcp; @@ -1212,8 +1211,6 @@ static unsigned int mlx5e_lro_update_hdr(struct sk_buff *skb, tcp->check = csum_ipv6_magic(&ipv6->saddr, &ipv6->daddr, payload_len, IPPROTO_TCP, check); } - - return (unsigned int)((unsigned char *)tcp + tcp->doff * 4 - skb->data); } static void *mlx5e_shampo_get_packet_hd(struct mlx5e_rq *rq, u16 header_index) @@ -1570,9 +1567,8 @@ static inline void mlx5e_build_rx_skb(struct mlx5_cqe64 *cqe, mlx5e_macsec_offload_handle_rx_skb(netdev, skb, cqe); if (lro_num_seg > 1) { - unsigned int hdrlen = mlx5e_lro_update_hdr(skb, cqe, cqe_bcnt); - - skb_shinfo(skb)->gso_size = DIV_ROUND_UP(cqe_bcnt - hdrlen, lro_num_seg); + mlx5e_lro_update_hdr(skb, cqe, cqe_bcnt); + skb_shinfo(skb)->gso_size = DIV_ROUND_UP(cqe_bcnt, lro_num_seg); /* Subtract one since we already counted this as one * "regular" packet in mlx5e_complete_rx_cqe() */ -- Gitee From 160f4c0f978967c0fb8e7187fc5afdb3dc68d889 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:28 +0800 Subject: [PATCH 0111/1421] Revert "Bluetooth: btusb: QCA: Fix downloading wrong NVM for WCN6855 GF variant without board ID" This reverts commit 2ff0f60ba19cd07f78751c397f6635eda54125db. --- drivers/bluetooth/btusb.c | 78 +++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 44 deletions(-) diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index db507a66fa8a..e0dd69889608 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -3736,32 +3736,6 @@ static const struct qca_device_info qca_devices_table[] = { { 0x00190200, 40, 4, 16 }, /* WCN785x 2.0 */ }; -static u16 qca_extract_board_id(const struct qca_version *ver) -{ - u16 flag = le16_to_cpu(ver->flag); - u16 board_id = 0; - - if (((flag >> 8) & 0xff) == QCA_FLAG_MULTI_NVM) { - /* The board_id should be split into two bytes - * The 1st byte is chip ID, and the 2nd byte is platform ID - * For example, board ID 0x010A, 0x01 is platform ID. 0x0A is chip ID - * we have several platforms, and platform IDs are continuously added - * Platform ID: - * 0x00 is for Mobile - * 0x01 is for X86 - * 0x02 is for Automotive - * 0x03 is for Consumer electronic - */ - board_id = (ver->chip_id << 8) + ver->platform_id; - } - - /* Take 0xffff as invalid board ID */ - if (board_id == 0xffff) - board_id = 0; - - return board_id; -} - static int btusb_qca_send_vendor_req(struct usb_device *udev, u8 request, void *data, u16 size) { @@ -3918,28 +3892,44 @@ static void btusb_generate_qca_nvm_name(char *fwname, size_t max_size, const struct qca_version *ver) { u32 rom_version = le32_to_cpu(ver->rom_version); - const char *variant; - int len; - u16 board_id; + u16 flag = le16_to_cpu(ver->flag); - board_id = qca_extract_board_id(ver); + if (((flag >> 8) & 0xff) == QCA_FLAG_MULTI_NVM) { + /* The board_id should be split into two bytes + * The 1st byte is chip ID, and the 2nd byte is platform ID + * For example, board ID 0x010A, 0x01 is platform ID. 0x0A is chip ID + * we have several platforms, and platform IDs are continuously added + * Platform ID: + * 0x00 is for Mobile + * 0x01 is for X86 + * 0x02 is for Automotive + * 0x03 is for Consumer electronic + */ + u16 board_id = (ver->chip_id << 8) + ver->platform_id; + const char *variant; - switch (le32_to_cpu(ver->ram_version)) { - case WCN6855_2_0_RAM_VERSION_GF: - case WCN6855_2_1_RAM_VERSION_GF: - variant = "_gf"; - break; - default: - variant = NULL; - break; + switch (le32_to_cpu(ver->ram_version)) { + case WCN6855_2_0_RAM_VERSION_GF: + case WCN6855_2_1_RAM_VERSION_GF: + variant = "_gf"; + break; + default: + variant = ""; + break; + } + + if (board_id == 0) { + snprintf(fwname, max_size, "qca/nvm_usb_%08x%s.bin", + rom_version, variant); + } else { + snprintf(fwname, max_size, "qca/nvm_usb_%08x%s_%04x.bin", + rom_version, variant, board_id); + } + } else { + snprintf(fwname, max_size, "qca/nvm_usb_%08x.bin", + rom_version); } - len = snprintf(fwname, max_size, "qca/nvm_usb_%08x", rom_version); - if (variant) - len += snprintf(fwname + len, max_size - len, "%s", variant); - if (board_id) - len += snprintf(fwname + len, max_size - len, "_%04x", board_id); - len += snprintf(fwname + len, max_size - len, ".bin"); } static int btusb_setup_qca_load_nvm(struct hci_dev *hdev, -- Gitee From 2cc3dc07c27fd5dc7ba5b3954e321e5d3989c8e3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:28 +0800 Subject: [PATCH 0112/1421] Revert "Bluetooth: SMP: Fix using HCI_ERROR_REMOTE_USER_TERM on timeout" This reverts commit 4bed765c2b925d01a653868d4c24cbfa4d967b82. --- net/bluetooth/smp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 4c00bc50de81..7040705876b7 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -1380,7 +1380,7 @@ static void smp_timeout(struct work_struct *work) bt_dev_dbg(conn->hcon->hdev, "conn %p", conn); - hci_disconnect(conn->hcon, HCI_ERROR_AUTH_FAILURE); + hci_disconnect(conn->hcon, HCI_ERROR_REMOTE_USER_TERM); } static struct smp_chan *smp_chan_create(struct l2cap_conn *conn) -- Gitee From 50c4e52a36c6c717fd9f75648b14028f11558dc5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:29 +0800 Subject: [PATCH 0113/1421] Revert "Bluetooth: SMP: If an unallowed command is received consider it a failure" This reverts commit e33a4bab4b66feac04a678fdcd92766763224c63. --- net/bluetooth/smp.c | 19 +------------------ net/bluetooth/smp.h | 1 - 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 7040705876b7..56f7f041c9a6 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -2978,25 +2978,8 @@ static int smp_sig_channel(struct l2cap_chan *chan, struct sk_buff *skb) if (code > SMP_CMD_MAX) goto drop; - if (smp && !test_and_clear_bit(code, &smp->allow_cmd)) { - /* If there is a context and the command is not allowed consider - * it a failure so the session is cleanup properly. - */ - switch (code) { - case SMP_CMD_IDENT_INFO: - case SMP_CMD_IDENT_ADDR_INFO: - case SMP_CMD_SIGN_INFO: - /* 3.6.1. Key distribution and generation - * - * A device may reject a distributed key by sending the - * Pairing Failed command with the reason set to - * "Key Rejected". - */ - smp_failure(conn, SMP_KEY_REJECTED); - break; - } + if (smp && !test_and_clear_bit(code, &smp->allow_cmd)) goto drop; - } /* If we don't have a context the only allowed commands are * pairing request and security request. diff --git a/net/bluetooth/smp.h b/net/bluetooth/smp.h index c5da53dfab04..87a59ec2c9f0 100644 --- a/net/bluetooth/smp.h +++ b/net/bluetooth/smp.h @@ -138,7 +138,6 @@ struct smp_cmd_keypress_notify { #define SMP_NUMERIC_COMP_FAILED 0x0c #define SMP_BREDR_PAIRING_IN_PROGRESS 0x0d #define SMP_CROSS_TRANSP_NOT_ALLOWED 0x0e -#define SMP_KEY_REJECTED 0x0f #define SMP_MIN_ENC_KEY_SIZE 7 #define SMP_MAX_ENC_KEY_SIZE 16 -- Gitee From cdb336b3c39a7120ed511651727e83c6e901eef3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:29 +0800 Subject: [PATCH 0114/1421] Revert "Bluetooth: hci_sync: fix connectable extended advertising when using static random address" This reverts commit b5735b7fbd47d53335bb9f2414081263887b8d92. --- net/bluetooth/hci_sync.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 01aca0770711..e1df1c62017d 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -6796,8 +6796,8 @@ int hci_get_random_address(struct hci_dev *hdev, bool require_privacy, return 0; } - /* No privacy, use the current address */ - hci_copy_identity_address(hdev, rand_addr, own_addr_type); + /* No privacy so use a public address. */ + *own_addr_type = ADDR_LE_DEV_PUBLIC; return 0; } -- Gitee From ad730e12b7071c79b1364405b381e903304b500d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:29 +0800 Subject: [PATCH 0115/1421] Revert "Bluetooth: Fix null-ptr-deref in l2cap_sock_resume_cb()" This reverts commit 8b167bf432e17c88a0667b3a8e580f1fdc35a6e2. --- net/bluetooth/l2cap_sock.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 9a906977c872..aaaaf9733b58 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -1687,9 +1687,6 @@ static void l2cap_sock_resume_cb(struct l2cap_chan *chan) { struct sock *sk = chan->data; - if (!sk) - return; - if (test_and_clear_bit(FLAG_PENDING_SECURITY, &chan->flags)) { sk->sk_state = BT_CONNECTED; chan->state = BT_CONNECTED; -- Gitee From a4654549fc5f2e97510a4960dcf0496559e3d4cd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:29 +0800 Subject: [PATCH 0116/1421] Revert "usb: net: sierra: check for no status endpoint" This reverts commit 8d37531559af3530336c4059b5be3d82f0e722f6. --- drivers/net/usb/sierra_net.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c index 42b66adb35f1..673d3aa83792 100644 --- a/drivers/net/usb/sierra_net.c +++ b/drivers/net/usb/sierra_net.c @@ -689,10 +689,6 @@ static int sierra_net_bind(struct usbnet *dev, struct usb_interface *intf) status); return -ENODEV; } - if (!dev->status) { - dev_err(&dev->udev->dev, "No status endpoint found"); - return -ENODEV; - } /* Initialize sierra private data */ priv = kzalloc(sizeof *priv, GFP_KERNEL); if (!priv) -- Gitee From 2c171e7e5041aecfc8841a1972be9518ee7a8617 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:30 +0800 Subject: [PATCH 0117/1421] Revert "ice: add NULL check in eswitch lag check" This reverts commit 7ba4911993b9c6726fb9a6834be77d8927f34bc2. --- drivers/net/ethernet/intel/ice/ice_lag.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_lag.c b/drivers/net/ethernet/intel/ice/ice_lag.c index 8ed9918ea4e8..4db0b770420e 100644 --- a/drivers/net/ethernet/intel/ice/ice_lag.c +++ b/drivers/net/ethernet/intel/ice/ice_lag.c @@ -2129,8 +2129,7 @@ bool ice_lag_is_switchdev_running(struct ice_pf *pf) struct ice_lag *lag = pf->lag; struct net_device *tmp_nd; - if (!ice_is_feature_supported(pf, ICE_F_SRIOV_LAG) || - !lag || !lag->upper_netdev) + if (!ice_is_feature_supported(pf, ICE_F_SRIOV_LAG) || !lag) return false; rcu_read_lock(); -- Gitee From 75739c789ae4c96f66d4ab1347241d84a846c65b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:30 +0800 Subject: [PATCH 0118/1421] Revert "hwmon: (corsair-cpro) Validate the size of the received input buffer" This reverts commit 3ac6f49700e64719bd26aa624821bd84db6824a4. --- drivers/hwmon/corsair-cpro.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/hwmon/corsair-cpro.c b/drivers/hwmon/corsair-cpro.c index b37f36f55f88..280b90646a87 100644 --- a/drivers/hwmon/corsair-cpro.c +++ b/drivers/hwmon/corsair-cpro.c @@ -84,7 +84,6 @@ struct ccp_device { struct mutex mutex; /* whenever buffer is used, lock before send_usb_cmd */ u8 *cmd_buffer; u8 *buffer; - int buffer_recv_size; /* number of received bytes in buffer */ int target[6]; DECLARE_BITMAP(temp_cnct, NUM_TEMP_SENSORS); DECLARE_BITMAP(fan_cnct, NUM_FANS); @@ -140,9 +139,6 @@ static int send_usb_cmd(struct ccp_device *ccp, u8 command, u8 byte1, u8 byte2, if (!t) return -ETIMEDOUT; - if (ccp->buffer_recv_size != IN_BUFFER_SIZE) - return -EPROTO; - return ccp_get_errno(ccp); } @@ -154,7 +150,6 @@ static int ccp_raw_event(struct hid_device *hdev, struct hid_report *report, u8 spin_lock(&ccp->wait_input_report_lock); if (!completion_done(&ccp->wait_input_report)) { memcpy(ccp->buffer, data, min(IN_BUFFER_SIZE, size)); - ccp->buffer_recv_size = size; complete_all(&ccp->wait_input_report); } spin_unlock(&ccp->wait_input_report_lock); -- Gitee From 6ea035374e332514eb99e3b020dee27662de4eaa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:30 +0800 Subject: [PATCH 0119/1421] Revert "selftests: net: increase inter-packet timeout in udpgro.sh" This reverts commit 1787a353714a1f12f077f668aeed162d4abb82ca. --- tools/testing/selftests/net/udpgro.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/net/udpgro.sh b/tools/testing/selftests/net/udpgro.sh index b65cf09f9914..53341c8135e8 100755 --- a/tools/testing/selftests/net/udpgro.sh +++ b/tools/testing/selftests/net/udpgro.sh @@ -50,7 +50,7 @@ run_one() { cfg_veth - ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 100 ${rx_args} & + ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} & local PID1=$! wait_local_port_listen ${PEER_NS} 8000 udp @@ -97,7 +97,7 @@ run_one_nat() { # will land on the 'plain' one ip netns exec "${PEER_NS}" ./udpgso_bench_rx -G ${family} -b ${addr1} -n 0 & local PID1=$! - ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 100 ${family} -b ${addr2%/*} ${rx_args} & + ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${family} -b ${addr2%/*} ${rx_args} & local PID2=$! wait_local_port_listen "${PEER_NS}" 8000 udp @@ -119,9 +119,9 @@ run_one_2sock() { cfg_veth - ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 100 ${rx_args} -p 12345 & + ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} -p 12345 & local PID1=$! - ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 2000 -R 100 ${rx_args} & + ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 2000 -R 10 ${rx_args} & local PID2=$! wait_local_port_listen "${PEER_NS}" 12345 udp -- Gitee From 050147457cf3548af8cedeecc135e0544700308f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:30 +0800 Subject: [PATCH 0120/1421] Revert "wifi: cfg80211: remove scan request n_channels counted_by" This reverts commit 80cca0bcd6e8bdfea1b296f4b6f23ec2703cf04c. --- include/net/cfg80211.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 2fb3151ea7c9..802ea3080d0b 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -2543,7 +2543,7 @@ struct cfg80211_scan_request { struct cfg80211_scan_6ghz_params *scan_6ghz_params; /* keep last */ - struct ieee80211_channel *channels[]; + struct ieee80211_channel *channels[] __counted_by(n_channels); }; static inline void get_random_mask_addr(u8 *buf, const u8 *addr, const u8 *mask) -- Gitee From 6224c4f736aed9e026a1322231fe80ba7c33bf9b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:30 +0800 Subject: [PATCH 0121/1421] Revert "nvme: fix misaccounting of nvme-mpath inflight I/O" This reverts commit b1780123b5046005e2560f1fc5a9aeabdb3b0c49. --- drivers/nvme/host/core.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 13221cc0d17d..9feb47a60465 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -689,10 +689,6 @@ blk_status_t nvme_fail_nonready_command(struct nvme_ctrl *ctrl, !test_bit(NVME_CTRL_FAILFAST_EXPIRED, &ctrl->flags) && !blk_noretry_request(rq) && !(rq->cmd_flags & REQ_NVME_MPATH)) return BLK_STS_RESOURCE; - - if (!(rq->rq_flags & RQF_DONTPREP)) - nvme_clear_nvme_request(rq); - return nvme_host_path_error(rq); } EXPORT_SYMBOL_GPL(nvme_fail_nonready_command); -- Gitee From 00f03a0a9abfd64075d9c70c5eb815ce5ca83f2b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:31 +0800 Subject: [PATCH 0122/1421] Revert "net: phy: Don't register LEDs for genphy" This reverts commit 2785eaac196c1b2fe9c36f36845648a4df9043b5. --- drivers/net/phy/phy_device.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 59f0f3a534e4..14da8fdb1413 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -3404,8 +3404,7 @@ static int phy_probe(struct device *dev) /* Get the LEDs from the device tree, and instantiate standard * LEDs for them. */ - if (IS_ENABLED(CONFIG_PHYLIB_LEDS) && !phy_driver_is_genphy(phydev) && - !phy_driver_is_genphy_10g(phydev)) + if (IS_ENABLED(CONFIG_PHYLIB_LEDS)) err = of_phy_leds(phydev); out: @@ -3422,8 +3421,7 @@ static int phy_remove(struct device *dev) cancel_delayed_work_sync(&phydev->state_queue); - if (IS_ENABLED(CONFIG_PHYLIB_LEDS) && !phy_driver_is_genphy(phydev) && - !phy_driver_is_genphy_10g(phydev)) + if (IS_ENABLED(CONFIG_PHYLIB_LEDS)) phy_leds_unregister(phydev); phydev->state = PHY_DOWN; -- Gitee From d1611ebcd969e29d105da879ed02925d0b611bd6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:31 +0800 Subject: [PATCH 0123/1421] Revert "nvme: fix inconsistent RCU list manipulation in nvme_ns_add_to_ctrl_list()" This reverts commit 7daad932865d3aa3341d329bb49c1ad58fdd1e6a. --- drivers/nvme/host/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 9feb47a60465..6e2d0fda3ba4 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -3596,7 +3596,7 @@ static void nvme_ns_add_to_ctrl_list(struct nvme_ns *ns) return; } } - list_add_rcu(&ns->list, &ns->ctrl->namespaces); + list_add(&ns->list, &ns->ctrl->namespaces); } static void nvme_alloc_ns(struct nvme_ctrl *ctrl, struct nvme_ns_info *info) -- Gitee From 1d47f2528d6d144b378647522b78381f193c38f0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:31 +0800 Subject: [PATCH 0124/1421] Revert "smb: client: fix use-after-free in cifs_oplock_break" This reverts commit 4b17f863e270baeb4ba675b49059f9e6f4c15006. --- fs/smb/client/file.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c index 99a8c6fbd41a..d883ed75022c 100644 --- a/fs/smb/client/file.c +++ b/fs/smb/client/file.c @@ -5042,8 +5042,7 @@ void cifs_oplock_break(struct work_struct *work) struct cifsFileInfo *cfile = container_of(work, struct cifsFileInfo, oplock_break); struct inode *inode = d_inode(cfile->dentry); - struct super_block *sb = inode->i_sb; - struct cifs_sb_info *cifs_sb = CIFS_SB(sb); + struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); struct cifsInodeInfo *cinode = CIFS_I(inode); struct cifs_tcon *tcon; struct TCP_Server_Info *server; @@ -5053,12 +5052,6 @@ void cifs_oplock_break(struct work_struct *work) __u64 persistent_fid, volatile_fid; __u16 net_fid; - /* - * Hold a reference to the superblock to prevent it and its inodes from - * being freed while we are accessing cinode. Otherwise, _cifsFileInfo_put() - * may release the last reference to the sb and trigger inode eviction. - */ - cifs_sb_active(sb); wait_on_bit(&cinode->flags, CIFS_INODE_PENDING_WRITERS, TASK_UNINTERRUPTIBLE); @@ -5131,7 +5124,6 @@ void cifs_oplock_break(struct work_struct *work) cifs_put_tlink(tlink); out: cifs_done_oplock_break(cinode); - cifs_sb_deactive(sb); } /* -- Gitee From ad27b6ef1ef4884abbb8bacb27e41817cd301c23 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:31 +0800 Subject: [PATCH 0125/1421] Revert "rpl: Fix use-after-free in rpl_do_srh_inline()." This reverts commit 2b4f618866dae3f6a1c205fdda9284594b348907. --- net/ipv6/rpl_iptunnel.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/ipv6/rpl_iptunnel.c b/net/ipv6/rpl_iptunnel.c index 523aa8c9b382..28fc7fae5797 100644 --- a/net/ipv6/rpl_iptunnel.c +++ b/net/ipv6/rpl_iptunnel.c @@ -129,13 +129,13 @@ static int rpl_do_srh_inline(struct sk_buff *skb, const struct rpl_lwt *rlwt, struct dst_entry *cache_dst) { struct ipv6_rpl_sr_hdr *isrh, *csrh; - struct ipv6hdr oldhdr; + const struct ipv6hdr *oldhdr; struct ipv6hdr *hdr; unsigned char *buf; size_t hdrlen; int err; - memcpy(&oldhdr, ipv6_hdr(skb), sizeof(oldhdr)); + oldhdr = ipv6_hdr(skb); buf = kcalloc(struct_size(srh, segments.addr, srh->segments_left), 2, GFP_ATOMIC); if (!buf) @@ -147,7 +147,7 @@ static int rpl_do_srh_inline(struct sk_buff *skb, const struct rpl_lwt *rlwt, memcpy(isrh, srh, sizeof(*isrh)); memcpy(isrh->rpl_segaddr, &srh->rpl_segaddr[1], (srh->segments_left - 1) * 16); - isrh->rpl_segaddr[srh->segments_left - 1] = oldhdr.daddr; + isrh->rpl_segaddr[srh->segments_left - 1] = oldhdr->daddr; ipv6_rpl_srh_compress(csrh, isrh, &srh->rpl_segaddr[0], isrh->segments_left - 1); @@ -169,7 +169,7 @@ static int rpl_do_srh_inline(struct sk_buff *skb, const struct rpl_lwt *rlwt, skb_mac_header_rebuild(skb); hdr = ipv6_hdr(skb); - memmove(hdr, &oldhdr, sizeof(*hdr)); + memmove(hdr, oldhdr, sizeof(*hdr)); isrh = (void *)hdr + sizeof(*hdr); memcpy(isrh, csrh, hdrlen); -- Gitee From d851725989edf13378501b674395c975c43bc14e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:31 +0800 Subject: [PATCH 0126/1421] Revert "net/sched: sch_qfq: Fix race condition on qfq_aggregate" This reverts commit 2c3d33d920a7fc14ce6a88dedcc1b5a68aacdad0. --- net/sched/sch_qfq.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c index a2b321fec13c..5e557b960bde 100644 --- a/net/sched/sch_qfq.c +++ b/net/sched/sch_qfq.c @@ -412,7 +412,7 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, bool existing = false; struct nlattr *tb[TCA_QFQ_MAX + 1]; struct qfq_aggregate *new_agg = NULL; - u32 weight, lmax, inv_w, old_weight, old_lmax; + u32 weight, lmax, inv_w; int err; int delta_w; @@ -446,16 +446,12 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, inv_w = ONE_FP / weight; weight = ONE_FP / inv_w; - if (cl != NULL) { - sch_tree_lock(sch); - old_weight = cl->agg->class_weight; - old_lmax = cl->agg->lmax; - sch_tree_unlock(sch); - if (lmax == old_lmax && weight == old_weight) - return 0; /* nothing to change */ - } + if (cl != NULL && + lmax == cl->agg->lmax && + weight == cl->agg->class_weight) + return 0; /* nothing to change */ - delta_w = weight - (cl ? old_weight : 0); + delta_w = weight - (cl ? cl->agg->class_weight : 0); if (q->wsum + delta_w > QFQ_MAX_WSUM) { NL_SET_ERR_MSG_FMT_MOD(extack, @@ -562,10 +558,10 @@ static int qfq_delete_class(struct Qdisc *sch, unsigned long arg, qdisc_purge_queue(cl->qdisc); qdisc_class_hash_remove(&q->clhash, &cl->common); - qfq_destroy_class(sch, cl); sch_tree_unlock(sch); + qfq_destroy_class(sch, cl); return 0; } @@ -632,7 +628,6 @@ static int qfq_dump_class(struct Qdisc *sch, unsigned long arg, { struct qfq_class *cl = (struct qfq_class *)arg; struct nlattr *nest; - u32 class_weight, lmax; tcm->tcm_parent = TC_H_ROOT; tcm->tcm_handle = cl->common.classid; @@ -641,13 +636,8 @@ static int qfq_dump_class(struct Qdisc *sch, unsigned long arg, nest = nla_nest_start_noflag(skb, TCA_OPTIONS); if (nest == NULL) goto nla_put_failure; - - sch_tree_lock(sch); - class_weight = cl->agg->class_weight; - lmax = cl->agg->lmax; - sch_tree_unlock(sch); - if (nla_put_u32(skb, TCA_QFQ_WEIGHT, class_weight) || - nla_put_u32(skb, TCA_QFQ_LMAX, lmax)) + if (nla_put_u32(skb, TCA_QFQ_WEIGHT, cl->agg->class_weight) || + nla_put_u32(skb, TCA_QFQ_LMAX, cl->agg->lmax)) goto nla_put_failure; return nla_nest_end(skb, nest); @@ -664,10 +654,8 @@ static int qfq_dump_class_stats(struct Qdisc *sch, unsigned long arg, memset(&xstats, 0, sizeof(xstats)); - sch_tree_lock(sch); xstats.weight = cl->agg->class_weight; xstats.lmax = cl->agg->lmax; - sch_tree_unlock(sch); if (gnet_stats_copy_basic(d, NULL, &cl->bstats, true) < 0 || gnet_stats_copy_rate_est(d, &cl->rate_est) < 0 || -- Gitee From 8c79e96117c872deb5bdd08f07240b8a4839e06b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:32 +0800 Subject: [PATCH 0127/1421] Revert "block: fix kobject leak in blk_unregister_queue" This reverts commit 19b0e932ea42a36bff5efc769862e38d3fa98ad1. --- block/blk-sysfs.c | 1 - 1 file changed, 1 deletion(-) diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 8d15c73a520b..74839f6f2e0c 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -909,5 +909,4 @@ void blk_unregister_queue(struct gendisk *disk) mutex_unlock(&q->sysfs_dir_lock); blk_debugfs_remove(disk); - kobject_put(&disk->queue_kobj); } -- Gitee From 24282df70e0947d6288e341a6ef78c6e510aee18 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:32 +0800 Subject: [PATCH 0128/1421] Revert "net: emaclite: Fix missing pointer increment in aligned_read()" This reverts commit d11b6647490d4beade66bcab0a8dafecca2052e9. --- drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/xilinx/xilinx_emaclite.c b/drivers/net/ethernet/xilinx/xilinx_emaclite.c index 0eff5d4fe35d..b358ecc67227 100644 --- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c +++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c @@ -285,7 +285,7 @@ static void xemaclite_aligned_read(u32 *src_ptr, u8 *dest_ptr, /* Read the remaining data */ for (; length > 0; length--) - *to_u8_ptr++ = *from_u8_ptr++; + *to_u8_ptr = *from_u8_ptr; } } -- Gitee From 28a78f6fb7c47df47a6c8e52122f962a39b0a6eb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:32 +0800 Subject: [PATCH 0129/1421] Revert "cachefiles: Fix the incorrect return value in __cachefiles_write()" This reverts commit 566ad86731fcecbdb2ff10ef293fc9cdbd23215f. --- fs/cachefiles/io.c | 2 ++ fs/cachefiles/ondemand.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fs/cachefiles/io.c b/fs/cachefiles/io.c index 239a6002083d..009d23cd435b 100644 --- a/fs/cachefiles/io.c +++ b/fs/cachefiles/io.c @@ -346,6 +346,8 @@ int __cachefiles_write(struct cachefiles_object *object, default: ki->was_async = false; cachefiles_write_complete(&ki->iocb, ret); + if (ret > 0) + ret = 0; break; } diff --git a/fs/cachefiles/ondemand.c b/fs/cachefiles/ondemand.c index cfa8f23fdfb6..3389a373faf6 100644 --- a/fs/cachefiles/ondemand.c +++ b/fs/cachefiles/ondemand.c @@ -84,8 +84,10 @@ static ssize_t cachefiles_ondemand_fd_write_iter(struct kiocb *kiocb, trace_cachefiles_ondemand_fd_write(object, file_inode(file), pos, len); ret = __cachefiles_write(object, file, pos, iter, NULL, NULL); - if (ret > 0) + if (!ret) { + ret = len; kiocb->ki_pos += ret; + } out: fput(file); -- Gitee From bf624dd51d2ee82b280a005d03cd16a4eb8f50c9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:32 +0800 Subject: [PATCH 0130/1421] Revert "bpf: Reject %p% format string in bprintf-like helpers" This reverts commit 029cc3abf0d669125b185cfbdb9d0505c694c187. --- kernel/bpf/helpers.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 4b20a72ab8cf..8f0b62b04dee 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -885,13 +885,6 @@ int bpf_bprintf_prepare(char *fmt, u32 fmt_size, const u64 *raw_args, if (fmt[i] == 'p') { sizeof_cur_arg = sizeof(long); - if (fmt[i + 1] == 0 || isspace(fmt[i + 1]) || - ispunct(fmt[i + 1])) { - if (tmp_buf) - cur_arg = raw_args[num_spec]; - goto nocopy_fmt; - } - if ((fmt[i + 1] == 'k' || fmt[i + 1] == 'u') && fmt[i + 2] == 's') { fmt_ptype = fmt[i + 1]; @@ -899,9 +892,11 @@ int bpf_bprintf_prepare(char *fmt, u32 fmt_size, const u64 *raw_args, goto fmt_str; } - if (fmt[i + 1] == 'K' || + if (fmt[i + 1] == 0 || isspace(fmt[i + 1]) || + ispunct(fmt[i + 1]) || fmt[i + 1] == 'K' || fmt[i + 1] == 'x' || fmt[i + 1] == 's' || fmt[i + 1] == 'S') { + /* just kernel pointers */ if (tmp_buf) cur_arg = raw_args[num_spec]; i++; -- Gitee From 28b584a919d6c2ab4fa65b531de8a3f653180431 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:32 +0800 Subject: [PATCH 0131/1421] Revert "soundwire: amd: fix for clearing command status register" This reverts commit 1b60ce2568762e71c070ffd5fab609c9aa870d31. --- drivers/soundwire/amd_manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manager.c index b89f8067e6cd..ce1c8e1372ee 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -205,7 +205,7 @@ static u64 amd_sdw_send_cmd_get_resp(struct amd_sdw_manager *amd_manager, u32 lo if (sts & AMD_SDW_IMM_RES_VALID) { dev_err(amd_manager->dev, "SDW%x manager is in bad state\n", amd_manager->instance); - writel(AMD_SDW_IMM_RES_VALID, amd_manager->mmio + ACP_SW_IMM_CMD_STS); + writel(0x00, amd_manager->mmio + ACP_SW_IMM_CMD_STS); } writel(upper_data, amd_manager->mmio + ACP_SW_IMM_CMD_UPPER_WORD); writel(lower_data, amd_manager->mmio + ACP_SW_IMM_CMD_LOWER_QWORD); -- Gitee From d82b0f54106c7f3360bc87cd7c3bba842a49cdd4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:33 +0800 Subject: [PATCH 0132/1421] Revert "soundwire: amd: fix for handling slave alerts after link is down" This reverts commit 1de8059aab2d95b0f3faf90f10a0db86e76639ca. --- drivers/soundwire/amd_manager.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manager.c index ce1c8e1372ee..31b203ebbae0 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1135,11 +1135,9 @@ static int __maybe_unused amd_suspend(struct device *dev) } if (amd_manager->power_mode_mask & AMD_SDW_CLK_STOP_MODE) { - cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, false); return amd_sdw_clock_stop(amd_manager); } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { - cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, false); /* * As per hardware programming sequence on AMD platforms, -- Gitee From b83dc73b3d2599ac7017986575c8d0193a170397 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:33 +0800 Subject: [PATCH 0133/1421] Revert "comedi: Fix initialization of data for instructions that write to subdevice" This reverts commit e4f814c5fd36ceca99aba746583550687785530a. --- drivers/comedi/comedi_fops.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/comedi/comedi_fops.c b/drivers/comedi/comedi_fops.c index e4d62cdaff46..b18c9ab7f7c5 100644 --- a/drivers/comedi/comedi_fops.c +++ b/drivers/comedi/comedi_fops.c @@ -1556,27 +1556,21 @@ static int do_insnlist_ioctl(struct comedi_device *dev, } for (i = 0; i < n_insns; ++i) { - unsigned int n = insns[i].n; - if (insns[i].insn & INSN_MASK_WRITE) { if (copy_from_user(data, insns[i].data, - n * sizeof(unsigned int))) { + insns[i].n * sizeof(unsigned int))) { dev_dbg(dev->class_dev, "copy_from_user failed\n"); ret = -EFAULT; goto error; } - if (n < MIN_SAMPLES) { - memset(&data[n], 0, (MIN_SAMPLES - n) * - sizeof(unsigned int)); - } } ret = parse_insn(dev, insns + i, data, file); if (ret < 0) goto error; if (insns[i].insn & INSN_MASK_READ) { if (copy_to_user(insns[i].data, data, - n * sizeof(unsigned int))) { + insns[i].n * sizeof(unsigned int))) { dev_dbg(dev->class_dev, "copy_to_user failed\n"); ret = -EFAULT; @@ -1649,10 +1643,6 @@ static int do_insn_ioctl(struct comedi_device *dev, ret = -EFAULT; goto error; } - if (insn->n < MIN_SAMPLES) { - memset(&data[insn->n], 0, - (MIN_SAMPLES - insn->n) * sizeof(unsigned int)); - } } ret = parse_insn(dev, insn, data, file); if (ret < 0) -- Gitee From 9f060e3cccc18f81a21238e62564d5bd4b881605 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:33 +0800 Subject: [PATCH 0134/1421] Revert "comedi: Fix use of uninitialized data in insn_rw_emulate_bits()" This reverts commit 9e985ccdefc8b843120bef17a3ce9572c3e1eaec. --- drivers/comedi/drivers.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/comedi/drivers.c b/drivers/comedi/drivers.c index 086213bcc499..51dab6c09fc6 100644 --- a/drivers/comedi/drivers.c +++ b/drivers/comedi/drivers.c @@ -614,9 +614,6 @@ static int insn_rw_emulate_bits(struct comedi_device *dev, unsigned int _data[2]; int ret; - if (insn->n == 0) - return 0; - memset(_data, 0, sizeof(_data)); memset(&_insn, 0, sizeof(_insn)); _insn.insn = INSN_BITS; -- Gitee From 50d7a3f0380192fd6467d4dfa28f942ff6ab1870 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:33 +0800 Subject: [PATCH 0135/1421] Revert "comedi: Fix some signed shift left operations" This reverts commit 80d4a7a12c016098fe3aeb780c37b8454d6f249d. --- drivers/comedi/drivers.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/comedi/drivers.c b/drivers/comedi/drivers.c index 51dab6c09fc6..d4e2ed709bfc 100644 --- a/drivers/comedi/drivers.c +++ b/drivers/comedi/drivers.c @@ -338,10 +338,10 @@ int comedi_dio_insn_config(struct comedi_device *dev, unsigned int *data, unsigned int mask) { - unsigned int chan = CR_CHAN(insn->chanspec); + unsigned int chan_mask = 1 << CR_CHAN(insn->chanspec); - if (!mask && chan < 32) - mask = 1U << chan; + if (!mask) + mask = chan_mask; switch (data[0]) { case INSN_CONFIG_DIO_INPUT: @@ -381,7 +381,7 @@ EXPORT_SYMBOL_GPL(comedi_dio_insn_config); unsigned int comedi_dio_update_state(struct comedi_subdevice *s, unsigned int *data) { - unsigned int chanmask = (s->n_chan < 32) ? ((1U << s->n_chan) - 1) + unsigned int chanmask = (s->n_chan < 32) ? ((1 << s->n_chan) - 1) : 0xffffffff; unsigned int mask = data[0] & chanmask; unsigned int bits = data[1]; @@ -624,8 +624,8 @@ static int insn_rw_emulate_bits(struct comedi_device *dev, if (insn->insn == INSN_WRITE) { if (!(s->subdev_flags & SDF_WRITABLE)) return -EINVAL; - _data[0] = 1U << (chan - base_chan); /* mask */ - _data[1] = data[0] ? (1U << (chan - base_chan)) : 0; /* bits */ + _data[0] = 1 << (chan - base_chan); /* mask */ + _data[1] = data[0] ? (1 << (chan - base_chan)) : 0; /* bits */ } ret = s->insn_bits(dev, s, &_insn, _data); @@ -708,7 +708,7 @@ static int __comedi_device_postconfig(struct comedi_device *dev) if (s->type == COMEDI_SUBD_DO) { if (s->n_chan < 32) - s->io_bits = (1U << s->n_chan) - 1; + s->io_bits = (1 << s->n_chan) - 1; else s->io_bits = 0xffffffff; } -- Gitee From a3021b8e37a4ca98ecf039eaa2116378490e48cc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:33 +0800 Subject: [PATCH 0136/1421] Revert "comedi: Fail COMEDI_INSNLIST ioctl if n_insns is too large" This reverts commit 431a354f858d8065d8dccaf4904e7ce35d6be3be. --- drivers/comedi/comedi_fops.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/drivers/comedi/comedi_fops.c b/drivers/comedi/comedi_fops.c index b18c9ab7f7c5..81763e3f9484 100644 --- a/drivers/comedi/comedi_fops.c +++ b/drivers/comedi/comedi_fops.c @@ -1589,16 +1589,6 @@ static int do_insnlist_ioctl(struct comedi_device *dev, return i; } -#define MAX_INSNS MAX_SAMPLES -static int check_insnlist_len(struct comedi_device *dev, unsigned int n_insns) -{ - if (n_insns > MAX_INSNS) { - dev_dbg(dev->class_dev, "insnlist length too large\n"); - return -EINVAL; - } - return 0; -} - /* * COMEDI_INSN ioctl * synchronous instruction @@ -2249,9 +2239,6 @@ static long comedi_unlocked_ioctl(struct file *file, unsigned int cmd, rc = -EFAULT; break; } - rc = check_insnlist_len(dev, insnlist.n_insns); - if (rc) - break; insns = kcalloc(insnlist.n_insns, sizeof(*insns), GFP_KERNEL); if (!insns) { rc = -ENOMEM; @@ -3103,9 +3090,6 @@ static int compat_insnlist(struct file *file, unsigned long arg) if (copy_from_user(&insnlist32, compat_ptr(arg), sizeof(insnlist32))) return -EFAULT; - rc = check_insnlist_len(dev, insnlist32.n_insns); - if (rc) - return rc; insns = kcalloc(insnlist32.n_insns, sizeof(*insns), GFP_KERNEL); if (!insns) return -ENOMEM; -- Gitee From deb1d529e53707cc515de75d3ade0ddecb51866c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:34 +0800 Subject: [PATCH 0137/1421] Revert "comedi: das6402: Fix bit shift out of bounds" This reverts commit a3cc7c266bc8c3a5a2bbe8ddd9d648a2c0fbc881. --- drivers/comedi/drivers/das6402.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/comedi/drivers/das6402.c b/drivers/comedi/drivers/das6402.c index e730668236c2..1af394591e74 100644 --- a/drivers/comedi/drivers/das6402.c +++ b/drivers/comedi/drivers/das6402.c @@ -567,8 +567,7 @@ static int das6402_attach(struct comedi_device *dev, das6402_reset(dev); /* IRQs 2,3,5,6,7, 10,11,15 are valid for "enhanced" mode */ - if (it->options[1] > 0 && it->options[1] < 16 && - (1 << it->options[1]) & 0x8cec) { + if ((1 << it->options[1]) & 0x8cec) { ret = request_irq(it->options[1], das6402_interrupt, 0, dev->board_name, dev); if (ret == 0) { -- Gitee From 5aabac6a7b7f73605b02b7b574819341d0d41879 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:34 +0800 Subject: [PATCH 0138/1421] Revert "comedi: das16m1: Fix bit shift out of bounds" This reverts commit aea4d99e17600f6057563ac8cf9f7ef579fc0577. --- drivers/comedi/drivers/das16m1.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/comedi/drivers/das16m1.c b/drivers/comedi/drivers/das16m1.c index 99e63d51c506..275effb77746 100644 --- a/drivers/comedi/drivers/das16m1.c +++ b/drivers/comedi/drivers/das16m1.c @@ -522,8 +522,7 @@ static int das16m1_attach(struct comedi_device *dev, devpriv->extra_iobase = dev->iobase + DAS16M1_8255_IOBASE; /* only irqs 2, 3, 4, 5, 6, 7, 10, 11, 12, 14, and 15 are valid */ - if (it->options[1] >= 2 && it->options[1] <= 15 && - (1 << it->options[1]) & 0xdcfc) { + if ((1 << it->options[1]) & 0xdcfc) { ret = request_irq(it->options[1], das16m1_interrupt, 0, dev->board_name, dev); if (ret == 0) -- Gitee From 89bef9332601ad944089875da7c5375d98815ced Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:34 +0800 Subject: [PATCH 0139/1421] Revert "comedi: aio_iiro_16: Fix bit shift out of bounds" This reverts commit bbdcf63cacdac1db61f567b92370a12622a4e45a. --- drivers/comedi/drivers/aio_iiro_16.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/comedi/drivers/aio_iiro_16.c b/drivers/comedi/drivers/aio_iiro_16.c index 739cc4db52ac..b00fab0b89d4 100644 --- a/drivers/comedi/drivers/aio_iiro_16.c +++ b/drivers/comedi/drivers/aio_iiro_16.c @@ -177,8 +177,7 @@ static int aio_iiro_16_attach(struct comedi_device *dev, * Digital input change of state interrupts are optionally supported * using IRQ 2-7, 10-12, 14, or 15. */ - if (it->options[1] > 0 && it->options[1] < 16 && - (1 << it->options[1]) & 0xdcfc) { + if ((1 << it->options[1]) & 0xdcfc) { ret = request_irq(it->options[1], aio_iiro_16_cos, 0, dev->board_name, dev); if (ret == 0) -- Gitee From a81cc3ceeec1903db1a59d0fe542d2f04b0c25ec Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:34 +0800 Subject: [PATCH 0140/1421] Revert "comedi: pcl812: Fix bit shift out of bounds" This reverts commit cb026be859bfb5e95e5ee8f3ea3dbda8f78c24c9. --- drivers/comedi/drivers/pcl812.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/comedi/drivers/pcl812.c b/drivers/comedi/drivers/pcl812.c index e0459f286fa6..70dbc129fcf5 100644 --- a/drivers/comedi/drivers/pcl812.c +++ b/drivers/comedi/drivers/pcl812.c @@ -1149,8 +1149,7 @@ static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it) if (!dev->pacer) return -ENOMEM; - if (it->options[1] > 0 && it->options[1] < 16 && - (1 << it->options[1]) & board->irq_bits) { + if ((1 << it->options[1]) & board->irq_bits) { ret = request_irq(it->options[1], pcl812_interrupt, 0, dev->board_name, dev); if (ret == 0) -- Gitee From f6f2f6212d6bfae1430d9baf20a8865d4e3df7e5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:34 +0800 Subject: [PATCH 0141/1421] Revert "iio: adc: stm32-adc: Fix race in installing chained IRQ handler" This reverts commit 9cc2dbe0cf61ef84bd14192cca318450998ea381. --- drivers/iio/adc/stm32-adc-core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32-adc-core.c index 9f1566a378de..bbd5bdd732f0 100644 --- a/drivers/iio/adc/stm32-adc-core.c +++ b/drivers/iio/adc/stm32-adc-core.c @@ -428,9 +428,10 @@ static int stm32_adc_irq_probe(struct platform_device *pdev, return -ENOMEM; } - for (i = 0; i < priv->cfg->num_irqs; i++) - irq_set_chained_handler_and_data(priv->irq[i], - stm32_adc_irq_handler, priv); + for (i = 0; i < priv->cfg->num_irqs; i++) { + irq_set_chained_handler(priv->irq[i], stm32_adc_irq_handler); + irq_set_handler_data(priv->irq[i], priv); + } return 0; } -- Gitee From 2367a5ecb1dfd28705d94d93652f1393725248d8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:35 +0800 Subject: [PATCH 0142/1421] Revert "iio: adc: max1363: Reorder mode_list[] entries" This reverts commit f9cc68c26da62c54bab41ebd1fed1f86862e1f13. --- drivers/iio/adc/max1363.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/iio/adc/max1363.c b/drivers/iio/adc/max1363.c index 5304235d733f..0b0adb047d3f 100644 --- a/drivers/iio/adc/max1363.c +++ b/drivers/iio/adc/max1363.c @@ -531,23 +531,23 @@ static const struct iio_chan_spec max1363_channels[] = /* Applies to max1236, max1237 */ static const enum max1363_modes max1236_mode_list[] = { _s0, _s1, _s2, _s3, - s0to1, s0to2, s2to3, s0to3, + s0to1, s0to2, s0to3, d0m1, d2m3, d1m0, d3m2, d0m1to2m3, d1m0to3m2, + s2to3, }; /* Applies to max1238, max1239 */ static const enum max1363_modes max1238_mode_list[] = { _s0, _s1, _s2, _s3, _s4, _s5, _s6, _s7, _s8, _s9, _s10, _s11, s0to1, s0to2, s0to3, s0to4, s0to5, s0to6, - s6to7, s6to8, s6to9, s6to10, s6to11, s0to7, s0to8, s0to9, s0to10, s0to11, d0m1, d2m3, d4m5, d6m7, d8m9, d10m11, d1m0, d3m2, d5m4, d7m6, d9m8, d11m10, - d0m1to2m3, d0m1to4m5, d0m1to6m7, d6m7to8m9, - d0m1to8m9, d6m7to10m11, d0m1to10m11, d1m0to3m2, - d1m0to5m4, d1m0to7m6, d7m6to9m8, d1m0to9m8, - d7m6to11m10, d1m0to11m10, + d0m1to2m3, d0m1to4m5, d0m1to6m7, d0m1to8m9, d0m1to10m11, + d1m0to3m2, d1m0to5m4, d1m0to7m6, d1m0to9m8, d1m0to11m10, + s6to7, s6to8, s6to9, s6to10, s6to11, + d6m7to8m9, d6m7to10m11, d7m6to9m8, d7m6to11m10, }; #define MAX1363_12X_CHANS(bits) { \ @@ -583,15 +583,16 @@ static const struct iio_chan_spec max1238_channels[] = MAX1363_12X_CHANS(12); static const enum max1363_modes max11607_mode_list[] = { _s0, _s1, _s2, _s3, - s0to1, s0to2, s2to3, - s0to3, + s0to1, s0to2, s0to3, + s2to3, d0m1, d2m3, d1m0, d3m2, d0m1to2m3, d1m0to3m2, }; static const enum max1363_modes max11608_mode_list[] = { _s0, _s1, _s2, _s3, _s4, _s5, _s6, _s7, - s0to1, s0to2, s0to3, s0to4, s0to5, s0to6, s6to7, s0to7, + s0to1, s0to2, s0to3, s0to4, s0to5, s0to6, s0to7, + s6to7, d0m1, d2m3, d4m5, d6m7, d1m0, d3m2, d5m4, d7m6, d0m1to2m3, d0m1to4m5, d0m1to6m7, -- Gitee From 64e3a52ee120c9f6a89ebf5e4729301b0536ebd6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:35 +0800 Subject: [PATCH 0143/1421] Revert "iio: adc: max1363: Fix MAX1363_4X_CHANS/MAX1363_8X_CHANS[]" This reverts commit 0fa725bc1fe42fb14be3e0ac8a977b89b06c943b. --- drivers/iio/adc/max1363.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/iio/adc/max1363.c b/drivers/iio/adc/max1363.c index 0b0adb047d3f..b31581616ce3 100644 --- a/drivers/iio/adc/max1363.c +++ b/drivers/iio/adc/max1363.c @@ -510,10 +510,10 @@ static const struct iio_event_spec max1363_events[] = { MAX1363_CHAN_U(1, _s1, 1, bits, ev_spec, num_ev_spec), \ MAX1363_CHAN_U(2, _s2, 2, bits, ev_spec, num_ev_spec), \ MAX1363_CHAN_U(3, _s3, 3, bits, ev_spec, num_ev_spec), \ - MAX1363_CHAN_B(0, 1, d0m1, 12, bits, ev_spec, num_ev_spec), \ - MAX1363_CHAN_B(2, 3, d2m3, 13, bits, ev_spec, num_ev_spec), \ - MAX1363_CHAN_B(1, 0, d1m0, 18, bits, ev_spec, num_ev_spec), \ - MAX1363_CHAN_B(3, 2, d3m2, 19, bits, ev_spec, num_ev_spec), \ + MAX1363_CHAN_B(0, 1, d0m1, 4, bits, ev_spec, num_ev_spec), \ + MAX1363_CHAN_B(2, 3, d2m3, 5, bits, ev_spec, num_ev_spec), \ + MAX1363_CHAN_B(1, 0, d1m0, 6, bits, ev_spec, num_ev_spec), \ + MAX1363_CHAN_B(3, 2, d3m2, 7, bits, ev_spec, num_ev_spec), \ IIO_CHAN_SOFT_TIMESTAMP(8) \ } @@ -608,14 +608,14 @@ static const enum max1363_modes max11608_mode_list[] = { MAX1363_CHAN_U(5, _s5, 5, bits, NULL, 0), \ MAX1363_CHAN_U(6, _s6, 6, bits, NULL, 0), \ MAX1363_CHAN_U(7, _s7, 7, bits, NULL, 0), \ - MAX1363_CHAN_B(0, 1, d0m1, 12, bits, NULL, 0), \ - MAX1363_CHAN_B(2, 3, d2m3, 13, bits, NULL, 0), \ - MAX1363_CHAN_B(4, 5, d4m5, 14, bits, NULL, 0), \ - MAX1363_CHAN_B(6, 7, d6m7, 15, bits, NULL, 0), \ - MAX1363_CHAN_B(1, 0, d1m0, 18, bits, NULL, 0), \ - MAX1363_CHAN_B(3, 2, d3m2, 19, bits, NULL, 0), \ - MAX1363_CHAN_B(5, 4, d5m4, 20, bits, NULL, 0), \ - MAX1363_CHAN_B(7, 6, d7m6, 21, bits, NULL, 0), \ + MAX1363_CHAN_B(0, 1, d0m1, 8, bits, NULL, 0), \ + MAX1363_CHAN_B(2, 3, d2m3, 9, bits, NULL, 0), \ + MAX1363_CHAN_B(4, 5, d4m5, 10, bits, NULL, 0), \ + MAX1363_CHAN_B(6, 7, d6m7, 11, bits, NULL, 0), \ + MAX1363_CHAN_B(1, 0, d1m0, 12, bits, NULL, 0), \ + MAX1363_CHAN_B(3, 2, d3m2, 13, bits, NULL, 0), \ + MAX1363_CHAN_B(5, 4, d5m4, 14, bits, NULL, 0), \ + MAX1363_CHAN_B(7, 6, d7m6, 15, bits, NULL, 0), \ IIO_CHAN_SOFT_TIMESTAMP(16) \ } static const struct iio_chan_spec max11602_channels[] = MAX1363_8X_CHANS(8); -- Gitee From 8f5630b17473447931e231e6a6f5b6158f88e3e9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:35 +0800 Subject: [PATCH 0144/1421] Revert "iio: accel: fxls8962af: Fix use after free in fxls8962af_fifo_flush" This reverts commit 21ec09a29173c351986c8a998a609b74674a5c38. --- drivers/iio/accel/fxls8962af-core.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index f4e253c6c7d7..17820b2c3a1d 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -865,8 +865,6 @@ static int fxls8962af_buffer_predisable(struct iio_dev *indio_dev) if (ret) return ret; - synchronize_irq(data->irq); - ret = __fxls8962af_fifo_set_mode(data, false); if (data->enable_event) -- Gitee From a7f62f9fa44767b7d3c2da558d380fe161b0b44c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:35 +0800 Subject: [PATCH 0145/1421] Revert "soc: aspeed: lpc-snoop: Don't disable channels that aren't enabled" This reverts commit 6d5f7251a0aed0d165755f43b4457dac8771ae43. --- drivers/soc/aspeed/aspeed-lpc-snoop.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c index 3dd2ab8336aa..7ca00f239891 100644 --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c @@ -58,7 +58,6 @@ struct aspeed_lpc_snoop_model_data { }; struct aspeed_lpc_snoop_channel { - bool enabled; struct kfifo fifo; wait_queue_head_t wq; struct miscdevice miscdev; @@ -191,9 +190,6 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, const struct aspeed_lpc_snoop_model_data *model_data = of_device_get_match_data(dev); - if (WARN_ON(lpc_snoop->chan[channel].enabled)) - return -EBUSY; - init_waitqueue_head(&lpc_snoop->chan[channel].wq); /* Create FIFO datastructure */ rc = kfifo_alloc(&lpc_snoop->chan[channel].fifo, @@ -240,8 +236,6 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, regmap_update_bits(lpc_snoop->regmap, HICRB, hicrb_en, hicrb_en); - lpc_snoop->chan[channel].enabled = true; - return 0; err_misc_deregister: @@ -254,9 +248,6 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop, int channel) { - if (!lpc_snoop->chan[channel].enabled) - return; - switch (channel) { case 0: regmap_update_bits(lpc_snoop->regmap, HICR5, @@ -272,8 +263,6 @@ static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop, return; } - lpc_snoop->chan[channel].enabled = false; - /* Consider improving safety wrt concurrent reader(s) */ misc_deregister(&lpc_snoop->chan[channel].miscdev); kfifo_free(&lpc_snoop->chan[channel].fifo); } -- Gitee From bb4cf3c79832c1ab79463d29f179d082b913bd64 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:36 +0800 Subject: [PATCH 0146/1421] Revert "soc: aspeed: lpc-snoop: Cleanup resources in stack-order" This reverts commit dd2d8384097d1343015e6cf412a261dfae1841ad. --- drivers/soc/aspeed/aspeed-lpc-snoop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c index 7ca00f239891..0f2ffee321dd 100644 --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c @@ -263,8 +263,8 @@ static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop, return; } - misc_deregister(&lpc_snoop->chan[channel].miscdev); kfifo_free(&lpc_snoop->chan[channel].fifo); + misc_deregister(&lpc_snoop->chan[channel].miscdev); } static int aspeed_lpc_snoop_probe(struct platform_device *pdev) -- Gitee From 29ee574007c53ed402ea900217eedc718d49e619 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:36 +0800 Subject: [PATCH 0147/1421] Revert "smb: client: fix use-after-free in crypt_message when using async crypto" This reverts commit 5f7cb7fb698f72d2a855141dbcd5ce606f02d25d. --- fs/smb/client/smb2ops.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c index 2385e570e331..4e3eacbec96d 100644 --- a/fs/smb/client/smb2ops.c +++ b/fs/smb/client/smb2ops.c @@ -4271,7 +4271,6 @@ crypt_message(struct TCP_Server_Info *server, int num_rqst, u8 key[SMB3_ENC_DEC_KEY_SIZE]; struct aead_request *req; u8 *iv; - DECLARE_CRYPTO_WAIT(wait); unsigned int crypt_len = le32_to_cpu(tr_hdr->OriginalMessageSize); void *creq; size_t sensitive_size; @@ -4322,11 +4321,7 @@ crypt_message(struct TCP_Server_Info *server, int num_rqst, aead_request_set_crypt(req, sg, sg, crypt_len, iv); aead_request_set_ad(req, assoc_data_len); - aead_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG, - crypto_req_done, &wait); - - rc = crypto_wait_req(enc ? crypto_aead_encrypt(req) - : crypto_aead_decrypt(req), &wait); + rc = enc ? crypto_aead_encrypt(req) : crypto_aead_decrypt(req); if (!rc && enc) memcpy(&tr_hdr->Signature, sign, SMB2_SIGNATURE_SIZE); -- Gitee From 1cbc462fd41a0bcbac0fee8cf567c8fa9436a411 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:36 +0800 Subject: [PATCH 0148/1421] Revert "s390/bpf: Fix bpf_arch_text_poke() with new_addr == NULL again" This reverts commit 55c19e1177c8a393f5c6bee54d1a54a7c0c09326. --- arch/s390/net/bpf_jit_comp.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c index 2d8facfd4e42..a40c7ff91caf 100644 --- a/arch/s390/net/bpf_jit_comp.c +++ b/arch/s390/net/bpf_jit_comp.c @@ -539,15 +539,7 @@ static void bpf_jit_plt(struct bpf_plt *plt, void *ret, void *target) { memcpy(plt, &bpf_plt, sizeof(*plt)); plt->ret = ret; - /* - * (target == NULL) implies that the branch to this PLT entry was - * patched and became a no-op. However, some CPU could have jumped - * to this PLT entry before patching and may be still executing it. - * - * Since the intention in this case is to make the PLT entry a no-op, - * make the target point to the return label instead of NULL. - */ - plt->target = target ?: ret; + plt->target = target; } /* -- Gitee From 0f541c9e269682ae2db3ba62179c8ac7fe898d1a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:36 +0800 Subject: [PATCH 0149/1421] Revert "pmdomain: governor: Consider CPU latency tolerance from pm_domain_cpu_gov" This reverts commit ae5f15bfe5078deec20426e0b636c29faf7b0eaa. --- drivers/base/power/domain_governor.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/drivers/base/power/domain_governor.c b/drivers/base/power/domain_governor.c index 4f09f9a5a043..cc2c3a5a6d35 100644 --- a/drivers/base/power/domain_governor.c +++ b/drivers/base/power/domain_governor.c @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -346,8 +345,6 @@ static bool cpu_power_down_ok(struct dev_pm_domain *pd) struct cpuidle_device *dev; ktime_t domain_wakeup, next_hrtimer; ktime_t now = ktime_get(); - struct device *cpu_dev; - s64 cpu_constraint, global_constraint; s64 idle_duration_ns; int cpu, i; @@ -358,7 +355,6 @@ static bool cpu_power_down_ok(struct dev_pm_domain *pd) if (!(genpd->flags & GENPD_FLAG_CPU_DOMAIN)) return true; - global_constraint = cpu_latency_qos_limit(); /* * Find the next wakeup for any of the online CPUs within the PM domain * and its subdomains. Note, we only need the genpd->cpus, as it already @@ -372,16 +368,8 @@ static bool cpu_power_down_ok(struct dev_pm_domain *pd) if (ktime_before(next_hrtimer, domain_wakeup)) domain_wakeup = next_hrtimer; } - - cpu_dev = get_cpu_device(cpu); - if (cpu_dev) { - cpu_constraint = dev_pm_qos_raw_resume_latency(cpu_dev); - if (cpu_constraint < global_constraint) - global_constraint = cpu_constraint; - } } - global_constraint *= NSEC_PER_USEC; /* The minimum idle duration is from now - until the next wakeup. */ idle_duration_ns = ktime_to_ns(ktime_sub(domain_wakeup, now)); if (idle_duration_ns <= 0) @@ -397,10 +385,8 @@ static bool cpu_power_down_ok(struct dev_pm_domain *pd) */ i = genpd->state_idx; do { - if ((idle_duration_ns >= (genpd->states[i].residency_ns + - genpd->states[i].power_off_latency_ns)) && - (global_constraint >= (genpd->states[i].power_on_latency_ns + - genpd->states[i].power_off_latency_ns))) { + if (idle_duration_ns >= (genpd->states[i].residency_ns + + genpd->states[i].power_off_latency_ns)) { genpd->state_idx = i; return true; } -- Gitee From e8939bd4225ed5af8b26ce6ba7424fc9d2469ba2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:36 +0800 Subject: [PATCH 0150/1421] Revert "net: libwx: properly reset Rx ring descriptor" This reverts commit d1e40cf315cf503c1a75f3f1db4872edd67cdcc8. --- drivers/net/ethernet/wangxun/libwx/wx_hw.c | 7 ++++--- drivers/net/ethernet/wangxun/libwx/wx_lib.c | 5 ----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/wangxun/libwx/wx_hw.c b/drivers/net/ethernet/wangxun/libwx/wx_hw.c index 663a8988d27a..d6bc2309d2a3 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_hw.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_hw.c @@ -1348,6 +1348,7 @@ static void wx_configure_rx_ring(struct wx *wx, struct wx_ring *ring) { u16 reg_idx = ring->reg_idx; + union wx_rx_desc *rx_desc; u64 rdba = ring->dma; u32 rxdctl; @@ -1377,9 +1378,9 @@ static void wx_configure_rx_ring(struct wx *wx, memset(ring->rx_buffer_info, 0, sizeof(struct wx_rx_buffer) * ring->count); - /* reset ntu and ntc to place SW in sync with hardware */ - ring->next_to_clean = 0; - ring->next_to_use = 0; + /* initialize Rx descriptor 0 */ + rx_desc = WX_RX_DESC(ring, 0); + rx_desc->wb.upper.length = 0; /* enable receive descriptor ring */ wr32m(wx, WX_PX_RR_CFG(reg_idx), diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_lib.c index 23dbe4e4b36c..b7bfd3a432a4 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -357,8 +357,6 @@ void wx_alloc_rx_buffers(struct wx_ring *rx_ring, u16 cleaned_count) /* clear the status bits for the next_to_use descriptor */ rx_desc->wb.upper.status_error = 0; - /* clear the length for the next_to_use descriptor */ - rx_desc->wb.upper.length = 0; cleaned_count--; } while (cleaned_count); @@ -2175,9 +2173,6 @@ static void wx_clean_rx_ring(struct wx_ring *rx_ring) } } - /* Zero out the descriptor ring */ - memset(rx_ring->desc, 0, rx_ring->size); - rx_ring->next_to_alloc = 0; rx_ring->next_to_clean = 0; rx_ring->next_to_use = 0; -- Gitee From e9517d36fe3df40e6b992fda3c2e97789abc1f46 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:37 +0800 Subject: [PATCH 0151/1421] Revert "net: libwx: fix the using of Rx buffer DMA" This reverts commit 37cae1f903c2cbf66212018414e9e81299f47b7e. --- drivers/net/ethernet/wangxun/libwx/wx_lib.c | 4 ++-- drivers/net/ethernet/wangxun/libwx/wx_type.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_lib.c index b7bfd3a432a4..d84a763d040a 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -307,7 +307,7 @@ static bool wx_alloc_mapped_page(struct wx_ring *rx_ring, return false; dma = page_pool_get_dma_addr(page); - bi->dma = dma; + bi->page_dma = dma; bi->page = page; bi->page_offset = 0; @@ -344,7 +344,7 @@ void wx_alloc_rx_buffers(struct wx_ring *rx_ring, u16 cleaned_count) DMA_FROM_DEVICE); rx_desc->read.pkt_addr = - cpu_to_le64(bi->dma + bi->page_offset); + cpu_to_le64(bi->page_dma + bi->page_offset); rx_desc++; bi++; diff --git a/drivers/net/ethernet/wangxun/libwx/wx_type.h b/drivers/net/ethernet/wangxun/libwx/wx_type.h index 0fef9dfdd9a6..910ad59c9875 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_type.h +++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h @@ -755,6 +755,7 @@ struct wx_tx_buffer { struct wx_rx_buffer { struct sk_buff *skb; dma_addr_t dma; + dma_addr_t page_dma; struct page *page; unsigned int page_offset; }; -- Gitee From 81276ed0fb878f87aaf7051fed74038f7b8b5765 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:37 +0800 Subject: [PATCH 0152/1421] Revert "net: libwx: remove duplicate page_pool_put_full_page()" This reverts commit e71c557326fedb33dec59318db8957b84ba79b50. --- drivers/net/ethernet/wangxun/libwx/wx_lib.c | 11 +++++++++++ drivers/net/ethernet/wangxun/libwx/wx_type.h | 1 + 2 files changed, 12 insertions(+) diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_lib.c index d84a763d040a..97c6b4d27634 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -171,6 +171,10 @@ static void wx_dma_sync_frag(struct wx_ring *rx_ring, skb_frag_off(frag), skb_frag_size(frag), DMA_FROM_DEVICE); + + /* If the page was released, just unmap it. */ + if (unlikely(WX_CB(skb)->page_released)) + page_pool_put_full_page(rx_ring->page_pool, rx_buffer->page, false); } static struct wx_rx_buffer *wx_get_rx_buffer(struct wx_ring *rx_ring, @@ -220,6 +224,10 @@ static void wx_put_rx_buffer(struct wx_ring *rx_ring, struct sk_buff *skb, int rx_buffer_pgcnt) { + if (!IS_ERR(skb) && WX_CB(skb)->dma == rx_buffer->dma) + /* the page has been released from the ring */ + WX_CB(skb)->page_released = true; + /* clear contents of rx_buffer */ rx_buffer->page = NULL; rx_buffer->skb = NULL; @@ -2150,6 +2158,9 @@ static void wx_clean_rx_ring(struct wx_ring *rx_ring) if (rx_buffer->skb) { struct sk_buff *skb = rx_buffer->skb; + if (WX_CB(skb)->page_released) + page_pool_put_full_page(rx_ring->page_pool, rx_buffer->page, false); + dev_kfree_skb(skb); } diff --git a/drivers/net/ethernet/wangxun/libwx/wx_type.h b/drivers/net/ethernet/wangxun/libwx/wx_type.h index 910ad59c9875..c555af9ed51b 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_type.h +++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h @@ -668,6 +668,7 @@ enum wx_reset_type { struct wx_cb { dma_addr_t dma; u16 append_cnt; /* number of skb's appended */ + bool page_released; bool dma_released; }; -- Gitee From 88b50a56525768ef879e96087490ad38bbb615dd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:37 +0800 Subject: [PATCH 0153/1421] Revert "mmc: sdhci_am654: Workaround for Errata i2312" This reverts commit a06834d5a99f60660a7918c6938061cd5ea36b8e. --- drivers/mmc/host/sdhci_am654.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index fb89b6062351..562034af653e 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -559,8 +559,7 @@ static struct sdhci_ops sdhci_am654_ops = { static const struct sdhci_pltfm_data sdhci_am654_pdata = { .ops = &sdhci_am654_ops, .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_DISABLE_HW_TIMEOUT, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, }; static const struct sdhci_am654_driver_data sdhci_am654_sr1_drvdata = { @@ -590,8 +589,7 @@ static struct sdhci_ops sdhci_j721e_8bit_ops = { static const struct sdhci_pltfm_data sdhci_j721e_8bit_pdata = { .ops = &sdhci_j721e_8bit_ops, .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_DISABLE_HW_TIMEOUT, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, }; static const struct sdhci_am654_driver_data sdhci_j721e_8bit_drvdata = { @@ -615,8 +613,7 @@ static struct sdhci_ops sdhci_j721e_4bit_ops = { static const struct sdhci_pltfm_data sdhci_j721e_4bit_pdata = { .ops = &sdhci_j721e_4bit_ops, .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_DISABLE_HW_TIMEOUT, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, }; static const struct sdhci_am654_driver_data sdhci_j721e_4bit_drvdata = { -- Gitee From 5377e94876fcda3862cf114d423284c557661906 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:37 +0800 Subject: [PATCH 0154/1421] Revert "mmc: sdhci-pci: Quirk for broken command queuing on Intel GLK-based Positivo models" This reverts commit b0d77945a94284e4af650b299641d733398dca1f. --- drivers/mmc/host/sdhci-pci-core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 2ea5357e3bf0..dbfe0a5324ea 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -911,8 +911,7 @@ static bool glk_broken_cqhci(struct sdhci_pci_slot *slot) { return slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_GLK_EMMC && (dmi_match(DMI_BIOS_VENDOR, "LENOVO") || - dmi_match(DMI_SYS_VENDOR, "IRBIS") || - dmi_match(DMI_SYS_VENDOR, "Positivo Tecnologia SA")); + dmi_match(DMI_SYS_VENDOR, "IRBIS")); } static bool jsl_broken_hs400es(struct sdhci_pci_slot *slot) -- Gitee From f2e1e6fa433b0efa4b810be9e302e8b3721644a1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:37 +0800 Subject: [PATCH 0155/1421] Revert "mmc: bcm2835: Fix dma_unmap_sg() nents value" This reverts commit f9dc1dea071886275c3b5802d9c480d34c919e21. --- drivers/mmc/host/bcm2835.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c index f923447ed2ce..35d8fdea668b 100644 --- a/drivers/mmc/host/bcm2835.c +++ b/drivers/mmc/host/bcm2835.c @@ -502,8 +502,7 @@ void bcm2835_prepare_dma(struct bcm2835_host *host, struct mmc_data *data) DMA_PREP_INTERRUPT | DMA_CTRL_ACK); if (!desc) { - dma_unmap_sg(dma_chan->device->dev, data->sg, data->sg_len, - dir_data); + dma_unmap_sg(dma_chan->device->dev, data->sg, sg_len, dir_data); return; } -- Gitee From b10067baabdc7f53a23968dfedaa32cf31f11659 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:38 +0800 Subject: [PATCH 0156/1421] Revert "memstick: core: Zero initialize id_reg in h_memstick_read_dev_id()" This reverts commit 02cf14010bc4245dc300c033cc3dc1917dfbc42f. --- drivers/memstick/core/memstick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c index ac71abdce1b2..bbfaf6536903 100644 --- a/drivers/memstick/core/memstick.c +++ b/drivers/memstick/core/memstick.c @@ -323,7 +323,7 @@ EXPORT_SYMBOL(memstick_init_req); static int h_memstick_read_dev_id(struct memstick_dev *card, struct memstick_request **mrq) { - struct ms_id_register id_reg = {}; + struct ms_id_register id_reg; if (!(*mrq)) { memstick_init_req(&card->current_mrq, MS_TPC_READ_REG, &id_reg, -- Gitee From be41f78bf554b6a51203b9fc9f7e6803937908c2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:38 +0800 Subject: [PATCH 0157/1421] Revert "isofs: Verify inode mode when loading from disk" This reverts commit 7837a89d8fc10b5365c2813fa7b42d186452def9. --- fs/isofs/inode.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c index d989bdcfaa26..54075fe3de9b 100644 --- a/fs/isofs/inode.c +++ b/fs/isofs/inode.c @@ -1486,16 +1486,9 @@ static int isofs_read_inode(struct inode *inode, int relocated) inode->i_op = &page_symlink_inode_operations; inode_nohighmem(inode); inode->i_data.a_ops = &isofs_symlink_aops; - } else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || - S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { + } else /* XXX - parse_rock_ridge_inode() had already set i_rdev. */ init_special_inode(inode, inode->i_mode, inode->i_rdev); - } else { - printk(KERN_DEBUG "ISOFS: Invalid file type 0%04o for inode %lu.\n", - inode->i_mode, inode->i_ino); - ret = -EIO; - goto fail; - } ret = 0; out: -- Gitee From 21a5bac4d8162eddfe3deb93332c9d7cf07d871b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:38 +0800 Subject: [PATCH 0158/1421] Revert "dmaengine: nbpfaxi: Fix memory corruption in probe()" This reverts commit 155d2c4196f98c2aaa52db6d2018e58657ff358d. --- drivers/dma/nbpfaxi.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/dma/nbpfaxi.c b/drivers/dma/nbpfaxi.c index a361f8c29cd3..0b2f96fd8bf0 100644 --- a/drivers/dma/nbpfaxi.c +++ b/drivers/dma/nbpfaxi.c @@ -1351,7 +1351,7 @@ static int nbpf_probe(struct platform_device *pdev) if (irqs == 1) { eirq = irqbuf[0]; - for (i = 0; i < num_channels; i++) + for (i = 0; i <= num_channels; i++) nbpf->chan[i].irq = irqbuf[0]; } else { eirq = platform_get_irq_byname(pdev, "error"); @@ -1361,15 +1361,16 @@ static int nbpf_probe(struct platform_device *pdev) if (irqs == num_channels + 1) { struct nbpf_channel *chan; - for (i = 0, chan = nbpf->chan; i < num_channels; + for (i = 0, chan = nbpf->chan; i <= num_channels; i++, chan++) { /* Skip the error IRQ */ if (irqbuf[i] == eirq) i++; - if (i >= ARRAY_SIZE(irqbuf)) - return -EINVAL; chan->irq = irqbuf[i]; } + + if (chan != nbpf->chan + num_channels) + return -EINVAL; } else { /* 2 IRQs and more than one channel */ if (irqbuf[0] == eirq) @@ -1377,7 +1378,7 @@ static int nbpf_probe(struct platform_device *pdev) else irq = irqbuf[0]; - for (i = 0; i < num_channels; i++) + for (i = 0; i <= num_channels; i++) nbpf->chan[i].irq = irq; } } -- Gitee From 33009fbcaa8643b3b1e20b8ade5f100d1ad96f98 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:38 +0800 Subject: [PATCH 0159/1421] Revert "af_packet: fix soft lockup issue caused by tpacket_snd()" This reverts commit 1ed492db100cd083fe7b3e0085ca8cdf1cf27084. --- net/packet/af_packet.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 9cac7cb78c0f..f25a3755491b 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2852,21 +2852,15 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) ph = packet_current_frame(po, &po->tx_ring, TP_STATUS_SEND_REQUEST); if (unlikely(ph == NULL)) { - /* Note: packet_read_pending() might be slow if we - * have to call it as it's per_cpu variable, but in - * fast-path we don't have to call it, only when ph - * is NULL, we need to check the pending_refcnt. - */ - if (need_wait && packet_read_pending(&po->tx_ring)) { + if (need_wait && skb) { timeo = wait_for_completion_interruptible_timeout(&po->skb_completion, timeo); if (timeo <= 0) { err = !timeo ? -ETIMEDOUT : -ERESTARTSYS; goto out_put; } - /* check for additional frames */ - continue; - } else - break; + } + /* check for additional frames */ + continue; } skb = NULL; @@ -2955,7 +2949,14 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) } packet_increment_head(&po->tx_ring); len_sum += tp_len; - } while (1); + } while (likely((ph != NULL) || + /* Note: packet_read_pending() might be slow if we have + * to call it as it's per_cpu variable, but in fast-path + * we already short-circuit the loop with the first + * condition, and luckily don't have to go that path + * anyway. + */ + (need_wait && packet_read_pending(&po->tx_ring)))); err = len_sum; goto out_put; -- Gitee From 56e8ea33fb18d51db0fdb4844971c3b73a6c608a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:39 +0800 Subject: [PATCH 0160/1421] Revert "af_packet: fix the SO_SNDTIMEO constraint not effective on tpacked_snd()" This reverts commit 9e9ec9c0512b5b55377e2949995335e14aef2fa7. --- net/packet/af_packet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index f25a3755491b..4abf7e9ac4f2 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2791,7 +2791,7 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) int len_sum = 0; int status = TP_STATUS_AVAILABLE; int hlen, tlen, copylen = 0; - long timeo; + long timeo = 0; mutex_lock(&po->pg_vec_lock); @@ -2845,7 +2845,6 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) if ((size_max > dev->mtu + reserve + VLAN_HLEN) && !vnet_hdr_sz) size_max = dev->mtu + reserve + VLAN_HLEN; - timeo = sock_sndtimeo(&po->sk, msg->msg_flags & MSG_DONTWAIT); reinit_completion(&po->skb_completion); do { @@ -2853,6 +2852,7 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) TP_STATUS_SEND_REQUEST); if (unlikely(ph == NULL)) { if (need_wait && skb) { + timeo = sock_sndtimeo(&po->sk, msg->msg_flags & MSG_DONTWAIT); timeo = wait_for_completion_interruptible_timeout(&po->skb_completion, timeo); if (timeo <= 0) { err = !timeo ? -ETIMEDOUT : -ERESTARTSYS; -- Gitee From 63e9e8c7b47c5baf3226de45f4940f3be2d0e923 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:39 +0800 Subject: [PATCH 0161/1421] Revert "arm64: dts: rockchip: use cs-gpios for spi1 on ringneck" This reverts commit aa3162086e183768bb8538cc8fce9b25b25fe2a0. --- .../boot/dts/rockchip/px30-ringneck.dtsi | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi b/arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi index 403a295bde6a..2963d634baba 100644 --- a/arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi +++ b/arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi @@ -344,18 +344,6 @@ pmic_int: pmic-int { <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>; }; }; - - spi1 { - spi1_csn0_gpio_pin: spi1-csn0-gpio-pin { - rockchip,pins = - <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up_4ma>; - }; - - spi1_csn1_gpio_pin: spi1-csn1-gpio-pin { - rockchip,pins = - <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up_4ma>; - }; - }; }; &saradc { @@ -367,17 +355,6 @@ &sdmmc { vqmmc-supply = <&vccio_sd>; }; -&spi1 { - /* - * Hardware CS has a very slow rise time of about 6us, - * causing transmission errors. - * With cs-gpios we have a rise time of about 20ns. - */ - cs-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>, <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; - pinctrl-names = "default"; - pinctrl-0 = <&spi1_clk &spi1_csn0_gpio_pin &spi1_csn1_gpio_pin &spi1_miso &spi1_mosi>; -}; - &tsadc { status = "okay"; }; -- Gitee From 0535274268f900c40a851ef96c84e07a4d1fa0e1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:39 +0800 Subject: [PATCH 0162/1421] Revert "arm64: dts: freescale: imx8mm-verdin: Keep LDO5 always on" This reverts commit a73bc13ce4c210fbb69e47d0b3463662006089b6. --- arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi index 218b54821907..6457d2c37701 100644 --- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi @@ -470,7 +470,6 @@ reg_vdd_phy: LDO4 { }; reg_nvcc_sd: LDO5 { - regulator-always-on; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <1800000>; regulator-name = "On-module +V3.3_1.8_SD (LDO5)"; -- Gitee From 05ddc9691b3815b2bc9c1ccfe5794d7a41dbf5d6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:39 +0800 Subject: [PATCH 0163/1421] Revert "arm64: dts: imx8mp-venice-gw74xx: fix TPM SPI frequency" This reverts commit 4e44ff6891f267919acb3a248b1e67bbc55af473. --- arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts index 34619f085623..faa370a5885f 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts +++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts @@ -185,7 +185,7 @@ tpm@0 { #address-cells = <0x1>; #size-cells = <0x1>; reg = <0x0>; - spi-max-frequency = <25000000>; + spi-max-frequency = <36000000>; }; }; -- Gitee From ccbb96415a46ef099f0e1c011623e70a802386bf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:39 +0800 Subject: [PATCH 0164/1421] Revert "net/mlx5: Update the list of the PCI supported devices" This reverts commit 0027ccc9a5058b5c4f215d7f241afb2935cd312a. --- drivers/net/ethernet/mellanox/mlx5/core/main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c index 32fa789a6960..96136229b1b0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -2206,7 +2206,6 @@ static const struct pci_device_id mlx5_core_pci_table[] = { { PCI_VDEVICE(MELLANOX, 0x1021) }, /* ConnectX-7 */ { PCI_VDEVICE(MELLANOX, 0x1023) }, /* ConnectX-8 */ { PCI_VDEVICE(MELLANOX, 0x1025) }, /* ConnectX-9 */ - { PCI_VDEVICE(MELLANOX, 0x1027) }, /* ConnectX-10 */ { PCI_VDEVICE(MELLANOX, 0xa2d2) }, /* BlueField integrated ConnectX-5 network controller */ { PCI_VDEVICE(MELLANOX, 0xa2d3), MLX5_PCI_DEV_IS_VF}, /* BlueField integrated ConnectX-5 network controller VF */ { PCI_VDEVICE(MELLANOX, 0xa2d6) }, /* BlueField-2 integrated ConnectX-6 Dx network controller */ -- Gitee From 57d9342931f43b876aa2a55318b05b713631e320 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:40 +0800 Subject: [PATCH 0165/1421] Revert "phonet/pep: Move call to pn_skb_get_dst_sockaddr() earlier in pep_sock_accept()" This reverts commit 59117724cf20e29b6d3bed285242abbd0dccaf06. --- net/phonet/pep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/phonet/pep.c b/net/phonet/pep.c index e14b2b2d3b5c..3dd5f52bc1b5 100644 --- a/net/phonet/pep.c +++ b/net/phonet/pep.c @@ -826,7 +826,6 @@ static struct sock *pep_sock_accept(struct sock *sk, int flags, int *errp, } /* Check for duplicate pipe handle */ - pn_skb_get_dst_sockaddr(skb, &dst); newsk = pep_find_pipe(&pn->hlist, &dst, pipe_handle); if (unlikely(newsk)) { __sock_put(newsk); @@ -851,6 +850,7 @@ static struct sock *pep_sock_accept(struct sock *sk, int flags, int *errp, newsk->sk_destruct = pipe_destruct; newpn = pep_sk(newsk); + pn_skb_get_dst_sockaddr(skb, &dst); pn_skb_get_src_sockaddr(skb, &src); newpn->pn_sk.sobject = pn_sockaddr_get_object(&dst); newpn->pn_sk.dobject = pn_sockaddr_get_object(&src); -- Gitee From 00d482a10f9eb005626dc06941f2f777b2a39578 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:40 +0800 Subject: [PATCH 0166/1421] Revert "io_uring/poll: fix POLLERR handling" This reverts commit 783133bfd3efa426f75f54909d0da21135a086ce. --- io_uring/net.c | 12 ++++-------- io_uring/poll.c | 2 ++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/io_uring/net.c b/io_uring/net.c index e455f051e62e..4948a67bbac4 100644 --- a/io_uring/net.c +++ b/io_uring/net.c @@ -1537,11 +1537,9 @@ int io_connect(struct io_kiocb *req, unsigned int issue_flags) io = &__io; } - if (connect->in_progress) { - struct poll_table_struct pt = { ._key = EPOLLERR }; - - if (vfs_poll(req->file, &pt) & EPOLLERR) - goto get_sock_err; + if (unlikely(req->flags & REQ_F_FAIL)) { + ret = -ECONNRESET; + goto out; } file_flags = force_nonblock ? O_NONBLOCK : 0; @@ -1573,10 +1571,8 @@ int io_connect(struct io_kiocb *req, unsigned int issue_flags) * which means the previous result is good. For both of these, * grab the sock_error() and use that for the completion. */ - if (ret == -EBADFD || ret == -EISCONN) { -get_sock_err: + if (ret == -EBADFD || ret == -EISCONN) ret = sock_error(sock_from_file(req->file)->sk); - } } if (ret == -ERESTARTSYS) ret = -EINTR; diff --git a/io_uring/poll.c b/io_uring/poll.c index 65935ec8de89..2390bf5f1710 100644 --- a/io_uring/poll.c +++ b/io_uring/poll.c @@ -308,6 +308,8 @@ static int io_poll_check_events(struct io_kiocb *req, struct io_tw_state *ts) return IOU_POLL_REISSUE; } } + if (unlikely(req->cqe.res & EPOLLERR)) + req_set_fail(req); if (req->apoll_events & EPOLLONESHOT) return IOU_POLL_DONE; -- Gitee From 4a5b8e9b382fa604b63bcc3bc3b99a7306cc10f9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:40 +0800 Subject: [PATCH 0167/1421] Revert "ALSA: hda/realtek: Add quirk for ASUS ROG Strix G712LWS" This reverts commit 35dac7c9a14045126cc6c0e6f3e4e8e4e15e99e4. --- sound/pci/hda/patch_realtek.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 614784c0ba31..1c2059e37fda 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -10303,7 +10303,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), SND_PCI_QUIRK(0x1043, 0x1a63, "ASUS UX3405MA", ALC245_FIXUP_CS35L41_SPI_2), SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2), - SND_PCI_QUIRK(0x1043, 0x1a8e, "ASUS G712LWS", ALC294_FIXUP_LENOVO_MIC_LOCATION), SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2), SND_PCI_QUIRK(0x1043, 0x1b11, "ASUS UX431DA", ALC294_FIXUP_ASUS_COEF_1B), SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), -- Gitee From 85603efc184fa5e62005c10622be4b7678cbe6b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:40 +0800 Subject: [PATCH 0168/1421] Revert "drm/amdgpu/gfx8: reset compute ring wptr on the GPU on resume" This reverts commit f62155e41285ac34fe381bc5cdedfbf37e682923. --- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 472cb0f9e8f6..1943beb135c4 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -4656,7 +4656,6 @@ static int gfx_v8_0_kcq_init_queue(struct amdgpu_ring *ring) memcpy(mqd, adev->gfx.mec.mqd_backup[mqd_idx], sizeof(struct vi_mqd_allocation)); /* reset ring buffer */ ring->wptr = 0; - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, 0); amdgpu_ring_clear_ring(ring); } return 0; -- Gitee From 44e0baba34f556a2ffc83139cd5be91cb80e29ae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:40 +0800 Subject: [PATCH 0169/1421] Revert "tracing/osnoise: Fix crash in timerlat_dump_stack()" This reverts commit a8984fc40e1a9d26c15d9c5d12a0c8e65c00fbc3. --- kernel/trace/trace_osnoise.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index 4d12d02965a4..5bd781359d38 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -665,8 +665,8 @@ __timerlat_dump_stack(struct trace_buffer *buffer, struct trace_stack *fstack, u entry = ring_buffer_event_data(event); - entry->size = fstack->nr_entries; memcpy(&entry->caller, fstack->calls, size); + entry->size = fstack->nr_entries; if (!call_filter_check_discard(call, entry, buffer, event)) trace_buffer_unlock_commit_nostack(buffer, event); -- Gitee From 97e902454f030de37fb0fea3c601dc2cf18b4307 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:41 +0800 Subject: [PATCH 0170/1421] Revert "tracing: Add down_write(trace_event_sem) when adding trace event" This reverts commit 274ed3eacca91b7649aceaf28d16765223bf4f42. --- kernel/trace/trace_events.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 7b3c55bb0235..5f74e9f9c8a7 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2845,10 +2845,7 @@ __register_event(struct trace_event_call *call, struct module *mod) if (ret < 0) return ret; - down_write(&trace_event_sem); list_add(&call->list, &ftrace_events); - up_write(&trace_event_sem); - if (call->flags & TRACE_EVENT_FL_DYNAMIC) atomic_set(&call->refcnt, 0); else @@ -3440,8 +3437,6 @@ __trace_add_event_dirs(struct trace_array *tr) struct trace_event_call *call; int ret; - lockdep_assert_held(&trace_event_sem); - list_for_each_entry(call, &ftrace_events, list) { ret = __trace_add_new_event(call, tr); if (ret < 0) -- Gitee From 6318cdd307ed358390191fbf37d73b68f3deb7ce Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:41 +0800 Subject: [PATCH 0171/1421] Revert "tracing/probes: Avoid using params uninitialized in parse_btf_arg()" This reverts commit 8913468f07a01e9f6f55f97affefab9a7b0921da. --- kernel/trace/trace_probe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c index 187b1fc403c1..694f32d843d9 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c @@ -656,7 +656,7 @@ static int parse_btf_arg(char *varname, ret = query_btf_context(ctx); if (ret < 0 || ctx->nr_params == 0) { trace_probe_log_err(ctx->offset, NO_BTF_ENTRY); - return -ENOENT; + return PTR_ERR(params); } } params = ctx->params; -- Gitee From 3804f71d6e1030a7fa655bc100747d5abb3331fc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:41 +0800 Subject: [PATCH 0172/1421] Revert "HID: core: do not bypass hid_hw_raw_request" This reverts commit 65a2e2539c8507213a05f08ad5ea2b54640cce8b. --- drivers/hid/hid-core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 266cd56dec50..5d2fc2f403f0 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1961,7 +1961,8 @@ int __hid_request(struct hid_device *hid, struct hid_report *report, if (reqtype == HID_REQ_SET_REPORT) hid_output_report(report, data_buf); - ret = hid_hw_raw_request(hid, report->id, buf, len, report->type, reqtype); + ret = hid->ll_driver->raw_request(hid, report->id, buf, len, + report->type, reqtype); if (ret < 0) { dbg_hid("unable to complete request: %d\n", ret); goto out; -- Gitee From e09fcdabe64f6b38ff4704eea8da3dc85bfcd052 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:41 +0800 Subject: [PATCH 0173/1421] Revert "HID: core: ensure __hid_request reserves the report ID as the first byte" This reverts commit 48393d5c146dd073db8730df97555b4a087bc349. --- drivers/hid/hid-core.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 5d2fc2f403f0..04fafe95e9d1 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1941,7 +1941,7 @@ static struct hid_report *hid_get_report(struct hid_report_enum *report_enum, int __hid_request(struct hid_device *hid, struct hid_report *report, enum hid_class_request reqtype) { - char *buf, *data_buf; + char *buf; int ret; u32 len; @@ -1949,17 +1949,10 @@ int __hid_request(struct hid_device *hid, struct hid_report *report, if (!buf) return -ENOMEM; - data_buf = buf; len = hid_report_len(report); - if (report->id == 0) { - /* reserve the first byte for the report ID */ - data_buf++; - len++; - } - if (reqtype == HID_REQ_SET_REPORT) - hid_output_report(report, data_buf); + hid_output_report(report, buf); ret = hid->ll_driver->raw_request(hid, report->id, buf, len, report->type, reqtype); -- Gitee From 600570a1cdb9326a01100463b33350789e4a2211 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:41 +0800 Subject: [PATCH 0174/1421] Revert "HID: core: ensure the allocated report buffer can contain the reserved report ID" This reverts commit 83b20efb4ec165dd38c5804462ec8e2c9891f953. --- drivers/hid/hid-core.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 04fafe95e9d1..8f156a69912c 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1873,12 +1873,9 @@ u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags) /* * 7 extra bytes are necessary to achieve proper functionality * of implement() working on 8 byte chunks - * 1 extra byte for the report ID if it is null (not used) so - * we can reserve that extra byte in the first position of the buffer - * when sending it to .raw_request() */ - u32 len = hid_report_len(report) + 7 + (report->id == 0); + u32 len = hid_report_len(report) + 7; return kzalloc(len, flags); } -- Gitee From 2f736c4e41be79b4f1d14e378fc873369da1ada8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:42 +0800 Subject: [PATCH 0175/1421] Revert "dm-bufio: fix sched in atomic context" This reverts commit 2413af175dfc03812bd81a2aecb39d3106ff4176. --- drivers/md/dm-bufio.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c index 02838beee9d1..2d3afeaf8868 100644 --- a/drivers/md/dm-bufio.c +++ b/drivers/md/dm-bufio.c @@ -2708,11 +2708,7 @@ static unsigned long __evict_many(struct dm_bufio_client *c, __make_buffer_clean(b); __free_buffer_wake(b); - if (need_resched()) { - dm_bufio_unlock(c); - cond_resched(); - dm_bufio_lock(c); - } + cond_resched(); } return count; -- Gitee From a95ff2f34eedfadfe25b8d84a296c7b262b41413 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:42 +0800 Subject: [PATCH 0176/1421] Revert "spi: Add check for 8-bit transfer with 8 IO mode support" This reverts commit f4d8257501cd8ab502a9bc2742d407b57fc2047b. --- drivers/spi/spi.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index cfb6755c0730..72e514cee056 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -4011,13 +4011,10 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message) xfer->tx_nbits != SPI_NBITS_OCTAL) return -EINVAL; if ((xfer->tx_nbits == SPI_NBITS_DUAL) && - !(spi->mode & (SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL))) + !(spi->mode & (SPI_TX_DUAL | SPI_TX_QUAD))) return -EINVAL; if ((xfer->tx_nbits == SPI_NBITS_QUAD) && - !(spi->mode & (SPI_TX_QUAD | SPI_TX_OCTAL))) - return -EINVAL; - if ((xfer->tx_nbits == SPI_NBITS_OCTAL) && - !(spi->mode & SPI_TX_OCTAL)) + !(spi->mode & SPI_TX_QUAD)) return -EINVAL; } /* Check transfer rx_nbits */ @@ -4030,13 +4027,10 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message) xfer->rx_nbits != SPI_NBITS_OCTAL) return -EINVAL; if ((xfer->rx_nbits == SPI_NBITS_DUAL) && - !(spi->mode & (SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL))) + !(spi->mode & (SPI_RX_DUAL | SPI_RX_QUAD))) return -EINVAL; if ((xfer->rx_nbits == SPI_NBITS_QUAD) && - !(spi->mode & (SPI_RX_QUAD | SPI_RX_OCTAL))) - return -EINVAL; - if ((xfer->rx_nbits == SPI_NBITS_OCTAL) && - !(spi->mode & SPI_RX_OCTAL)) + !(spi->mode & SPI_RX_QUAD)) return -EINVAL; } -- Gitee From f4a100f795ddaee241713bcfdd58c58f39b26dea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:42 +0800 Subject: [PATCH 0177/1421] Revert "pch_uart: Fix dma_sync_sg_for_device() nents value" This reverts commit ad5fa66add737be47256bc31ed518d6ac58cba02. --- drivers/tty/serial/pch_uart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c index 7b868ea48ad5..cc83b772b7ca 100644 --- a/drivers/tty/serial/pch_uart.c +++ b/drivers/tty/serial/pch_uart.c @@ -967,7 +967,7 @@ static unsigned int dma_handle_tx(struct eg20t_port *priv) __func__); return 0; } - dma_sync_sg_for_device(port->dev, priv->sg_tx_p, num, DMA_TO_DEVICE); + dma_sync_sg_for_device(port->dev, priv->sg_tx_p, nent, DMA_TO_DEVICE); priv->desc_tx = desc; desc->callback = pch_dma_tx_complete; desc->callback_param = priv; -- Gitee From 9ba8b3cfe33e4793fd430f1f6e7159b6f39f039c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:42 +0800 Subject: [PATCH 0178/1421] Revert "Input: xpad - set correct controller type for Acer NGR200" This reverts commit 62aa62bde86ca87effff10a7668073de5c230b00. --- drivers/input/joystick/xpad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 09fcc14051f2..05c00421ff2b 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -169,12 +169,12 @@ static const struct xpad_device { { 0x046d, 0xca88, "Logitech Compact Controller for Xbox", 0, XTYPE_XBOX }, { 0x046d, 0xca8a, "Logitech Precision Vibration Feedback Wheel", 0, XTYPE_XBOX }, { 0x046d, 0xcaa3, "Logitech DriveFx Racing Wheel", 0, XTYPE_XBOX360 }, - { 0x0502, 0x1305, "Acer NGR200", 0, XTYPE_XBOX360 }, { 0x056e, 0x2004, "Elecom JC-U3613M", 0, XTYPE_XBOX360 }, { 0x05fd, 0x1007, "Mad Catz Controller (unverified)", 0, XTYPE_XBOX }, { 0x05fd, 0x107a, "InterAct 'PowerPad Pro' X-Box pad (Germany)", 0, XTYPE_XBOX }, { 0x05fe, 0x3030, "Chic Controller", 0, XTYPE_XBOX }, { 0x05fe, 0x3031, "Chic Controller", 0, XTYPE_XBOX }, + { 0x0502, 0x1305, "Acer NGR200", 0, XTYPE_XBOX }, { 0x062a, 0x0020, "Logic3 Xbox GamePad", 0, XTYPE_XBOX }, { 0x062a, 0x0033, "Competition Pro Steering Wheel", 0, XTYPE_XBOX }, { 0x06a3, 0x0200, "Saitek Racing Wheel", 0, XTYPE_XBOX }, -- Gitee From 6fb69081a47b7a5bda79ae2ca6da33dacf8c83b2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:42 +0800 Subject: [PATCH 0179/1421] Revert "nvmem: imx-ocotp: fix MAC address byte length" This reverts commit 9124f6d4f411c7212a63730db38b17eb4e403012. --- drivers/nvmem/imx-ocotp-ele.c | 5 +---- drivers/nvmem/imx-ocotp.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/nvmem/imx-ocotp-ele.c b/drivers/nvmem/imx-ocotp-ele.c index 66e468af0f2f..1356ec93bfd0 100644 --- a/drivers/nvmem/imx-ocotp-ele.c +++ b/drivers/nvmem/imx-ocotp-ele.c @@ -12,7 +12,6 @@ #include #include #include -#include /* ETH_ALEN */ enum fuse_type { FUSE_FSB = 1, @@ -115,11 +114,9 @@ static int imx_ocotp_cell_pp(void *context, const char *id, int index, int i; /* Deal with some post processing of nvmem cell data */ - if (id && !strcmp(id, "mac-address")) { - bytes = min(bytes, ETH_ALEN); + if (id && !strcmp(id, "mac-address")) for (i = 0; i < bytes / 2; i++) swap(buf[i], buf[bytes - i - 1]); - } return 0; } diff --git a/drivers/nvmem/imx-ocotp.c b/drivers/nvmem/imx-ocotp.c index 7bf7656d4f96..79dd4fda0329 100644 --- a/drivers/nvmem/imx-ocotp.c +++ b/drivers/nvmem/imx-ocotp.c @@ -23,7 +23,6 @@ #include #include #include -#include /* ETH_ALEN */ #define IMX_OCOTP_OFFSET_B0W0 0x400 /* Offset from base address of the * OTP Bank0 Word0 @@ -228,11 +227,9 @@ static int imx_ocotp_cell_pp(void *context, const char *id, int index, int i; /* Deal with some post processing of nvmem cell data */ - if (id && !strcmp(id, "mac-address")) { - bytes = min(bytes, ETH_ALEN); + if (id && !strcmp(id, "mac-address")) for (i = 0; i < bytes / 2; i++) swap(buf[i], buf[bytes - i - 1]); - } return 0; } -- Gitee From c7629cd2b4e39e8b3190277466409cffd9e27075 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:43 +0800 Subject: [PATCH 0180/1421] Revert "thunderbolt: Fix bit masking in tb_dp_port_set_hops()" This reverts commit 445fed1f597109323e8cff90dba45ba045f2755c. --- drivers/thunderbolt/switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index df83383800a8..26ed62b86a09 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -1465,7 +1465,7 @@ int tb_dp_port_set_hops(struct tb_port *port, unsigned int video, return ret; data[0] &= ~ADP_DP_CS_0_VIDEO_HOPID_MASK; - data[1] &= ~ADP_DP_CS_1_AUX_TX_HOPID_MASK; + data[1] &= ~ADP_DP_CS_1_AUX_RX_HOPID_MASK; data[1] &= ~ADP_DP_CS_1_AUX_RX_HOPID_MASK; data[0] |= (video << ADP_DP_CS_0_VIDEO_HOPID_SHIFT) & -- Gitee From 0f759abbef1f09c87abbf2b53d3b6632edd23d18 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:43 +0800 Subject: [PATCH 0181/1421] Revert "thunderbolt: Fix wake on connect at runtime" This reverts commit 3c73974ceb7a5327dd2c17059d727c6dd332ea7c. --- drivers/thunderbolt/switch.c | 8 ++++---- drivers/thunderbolt/tb.h | 2 +- drivers/thunderbolt/usb4.c | 12 +++++++----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index 26ed62b86a09..52cb1a3bb8c7 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -3439,7 +3439,7 @@ void tb_sw_set_unplugged(struct tb_switch *sw) } } -static int tb_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime) +static int tb_switch_set_wake(struct tb_switch *sw, unsigned int flags) { if (flags) tb_sw_dbg(sw, "enabling wakeup: %#x\n", flags); @@ -3447,7 +3447,7 @@ static int tb_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool run tb_sw_dbg(sw, "disabling wakeup\n"); if (tb_switch_is_usb4(sw)) - return usb4_switch_set_wake(sw, flags, runtime); + return usb4_switch_set_wake(sw, flags); return tb_lc_set_wake(sw, flags); } @@ -3523,7 +3523,7 @@ int tb_switch_resume(struct tb_switch *sw, bool runtime) tb_switch_check_wakes(sw); /* Disable wakes */ - tb_switch_set_wake(sw, 0, true); + tb_switch_set_wake(sw, 0); err = tb_switch_tmu_init(sw); if (err) @@ -3604,7 +3604,7 @@ void tb_switch_suspend(struct tb_switch *sw, bool runtime) flags |= TB_WAKE_ON_USB4 | TB_WAKE_ON_USB3 | TB_WAKE_ON_PCIE; } - tb_switch_set_wake(sw, flags, runtime); + tb_switch_set_wake(sw, flags); if (tb_switch_is_usb4(sw)) usb4_switch_set_sleep(sw); diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h index d67a25f33fd1..920dac8a63e1 100644 --- a/drivers/thunderbolt/tb.h +++ b/drivers/thunderbolt/tb.h @@ -1266,7 +1266,7 @@ int usb4_switch_read_uid(struct tb_switch *sw, u64 *uid); int usb4_switch_drom_read(struct tb_switch *sw, unsigned int address, void *buf, size_t size); bool usb4_switch_lane_bonding_possible(struct tb_switch *sw); -int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime); +int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags); int usb4_switch_set_sleep(struct tb_switch *sw); int usb4_switch_nvm_sector_size(struct tb_switch *sw); int usb4_switch_nvm_read(struct tb_switch *sw, unsigned int address, void *buf, diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c index d4b4f58e717c..e445516290f9 100644 --- a/drivers/thunderbolt/usb4.c +++ b/drivers/thunderbolt/usb4.c @@ -405,12 +405,12 @@ bool usb4_switch_lane_bonding_possible(struct tb_switch *sw) * usb4_switch_set_wake() - Enabled/disable wake * @sw: USB4 router * @flags: Wakeup flags (%0 to disable) - * @runtime: Wake is being programmed during system runtime * * Enables/disables router to wake up from sleep. */ -int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime) +int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags) { + struct usb4_port *usb4; struct tb_port *port; u64 route = tb_route(sw); u32 val; @@ -440,11 +440,13 @@ int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags, bool runtime) val |= PORT_CS_19_WOU4; } else { bool configured = val & PORT_CS_19_PC; - bool wakeup = runtime || device_may_wakeup(&port->usb4->dev); + usb4 = port->usb4; - if ((flags & TB_WAKE_ON_CONNECT) && wakeup && !configured) + if (((flags & TB_WAKE_ON_CONNECT) && + device_may_wakeup(&usb4->dev)) && !configured) val |= PORT_CS_19_WOC; - if ((flags & TB_WAKE_ON_DISCONNECT) && wakeup && configured) + if (((flags & TB_WAKE_ON_DISCONNECT) && + device_may_wakeup(&usb4->dev)) && configured) val |= PORT_CS_19_WOD; if ((flags & TB_WAKE_ON_USB4) && configured) val |= PORT_CS_19_WOU4; -- Gitee From 4892103bd737abffd83293d34613ccd91c42c3d9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:43 +0800 Subject: [PATCH 0182/1421] Revert "i2c: stm32: fix the device used for the DMA map" This reverts commit 80d1a881e302f657444246d3418098850b3f4c3a. --- drivers/i2c/busses/i2c-stm32.c | 8 +++++--- drivers/i2c/busses/i2c-stm32f7.c | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/i2c/busses/i2c-stm32.c b/drivers/i2c/busses/i2c-stm32.c index f84ec056e36d..157c64e27d0b 100644 --- a/drivers/i2c/busses/i2c-stm32.c +++ b/drivers/i2c/busses/i2c-stm32.c @@ -102,6 +102,7 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct stm32_i2c_dma *dma, void *dma_async_param) { struct dma_async_tx_descriptor *txdesc; + struct device *chan_dev; int ret; if (rd_wr) { @@ -115,10 +116,11 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct stm32_i2c_dma *dma, } dma->dma_len = len; + chan_dev = dma->chan_using->device->dev; - dma->dma_buf = dma_map_single(dev, buf, dma->dma_len, + dma->dma_buf = dma_map_single(chan_dev, buf, dma->dma_len, dma->dma_data_dir); - if (dma_mapping_error(dev, dma->dma_buf)) { + if (dma_mapping_error(chan_dev, dma->dma_buf)) { dev_err(dev, "DMA mapping failed\n"); return -EINVAL; } @@ -148,7 +150,7 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct stm32_i2c_dma *dma, return 0; err: - dma_unmap_single(dev, dma->dma_buf, dma->dma_len, + dma_unmap_single(chan_dev, dma->dma_buf, dma->dma_len, dma->dma_data_dir); return ret; } diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c index 85f8fd6a21ec..b4f10ff31102 100644 --- a/drivers/i2c/busses/i2c-stm32f7.c +++ b/drivers/i2c/busses/i2c-stm32f7.c @@ -728,10 +728,10 @@ static void stm32f7_i2c_dma_callback(void *arg) { struct stm32f7_i2c_dev *i2c_dev = (struct stm32f7_i2c_dev *)arg; struct stm32_i2c_dma *dma = i2c_dev->dma; + struct device *dev = dma->chan_using->device->dev; stm32f7_i2c_disable_dma_req(i2c_dev); - dma_unmap_single(i2c_dev->dev, dma->dma_buf, dma->dma_len, - dma->dma_data_dir); + dma_unmap_single(dev, dma->dma_buf, dma->dma_len, dma->dma_data_dir); complete(&dma->dma_complete); } -- Gitee From 6669b138e9fd1d18f86868231792660e86874cf7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:43 +0800 Subject: [PATCH 0183/1421] Revert "usb: gadget: configfs: Fix OOB read on empty string write" This reverts commit 6130c07dac25df61c3ae00f994e9ca7805950305. --- drivers/usb/gadget/configfs.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 4c89f7629d53..3a80600d6806 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -1062,8 +1062,6 @@ static ssize_t webusb_landingPage_store(struct config_item *item, const char *pa unsigned int bytes_to_strip = 0; int l = len; - if (!len) - return len; if (page[l - 1] == '\n') { --l; ++bytes_to_strip; @@ -1187,8 +1185,6 @@ static ssize_t os_desc_qw_sign_store(struct config_item *item, const char *page, struct gadget_info *gi = os_desc_item_to_gadget_info(item); int res, l; - if (!len) - return len; l = min((int)len, OS_STRING_QW_SIGN_LEN >> 1); if (page[l - 1] == '\n') --l; -- Gitee From 9077c8945d2ff0388aa00e520910b57848a1c4b8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:44 +0800 Subject: [PATCH 0184/1421] Revert "usb: musb: fix gadget state on disconnect" This reverts commit 1e965a88b71f3e25947419373121a5608849e02a. --- drivers/usb/musb/musb_gadget.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index cfac97927865..f175cb2c3e7b 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c @@ -1925,7 +1925,6 @@ static int musb_gadget_stop(struct usb_gadget *g) * gadget driver here and have everything work; * that currently misbehaves. */ - usb_gadget_set_state(g, USB_STATE_NOTATTACHED); /* Force check of devctl register for PM runtime */ pm_runtime_mark_last_busy(musb->controller); @@ -2032,7 +2031,6 @@ void musb_g_disconnect(struct musb *musb) case OTG_STATE_B_PERIPHERAL: case OTG_STATE_B_IDLE: musb_set_state(musb, OTG_STATE_B_IDLE); - usb_gadget_set_state(&musb->g, USB_STATE_NOTATTACHED); break; case OTG_STATE_B_SRP_INIT: break; -- Gitee From 4a752d0e9364bbdae7cab9b16a60601230b26303 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:44 +0800 Subject: [PATCH 0185/1421] Revert "USB: serial: ftdi_sio: add support for NDI EMGUIDE GEMINI" This reverts commit 9e91d79f02b2e90de65b995c3b35010ab9d8c2f0. --- drivers/usb/serial/ftdi_sio.c | 2 -- drivers/usb/serial/ftdi_sio_ids.h | 3 --- 2 files changed, 5 deletions(-) diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 8906c9dc348e..b583b31ea5e7 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -803,8 +803,6 @@ static const struct usb_device_id id_table_combined[] = { .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk }, { USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID), .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk }, - { USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_EMGUIDE_GEMINI_PID), - .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk }, { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) }, { USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) }, { USB_DEVICE(FTDI_VID, RTSYSTEMS_USB_VX8_PID) }, diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 4cc1fae8acb9..9acb6f837327 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h @@ -204,9 +204,6 @@ #define FTDI_NDI_FUTURE_3_PID 0xDA73 /* NDI future device #3 */ #define FTDI_NDI_AURORA_SCU_PID 0xDA74 /* NDI Aurora SCU */ -#define FTDI_NDI_VID 0x23F2 -#define FTDI_NDI_EMGUIDE_GEMINI_PID 0x0003 /* NDI Emguide Gemini */ - /* * ChamSys Limited (www.chamsys.co.uk) USB wing/interface product IDs */ -- Gitee From 0f4c934800e9f7a884eaeabed4be36889b333d15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:44 +0800 Subject: [PATCH 0186/1421] Revert "USB: serial: option: add Foxconn T99W640" This reverts commit 028558b3d03a52f288016d867b14a248e537cea4. --- drivers/usb/serial/option.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 6c6387d39db8..b5b61cd315fc 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -2346,8 +2346,6 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(3) }, { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe145, 0xff), /* Foxconn T99W651 RNDIS */ .driver_info = RSVD(5) | RSVD(6) }, - { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe167, 0xff), /* Foxconn T99W640 MBIM */ - .driver_info = RSVD(3) }, { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, { USB_DEVICE(0x1782, 0x4d10) }, /* Fibocom L610 (AT mode) */ -- Gitee From 90ef31b0b1f58b84eca35eb62b0d9931ee3f6e50 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:44 +0800 Subject: [PATCH 0187/1421] Revert "USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition" This reverts commit cdd0f62b0e0d63c274baba2d33aac2736b6bad92. --- drivers/usb/serial/option.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index b5b61cd315fc..5d6695116098 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -1415,9 +1415,6 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(5) }, { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d0, 0xff, 0xff, 0x60) }, - { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x30), /* Telit FE910C04 (ECM) */ - .driver_info = NCTRL(4) }, - { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10c7, 0xff, 0xff, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x30), /* Telit FN990B (MBIM) */ .driver_info = NCTRL(6) }, { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x10d1, 0xff, 0xff, 0x40) }, -- Gitee From d97ddd8f3cce5d352dc205719667d7ddbc0b4f40 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:44 +0800 Subject: [PATCH 0188/1421] Revert "phy: tegra: xusb: Disable periodic tracking on Tegra234" This reverts commit 0a07d543638507dd771f86e4d93fa6c6d8c92f9a. --- drivers/phy/tegra/xusb-tegra186.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c index e818f6c3980e..237b1844c0c7 100644 --- a/drivers/phy/tegra/xusb-tegra186.c +++ b/drivers/phy/tegra/xusb-tegra186.c @@ -1726,7 +1726,7 @@ const struct tegra_xusb_padctl_soc tegra234_xusb_padctl_soc = { .num_supplies = ARRAY_SIZE(tegra194_xusb_padctl_supply_names), .supports_gen2 = true, .poll_trk_completed = true, - .trk_hw_mode = false, + .trk_hw_mode = true, .trk_update_on_idle = true, .supports_lp_cfg_en = true, }; -- Gitee From e185052d40438233d13a571780ae66560f12acba Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:45 +0800 Subject: [PATCH 0189/1421] Revert "phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode" This reverts commit 7ac0b3da0dd04e5d280456ca1c7d39ab1087daef. --- drivers/phy/tegra/xusb-tegra186.c | 14 ++++++-------- drivers/phy/tegra/xusb.h | 1 - 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c index 237b1844c0c7..625f9f5c9906 100644 --- a/drivers/phy/tegra/xusb-tegra186.c +++ b/drivers/phy/tegra/xusb-tegra186.c @@ -648,15 +648,14 @@ static void tegra186_utmi_bias_pad_power_on(struct tegra_xusb_padctl *padctl) udelay(100); } - value = padctl_readl(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL2); - if (padctl->soc->trk_update_on_idle) - value &= ~CYA_TRK_CODE_UPDATE_ON_IDLE; - if (padctl->soc->trk_hw_mode) + if (padctl->soc->trk_hw_mode) { + value = padctl_readl(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL2); value |= USB2_TRK_HW_MODE; - padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL2); - - if (!padctl->soc->trk_hw_mode) + value &= ~CYA_TRK_CODE_UPDATE_ON_IDLE; + padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL2); + } else { clk_disable_unprepare(priv->usb2_trk_clk); + } } static void tegra186_utmi_bias_pad_power_off(struct tegra_xusb_padctl *padctl) @@ -1727,7 +1726,6 @@ const struct tegra_xusb_padctl_soc tegra234_xusb_padctl_soc = { .supports_gen2 = true, .poll_trk_completed = true, .trk_hw_mode = true, - .trk_update_on_idle = true, .supports_lp_cfg_en = true, }; EXPORT_SYMBOL_GPL(tegra234_xusb_padctl_soc); diff --git a/drivers/phy/tegra/xusb.h b/drivers/phy/tegra/xusb.h index d2b5f9565132..6e45d194c689 100644 --- a/drivers/phy/tegra/xusb.h +++ b/drivers/phy/tegra/xusb.h @@ -434,7 +434,6 @@ struct tegra_xusb_padctl_soc { bool need_fake_usb3_port; bool poll_trk_completed; bool trk_hw_mode; - bool trk_update_on_idle; bool supports_lp_cfg_en; }; -- Gitee From cf6a44d3a5861547a47c0675147c1a84369b10e7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:45 +0800 Subject: [PATCH 0190/1421] Revert "phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode" This reverts commit defabc53dca18308bb347d9841e4261314f53658. --- drivers/phy/tegra/xusb-tegra186.c | 59 ++++++++++++------------------- 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c index 625f9f5c9906..23a23f2d64e5 100644 --- a/drivers/phy/tegra/xusb-tegra186.c +++ b/drivers/phy/tegra/xusb-tegra186.c @@ -782,15 +782,13 @@ static int tegra186_xusb_padctl_vbus_override(struct tegra_xusb_padctl *padctl, } static int tegra186_xusb_padctl_id_override(struct tegra_xusb_padctl *padctl, - struct tegra_xusb_usb2_port *port, bool status) + bool status) { - u32 value, id_override; - int err = 0; + u32 value; dev_dbg(padctl->dev, "%s id override\n", status ? "set" : "clear"); value = padctl_readl(padctl, USB2_VBUS_ID); - id_override = value & ID_OVERRIDE(~0); if (status) { if (value & VBUS_OVERRIDE) { @@ -801,35 +799,15 @@ static int tegra186_xusb_padctl_id_override(struct tegra_xusb_padctl *padctl, value = padctl_readl(padctl, USB2_VBUS_ID); } - if (id_override != ID_OVERRIDE_GROUNDED) { - value &= ~ID_OVERRIDE(~0); - value |= ID_OVERRIDE_GROUNDED; - padctl_writel(padctl, value, USB2_VBUS_ID); - - err = regulator_enable(port->supply); - if (err) { - dev_err(padctl->dev, "Failed to enable regulator: %d\n", err); - return err; - } - } + value &= ~ID_OVERRIDE(~0); + value |= ID_OVERRIDE_GROUNDED; } else { - if (id_override == ID_OVERRIDE_GROUNDED) { - /* - * The regulator is disabled only when the role transitions - * from USB_ROLE_HOST to USB_ROLE_NONE. - */ - err = regulator_disable(port->supply); - if (err) { - dev_err(padctl->dev, "Failed to disable regulator: %d\n", err); - return err; - } - - value &= ~ID_OVERRIDE(~0); - value |= ID_OVERRIDE_FLOATING; - padctl_writel(padctl, value, USB2_VBUS_ID); - } + value &= ~ID_OVERRIDE(~0); + value |= ID_OVERRIDE_FLOATING; } + padctl_writel(padctl, value, USB2_VBUS_ID); + return 0; } @@ -848,20 +826,27 @@ static int tegra186_utmi_phy_set_mode(struct phy *phy, enum phy_mode mode, if (mode == PHY_MODE_USB_OTG) { if (submode == USB_ROLE_HOST) { - err = tegra186_xusb_padctl_id_override(padctl, port, true); - if (err) - goto out; + tegra186_xusb_padctl_id_override(padctl, true); + + err = regulator_enable(port->supply); } else if (submode == USB_ROLE_DEVICE) { tegra186_xusb_padctl_vbus_override(padctl, true); } else if (submode == USB_ROLE_NONE) { - err = tegra186_xusb_padctl_id_override(padctl, port, false); - if (err) - goto out; + /* + * When port is peripheral only or role transitions to + * USB_ROLE_NONE from USB_ROLE_DEVICE, regulator is not + * enabled. + */ + if (regulator_is_enabled(port->supply)) + regulator_disable(port->supply); + + tegra186_xusb_padctl_id_override(padctl, false); tegra186_xusb_padctl_vbus_override(padctl, false); } } -out: + mutex_unlock(&padctl->lock); + return err; } -- Gitee From 4d7332ca9774143557b89a08ecb6b625c55734d7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:45 +0800 Subject: [PATCH 0191/1421] Revert "Linux 6.6.99" This reverts commit eb44bec181b1fded5addbd6c3d2184bffeaddec5. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2aede51d98ea..0bb5c23c6406 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 99 +SUBLEVEL = 98 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From e4d3fb6663d292230f30cfe465904d4b0adb658a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:45 +0800 Subject: [PATCH 0192/1421] Revert "ksmbd: fix potential use-after-free in oplock/lease break ack" This reverts commit fa7ea7227555fabd7069f372743ca0a476d7553b. --- fs/smb/server/smb2pdu.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index e25c2ca56461..6c22240368ab 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -8503,6 +8503,11 @@ static void smb20_oplock_break_ack(struct ksmbd_work *work) goto err_out; } + opinfo->op_state = OPLOCK_STATE_NONE; + wake_up_interruptible_all(&opinfo->oplock_q); + opinfo_put(opinfo); + ksmbd_fd_put(work, fp); + rsp->StructureSize = cpu_to_le16(24); rsp->OplockLevel = rsp_oplevel; rsp->Reserved = 0; @@ -8510,15 +8515,16 @@ static void smb20_oplock_break_ack(struct ksmbd_work *work) rsp->VolatileFid = volatile_id; rsp->PersistentFid = persistent_id; ret = ksmbd_iov_pin_rsp(work, rsp, sizeof(struct smb2_oplock_break)); - if (ret) { -err_out: - smb2_set_err_rsp(work); - } + if (!ret) + return; +err_out: opinfo->op_state = OPLOCK_STATE_NONE; wake_up_interruptible_all(&opinfo->oplock_q); + opinfo_put(opinfo); ksmbd_fd_put(work, fp); + smb2_set_err_rsp(work); } static int check_lease_state(struct lease *lease, __le32 req_state) @@ -8648,6 +8654,11 @@ static void smb21_lease_break_ack(struct ksmbd_work *work) } lease_state = lease->state; + opinfo->op_state = OPLOCK_STATE_NONE; + wake_up_interruptible_all(&opinfo->oplock_q); + atomic_dec(&opinfo->breaking_cnt); + wake_up_interruptible_all(&opinfo->oplock_brk); + opinfo_put(opinfo); rsp->StructureSize = cpu_to_le16(36); rsp->Reserved = 0; @@ -8656,16 +8667,16 @@ static void smb21_lease_break_ack(struct ksmbd_work *work) rsp->LeaseState = lease_state; rsp->LeaseDuration = 0; ret = ksmbd_iov_pin_rsp(work, rsp, sizeof(struct smb2_lease_ack)); - if (ret) { -err_out: - smb2_set_err_rsp(work); - } + if (!ret) + return; - opinfo->op_state = OPLOCK_STATE_NONE; +err_out: wake_up_interruptible_all(&opinfo->oplock_q); atomic_dec(&opinfo->breaking_cnt); wake_up_interruptible_all(&opinfo->oplock_brk); + opinfo_put(opinfo); + smb2_set_err_rsp(work); } /** -- Gitee From c9f7022e82d5117ce62c4c7f41e7e9de3670f87d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:45 +0800 Subject: [PATCH 0193/1421] Revert "kasan: remove kasan_find_vm_area() to prevent possible deadlock" This reverts commit a763cd574ed2ca15af2cda2b23ea362dc9f7326a. --- mm/kasan/report.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 44636fa953a7..465e6a53b3bf 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -385,8 +385,17 @@ static void print_address_description(void *addr, u8 tag, } if (is_vmalloc_addr(addr)) { - pr_err("The buggy address %px belongs to a vmalloc virtual mapping\n", addr); - page = vmalloc_to_page(addr); + struct vm_struct *va = find_vm_area(addr); + + if (va) { + pr_err("The buggy address belongs to the virtual mapping at\n" + " [%px, %px) created by:\n" + " %pS\n", + va->addr, va->addr + va->size, va->caller); + pr_err("\n"); + + page = vmalloc_to_page(addr); + } } if (page) { -- Gitee From 6e03af9090c1cbf76688d3dd2de1a88f67b7a9a3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:46 +0800 Subject: [PATCH 0194/1421] Revert "smb: client: fix potential race in cifs_put_tcon()" This reverts commit 73e4da1b49912cb616aba199457376c8f3fab881. --- fs/smb/client/connect.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 0588896c4456..33a292dabdb8 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -2557,6 +2557,9 @@ cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace) list_del_init(&tcon->tcon_list); tcon->status = TID_EXITING; +#ifdef CONFIG_CIFS_DFS_UPCALL + list_replace_init(&tcon->dfs_ses_list, &ses_list); +#endif spin_unlock(&tcon->tc_lock); spin_unlock(&cifs_tcp_ses_lock); @@ -2564,7 +2567,6 @@ cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace) cancel_delayed_work_sync(&tcon->query_interfaces); #ifdef CONFIG_CIFS_DFS_UPCALL cancel_delayed_work_sync(&tcon->dfs_cache_work); - list_replace_init(&tcon->dfs_ses_list, &ses_list); #endif if (tcon->use_witness) { -- Gitee From 6668d5e0f0e6b2cbda6afff7e58d6fab25f74fd5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:46 +0800 Subject: [PATCH 0195/1421] Revert "selftests/bpf: adapt one more case in test_lru_map to the new target_free" This reverts commit ef87ec4d8b0bb6d26194859f393aeb7f0f277ecf. --- tools/testing/selftests/bpf/test_lru_map.c | 33 ++++++++++------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/tools/testing/selftests/bpf/test_lru_map.c b/tools/testing/selftests/bpf/test_lru_map.c index 0921939532c6..4ae83f4b7fc7 100644 --- a/tools/testing/selftests/bpf/test_lru_map.c +++ b/tools/testing/selftests/bpf/test_lru_map.c @@ -138,12 +138,6 @@ static int sched_next_online(int pid, int *next_to_try) return ret; } -/* Derive target_free from map_size, same as bpf_common_lru_populate */ -static unsigned int __tgt_size(unsigned int map_size) -{ - return (map_size / nr_cpus) / 2; -} - /* Inverse of how bpf_common_lru_populate derives target_free from map_size. */ static unsigned int __map_size(unsigned int tgt_free) { @@ -416,12 +410,12 @@ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) printf("Pass\n"); } -/* Test the active/inactive list rotation - * - * Fill the whole map, deplete the free list. - * Reference all except the last lru->target_free elements. - * Insert lru->target_free new elements. This triggers one shrink. - * Verify that the non-referenced elements are replaced. +/* Size of the LRU map is 2*tgt_free + * It is to test the active/inactive list rotation + * Insert 1 to 2*tgt_free (+2*tgt_free keys) + * Lookup key 1 to tgt_free*3/2 + * Add 1+2*tgt_free to tgt_free*5/2 (+tgt_free/2 keys) + * => key 1+tgt_free*3/2 to 2*tgt_free are removed from LRU */ static void test_lru_sanity3(int map_type, int map_flags, unsigned int tgt_free) { @@ -440,7 +434,8 @@ static void test_lru_sanity3(int map_type, int map_flags, unsigned int tgt_free) assert(sched_next_online(0, &next_cpu) != -1); - batch_size = __tgt_size(tgt_free); + batch_size = tgt_free / 2; + assert(batch_size * 2 == tgt_free); map_size = tgt_free * 2; lru_map_fd = create_map(map_type, map_flags, map_size); @@ -451,21 +446,23 @@ static void test_lru_sanity3(int map_type, int map_flags, unsigned int tgt_free) value[0] = 1234; - /* Fill the map */ - end_key = 1 + map_size; + /* Insert 1 to 2*tgt_free (+2*tgt_free keys) */ + end_key = 1 + (2 * tgt_free); for (key = 1; key < end_key; key++) assert(!bpf_map_update_elem(lru_map_fd, &key, value, BPF_NOEXIST)); - /* Reference all but the last batch_size */ - end_key = 1 + map_size - batch_size; + /* Lookup key 1 to tgt_free*3/2 */ + end_key = tgt_free + batch_size; for (key = 1; key < end_key; key++) { assert(!bpf_map_lookup_elem_with_ref_bit(lru_map_fd, key, value)); assert(!bpf_map_update_elem(expected_map_fd, &key, value, BPF_NOEXIST)); } - /* Insert new batch_size: replaces the non-referenced elements */ + /* Add 1+2*tgt_free to tgt_free*5/2 + * (+tgt_free/2 keys) + */ key = 2 * tgt_free + 1; end_key = key + batch_size; for (; key < end_key; key++) { -- Gitee From aa7118ede09eeb8df3320558b9f9c0cac0d2a2e6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:46 +0800 Subject: [PATCH 0196/1421] Revert "Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID" This reverts commit afca3aa46e7975683f5d7d49c0c7dbb9945451af. --- drivers/input/keyboard/atkbd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 14ead0fbb80f..aad2d75c0367 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -826,7 +826,7 @@ static int atkbd_probe(struct atkbd *atkbd) if (atkbd_skip_getid(atkbd)) { atkbd->id = 0xab83; - goto deactivate_kbd; + return 0; } /* @@ -863,7 +863,6 @@ static int atkbd_probe(struct atkbd *atkbd) return -1; } -deactivate_kbd: /* * Make sure nothing is coming from the keyboard and disturbs our * internal state. -- Gitee From dd6f41852f802f5b20dcdcdeccd4dc93d2d49568 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:46 +0800 Subject: [PATCH 0197/1421] Revert "HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras" This reverts commit 27fba26349f506c1c1a4608cbe78a633383b4dad. --- drivers/hid/hid-ids.h | 2 -- drivers/hid/hid-quirks.c | 2 -- 2 files changed, 4 deletions(-) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 0d1d7162814f..f344df00db03 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -305,8 +305,6 @@ #define USB_DEVICE_ID_ASUS_AK1D 0x1125 #define USB_DEVICE_ID_CHICONY_TOSHIBA_WT10A 0x1408 #define USB_DEVICE_ID_CHICONY_ACER_SWITCH12 0x1421 -#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA 0xb824 -#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA2 0xb82c #define USB_VENDOR_ID_CHUNGHWAT 0x2247 #define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001 diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index 80372342c176..e4d80307b898 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -747,8 +747,6 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) }, { HID_USB_DEVICE(USB_VENDOR_ID_AXENTIA, USB_DEVICE_ID_AXENTIA_FM_RADIO) }, { HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA) }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA2) }, { HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI4713) }, -- Gitee From b22ad6ec050642a84279d0cf0d4c4fad3fc8d7c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:46 +0800 Subject: [PATCH 0198/1421] Revert "HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY" This reverts commit f19d0fce7dc919cb1ddcac3139b1d0f1c381a32b. --- drivers/hid/hid-ids.h | 3 --- drivers/hid/hid-quirks.c | 1 - 2 files changed, 4 deletions(-) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index f344df00db03..c0ce11393f0f 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -1502,7 +1502,4 @@ #define USB_VENDOR_ID_SIGNOTEC 0x2133 #define USB_DEVICE_ID_SIGNOTEC_VIEWSONIC_PD1011 0x0018 -#define USB_VENDOR_ID_SMARTLINKTECHNOLOGY 0x4c4a -#define USB_DEVICE_ID_SMARTLINKTECHNOLOGY_4155 0x4155 - #endif diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index e4d80307b898..73979643315b 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -894,7 +894,6 @@ static const struct hid_device_id hid_ignore_list[] = { #endif { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473) }, - { HID_USB_DEVICE(USB_VENDOR_ID_SMARTLINKTECHNOLOGY, USB_DEVICE_ID_SMARTLINKTECHNOLOGY_4155) }, { } }; -- Gitee From c71d62ec0fdca7ced1d32de83a837cc3948f5e58 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:47 +0800 Subject: [PATCH 0199/1421] Revert "bpf: Adjust free target to avoid global starvation of LRU map" This reverts commit 4f85c9a78a518fe839549f2f563523977aed457d. --- Documentation/bpf/map_hash.rst | 8 +-- Documentation/bpf/map_lru_hash_update.dot | 6 +- kernel/bpf/bpf_lru_list.c | 9 +-- kernel/bpf/bpf_lru_list.h | 1 - tools/testing/selftests/bpf/test_lru_map.c | 72 +++++++++++----------- 5 files changed, 44 insertions(+), 52 deletions(-) diff --git a/Documentation/bpf/map_hash.rst b/Documentation/bpf/map_hash.rst index 8606bf958a8c..d2343952f2cb 100644 --- a/Documentation/bpf/map_hash.rst +++ b/Documentation/bpf/map_hash.rst @@ -233,16 +233,10 @@ attempts in order to enforce the LRU property which have increasing impacts on other CPUs involved in the following operation attempts: - Attempt to use CPU-local state to batch operations -- Attempt to fetch ``target_free`` free nodes from global lists +- Attempt to fetch free nodes from global lists - Attempt to pull any node from a global list and remove it from the hashmap - Attempt to pull any node from any CPU's list and remove it from the hashmap -The number of nodes to borrow from the global list in a batch, ``target_free``, -depends on the size of the map. Larger batch size reduces lock contention, but -may also exhaust the global structure. The value is computed at map init to -avoid exhaustion, by limiting aggregate reservation by all CPUs to half the map -size. With a minimum of a single element and maximum budget of 128 at a time. - This algorithm is described visually in the following diagram. See the description in commit 3a08c2fd7634 ("bpf: LRU List") for a full explanation of the corresponding operations: diff --git a/Documentation/bpf/map_lru_hash_update.dot b/Documentation/bpf/map_lru_hash_update.dot index ab10058f5b79..a0fee349d29c 100644 --- a/Documentation/bpf/map_lru_hash_update.dot +++ b/Documentation/bpf/map_lru_hash_update.dot @@ -35,18 +35,18 @@ digraph { fn_bpf_lru_list_pop_free_to_local [shape=rectangle,fillcolor=2, label="Flush local pending, Rotate Global list, move - target_free + LOCAL_FREE_TARGET from global -> local"] // Also corresponds to: // fn__local_list_flush() // fn_bpf_lru_list_rotate() fn___bpf_lru_node_move_to_free[shape=diamond,fillcolor=2, - label="Able to free\ntarget_free\nnodes?"] + label="Able to free\nLOCAL_FREE_TARGET\nnodes?"] fn___bpf_lru_list_shrink_inactive [shape=rectangle,fillcolor=3, label="Shrink inactive list up to remaining - target_free + LOCAL_FREE_TARGET (global LRU -> local)"] fn___bpf_lru_list_shrink [shape=diamond,fillcolor=2, label="> 0 entries in\nlocal free list?"] diff --git a/kernel/bpf/bpf_lru_list.c b/kernel/bpf/bpf_lru_list.c index 2d6e1c98d8ad..3dabdd137d10 100644 --- a/kernel/bpf/bpf_lru_list.c +++ b/kernel/bpf/bpf_lru_list.c @@ -337,12 +337,12 @@ static void bpf_lru_list_pop_free_to_local(struct bpf_lru *lru, list) { __bpf_lru_node_move_to_free(l, node, local_free_list(loc_l), BPF_LRU_LOCAL_LIST_T_FREE); - if (++nfree == lru->target_free) + if (++nfree == LOCAL_FREE_TARGET) break; } - if (nfree < lru->target_free) - __bpf_lru_list_shrink(lru, l, lru->target_free - nfree, + if (nfree < LOCAL_FREE_TARGET) + __bpf_lru_list_shrink(lru, l, LOCAL_FREE_TARGET - nfree, local_free_list(loc_l), BPF_LRU_LOCAL_LIST_T_FREE); @@ -577,9 +577,6 @@ static void bpf_common_lru_populate(struct bpf_lru *lru, void *buf, list_add(&node->list, &l->lists[BPF_LRU_LIST_T_FREE]); buf += elem_size; } - - lru->target_free = clamp((nr_elems / num_possible_cpus()) / 2, - 1, LOCAL_FREE_TARGET); } static void bpf_percpu_lru_populate(struct bpf_lru *lru, void *buf, diff --git a/kernel/bpf/bpf_lru_list.h b/kernel/bpf/bpf_lru_list.h index fe2661a58ea9..cbd8d3720c2b 100644 --- a/kernel/bpf/bpf_lru_list.h +++ b/kernel/bpf/bpf_lru_list.h @@ -58,7 +58,6 @@ struct bpf_lru { del_from_htab_func del_from_htab; void *del_arg; unsigned int hash_offset; - unsigned int target_free; unsigned int nr_scans; bool percpu; }; diff --git a/tools/testing/selftests/bpf/test_lru_map.c b/tools/testing/selftests/bpf/test_lru_map.c index 4ae83f4b7fc7..fda7589c5023 100644 --- a/tools/testing/selftests/bpf/test_lru_map.c +++ b/tools/testing/selftests/bpf/test_lru_map.c @@ -138,12 +138,6 @@ static int sched_next_online(int pid, int *next_to_try) return ret; } -/* Inverse of how bpf_common_lru_populate derives target_free from map_size. */ -static unsigned int __map_size(unsigned int tgt_free) -{ - return tgt_free * nr_cpus * 2; -} - /* Size of the LRU map is 2 * Add key=1 (+1 key) * Add key=2 (+1 key) @@ -237,11 +231,11 @@ static void test_lru_sanity0(int map_type, int map_flags) printf("Pass\n"); } -/* Verify that unreferenced elements are recycled before referenced ones. - * Insert elements. - * Reference a subset of these. - * Insert more, enough to trigger recycling. - * Verify that unreferenced are recycled. +/* Size of the LRU map is 1.5*tgt_free + * Insert 1 to tgt_free (+tgt_free keys) + * Lookup 1 to tgt_free/2 + * Insert 1+tgt_free to 2*tgt_free (+tgt_free keys) + * => 1+tgt_free/2 to LOCALFREE_TARGET will be removed by LRU */ static void test_lru_sanity1(int map_type, int map_flags, unsigned int tgt_free) { @@ -263,7 +257,7 @@ static void test_lru_sanity1(int map_type, int map_flags, unsigned int tgt_free) batch_size = tgt_free / 2; assert(batch_size * 2 == tgt_free); - map_size = __map_size(tgt_free) + batch_size; + map_size = tgt_free + batch_size; lru_map_fd = create_map(map_type, map_flags, map_size); assert(lru_map_fd != -1); @@ -272,13 +266,13 @@ static void test_lru_sanity1(int map_type, int map_flags, unsigned int tgt_free) value[0] = 1234; - /* Insert map_size - batch_size keys */ - end_key = 1 + __map_size(tgt_free); + /* Insert 1 to tgt_free (+tgt_free keys) */ + end_key = 1 + tgt_free; for (key = 1; key < end_key; key++) assert(!bpf_map_update_elem(lru_map_fd, &key, value, BPF_NOEXIST)); - /* Lookup 1 to batch_size */ + /* Lookup 1 to tgt_free/2 */ end_key = 1 + batch_size; for (key = 1; key < end_key; key++) { assert(!bpf_map_lookup_elem_with_ref_bit(lru_map_fd, key, value)); @@ -286,13 +280,12 @@ static void test_lru_sanity1(int map_type, int map_flags, unsigned int tgt_free) BPF_NOEXIST)); } - /* Insert another map_size - batch_size keys - * Map will contain 1 to batch_size plus these latest, i.e., - * => previous 1+batch_size to map_size - batch_size will have been + /* Insert 1+tgt_free to 2*tgt_free + * => 1+tgt_free/2 to LOCALFREE_TARGET will be * removed by LRU */ - key = 1 + __map_size(tgt_free); - end_key = key + __map_size(tgt_free); + key = 1 + tgt_free; + end_key = key + tgt_free; for (; key < end_key; key++) { assert(!bpf_map_update_elem(lru_map_fd, &key, value, BPF_NOEXIST)); @@ -308,8 +301,17 @@ static void test_lru_sanity1(int map_type, int map_flags, unsigned int tgt_free) printf("Pass\n"); } -/* Verify that insertions exceeding map size will recycle the oldest. - * Verify that unreferenced elements are recycled before referenced. +/* Size of the LRU map 1.5 * tgt_free + * Insert 1 to tgt_free (+tgt_free keys) + * Update 1 to tgt_free/2 + * => The original 1 to tgt_free/2 will be removed due to + * the LRU shrink process + * Re-insert 1 to tgt_free/2 again and do a lookup immeidately + * Insert 1+tgt_free to tgt_free*3/2 + * Insert 1+tgt_free*3/2 to tgt_free*5/2 + * => Key 1+tgt_free to tgt_free*3/2 + * will be removed from LRU because it has never + * been lookup and ref bit is not set */ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) { @@ -332,7 +334,7 @@ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) batch_size = tgt_free / 2; assert(batch_size * 2 == tgt_free); - map_size = __map_size(tgt_free) + batch_size; + map_size = tgt_free + batch_size; lru_map_fd = create_map(map_type, map_flags, map_size); assert(lru_map_fd != -1); @@ -341,8 +343,8 @@ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) value[0] = 1234; - /* Insert map_size - batch_size keys */ - end_key = 1 + __map_size(tgt_free); + /* Insert 1 to tgt_free (+tgt_free keys) */ + end_key = 1 + tgt_free; for (key = 1; key < end_key; key++) assert(!bpf_map_update_elem(lru_map_fd, &key, value, BPF_NOEXIST)); @@ -355,7 +357,8 @@ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) * shrink the inactive list to get tgt_free * number of free nodes. * - * Hence, the oldest key is removed from the LRU list. + * Hence, the oldest key 1 to tgt_free/2 + * are removed from the LRU list. */ key = 1; if (map_type == BPF_MAP_TYPE_LRU_PERCPU_HASH) { @@ -367,7 +370,8 @@ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) BPF_EXIST)); } - /* Re-insert 1 to batch_size again and do a lookup immediately. + /* Re-insert 1 to tgt_free/2 again and do a lookup + * immeidately. */ end_key = 1 + batch_size; value[0] = 4321; @@ -383,18 +387,17 @@ static void test_lru_sanity2(int map_type, int map_flags, unsigned int tgt_free) value[0] = 1234; - /* Insert batch_size new elements */ - key = 1 + __map_size(tgt_free); - end_key = key + batch_size; - for (; key < end_key; key++) + /* Insert 1+tgt_free to tgt_free*3/2 */ + end_key = 1 + tgt_free + batch_size; + for (key = 1 + tgt_free; key < end_key; key++) /* These newly added but not referenced keys will be * gone during the next LRU shrink. */ assert(!bpf_map_update_elem(lru_map_fd, &key, value, BPF_NOEXIST)); - /* Insert map_size - batch_size elements */ - end_key += __map_size(tgt_free); + /* Insert 1+tgt_free*3/2 to tgt_free*5/2 */ + end_key = key + tgt_free; for (; key < end_key; key++) { assert(!bpf_map_update_elem(lru_map_fd, &key, value, BPF_NOEXIST)); @@ -497,8 +500,7 @@ static void test_lru_sanity4(int map_type, int map_flags, unsigned int tgt_free) lru_map_fd = create_map(map_type, map_flags, 3 * tgt_free * nr_cpus); else - lru_map_fd = create_map(map_type, map_flags, - 3 * __map_size(tgt_free)); + lru_map_fd = create_map(map_type, map_flags, 3 * tgt_free); assert(lru_map_fd != -1); expected_map_fd = create_map(BPF_MAP_TYPE_HASH, 0, -- Gitee From d729c2190fada6bb117578cda961033fac6a5cf7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:47 +0800 Subject: [PATCH 0200/1421] Revert "vt: add missing notification when switching back to text mode" This reverts commit 5e4f895604209b38392bf8e00365dac471088198. --- drivers/tty/vt/vt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 60c878ea95f9..c5ec7306aa71 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -4392,7 +4392,6 @@ void do_unblank_screen(int leaving_gfx) set_palette(vc); set_cursor(vc); vt_event_post(VT_EVENT_UNBLANK, vc->vc_num, vc->vc_num); - notify_update(vc); } EXPORT_SYMBOL(do_unblank_screen); -- Gitee From 2829dae1f4711b6c6b598d11eb72dfca44feedb8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:47 +0800 Subject: [PATCH 0201/1421] Revert "btrfs: fix assertion when building free space tree" This reverts commit 3e2d104ed5985b6ef5b6ad0768dfb8a7a4b4c16c. --- fs/btrfs/free-space-tree.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/fs/btrfs/free-space-tree.c b/fs/btrfs/free-space-tree.c index 300ee0b68b49..a0d8160b5375 100644 --- a/fs/btrfs/free-space-tree.c +++ b/fs/btrfs/free-space-tree.c @@ -1104,21 +1104,11 @@ static int populate_free_space_tree(struct btrfs_trans_handle *trans, ret = btrfs_search_slot_for_read(extent_root, &key, path, 1, 0); if (ret < 0) goto out_locked; - /* - * If ret is 1 (no key found), it means this is an empty block group, - * without any extents allocated from it and there's no block group - * item (key BTRFS_BLOCK_GROUP_ITEM_KEY) located in the extent tree - * because we are using the block group tree feature, so block group - * items are stored in the block group tree. It also means there are no - * extents allocated for block groups with a start offset beyond this - * block group's end offset (this is the last, highest, block group). - */ - if (!btrfs_fs_compat_ro(trans->fs_info, BLOCK_GROUP_TREE)) - ASSERT(ret == 0); + ASSERT(ret == 0); start = block_group->start; end = block_group->start + block_group->length; - while (ret == 0) { + while (1) { btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]); if (key.type == BTRFS_EXTENT_ITEM_KEY || @@ -1148,6 +1138,8 @@ static int populate_free_space_tree(struct btrfs_trans_handle *trans, ret = btrfs_next_item(extent_root, path); if (ret < 0) goto out_locked; + if (ret) + break; } if (start < end) { ret = __add_to_free_space_tree(trans, block_group, path2, -- Gitee From ab33f1c73cfa8c11452f913973861367d53969aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:47 +0800 Subject: [PATCH 0202/1421] Revert "net: mana: Record doorbell physical address in PF mode" This reverts commit 88faee1710259f573d02df23286d77cfddb7d421. --- drivers/net/ethernet/microsoft/mana/gdma_main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c b/drivers/net/ethernet/microsoft/mana/gdma_main.c index d3c9a3020fbf..9ed965d61e35 100644 --- a/drivers/net/ethernet/microsoft/mana/gdma_main.c +++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c @@ -28,9 +28,6 @@ static void mana_gd_init_pf_regs(struct pci_dev *pdev) gc->db_page_base = gc->bar0_va + mana_gd_r64(gc, GDMA_PF_REG_DB_PAGE_OFF); - gc->phys_db_page_base = gc->bar0_pa + - mana_gd_r64(gc, GDMA_PF_REG_DB_PAGE_OFF); - sriov_base_off = mana_gd_r64(gc, GDMA_SRIOV_REG_CFG_BASE_OFF); sriov_base_va = gc->bar0_va + sriov_base_off; -- Gitee From 75f22319041f71cece63147cb2c2ae06fc99e770 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:47 +0800 Subject: [PATCH 0203/1421] Revert "HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2" This reverts commit c383866d972f529061b2a9be0962e36676063ae2. --- drivers/hid/hid-ids.h | 1 - drivers/hid/hid-lenovo.c | 8 -------- drivers/hid/hid-multitouch.c | 8 +------- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index c0ce11393f0f..a8665d57094b 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -807,7 +807,6 @@ #define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067 #define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085 #define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3 -#define USB_DEVICE_ID_LENOVO_X1_TAB2 0x60a4 #define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5 #define USB_DEVICE_ID_LENOVO_X12_TAB 0x60fe #define USB_DEVICE_ID_LENOVO_X12_TAB2 0x61ae diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c index 32cb2e75228c..ee65da98c7d5 100644 --- a/drivers/hid/hid-lenovo.c +++ b/drivers/hid/hid-lenovo.c @@ -473,7 +473,6 @@ static int lenovo_input_mapping(struct hid_device *hdev, return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field, usage, bit, max); case USB_DEVICE_ID_LENOVO_X1_TAB: - case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: return lenovo_input_mapping_x1_tab_kbd(hdev, hi, field, usage, bit, max); default: @@ -588,7 +587,6 @@ static ssize_t attr_fn_lock_store(struct device *dev, break; case USB_DEVICE_ID_LENOVO_TP10UBKBD: case USB_DEVICE_ID_LENOVO_X1_TAB: - case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: ret = lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, value); if (ret) @@ -784,7 +782,6 @@ static int lenovo_event(struct hid_device *hdev, struct hid_field *field, return lenovo_event_cptkbd(hdev, field, usage, value); case USB_DEVICE_ID_LENOVO_TP10UBKBD: case USB_DEVICE_ID_LENOVO_X1_TAB: - case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: return lenovo_event_tp10ubkbd(hdev, field, usage, value); default: @@ -1068,7 +1065,6 @@ static int lenovo_led_brightness_set(struct led_classdev *led_cdev, break; case USB_DEVICE_ID_LENOVO_TP10UBKBD: case USB_DEVICE_ID_LENOVO_X1_TAB: - case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: ret = lenovo_led_set_tp10ubkbd(hdev, tp10ubkbd_led[led_nr], value); break; @@ -1300,7 +1296,6 @@ static int lenovo_probe(struct hid_device *hdev, break; case USB_DEVICE_ID_LENOVO_TP10UBKBD: case USB_DEVICE_ID_LENOVO_X1_TAB: - case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: ret = lenovo_probe_tp10ubkbd(hdev); break; @@ -1388,7 +1383,6 @@ static void lenovo_remove(struct hid_device *hdev) break; case USB_DEVICE_ID_LENOVO_TP10UBKBD: case USB_DEVICE_ID_LENOVO_X1_TAB: - case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: lenovo_remove_tp10ubkbd(hdev); break; @@ -1439,8 +1433,6 @@ static const struct hid_device_id lenovo_devices[] = { */ { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB) }, - { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, - USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB2) }, { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_TAB3) }, { } diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index becd4c1ccf93..6386043aab0b 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c @@ -2110,17 +2110,11 @@ static const struct hid_device_id mt_devices[] = { HID_DEVICE(BUS_I2C, HID_GROUP_GENERIC, USB_VENDOR_ID_LG, I2C_DEVICE_ID_LG_7010) }, - /* Lenovo X1 TAB Gen 1 */ - { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, - HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH_WIN_8, - USB_VENDOR_ID_LENOVO, - USB_DEVICE_ID_LENOVO_X1_TAB) }, - /* Lenovo X1 TAB Gen 2 */ { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH_WIN_8, USB_VENDOR_ID_LENOVO, - USB_DEVICE_ID_LENOVO_X1_TAB2) }, + USB_DEVICE_ID_LENOVO_X1_TAB) }, /* Lenovo X1 TAB Gen 3 */ { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, -- Gitee From 564d849f91b13264f413d3da9442ae4a87ff77b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:48 +0800 Subject: [PATCH 0204/1421] Revert "net: usb: qmi_wwan: add SIMCom 8230C composition" This reverts commit 4984c1c3932025e41a70602602b70fb2f875b3e0. --- drivers/net/usb/qmi_wwan.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 3976bc4295dd..dc84d9029c2c 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -1432,7 +1432,6 @@ static const struct usb_device_id products[] = { {QMI_QUIRK_SET_DTR(0x22de, 0x9051, 2)}, /* Hucom Wireless HM-211S/K */ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */ {QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */ - {QMI_QUIRK_SET_DTR(0x1e0e, 0x9071, 3)}, /* SIMCom 8230C ++ */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0195, 4)}, /* Quectel EG95 */ -- Gitee From 228174c13d6a28b6166497f0adf452de1b6273b1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:48 +0800 Subject: [PATCH 0205/1421] Revert "ALSA: hda/realtek - Enable mute LED on HP Pavilion Laptop 15-eg100" This reverts commit 6b6edc2875a4b09a5adafa87663eba55cda08a01. --- sound/pci/hda/patch_realtek.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 1c2059e37fda..0d367cec03ad 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -10151,7 +10151,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x103c, 0x8975, "HP EliteBook x360 840 Aero G9", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x897d, "HP mt440 Mobile Thin Client U74", ALC236_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x8981, "HP Elite Dragonfly G3", ALC245_FIXUP_CS35L41_SPI_4), - SND_PCI_QUIRK(0x103c, 0x898a, "HP Pavilion 15-eg100", ALC287_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x898e, "HP EliteBook 835 G9", ALC287_FIXUP_CS35L41_I2C_2), SND_PCI_QUIRK(0x103c, 0x898f, "HP EliteBook 835 G9", ALC287_FIXUP_CS35L41_I2C_2), SND_PCI_QUIRK(0x103c, 0x8991, "HP EliteBook 845 G9", ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED), -- Gitee From e1fe5e88dd0f472b361b7c8bab9ececb2f48d846 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:48 +0800 Subject: [PATCH 0206/1421] Revert "ASoC: amd: yc: add quirk for Acer Nitro ANV15-41 internal mic" This reverts commit a373dd6a05a036f4c33bac7f246e706d979a7747. --- sound/soc/amd/yc/acp6x-mach.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 66ef8f4fd02c..429e61d47ffb 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -346,13 +346,6 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "83Q3"), } }, - { - .driver_data = &acp6x_card, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "RB"), - DMI_MATCH(DMI_PRODUCT_NAME, "Nitro ANV15-41"), - } - }, { .driver_data = &acp6x_card, .matches = { -- Gitee From 7ed186cf99b5e6a331a5db1fd733cf4201a9ee39 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:48 +0800 Subject: [PATCH 0207/1421] Revert "io_uring: make fallocate be hashed work" This reverts commit 9d7facb5704b9cdcec6f49460244a88ec7bc4a2d. --- io_uring/opdef.c | 1 - 1 file changed, 1 deletion(-) diff --git a/io_uring/opdef.c b/io_uring/opdef.c index 2d0a7db940fd..3b9c6489b8b6 100644 --- a/io_uring/opdef.c +++ b/io_uring/opdef.c @@ -202,7 +202,6 @@ const struct io_issue_def io_issue_defs[] = { }, [IORING_OP_FALLOCATE] = { .needs_file = 1, - .hash_reg_file = 1, .prep = io_fallocate_prep, .issue = io_fallocate, }, -- Gitee From 30248c8c03743124f94cae01e76851cba6ef8884 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:49 +0800 Subject: [PATCH 0208/1421] Revert "um: vector: Reduce stack usage in vector_eth_configure()" This reverts commit 2a4c36dc57cbcdc17899ffc8d2e81d874c05b3bf. --- arch/um/drivers/vector_kern.c | 42 ++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/arch/um/drivers/vector_kern.c b/arch/um/drivers/vector_kern.c index 1a068859a418..2baa8d4a33ed 100644 --- a/arch/um/drivers/vector_kern.c +++ b/arch/um/drivers/vector_kern.c @@ -1600,19 +1600,35 @@ static void vector_eth_configure( device->dev = dev; - INIT_LIST_HEAD(&vp->list); - vp->dev = dev; - vp->unit = n; - vp->options = get_transport_options(def); - vp->parsed = def; - vp->max_packet = get_mtu(def) + ETH_HEADER_OTHER; - /* - * TODO - we need to calculate headroom so that ip header - * is 16 byte aligned all the time - */ - vp->headroom = get_headroom(def); - vp->coalesce = 2; - vp->req_size = get_req_size(def); + *vp = ((struct vector_private) + { + .list = LIST_HEAD_INIT(vp->list), + .dev = dev, + .unit = n, + .options = get_transport_options(def), + .rx_irq = 0, + .tx_irq = 0, + .parsed = def, + .max_packet = get_mtu(def) + ETH_HEADER_OTHER, + /* TODO - we need to calculate headroom so that ip header + * is 16 byte aligned all the time + */ + .headroom = get_headroom(def), + .form_header = NULL, + .verify_header = NULL, + .header_rxbuffer = NULL, + .header_txbuffer = NULL, + .header_size = 0, + .rx_header_size = 0, + .rexmit_scheduled = false, + .opened = false, + .transport_data = NULL, + .in_write_poll = false, + .coalesce = 2, + .req_size = get_req_size(def), + .in_error = false, + .bpf = NULL + }); dev->features = dev->hw_features = (NETIF_F_SG | NETIF_F_FRAGLIST); INIT_WORK(&vp->reset_tx, vector_reset_tx); -- Gitee From 08a03fc1891bbb25a333c3dd6f9ab699f9a99023 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:49 +0800 Subject: [PATCH 0209/1421] Revert "atm: idt77252: Add missing `dma_map_error()`" This reverts commit 2a4e762ad00bf314b39a4369399d59225fcc9850. --- drivers/atm/idt77252.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c index 63d41320cd5c..a876024d8a05 100644 --- a/drivers/atm/idt77252.c +++ b/drivers/atm/idt77252.c @@ -852,8 +852,6 @@ queue_skb(struct idt77252_dev *card, struct vc_map *vc, IDT77252_PRV_PADDR(skb) = dma_map_single(&card->pcidev->dev, skb->data, skb->len, DMA_TO_DEVICE); - if (dma_mapping_error(&card->pcidev->dev, IDT77252_PRV_PADDR(skb))) - return -ENOMEM; error = -EINVAL; @@ -1859,8 +1857,6 @@ add_rx_skb(struct idt77252_dev *card, int queue, paddr = dma_map_single(&card->pcidev->dev, skb->data, skb_end_pointer(skb) - skb->data, DMA_FROM_DEVICE); - if (dma_mapping_error(&card->pcidev->dev, paddr)) - goto outpoolrm; IDT77252_PRV_PADDR(skb) = paddr; if (push_rx_skb(card, skb, queue)) { @@ -1875,7 +1871,6 @@ add_rx_skb(struct idt77252_dev *card, int queue, dma_unmap_single(&card->pcidev->dev, IDT77252_PRV_PADDR(skb), skb_end_pointer(skb) - skb->data, DMA_FROM_DEVICE); -outpoolrm: handle = IDT77252_PRV_POOL(skb); card->sbpool[POOL_QUEUE(handle)].skb[POOL_INDEX(handle)] = NULL; -- Gitee From 08f912b83e8c3bf82039604b828e65db36ca9737 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:49 +0800 Subject: [PATCH 0210/1421] Revert "ublk: sanity check add_dev input for underflow" This reverts commit 51fe52f0e3e401c2afdf7452fe07cd09f0f4126b. --- drivers/block/ublk_drv.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 8c873a8e39cd..df3e5aab4b5a 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -2323,8 +2323,7 @@ static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd) if (copy_from_user(&info, argp, sizeof(info))) return -EFAULT; - if (info.queue_depth > UBLK_MAX_QUEUE_DEPTH || !info.queue_depth || - info.nr_hw_queues > UBLK_MAX_NR_QUEUES || !info.nr_hw_queues) + if (info.queue_depth > UBLK_MAX_QUEUE_DEPTH || info.nr_hw_queues > UBLK_MAX_NR_QUEUES) return -EINVAL; if (capable(CAP_SYS_ADMIN)) -- Gitee From 97e39aa80d20bdb352ea9c2e82e44a2e54abb9a1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:49 +0800 Subject: [PATCH 0211/1421] Revert "bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT" This reverts commit d25102b4e61f20f332682cf579751fd1e0ce14bf. --- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index 07a458ecb7cc..758f51366ef0 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -115,7 +115,7 @@ static void __bnxt_xmit_xdp_redirect(struct bnxt *bp, tx_buf->action = XDP_REDIRECT; tx_buf->xdpf = xdpf; dma_unmap_addr_set(tx_buf, mapping, mapping); - dma_unmap_len_set(tx_buf, len, len); + dma_unmap_len_set(tx_buf, len, 0); } void bnxt_tx_int_xdp(struct bnxt *bp, struct bnxt_napi *bnapi, int budget) -- Gitee From 237ad1510a9da1da15c78c8c909f9a56b77d9575 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:50 +0800 Subject: [PATCH 0212/1421] Revert "bnxt_en: Fix DCB ETS validation" This reverts commit 6bc6659723ee7c09a6ccb27dcf517104d8c00e83. --- drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c index 1727e9bb1479..63e067038385 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c @@ -487,9 +487,7 @@ static int bnxt_ets_validate(struct bnxt *bp, struct ieee_ets *ets, u8 *tc) if ((ets->tc_tx_bw[i] || ets->tc_tsa[i]) && i > bp->max_tc) return -EINVAL; - } - for (i = 0; i < max_tc; i++) { switch (ets->tc_tsa[i]) { case IEEE_8021QAZ_TSA_STRICT: break; -- Gitee From 3522187be02e8a09fe35f523e0fd3c73256b8b2e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:50 +0800 Subject: [PATCH 0213/1421] Revert "net: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam()" This reverts commit 54ceab8fcead40fbdd9663ca7b9f57a2cd0599a0. --- drivers/net/ethernet/xilinx/ll_temac_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c index 3d622634e82a..c10f94d69dad 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c @@ -1309,7 +1309,7 @@ ll_temac_ethtools_set_ringparam(struct net_device *ndev, if (ering->rx_pending > RX_BD_NUM_MAX || ering->rx_mini_pending || ering->rx_jumbo_pending || - ering->tx_pending > TX_BD_NUM_MAX) + ering->rx_pending > TX_BD_NUM_MAX) return -EINVAL; if (netif_running(ndev)) -- Gitee From 3ca9c21d3f2bce9fa38f9d05ffec9415a23d1e15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:50 +0800 Subject: [PATCH 0214/1421] Revert "can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level" This reverts commit 8fc952aa82b03d055580500b5f4fd24532c495b6. --- drivers/net/can/m_can/m_can.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index e6a74d66f0d8..ba7f7de25c85 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -606,7 +606,7 @@ static int m_can_handle_lost_msg(struct net_device *dev) struct can_frame *frame; u32 timestamp = 0; - netdev_dbg(dev, "msg lost in rxf0\n"); + netdev_err(dev, "msg lost in rxf0\n"); stats->rx_errors++; stats->rx_over_errors++; -- Gitee From 71546f3fc37d6ff35c4f044e003f68aba688d290 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:50 +0800 Subject: [PATCH 0215/1421] Revert "net: phy: microchip: limit 100M workaround to link-down events on LAN88xx" This reverts commit 7aeb94850ccfb197535f1b1e07e8108033d61be5. --- drivers/net/phy/microchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/phy/microchip.c b/drivers/net/phy/microchip.c index cb8306cd9826..623607fd2cef 100644 --- a/drivers/net/phy/microchip.c +++ b/drivers/net/phy/microchip.c @@ -310,7 +310,7 @@ static void lan88xx_link_change_notify(struct phy_device *phydev) * As workaround, set to 10 before setting to 100 * at forced 100 F/H mode. */ - if (phydev->state == PHY_NOLINK && !phydev->autoneg && phydev->speed == 100) { + if (!phydev->autoneg && phydev->speed == 100) { /* disable phy interrupt */ temp = phy_read(phydev, LAN88XX_INT_MASK); temp &= ~LAN88XX_INT_MASK_MDINTPIN_EN_; -- Gitee From b2d95f9b93816162bc7ef6859e679e8a726e1370 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:50 +0800 Subject: [PATCH 0216/1421] Revert "ibmvnic: Fix hardcoded NUM_RX_STATS/NUM_TX_STATS with dynamic sizeof" This reverts commit 07ab623a85a8c7fbe39162a6f87220b4ba666713. --- drivers/net/ethernet/ibm/ibmvnic.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/ibm/ibmvnic.h b/drivers/net/ethernet/ibm/ibmvnic.h index dfbda2e5ec88..b3fc18db4f4c 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.h +++ b/drivers/net/ethernet/ibm/ibmvnic.h @@ -211,6 +211,7 @@ struct ibmvnic_statistics { u8 reserved[72]; } __packed __aligned(8); +#define NUM_TX_STATS 3 struct ibmvnic_tx_queue_stats { u64 batched_packets; u64 direct_packets; @@ -218,18 +219,13 @@ struct ibmvnic_tx_queue_stats { u64 dropped_packets; }; -#define NUM_TX_STATS \ - (sizeof(struct ibmvnic_tx_queue_stats) / sizeof(u64)) - +#define NUM_RX_STATS 3 struct ibmvnic_rx_queue_stats { u64 packets; u64 bytes; u64 interrupts; }; -#define NUM_RX_STATS \ - (sizeof(struct ibmvnic_rx_queue_stats) / sizeof(u64)) - struct ibmvnic_acl_buffer { __be32 len; __be32 version; -- Gitee From 5ac167f737f4d0a0338514c57d75665328391a45 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:51 +0800 Subject: [PATCH 0217/1421] Revert "net: appletalk: Fix device refcount leak in atrtr_create()" This reverts commit edd1aba33a119e527fcfc94ab7c8c3166b51b8ce. --- net/appletalk/ddp.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c index febb1617e1a6..b070a8991200 100644 --- a/net/appletalk/ddp.c +++ b/net/appletalk/ddp.c @@ -563,7 +563,6 @@ static int atrtr_create(struct rtentry *r, struct net_device *devhint) /* Fill in the routing entry */ rt->target = ta->sat_addr; - dev_put(rt->dev); /* Release old device */ dev_hold(devhint); rt->dev = devhint; rt->flags = r->rt_flags; -- Gitee From 9be400286cdb8892082330fbf071818a53f67442 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:51 +0800 Subject: [PATCH 0218/1421] Revert "netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto()" This reverts commit e62387aaa0d507193b4e7a5f2df28444709d1b9c. --- include/net/netfilter/nf_flow_table.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/netfilter/nf_flow_table.h b/include/net/netfilter/nf_flow_table.h index 0097791e1eed..df7775afb92b 100644 --- a/include/net/netfilter/nf_flow_table.h +++ b/include/net/netfilter/nf_flow_table.h @@ -353,7 +353,7 @@ static inline __be16 __nf_flow_pppoe_proto(const struct sk_buff *skb) static inline bool nf_flow_pppoe_proto(struct sk_buff *skb, __be16 *inner_proto) { - if (!pskb_may_pull(skb, ETH_HLEN + PPPOE_SES_HLEN)) + if (!pskb_may_pull(skb, PPPOE_SES_HLEN)) return false; *inner_proto = __nf_flow_pppoe_proto(skb); -- Gitee From a638b08dca4388f440bcd38f499a0424eb256cb1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:51 +0800 Subject: [PATCH 0219/1421] Revert "nbd: fix uaf in nbd_genl_connect() error path" This reverts commit a52f443be65af1206f17b674e50725f071731a11. --- drivers/block/nbd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 3742ddf46c55..2203686156bf 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -2120,7 +2120,9 @@ static int nbd_genl_connect(struct sk_buff *skb, struct genl_info *info) goto out; } } - + ret = nbd_start_device(nbd); + if (ret) + goto out; if (info->attrs[NBD_ATTR_BACKEND_IDENTIFIER]) { nbd->backend = nla_strdup(info->attrs[NBD_ATTR_BACKEND_IDENTIFIER], GFP_KERNEL); @@ -2136,8 +2138,6 @@ static int nbd_genl_connect(struct sk_buff *skb, struct genl_info *info) goto out; } set_bit(NBD_RT_HAS_BACKEND_FILE, &config->runtime_flags); - - ret = nbd_start_device(nbd); out: mutex_unlock(&nbd->config_lock); if (!ret) { -- Gitee From ba13e2a6e216a0a67e5dd6226133b1f85b8cb991 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:51 +0800 Subject: [PATCH 0220/1421] Revert "raid10: cleanup memleak at raid10_make_request" This reverts commit 47414662a7fd8f8577b859eb49b5ef836ca59eb6. --- drivers/md/raid10.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index a75d090a7fa1..36b6bf3f8b29 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -1205,11 +1205,8 @@ static void raid10_read_request(struct mddev *mddev, struct bio *bio, rcu_read_unlock(); } - if (!regular_request_wait(mddev, conf, bio, r10_bio->sectors)) { - raid_end_bio_io(r10_bio); + if (!regular_request_wait(mddev, conf, bio, r10_bio->sectors)) return; - } - rdev = read_balance(conf, r10_bio, &max_sectors); if (!rdev) { if (err_rdev) { @@ -1431,11 +1428,8 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio, } sectors = r10_bio->sectors; - if (!regular_request_wait(mddev, conf, bio, sectors)) { - raid_end_bio_io(r10_bio); + if (!regular_request_wait(mddev, conf, bio, sectors)) return; - } - if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && (mddev->reshape_backwards ? (bio->bi_iter.bi_sector < conf->reshape_safe && -- Gitee From c8e1d1f2a419551098116db56f3868f292f41e47 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:51 +0800 Subject: [PATCH 0221/1421] Revert "md/raid1: Fix stack memory use after return in raid1_reshape" This reverts commit 42dc5e34a1cc47c4031ad8872165bf8f5c010a59. --- drivers/md/raid1.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 4c1f86ca5520..8b25287c89ed 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -3297,7 +3297,6 @@ static int raid1_reshape(struct mddev *mddev) /* ok, everything is stopped */ oldpool = conf->r1bio_pool; conf->r1bio_pool = newpool; - init_waitqueue_head(&conf->r1bio_pool.wait); for (d = d2 = 0; d < conf->raid_disks; d++) { struct md_rdev *rdev = conf->mirrors[d].rdev; -- Gitee From e56161633949989a213220273413ef3c572a61c8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:52 +0800 Subject: [PATCH 0222/1421] Revert "drm/tegra: nvdec: Fix dma_alloc_coherent error check" This reverts commit d323d58d0f69bd73b7ce1fd35ff7d5ab302bdee3. --- drivers/gpu/drm/tegra/nvdec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/tegra/nvdec.c b/drivers/gpu/drm/tegra/nvdec.c index 14ef61b44f47..4860790666af 100644 --- a/drivers/gpu/drm/tegra/nvdec.c +++ b/drivers/gpu/drm/tegra/nvdec.c @@ -261,8 +261,10 @@ static int nvdec_load_falcon_firmware(struct nvdec *nvdec) if (!client->group) { virt = dma_alloc_coherent(nvdec->dev, size, &iova, GFP_KERNEL); - if (!virt) - return -ENOMEM; + + err = dma_mapping_error(nvdec->dev, iova); + if (err < 0) + return err; } else { virt = tegra_drm_alloc(tegra, size, &iova); if (IS_ERR(virt)) -- Gitee From 9142eb94fc15f08146d30dc31e05b7503470b9fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:52 +0800 Subject: [PATCH 0223/1421] Revert "wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev()" This reverts commit 273830891469468e43c5b51e94fef1ca71a5319e. --- drivers/net/wireless/zydas/zd1211rw/zd_mac.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/net/wireless/zydas/zd1211rw/zd_mac.c b/drivers/net/wireless/zydas/zd1211rw/zd_mac.c index 278875c02f41..5d534e15a844 100644 --- a/drivers/net/wireless/zydas/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zydas/zd1211rw/zd_mac.c @@ -583,11 +583,7 @@ void zd_mac_tx_to_dev(struct sk_buff *skb, int error) skb_queue_tail(q, skb); while (skb_queue_len(q) > ZD_MAC_MAX_ACK_WAITERS) { - skb = skb_dequeue(q); - if (!skb) - break; - - zd_mac_tx_status(hw, skb, + zd_mac_tx_status(hw, skb_dequeue(q), mac->ack_pending ? mac->ack_signal : 0, NULL); mac->ack_pending = 0; -- Gitee From 7a1bf5d1c2a96bd11975bc6bf8e014b2cee30324 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:52 +0800 Subject: [PATCH 0224/1421] Revert "cifs: all initializations for tcon should happen in tcon_info_alloc" This reverts commit 5c441e8226f9f10b9847655932798fc06d9fa58d. --- fs/smb/client/cifsproto.h | 1 - fs/smb/client/connect.c | 8 +++++++- fs/smb/client/misc.c | 6 ------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/fs/smb/client/cifsproto.h b/fs/smb/client/cifsproto.h index 5ab877e480ab..8edb6fe89a97 100644 --- a/fs/smb/client/cifsproto.h +++ b/fs/smb/client/cifsproto.h @@ -136,7 +136,6 @@ extern int SendReceiveBlockingLock(const unsigned int xid, struct smb_hdr *out_buf, int *bytes_returned); -void smb2_query_server_interfaces(struct work_struct *work); void cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server, bool all_channels); diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 33a292dabdb8..14be8822d23a 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -113,7 +113,7 @@ static int reconn_set_ipaddr_from_hostname(struct TCP_Server_Info *server) return rc; } -void smb2_query_server_interfaces(struct work_struct *work) +static void smb2_query_server_interfaces(struct work_struct *work) { int rc; int xid; @@ -2818,14 +2818,20 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx) tcon->max_cached_dirs = ctx->max_cached_dirs; tcon->nodelete = ctx->nodelete; tcon->local_lease = ctx->local_lease; + INIT_LIST_HEAD(&tcon->pending_opens); tcon->status = TID_GOOD; + INIT_DELAYED_WORK(&tcon->query_interfaces, + smb2_query_server_interfaces); if (ses->server->dialect >= SMB30_PROT_ID && (ses->server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) { /* schedule query interfaces poll */ queue_delayed_work(cifsiod_wq, &tcon->query_interfaces, (SMB_INTERFACE_POLL_INTERVAL * HZ)); } +#ifdef CONFIG_CIFS_DFS_UPCALL + INIT_DELAYED_WORK(&tcon->dfs_cache_work, dfs_cache_refresh); +#endif spin_lock(&cifs_tcp_ses_lock); list_add(&tcon->tcon_list, &ses->tcon_list); spin_unlock(&cifs_tcp_ses_lock); diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c index bbbe48447765..2e9a14e28e46 100644 --- a/fs/smb/client/misc.c +++ b/fs/smb/client/misc.c @@ -148,12 +148,6 @@ tcon_info_alloc(bool dir_leases_enabled, enum smb3_tcon_ref_trace trace) #ifdef CONFIG_CIFS_DFS_UPCALL INIT_LIST_HEAD(&ret_buf->dfs_ses_list); #endif - INIT_LIST_HEAD(&ret_buf->pending_opens); - INIT_DELAYED_WORK(&ret_buf->query_interfaces, - smb2_query_server_interfaces); -#ifdef CONFIG_CIFS_DFS_UPCALL - INIT_DELAYED_WORK(&ret_buf->dfs_cache_work, dfs_cache_refresh); -#endif return ret_buf; } -- Gitee From ed98e9ff78691f973b5111cad380cc345b60c594 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:52 +0800 Subject: [PATCH 0225/1421] Revert "smb: client: fix DFS interlink failover" This reverts commit a142a482d0b4623ada9dea01841d1b460706fcb1. --- fs/smb/client/cifsglob.h | 3 -- fs/smb/client/cifsproto.h | 12 +++++-- fs/smb/client/connect.c | 41 ++++++++++----------- fs/smb/client/dfs.c | 73 ++++++++++++++++++++------------------ fs/smb/client/dfs.h | 42 ++++++++-------------- fs/smb/client/dfs_cache.c | 3 +- fs/smb/client/fs_context.h | 1 - fs/smb/client/misc.c | 3 -- fs/smb/client/namespace.c | 2 +- 9 files changed, 86 insertions(+), 94 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index c9b37f2ebde8..5c856adf7be9 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -830,7 +830,6 @@ struct TCP_Server_Info { * format: \\HOST\SHARE[\OPTIONAL PATH] */ char *leaf_fullpath; - bool dfs_conn:1; }; static inline bool is_smb1(struct TCP_Server_Info *server) @@ -1066,7 +1065,6 @@ struct cifs_ses { struct list_head smb_ses_list; struct list_head rlist; /* reconnect list */ struct list_head tcon_list; - struct list_head dlist; /* dfs list */ struct cifs_tcon *tcon_ipc; spinlock_t ses_lock; /* protect anything here that is not protected */ struct mutex session_mutex; @@ -1296,7 +1294,6 @@ struct cifs_tcon { /* BB add field for back pointer to sb struct(s)? */ #ifdef CONFIG_CIFS_DFS_UPCALL struct delayed_work dfs_cache_work; - struct list_head dfs_ses_list; #endif struct delayed_work query_interfaces; /* query interfaces workqueue job */ char *origin_fullpath; /* canonical copy of smb3_fs_context::source */ diff --git a/fs/smb/client/cifsproto.h b/fs/smb/client/cifsproto.h index 8edb6fe89a97..c6d325666b5c 100644 --- a/fs/smb/client/cifsproto.h +++ b/fs/smb/client/cifsproto.h @@ -737,9 +737,15 @@ static inline int cifs_create_options(struct cifs_sb_info *cifs_sb, int options) int cifs_wait_for_server_reconnect(struct TCP_Server_Info *server, bool retry); +/* Put references of @ses and its children */ static inline void cifs_put_smb_ses(struct cifs_ses *ses) { - __cifs_put_smb_ses(ses); + struct cifs_ses *next; + + do { + next = ses->dfs_root_ses; + __cifs_put_smb_ses(ses); + } while ((ses = next)); } /* Get an active reference of @ses and its children. @@ -753,7 +759,9 @@ static inline void cifs_put_smb_ses(struct cifs_ses *ses) static inline void cifs_smb_ses_inc_refcount(struct cifs_ses *ses) { lockdep_assert_held(&cifs_tcp_ses_lock); - ses->ses_count++; + + for (; ses; ses = ses->dfs_root_ses) + ses->ses_count++; } static inline bool dfs_src_pathname_equal(const char *s1, const char *s2) diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 14be8822d23a..8298d1745f9b 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -1551,9 +1551,6 @@ static int match_server(struct TCP_Server_Info *server, if (server->nosharesock) return 0; - if (!match_super && (ctx->dfs_conn || server->dfs_conn)) - return 0; - /* If multidialect negotiation see if existing sessions match one */ if (strcmp(ctx->vals->version_string, SMB3ANY_VERSION_STRING) == 0) { if (server->vals->protocol_id < SMB30_PROT_ID) @@ -1743,7 +1740,6 @@ cifs_get_tcp_session(struct smb3_fs_context *ctx, if (ctx->nosharesock) tcp_ses->nosharesock = true; - tcp_ses->dfs_conn = ctx->dfs_conn; tcp_ses->ops = ctx->ops; tcp_ses->vals = ctx->vals; @@ -1894,14 +1890,12 @@ cifs_get_tcp_session(struct smb3_fs_context *ctx, } /* this function must be called with ses_lock and chan_lock held */ -static int match_session(struct cifs_ses *ses, - struct smb3_fs_context *ctx, - bool match_super) +static int match_session(struct cifs_ses *ses, struct smb3_fs_context *ctx) { struct TCP_Server_Info *server = ses->server; enum securityEnum ctx_sec, ses_sec; - if (!match_super && ctx->dfs_root_ses != ses->dfs_root_ses) + if (ctx->dfs_root_ses != ses->dfs_root_ses) return 0; /* @@ -2053,7 +2047,7 @@ cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) continue; } spin_lock(&ses->chan_lock); - if (match_session(ses, ctx, false)) { + if (match_session(ses, ctx)) { spin_unlock(&ses->chan_lock); spin_unlock(&ses->ses_lock); ret = ses; @@ -2456,6 +2450,8 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) * need to lock before changing something in the session. */ spin_lock(&cifs_tcp_ses_lock); + if (ctx->dfs_root_ses) + cifs_smb_ses_inc_refcount(ctx->dfs_root_ses); ses->dfs_root_ses = ctx->dfs_root_ses; list_add(&ses->smb_ses_list, &server->smb_ses_list); spin_unlock(&cifs_tcp_ses_lock); @@ -2532,7 +2528,6 @@ cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace) { unsigned int xid; struct cifs_ses *ses; - LIST_HEAD(ses_list); /* * IPC tcon share the lifetime of their session and are @@ -2557,9 +2552,6 @@ cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace) list_del_init(&tcon->tcon_list); tcon->status = TID_EXITING; -#ifdef CONFIG_CIFS_DFS_UPCALL - list_replace_init(&tcon->dfs_ses_list, &ses_list); -#endif spin_unlock(&tcon->tc_lock); spin_unlock(&cifs_tcp_ses_lock); @@ -2587,9 +2579,6 @@ cifs_put_tcon(struct cifs_tcon *tcon, enum smb3_tcon_ref_trace trace) cifs_fscache_release_super_cookie(tcon); tconInfoFree(tcon, netfs_trace_tcon_ref_free); cifs_put_smb_ses(ses); -#ifdef CONFIG_CIFS_DFS_UPCALL - dfs_put_root_smb_sessions(&ses_list); -#endif } /** @@ -2973,7 +2962,7 @@ cifs_match_super(struct super_block *sb, void *data) spin_lock(&ses->chan_lock); spin_lock(&tcon->tc_lock); if (!match_server(tcp_srv, ctx, true) || - !match_session(ses, ctx, true) || + !match_session(ses, ctx) || !match_tcon(tcon, ctx) || !match_prepath(sb, tcon, mnt_data)) { rc = 0; @@ -3723,12 +3712,13 @@ int cifs_is_path_remote(struct cifs_mount_ctx *mnt_ctx) int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx) { struct cifs_mount_ctx mnt_ctx = { .cifs_sb = cifs_sb, .fs_ctx = ctx, }; + bool isdfs; int rc; - rc = dfs_mount_share(&mnt_ctx); + rc = dfs_mount_share(&mnt_ctx, &isdfs); if (rc) goto error; - if (!ctx->dfs_conn) + if (!isdfs) goto out; /* @@ -4145,7 +4135,7 @@ cifs_set_vol_auth(struct smb3_fs_context *ctx, struct cifs_ses *ses) } static struct cifs_tcon * -cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid) +__cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid) { int rc; struct cifs_tcon *master_tcon = cifs_sb_master_tcon(cifs_sb); @@ -4243,6 +4233,17 @@ cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid) return tcon; } +static struct cifs_tcon * +cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid) +{ + struct cifs_tcon *ret; + + cifs_mount_lock(); + ret = __cifs_construct_tcon(cifs_sb, fsuid); + cifs_mount_unlock(); + return ret; +} + struct cifs_tcon * cifs_sb_master_tcon(struct cifs_sb_info *cifs_sb) { diff --git a/fs/smb/client/dfs.c b/fs/smb/client/dfs.c index c35953843373..bd259b04cded 100644 --- a/fs/smb/client/dfs.c +++ b/fs/smb/client/dfs.c @@ -69,7 +69,7 @@ static int get_session(struct cifs_mount_ctx *mnt_ctx, const char *full_path) * Get an active reference of @ses so that next call to cifs_put_tcon() won't * release it as any new DFS referrals must go through its IPC tcon. */ -static void set_root_smb_session(struct cifs_mount_ctx *mnt_ctx) +static void add_root_smb_session(struct cifs_mount_ctx *mnt_ctx) { struct smb3_fs_context *ctx = mnt_ctx->fs_ctx; struct cifs_ses *ses = mnt_ctx->ses; @@ -95,7 +95,7 @@ static inline int parse_dfs_target(struct smb3_fs_context *ctx, return rc; } -static int setup_dfs_ref(struct cifs_mount_ctx *mnt_ctx, +static int set_ref_paths(struct cifs_mount_ctx *mnt_ctx, struct dfs_info3_param *tgt, struct dfs_ref_walk *rw) { @@ -120,7 +120,6 @@ static int setup_dfs_ref(struct cifs_mount_ctx *mnt_ctx, } ref_walk_path(rw) = ref_path; ref_walk_fpath(rw) = full_path; - ref_walk_ses(rw) = ctx->dfs_root_ses; return 0; } @@ -129,11 +128,11 @@ static int __dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx, { struct smb3_fs_context *ctx = mnt_ctx->fs_ctx; struct dfs_info3_param tgt = {}; + bool is_refsrv; int rc = -ENOENT; again: do { - ctx->dfs_root_ses = ref_walk_ses(rw); if (ref_walk_empty(rw)) { rc = dfs_get_referral(mnt_ctx, ref_walk_path(rw) + 1, NULL, ref_walk_tl(rw)); @@ -159,7 +158,10 @@ static int __dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx, if (rc) continue; + is_refsrv = tgt.server_type == DFS_TYPE_ROOT || + DFS_INTERLINK(tgt.flags); ref_walk_set_tgt_hint(rw); + if (tgt.flags & DFSREF_STORAGE_SERVER) { rc = cifs_mount_get_tcon(mnt_ctx); if (!rc) @@ -170,10 +172,12 @@ static int __dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx, continue; } - set_root_smb_session(mnt_ctx); + if (is_refsrv) + add_root_smb_session(mnt_ctx); + rc = ref_walk_advance(rw); if (!rc) { - rc = setup_dfs_ref(mnt_ctx, &tgt, rw); + rc = set_ref_paths(mnt_ctx, &tgt, rw); if (!rc) { rc = -EREMOTE; goto again; @@ -189,22 +193,20 @@ static int __dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx, return rc; } -static int dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx, - struct dfs_ref_walk **rw) +static int dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx) { + struct dfs_ref_walk *rw; int rc; - *rw = ref_walk_alloc(); - if (IS_ERR(*rw)) { - rc = PTR_ERR(*rw); - *rw = NULL; - return rc; - } + rw = ref_walk_alloc(); + if (IS_ERR(rw)) + return PTR_ERR(rw); - ref_walk_init(*rw); - rc = setup_dfs_ref(mnt_ctx, NULL, *rw); + ref_walk_init(rw); + rc = set_ref_paths(mnt_ctx, NULL, rw); if (!rc) - rc = __dfs_referral_walk(mnt_ctx, *rw); + rc = __dfs_referral_walk(mnt_ctx, rw); + ref_walk_free(rw); return rc; } @@ -212,16 +214,16 @@ static int __dfs_mount_share(struct cifs_mount_ctx *mnt_ctx) { struct cifs_sb_info *cifs_sb = mnt_ctx->cifs_sb; struct smb3_fs_context *ctx = mnt_ctx->fs_ctx; - struct dfs_ref_walk *rw = NULL; struct cifs_tcon *tcon; char *origin_fullpath; + bool new_tcon = true; int rc; origin_fullpath = dfs_get_path(cifs_sb, ctx->source); if (IS_ERR(origin_fullpath)) return PTR_ERR(origin_fullpath); - rc = dfs_referral_walk(mnt_ctx, &rw); + rc = dfs_referral_walk(mnt_ctx); if (!rc) { /* * Prevent superblock from being created with any missing @@ -239,16 +241,21 @@ static int __dfs_mount_share(struct cifs_mount_ctx *mnt_ctx) tcon = mnt_ctx->tcon; spin_lock(&tcon->tc_lock); - tcon->origin_fullpath = origin_fullpath; - origin_fullpath = NULL; - ref_walk_set_tcon(rw, tcon); + if (!tcon->origin_fullpath) { + tcon->origin_fullpath = origin_fullpath; + origin_fullpath = NULL; + } else { + new_tcon = false; + } spin_unlock(&tcon->tc_lock); - queue_delayed_work(dfscache_wq, &tcon->dfs_cache_work, - dfs_cache_get_ttl() * HZ); + + if (new_tcon) { + queue_delayed_work(dfscache_wq, &tcon->dfs_cache_work, + dfs_cache_get_ttl() * HZ); + } out: kfree(origin_fullpath); - ref_walk_free(rw); return rc; } @@ -272,7 +279,7 @@ static int update_fs_context_dstaddr(struct smb3_fs_context *ctx) return rc; } -int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx) +int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx, bool *isdfs) { struct smb3_fs_context *ctx = mnt_ctx->fs_ctx; bool nodfs = ctx->nodfs; @@ -282,6 +289,7 @@ int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx) if (rc) return rc; + *isdfs = false; rc = get_session(mnt_ctx, NULL); if (rc) return rc; @@ -309,15 +317,10 @@ int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx) return rc; } - if (!ctx->dfs_conn) { - ctx->dfs_conn = true; - cifs_mount_put_conns(mnt_ctx); - rc = get_session(mnt_ctx, NULL); - } - if (!rc) { - set_root_smb_session(mnt_ctx); - rc = __dfs_mount_share(mnt_ctx); - } + *isdfs = true; + add_root_smb_session(mnt_ctx); + rc = __dfs_mount_share(mnt_ctx); + dfs_put_root_smb_sessions(mnt_ctx); return rc; } diff --git a/fs/smb/client/dfs.h b/fs/smb/client/dfs.h index 1aa2bc65b3bc..e5c4dcf83750 100644 --- a/fs/smb/client/dfs.h +++ b/fs/smb/client/dfs.h @@ -19,7 +19,6 @@ struct dfs_ref { char *path; char *full_path; - struct cifs_ses *ses; struct dfs_cache_tgt_list tl; struct dfs_cache_tgt_iterator *tit; }; @@ -39,7 +38,6 @@ struct dfs_ref_walk { #define ref_walk_path(w) (ref_walk_cur(w)->path) #define ref_walk_fpath(w) (ref_walk_cur(w)->full_path) #define ref_walk_tl(w) (&ref_walk_cur(w)->tl) -#define ref_walk_ses(w) (ref_walk_cur(w)->ses) static inline struct dfs_ref_walk *ref_walk_alloc(void) { @@ -62,19 +60,14 @@ static inline void __ref_walk_free(struct dfs_ref *ref) kfree(ref->path); kfree(ref->full_path); dfs_cache_free_tgts(&ref->tl); - if (ref->ses) - cifs_put_smb_ses(ref->ses); memset(ref, 0, sizeof(*ref)); } static inline void ref_walk_free(struct dfs_ref_walk *rw) { - struct dfs_ref *ref; - - if (!rw) - return; + struct dfs_ref *ref = ref_walk_start(rw); - for (ref = ref_walk_start(rw); ref <= ref_walk_end(rw); ref++) + for (; ref <= ref_walk_end(rw); ref++) __ref_walk_free(ref); kfree(rw); } @@ -123,22 +116,9 @@ static inline void ref_walk_set_tgt_hint(struct dfs_ref_walk *rw) ref_walk_tit(rw)); } -static inline void ref_walk_set_tcon(struct dfs_ref_walk *rw, - struct cifs_tcon *tcon) -{ - struct dfs_ref *ref = ref_walk_start(rw); - - for (; ref <= ref_walk_cur(rw); ref++) { - if (WARN_ON_ONCE(!ref->ses)) - continue; - list_add(&ref->ses->dlist, &tcon->dfs_ses_list); - ref->ses = NULL; - } -} - int dfs_parse_target_referral(const char *full_path, const struct dfs_info3_param *ref, struct smb3_fs_context *ctx); -int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx); +int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx, bool *isdfs); static inline char *dfs_get_path(struct cifs_sb_info *cifs_sb, const char *path) { @@ -162,14 +142,20 @@ static inline int dfs_get_referral(struct cifs_mount_ctx *mnt_ctx, const char *p * references of all DFS root sessions that were used across the mount process * in dfs_mount_share(). */ -static inline void dfs_put_root_smb_sessions(struct list_head *head) +static inline void dfs_put_root_smb_sessions(struct cifs_mount_ctx *mnt_ctx) { - struct cifs_ses *ses, *n; + const struct smb3_fs_context *ctx = mnt_ctx->fs_ctx; + struct cifs_ses *ses = ctx->dfs_root_ses; + struct cifs_ses *cur; + + if (!ses) + return; - list_for_each_entry_safe(ses, n, head, dlist) { - list_del_init(&ses->dlist); - cifs_put_smb_ses(ses); + for (cur = ses; cur; cur = cur->dfs_root_ses) { + if (cur->dfs_root_ses) + cifs_put_smb_ses(cur->dfs_root_ses); } + cifs_put_smb_ses(ses); } #endif /* _CIFS_DFS_H */ diff --git a/fs/smb/client/dfs_cache.c b/fs/smb/client/dfs_cache.c index 433f546055b9..3cf7c88489be 100644 --- a/fs/smb/client/dfs_cache.c +++ b/fs/smb/client/dfs_cache.c @@ -1336,8 +1336,9 @@ void dfs_cache_refresh(struct work_struct *work) struct cifs_ses *ses; tcon = container_of(work, struct cifs_tcon, dfs_cache_work.work); + ses = tcon->ses->dfs_root_ses; - list_for_each_entry(ses, &tcon->dfs_ses_list, dlist) + for (; ses; ses = ses->dfs_root_ses) refresh_ses_referral(ses); refresh_tcon_referral(tcon, false); diff --git a/fs/smb/client/fs_context.h b/fs/smb/client/fs_context.h index 52ee72e562f5..d0a2043ea446 100644 --- a/fs/smb/client/fs_context.h +++ b/fs/smb/client/fs_context.h @@ -287,7 +287,6 @@ struct smb3_fs_context { struct cifs_ses *dfs_root_ses; bool dfs_automount:1; /* set for dfs automount only */ enum cifs_reparse_type reparse_type; - bool dfs_conn:1; /* set for dfs mounts */ }; extern const struct fs_parameter_spec smb3_fs_parameters[]; diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c index 2e9a14e28e46..9e8e0a01ae8e 100644 --- a/fs/smb/client/misc.c +++ b/fs/smb/client/misc.c @@ -145,9 +145,6 @@ tcon_info_alloc(bool dir_leases_enabled, enum smb3_tcon_ref_trace trace) mutex_init(&ret_buf->fscache_lock); #endif trace_smb3_tcon_ref(ret_buf->debug_id, ret_buf->tc_count, trace); -#ifdef CONFIG_CIFS_DFS_UPCALL - INIT_LIST_HEAD(&ret_buf->dfs_ses_list); -#endif return ret_buf; } diff --git a/fs/smb/client/namespace.c b/fs/smb/client/namespace.c index a6655807c086..ec58c0e50724 100644 --- a/fs/smb/client/namespace.c +++ b/fs/smb/client/namespace.c @@ -260,7 +260,7 @@ static struct vfsmount *cifs_do_automount(struct path *path) ctx->source = NULL; goto out; } - ctx->dfs_automount = ctx->dfs_conn = is_dfs_mount(mntpt); + ctx->dfs_automount = is_dfs_mount(mntpt); cifs_dbg(FYI, "%s: ctx: source=%s UNC=%s prepath=%s dfs_automount=%d\n", __func__, ctx->source, ctx->UNC, ctx->prepath, ctx->dfs_automount); -- Gitee From abcb581dc102a609b4d94c4099c613ee2a6b107c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:53 +0800 Subject: [PATCH 0226/1421] Revert "smb: client: avoid unnecessary reconnects when refreshing referrals" This reverts commit a56c6c4e9a4ce1552a165e39277a79f0387391c3. --- fs/smb/client/dfs_cache.c | 187 ++++++++++++++------------------------ 1 file changed, 70 insertions(+), 117 deletions(-) diff --git a/fs/smb/client/dfs_cache.c b/fs/smb/client/dfs_cache.c index 3cf7c88489be..11c8efecf7aa 100644 --- a/fs/smb/client/dfs_cache.c +++ b/fs/smb/client/dfs_cache.c @@ -1095,18 +1095,16 @@ int dfs_cache_get_tgt_share(char *path, const struct dfs_cache_tgt_iterator *it, return 0; } -static bool target_share_equal(struct cifs_tcon *tcon, const char *s1) +static bool target_share_equal(struct TCP_Server_Info *server, const char *s1, const char *s2) { - struct TCP_Server_Info *server = tcon->ses->server; - struct sockaddr_storage ss; + char unc[sizeof("\\\\") + SERVER_NAME_LENGTH] = {0}; const char *host; - const char *s2 = &tcon->tree_name[1]; size_t hostlen; - char unc[sizeof("\\\\") + SERVER_NAME_LENGTH] = {0}; + struct sockaddr_storage ss; bool match; int rc; - if (strcasecmp(s2, s1)) + if (strcasecmp(s1, s2)) return false; /* @@ -1130,6 +1128,34 @@ static bool target_share_equal(struct cifs_tcon *tcon, const char *s1) return match; } +/* + * Mark dfs tcon for reconnecting when the currently connected tcon does not match any of the new + * target shares in @refs. + */ +static void mark_for_reconnect_if_needed(struct TCP_Server_Info *server, + const char *path, + struct dfs_cache_tgt_list *old_tl, + struct dfs_cache_tgt_list *new_tl) +{ + struct dfs_cache_tgt_iterator *oit, *nit; + + for (oit = dfs_cache_get_tgt_iterator(old_tl); oit; + oit = dfs_cache_get_next_tgt(old_tl, oit)) { + for (nit = dfs_cache_get_tgt_iterator(new_tl); nit; + nit = dfs_cache_get_next_tgt(new_tl, nit)) { + if (target_share_equal(server, + dfs_cache_get_tgt_name(oit), + dfs_cache_get_tgt_name(nit))) { + dfs_cache_noreq_update_tgthint(path, nit); + return; + } + } + } + + cifs_dbg(FYI, "%s: no cached or matched targets. mark dfs share for reconnect.\n", __func__); + cifs_signal_cifsd_for_reconnect(server, true); +} + static bool is_ses_good(struct cifs_ses *ses) { struct TCP_Server_Info *server = ses->server; @@ -1146,35 +1172,41 @@ static bool is_ses_good(struct cifs_ses *ses) return ret; } -static char *get_ses_refpath(struct cifs_ses *ses) +/* Refresh dfs referral of @ses and mark it for reconnect if needed */ +static void __refresh_ses_referral(struct cifs_ses *ses, bool force_refresh) { struct TCP_Server_Info *server = ses->server; - char *path = ERR_PTR(-ENOENT); + DFS_CACHE_TGT_LIST(old_tl); + DFS_CACHE_TGT_LIST(new_tl); + bool needs_refresh = false; + struct cache_entry *ce; + unsigned int xid; + char *path = NULL; + int rc = 0; + + xid = get_xid(); mutex_lock(&server->refpath_lock); if (server->leaf_fullpath) { path = kstrdup(server->leaf_fullpath + 1, GFP_ATOMIC); if (!path) - path = ERR_PTR(-ENOMEM); + rc = -ENOMEM; } mutex_unlock(&server->refpath_lock); - return path; -} - -/* Refresh dfs referral of @ses */ -static void refresh_ses_referral(struct cifs_ses *ses) -{ - struct cache_entry *ce; - unsigned int xid; - char *path; - int rc = 0; + if (!path) + goto out; - xid = get_xid(); + down_read(&htable_rw_lock); + ce = lookup_cache_entry(path); + needs_refresh = force_refresh || IS_ERR(ce) || cache_entry_expired(ce); + if (!IS_ERR(ce)) { + rc = get_targets(ce, &old_tl); + cifs_dbg(FYI, "%s: get_targets: %d\n", __func__, rc); + } + up_read(&htable_rw_lock); - path = get_ses_refpath(ses); - if (IS_ERR(path)) { - rc = PTR_ERR(path); - path = NULL; + if (!needs_refresh) { + rc = 0; goto out; } @@ -1185,106 +1217,29 @@ static void refresh_ses_referral(struct cifs_ses *ses) goto out; } - ce = cache_refresh_path(xid, ses, path, false); - if (!IS_ERR(ce)) + ce = cache_refresh_path(xid, ses, path, true); + if (!IS_ERR(ce)) { + rc = get_targets(ce, &new_tl); up_read(&htable_rw_lock); - else - rc = PTR_ERR(ce); + cifs_dbg(FYI, "%s: get_targets: %d\n", __func__, rc); + mark_for_reconnect_if_needed(server, path, &old_tl, &new_tl); + } out: free_xid(xid); + dfs_cache_free_tgts(&old_tl); + dfs_cache_free_tgts(&new_tl); kfree(path); } -static int __refresh_tcon_referral(struct cifs_tcon *tcon, - const char *path, - struct dfs_info3_param *refs, - int numrefs, bool force_refresh) +static inline void refresh_ses_referral(struct cifs_ses *ses) { - struct cache_entry *ce; - bool reconnect = force_refresh; - int rc = 0; - int i; - - if (unlikely(!numrefs)) - return 0; - - if (force_refresh) { - for (i = 0; i < numrefs; i++) { - /* TODO: include prefix paths in the matching */ - if (target_share_equal(tcon, refs[i].node_name)) { - reconnect = false; - break; - } - } - } - - down_write(&htable_rw_lock); - ce = lookup_cache_entry(path); - if (!IS_ERR(ce)) { - if (force_refresh || cache_entry_expired(ce)) - rc = update_cache_entry_locked(ce, refs, numrefs); - } else if (PTR_ERR(ce) == -ENOENT) { - ce = add_cache_entry_locked(refs, numrefs); - } - up_write(&htable_rw_lock); - - if (IS_ERR(ce)) - rc = PTR_ERR(ce); - if (reconnect) { - cifs_tcon_dbg(FYI, "%s: mark for reconnect\n", __func__); - cifs_signal_cifsd_for_reconnect(tcon->ses->server, true); - } - return rc; + __refresh_ses_referral(ses, false); } -static void refresh_tcon_referral(struct cifs_tcon *tcon, bool force_refresh) +static inline void force_refresh_ses_referral(struct cifs_ses *ses) { - struct dfs_info3_param *refs = NULL; - struct cache_entry *ce; - struct cifs_ses *ses; - unsigned int xid; - bool needs_refresh; - char *path; - int numrefs = 0; - int rc = 0; - - xid = get_xid(); - ses = tcon->ses; - - path = get_ses_refpath(ses); - if (IS_ERR(path)) { - rc = PTR_ERR(path); - path = NULL; - goto out; - } - - down_read(&htable_rw_lock); - ce = lookup_cache_entry(path); - needs_refresh = force_refresh || IS_ERR(ce) || cache_entry_expired(ce); - if (!needs_refresh) { - up_read(&htable_rw_lock); - goto out; - } - up_read(&htable_rw_lock); - - ses = CIFS_DFS_ROOT_SES(ses); - if (!is_ses_good(ses)) { - cifs_dbg(FYI, "%s: skip cache refresh due to disconnected ipc\n", - __func__); - goto out; - } - - rc = get_dfs_referral(xid, ses, path, &refs, &numrefs); - if (!rc) { - rc = __refresh_tcon_referral(tcon, path, refs, - numrefs, force_refresh); - } - -out: - free_xid(xid); - kfree(path); - free_dfs_info_array(refs, numrefs); + __refresh_ses_referral(ses, true); } /** @@ -1325,7 +1280,7 @@ int dfs_cache_remount_fs(struct cifs_sb_info *cifs_sb) */ cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_USE_PREFIX_PATH; - refresh_tcon_referral(tcon, true); + force_refresh_ses_referral(tcon->ses); return 0; } @@ -1336,11 +1291,9 @@ void dfs_cache_refresh(struct work_struct *work) struct cifs_ses *ses; tcon = container_of(work, struct cifs_tcon, dfs_cache_work.work); - ses = tcon->ses->dfs_root_ses; - for (; ses; ses = ses->dfs_root_ses) + for (ses = tcon->ses; ses; ses = ses->dfs_root_ses) refresh_ses_referral(ses); - refresh_tcon_referral(tcon, false); queue_delayed_work(dfscache_wq, &tcon->dfs_cache_work, atomic_read(&dfs_cache_ttl) * HZ); -- Gitee From 3e38d877d8a498722da0a8636324e63e56a957d3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:53 +0800 Subject: [PATCH 0227/1421] Revert "usb: dwc3: Abort suspend on soft disconnect failure" This reverts commit 1942ac1c96b16ccd7939ee4e5adbf748ef7ef95f. --- drivers/usb/dwc3/core.c | 9 ++------- drivers/usb/dwc3/gadget.c | 22 +++++++++++++--------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index b7eaad099309..30404461ef7d 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -2128,7 +2128,6 @@ static int dwc3_core_init_for_resume(struct dwc3 *dwc) static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) { u32 reg; - int ret; if (!pm_runtime_suspended(dwc->dev) && !PMSG_IS_AUTO(msg)) { dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) & @@ -2147,9 +2146,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) case DWC3_GCTL_PRTCAP_DEVICE: if (pm_runtime_suspended(dwc->dev)) break; - ret = dwc3_gadget_suspend(dwc); - if (ret) - return ret; + dwc3_gadget_suspend(dwc); synchronize_irq(dwc->irq_gadget); dwc3_core_exit(dwc); break; @@ -2180,9 +2177,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) break; if (dwc->current_otg_role == DWC3_OTG_ROLE_DEVICE) { - ret = dwc3_gadget_suspend(dwc); - if (ret) - return ret; + dwc3_gadget_suspend(dwc); synchronize_irq(dwc->irq_gadget); } diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index a17af4ab20a3..f51d743bb3ec 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -4802,15 +4802,8 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) int ret; ret = dwc3_gadget_soft_disconnect(dwc); - /* - * Attempt to reset the controller's state. Likely no - * communication can be established until the host - * performs a port reset. - */ - if (ret && dwc->softconnect) { - dwc3_gadget_soft_connect(dwc); - return -EAGAIN; - } + if (ret) + goto err; spin_lock_irqsave(&dwc->lock, flags); if (dwc->gadget_driver) @@ -4818,6 +4811,17 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) spin_unlock_irqrestore(&dwc->lock, flags); return 0; + +err: + /* + * Attempt to reset the controller's state. Likely no + * communication can be established until the host + * performs a port reset. + */ + if (dwc->softconnect) + dwc3_gadget_soft_connect(dwc); + + return ret; } int dwc3_gadget_resume(struct dwc3 *dwc) -- Gitee From 618f0aadf81e8bbd5db53b1c9e2075f38844111a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:53 +0800 Subject: [PATCH 0228/1421] Revert "usb: cdnsp: Fix issue with CV Bad Descriptor test" This reverts commit e59450bf5cbf5824299a4cb4841460a822adf7ba. --- drivers/usb/cdns3/cdnsp-debug.h | 5 ++--- drivers/usb/cdns3/cdnsp-ep0.c | 18 +++--------------- drivers/usb/cdns3/cdnsp-gadget.h | 6 ------ drivers/usb/cdns3/cdnsp-ring.c | 3 +-- 4 files changed, 6 insertions(+), 26 deletions(-) diff --git a/drivers/usb/cdns3/cdnsp-debug.h b/drivers/usb/cdns3/cdnsp-debug.h index 86860686d836..cd138acdcce1 100644 --- a/drivers/usb/cdns3/cdnsp-debug.h +++ b/drivers/usb/cdns3/cdnsp-debug.h @@ -327,13 +327,12 @@ static inline const char *cdnsp_decode_trb(char *str, size_t size, u32 field0, case TRB_RESET_EP: case TRB_HALT_ENDPOINT: ret = scnprintf(str, size, - "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c %c", + "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c", cdnsp_trb_type_string(type), ep_num, ep_id % 2 ? "out" : "in", TRB_TO_EP_INDEX(field3), field1, field0, TRB_TO_SLOT_ID(field3), - field3 & TRB_CYCLE ? 'C' : 'c', - field3 & TRB_ESP ? 'P' : 'p'); + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_STOP_RING: ret = scnprintf(str, size, diff --git a/drivers/usb/cdns3/cdnsp-ep0.c b/drivers/usb/cdns3/cdnsp-ep0.c index 5cd9b898ce97..f317d3c84781 100644 --- a/drivers/usb/cdns3/cdnsp-ep0.c +++ b/drivers/usb/cdns3/cdnsp-ep0.c @@ -414,7 +414,6 @@ static int cdnsp_ep0_std_request(struct cdnsp_device *pdev, void cdnsp_setup_analyze(struct cdnsp_device *pdev) { struct usb_ctrlrequest *ctrl = &pdev->setup; - struct cdnsp_ep *pep; int ret = -EINVAL; u16 len; @@ -428,21 +427,10 @@ void cdnsp_setup_analyze(struct cdnsp_device *pdev) goto out; } - pep = &pdev->eps[0]; - /* Restore the ep0 to Stopped/Running state. */ - if (pep->ep_state & EP_HALTED) { - if (GET_EP_CTX_STATE(pep->out_ctx) == EP_STATE_HALTED) - cdnsp_halt_endpoint(pdev, pep, 0); - - /* - * Halt Endpoint Command for SSP2 for ep0 preserve current - * endpoint state and driver has to synchronize the - * software endpoint state with endpoint output context - * state. - */ - pep->ep_state &= ~EP_HALTED; - pep->ep_state |= EP_STOPPED; + if (pdev->eps[0].ep_state & EP_HALTED) { + trace_cdnsp_ep0_halted("Restore to normal state"); + cdnsp_halt_endpoint(pdev, &pdev->eps[0], 0); } /* diff --git a/drivers/usb/cdns3/cdnsp-gadget.h b/drivers/usb/cdns3/cdnsp-gadget.h index a91cca509db0..2afa3e558f85 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.h +++ b/drivers/usb/cdns3/cdnsp-gadget.h @@ -987,12 +987,6 @@ enum cdnsp_setup_dev { #define STREAM_ID_FOR_TRB(p) ((((p)) << 16) & GENMASK(31, 16)) #define SCT_FOR_TRB(p) (((p) << 1) & 0x7) -/* - * Halt Endpoint Command TRB field. - * The ESP bit only exists in the SSP2 controller. - */ -#define TRB_ESP BIT(9) - /* Link TRB specific fields. */ #define TRB_TC BIT(1) diff --git a/drivers/usb/cdns3/cdnsp-ring.c b/drivers/usb/cdns3/cdnsp-ring.c index 0758f171f73e..757fdd918286 100644 --- a/drivers/usb/cdns3/cdnsp-ring.c +++ b/drivers/usb/cdns3/cdnsp-ring.c @@ -2485,8 +2485,7 @@ void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, unsigned int ep_index) { cdnsp_queue_command(pdev, 0, 0, 0, TRB_TYPE(TRB_HALT_ENDPOINT) | SLOT_ID_FOR_TRB(pdev->slot_id) | - EP_ID_FOR_TRB(ep_index) | - (!ep_index ? TRB_ESP : 0)); + EP_ID_FOR_TRB(ep_index)); } void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num) -- Gitee From 0e50154ae6c7704d77a88d715a3c252aca30902f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:53 +0800 Subject: [PATCH 0229/1421] Revert "usb: cdnsp: Replace snprintf() with the safer scnprintf() variant" This reverts commit d169d896022c526caf1cdd286ed3d35176243032. --- drivers/usb/cdns3/cdnsp-debug.h | 354 ++++++++++++++++---------------- 1 file changed, 177 insertions(+), 177 deletions(-) diff --git a/drivers/usb/cdns3/cdnsp-debug.h b/drivers/usb/cdns3/cdnsp-debug.h index cd138acdcce1..ad617b7455b9 100644 --- a/drivers/usb/cdns3/cdnsp-debug.h +++ b/drivers/usb/cdns3/cdnsp-debug.h @@ -187,202 +187,202 @@ static inline const char *cdnsp_decode_trb(char *str, size_t size, u32 field0, switch (type) { case TRB_LINK: - ret = scnprintf(str, size, - "LINK %08x%08x intr %ld type '%s' flags %c:%c:%c:%c", - field1, field0, GET_INTR_TARGET(field2), - cdnsp_trb_type_string(type), - field3 & TRB_IOC ? 'I' : 'i', - field3 & TRB_CHAIN ? 'C' : 'c', - field3 & TRB_TC ? 'T' : 't', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "LINK %08x%08x intr %ld type '%s' flags %c:%c:%c:%c", + field1, field0, GET_INTR_TARGET(field2), + cdnsp_trb_type_string(type), + field3 & TRB_IOC ? 'I' : 'i', + field3 & TRB_CHAIN ? 'C' : 'c', + field3 & TRB_TC ? 'T' : 't', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_TRANSFER: case TRB_COMPLETION: case TRB_PORT_STATUS: case TRB_HC_EVENT: - ret = scnprintf(str, size, - "ep%d%s(%d) type '%s' TRB %08x%08x status '%s'" - " len %ld slot %ld flags %c:%c", - ep_num, ep_id % 2 ? "out" : "in", - TRB_TO_EP_INDEX(field3), - cdnsp_trb_type_string(type), field1, field0, - cdnsp_trb_comp_code_string(GET_COMP_CODE(field2)), - EVENT_TRB_LEN(field2), TRB_TO_SLOT_ID(field3), - field3 & EVENT_DATA ? 'E' : 'e', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "ep%d%s(%d) type '%s' TRB %08x%08x status '%s'" + " len %ld slot %ld flags %c:%c", + ep_num, ep_id % 2 ? "out" : "in", + TRB_TO_EP_INDEX(field3), + cdnsp_trb_type_string(type), field1, field0, + cdnsp_trb_comp_code_string(GET_COMP_CODE(field2)), + EVENT_TRB_LEN(field2), TRB_TO_SLOT_ID(field3), + field3 & EVENT_DATA ? 'E' : 'e', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_MFINDEX_WRAP: - ret = scnprintf(str, size, "%s: flags %c", - cdnsp_trb_type_string(type), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, "%s: flags %c", + cdnsp_trb_type_string(type), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_SETUP: - ret = scnprintf(str, size, - "type '%s' bRequestType %02x bRequest %02x " - "wValue %02x%02x wIndex %02x%02x wLength %d " - "length %ld TD size %ld intr %ld Setup ID %ld " - "flags %c:%c:%c", - cdnsp_trb_type_string(type), - field0 & 0xff, - (field0 & 0xff00) >> 8, - (field0 & 0xff000000) >> 24, - (field0 & 0xff0000) >> 16, - (field1 & 0xff00) >> 8, - field1 & 0xff, - (field1 & 0xff000000) >> 16 | - (field1 & 0xff0000) >> 16, - TRB_LEN(field2), GET_TD_SIZE(field2), - GET_INTR_TARGET(field2), - TRB_SETUPID_TO_TYPE(field3), - field3 & TRB_IDT ? 'D' : 'd', - field3 & TRB_IOC ? 'I' : 'i', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "type '%s' bRequestType %02x bRequest %02x " + "wValue %02x%02x wIndex %02x%02x wLength %d " + "length %ld TD size %ld intr %ld Setup ID %ld " + "flags %c:%c:%c", + cdnsp_trb_type_string(type), + field0 & 0xff, + (field0 & 0xff00) >> 8, + (field0 & 0xff000000) >> 24, + (field0 & 0xff0000) >> 16, + (field1 & 0xff00) >> 8, + field1 & 0xff, + (field1 & 0xff000000) >> 16 | + (field1 & 0xff0000) >> 16, + TRB_LEN(field2), GET_TD_SIZE(field2), + GET_INTR_TARGET(field2), + TRB_SETUPID_TO_TYPE(field3), + field3 & TRB_IDT ? 'D' : 'd', + field3 & TRB_IOC ? 'I' : 'i', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_DATA: - ret = scnprintf(str, size, - "type '%s' Buffer %08x%08x length %ld TD size %ld " - "intr %ld flags %c:%c:%c:%c:%c:%c:%c", - cdnsp_trb_type_string(type), - field1, field0, TRB_LEN(field2), - GET_TD_SIZE(field2), - GET_INTR_TARGET(field2), - field3 & TRB_IDT ? 'D' : 'i', - field3 & TRB_IOC ? 'I' : 'i', - field3 & TRB_CHAIN ? 'C' : 'c', - field3 & TRB_NO_SNOOP ? 'S' : 's', - field3 & TRB_ISP ? 'I' : 'i', - field3 & TRB_ENT ? 'E' : 'e', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "type '%s' Buffer %08x%08x length %ld TD size %ld " + "intr %ld flags %c:%c:%c:%c:%c:%c:%c", + cdnsp_trb_type_string(type), + field1, field0, TRB_LEN(field2), + GET_TD_SIZE(field2), + GET_INTR_TARGET(field2), + field3 & TRB_IDT ? 'D' : 'i', + field3 & TRB_IOC ? 'I' : 'i', + field3 & TRB_CHAIN ? 'C' : 'c', + field3 & TRB_NO_SNOOP ? 'S' : 's', + field3 & TRB_ISP ? 'I' : 'i', + field3 & TRB_ENT ? 'E' : 'e', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_STATUS: - ret = scnprintf(str, size, - "Buffer %08x%08x length %ld TD size %ld intr" - "%ld type '%s' flags %c:%c:%c:%c", - field1, field0, TRB_LEN(field2), - GET_TD_SIZE(field2), - GET_INTR_TARGET(field2), - cdnsp_trb_type_string(type), - field3 & TRB_IOC ? 'I' : 'i', - field3 & TRB_CHAIN ? 'C' : 'c', - field3 & TRB_ENT ? 'E' : 'e', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "Buffer %08x%08x length %ld TD size %ld intr" + "%ld type '%s' flags %c:%c:%c:%c", + field1, field0, TRB_LEN(field2), + GET_TD_SIZE(field2), + GET_INTR_TARGET(field2), + cdnsp_trb_type_string(type), + field3 & TRB_IOC ? 'I' : 'i', + field3 & TRB_CHAIN ? 'C' : 'c', + field3 & TRB_ENT ? 'E' : 'e', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_NORMAL: case TRB_ISOC: case TRB_EVENT_DATA: case TRB_TR_NOOP: - ret = scnprintf(str, size, - "type '%s' Buffer %08x%08x length %ld " - "TD size %ld intr %ld " - "flags %c:%c:%c:%c:%c:%c:%c:%c:%c", - cdnsp_trb_type_string(type), - field1, field0, TRB_LEN(field2), - GET_TD_SIZE(field2), - GET_INTR_TARGET(field2), - field3 & TRB_BEI ? 'B' : 'b', - field3 & TRB_IDT ? 'T' : 't', - field3 & TRB_IOC ? 'I' : 'i', - field3 & TRB_CHAIN ? 'C' : 'c', - field3 & TRB_NO_SNOOP ? 'S' : 's', - field3 & TRB_ISP ? 'I' : 'i', - field3 & TRB_ENT ? 'E' : 'e', - field3 & TRB_CYCLE ? 'C' : 'c', - !(field3 & TRB_EVENT_INVALIDATE) ? 'V' : 'v'); + ret = snprintf(str, size, + "type '%s' Buffer %08x%08x length %ld " + "TD size %ld intr %ld " + "flags %c:%c:%c:%c:%c:%c:%c:%c:%c", + cdnsp_trb_type_string(type), + field1, field0, TRB_LEN(field2), + GET_TD_SIZE(field2), + GET_INTR_TARGET(field2), + field3 & TRB_BEI ? 'B' : 'b', + field3 & TRB_IDT ? 'T' : 't', + field3 & TRB_IOC ? 'I' : 'i', + field3 & TRB_CHAIN ? 'C' : 'c', + field3 & TRB_NO_SNOOP ? 'S' : 's', + field3 & TRB_ISP ? 'I' : 'i', + field3 & TRB_ENT ? 'E' : 'e', + field3 & TRB_CYCLE ? 'C' : 'c', + !(field3 & TRB_EVENT_INVALIDATE) ? 'V' : 'v'); break; case TRB_CMD_NOOP: case TRB_ENABLE_SLOT: - ret = scnprintf(str, size, "%s: flags %c", - cdnsp_trb_type_string(type), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, "%s: flags %c", + cdnsp_trb_type_string(type), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_DISABLE_SLOT: - ret = scnprintf(str, size, "%s: slot %ld flags %c", - cdnsp_trb_type_string(type), - TRB_TO_SLOT_ID(field3), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, "%s: slot %ld flags %c", + cdnsp_trb_type_string(type), + TRB_TO_SLOT_ID(field3), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_ADDR_DEV: - ret = scnprintf(str, size, - "%s: ctx %08x%08x slot %ld flags %c:%c", - cdnsp_trb_type_string(type), field1, field0, - TRB_TO_SLOT_ID(field3), - field3 & TRB_BSR ? 'B' : 'b', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ctx %08x%08x slot %ld flags %c:%c", + cdnsp_trb_type_string(type), field1, field0, + TRB_TO_SLOT_ID(field3), + field3 & TRB_BSR ? 'B' : 'b', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_CONFIG_EP: - ret = scnprintf(str, size, - "%s: ctx %08x%08x slot %ld flags %c:%c", - cdnsp_trb_type_string(type), field1, field0, - TRB_TO_SLOT_ID(field3), - field3 & TRB_DC ? 'D' : 'd', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ctx %08x%08x slot %ld flags %c:%c", + cdnsp_trb_type_string(type), field1, field0, + TRB_TO_SLOT_ID(field3), + field3 & TRB_DC ? 'D' : 'd', + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_EVAL_CONTEXT: - ret = scnprintf(str, size, - "%s: ctx %08x%08x slot %ld flags %c", - cdnsp_trb_type_string(type), field1, field0, - TRB_TO_SLOT_ID(field3), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ctx %08x%08x slot %ld flags %c", + cdnsp_trb_type_string(type), field1, field0, + TRB_TO_SLOT_ID(field3), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_RESET_EP: case TRB_HALT_ENDPOINT: - ret = scnprintf(str, size, - "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c", - cdnsp_trb_type_string(type), - ep_num, ep_id % 2 ? "out" : "in", - TRB_TO_EP_INDEX(field3), field1, field0, - TRB_TO_SLOT_ID(field3), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c", + cdnsp_trb_type_string(type), + ep_num, ep_id % 2 ? "out" : "in", + TRB_TO_EP_INDEX(field3), field1, field0, + TRB_TO_SLOT_ID(field3), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_STOP_RING: - ret = scnprintf(str, size, - "%s: ep%d%s(%d) slot %ld sp %d flags %c", - cdnsp_trb_type_string(type), - ep_num, ep_id % 2 ? "out" : "in", - TRB_TO_EP_INDEX(field3), - TRB_TO_SLOT_ID(field3), - TRB_TO_SUSPEND_PORT(field3), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ep%d%s(%d) slot %ld sp %d flags %c", + cdnsp_trb_type_string(type), + ep_num, ep_id % 2 ? "out" : "in", + TRB_TO_EP_INDEX(field3), + TRB_TO_SLOT_ID(field3), + TRB_TO_SUSPEND_PORT(field3), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_SET_DEQ: - ret = scnprintf(str, size, - "%s: ep%d%s(%d) deq %08x%08x stream %ld slot %ld flags %c", - cdnsp_trb_type_string(type), - ep_num, ep_id % 2 ? "out" : "in", - TRB_TO_EP_INDEX(field3), field1, field0, - TRB_TO_STREAM_ID(field2), - TRB_TO_SLOT_ID(field3), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ep%d%s(%d) deq %08x%08x stream %ld slot %ld flags %c", + cdnsp_trb_type_string(type), + ep_num, ep_id % 2 ? "out" : "in", + TRB_TO_EP_INDEX(field3), field1, field0, + TRB_TO_STREAM_ID(field2), + TRB_TO_SLOT_ID(field3), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_RESET_DEV: - ret = scnprintf(str, size, "%s: slot %ld flags %c", - cdnsp_trb_type_string(type), - TRB_TO_SLOT_ID(field3), - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, "%s: slot %ld flags %c", + cdnsp_trb_type_string(type), + TRB_TO_SLOT_ID(field3), + field3 & TRB_CYCLE ? 'C' : 'c'); break; case TRB_ENDPOINT_NRDY: temp = TRB_TO_HOST_STREAM(field2); - ret = scnprintf(str, size, - "%s: ep%d%s(%d) H_SID %x%s%s D_SID %lx flags %c:%c", - cdnsp_trb_type_string(type), - ep_num, ep_id % 2 ? "out" : "in", - TRB_TO_EP_INDEX(field3), temp, - temp == STREAM_PRIME_ACK ? "(PRIME)" : "", - temp == STREAM_REJECTED ? "(REJECTED)" : "", - TRB_TO_DEV_STREAM(field0), - field3 & TRB_STAT ? 'S' : 's', - field3 & TRB_CYCLE ? 'C' : 'c'); + ret = snprintf(str, size, + "%s: ep%d%s(%d) H_SID %x%s%s D_SID %lx flags %c:%c", + cdnsp_trb_type_string(type), + ep_num, ep_id % 2 ? "out" : "in", + TRB_TO_EP_INDEX(field3), temp, + temp == STREAM_PRIME_ACK ? "(PRIME)" : "", + temp == STREAM_REJECTED ? "(REJECTED)" : "", + TRB_TO_DEV_STREAM(field0), + field3 & TRB_STAT ? 'S' : 's', + field3 & TRB_CYCLE ? 'C' : 'c'); break; default: - ret = scnprintf(str, size, - "type '%s' -> raw %08x %08x %08x %08x", - cdnsp_trb_type_string(type), - field0, field1, field2, field3); + ret = snprintf(str, size, + "type '%s' -> raw %08x %08x %08x %08x", + cdnsp_trb_type_string(type), + field0, field1, field2, field3); } - if (ret == size - 1) - pr_info("CDNSP: buffer may be truncated.\n"); + if (ret >= size) + pr_info("CDNSP: buffer overflowed.\n"); return str; } @@ -465,32 +465,32 @@ static inline const char *cdnsp_decode_portsc(char *str, size_t size, { int ret; - ret = scnprintf(str, size, "%s %s %s Link:%s PortSpeed:%d ", - portsc & PORT_POWER ? "Powered" : "Powered-off", - portsc & PORT_CONNECT ? "Connected" : "Not-connected", - portsc & PORT_PED ? "Enabled" : "Disabled", - cdnsp_portsc_link_state_string(portsc), - DEV_PORT_SPEED(portsc)); + ret = snprintf(str, size, "%s %s %s Link:%s PortSpeed:%d ", + portsc & PORT_POWER ? "Powered" : "Powered-off", + portsc & PORT_CONNECT ? "Connected" : "Not-connected", + portsc & PORT_PED ? "Enabled" : "Disabled", + cdnsp_portsc_link_state_string(portsc), + DEV_PORT_SPEED(portsc)); if (portsc & PORT_RESET) - ret += scnprintf(str + ret, size - ret, "In-Reset "); + ret += snprintf(str + ret, size - ret, "In-Reset "); - ret += scnprintf(str + ret, size - ret, "Change: "); + ret += snprintf(str + ret, size - ret, "Change: "); if (portsc & PORT_CSC) - ret += scnprintf(str + ret, size - ret, "CSC "); + ret += snprintf(str + ret, size - ret, "CSC "); if (portsc & PORT_WRC) - ret += scnprintf(str + ret, size - ret, "WRC "); + ret += snprintf(str + ret, size - ret, "WRC "); if (portsc & PORT_RC) - ret += scnprintf(str + ret, size - ret, "PRC "); + ret += snprintf(str + ret, size - ret, "PRC "); if (portsc & PORT_PLC) - ret += scnprintf(str + ret, size - ret, "PLC "); + ret += snprintf(str + ret, size - ret, "PLC "); if (portsc & PORT_CEC) - ret += scnprintf(str + ret, size - ret, "CEC "); - ret += scnprintf(str + ret, size - ret, "Wake: "); + ret += snprintf(str + ret, size - ret, "CEC "); + ret += snprintf(str + ret, size - ret, "Wake: "); if (portsc & PORT_WKCONN_E) - ret += scnprintf(str + ret, size - ret, "WCE "); + ret += snprintf(str + ret, size - ret, "WCE "); if (portsc & PORT_WKDISC_E) - ret += scnprintf(str + ret, size - ret, "WDE "); + ret += snprintf(str + ret, size - ret, "WDE "); return str; } @@ -562,20 +562,20 @@ static inline const char *cdnsp_decode_ep_context(char *str, size_t size, avg = EP_AVG_TRB_LENGTH(tx_info); - ret = scnprintf(str, size, "State %s mult %d max P. Streams %d %s", - cdnsp_ep_state_string(ep_state), mult, - max_pstr, lsa ? "LSA " : ""); + ret = snprintf(str, size, "State %s mult %d max P. Streams %d %s", + cdnsp_ep_state_string(ep_state), mult, + max_pstr, lsa ? "LSA " : ""); - ret += scnprintf(str + ret, size - ret, - "interval %d us max ESIT payload %d CErr %d ", - (1 << interval) * 125, esit, cerr); + ret += snprintf(str + ret, size - ret, + "interval %d us max ESIT payload %d CErr %d ", + (1 << interval) * 125, esit, cerr); - ret += scnprintf(str + ret, size - ret, - "Type %s %sburst %d maxp %d deq %016llx ", - cdnsp_ep_type_string(ep_type), hid ? "HID" : "", - burst, maxp, deq); + ret += snprintf(str + ret, size - ret, + "Type %s %sburst %d maxp %d deq %016llx ", + cdnsp_ep_type_string(ep_type), hid ? "HID" : "", + burst, maxp, deq); - ret += scnprintf(str + ret, size - ret, "avg trb len %d", avg); + ret += snprintf(str + ret, size - ret, "avg trb len %d", avg); return str; } -- Gitee From d939627a1f5dc90137e7a5837b2dca3d58ab41ec Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:53 +0800 Subject: [PATCH 0230/1421] Revert "usb:cdnsp: remove TRB_FLUSH_ENDPOINT command" This reverts commit 8170d70488bdcb6ee1dc88bd22491b3fc5e22f13. --- drivers/usb/cdns3/cdnsp-debug.h | 3 +++ drivers/usb/cdns3/cdnsp-gadget.c | 6 +++++- drivers/usb/cdns3/cdnsp-gadget.h | 5 +++++ drivers/usb/cdns3/cdnsp-ring.c | 24 ++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/drivers/usb/cdns3/cdnsp-debug.h b/drivers/usb/cdns3/cdnsp-debug.h index ad617b7455b9..f0ca865cce2a 100644 --- a/drivers/usb/cdns3/cdnsp-debug.h +++ b/drivers/usb/cdns3/cdnsp-debug.h @@ -131,6 +131,8 @@ static inline const char *cdnsp_trb_type_string(u8 type) return "Endpoint Not ready"; case TRB_HALT_ENDPOINT: return "Halt Endpoint"; + case TRB_FLUSH_ENDPOINT: + return "FLush Endpoint"; default: return "UNKNOWN"; } @@ -326,6 +328,7 @@ static inline const char *cdnsp_decode_trb(char *str, size_t size, u32 field0, break; case TRB_RESET_EP: case TRB_HALT_ENDPOINT: + case TRB_FLUSH_ENDPOINT: ret = snprintf(str, size, "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c", cdnsp_trb_type_string(type), diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c index 38e693cd3efc..132885fbb98f 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.c +++ b/drivers/usb/cdns3/cdnsp-gadget.c @@ -1061,8 +1061,10 @@ static int cdnsp_gadget_ep_disable(struct usb_ep *ep) pep->ep_state |= EP_DIS_IN_RROGRESS; /* Endpoint was unconfigured by Reset Device command. */ - if (!(pep->ep_state & EP_UNCONFIGURED)) + if (!(pep->ep_state & EP_UNCONFIGURED)) { cdnsp_cmd_stop_ep(pdev, pep); + cdnsp_cmd_flush_ep(pdev, pep); + } /* Remove all queued USB requests. */ while (!list_empty(&pep->pending_list)) { @@ -1459,6 +1461,8 @@ static void cdnsp_stop(struct cdnsp_device *pdev) { u32 temp; + cdnsp_cmd_flush_ep(pdev, &pdev->eps[0]); + /* Remove internally queued request for ep0. */ if (!list_empty(&pdev->eps[0].pending_list)) { struct cdnsp_request *req; diff --git a/drivers/usb/cdns3/cdnsp-gadget.h b/drivers/usb/cdns3/cdnsp-gadget.h index 2afa3e558f85..909cee01772a 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.h +++ b/drivers/usb/cdns3/cdnsp-gadget.h @@ -1138,6 +1138,8 @@ union cdnsp_trb { #define TRB_HALT_ENDPOINT 54 /* Doorbell Overflow Event. */ #define TRB_DRB_OVERFLOW 57 +/* Flush Endpoint Command. */ +#define TRB_FLUSH_ENDPOINT 58 #define TRB_TYPE_LINK(x) (((x) & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK)) #define TRB_TYPE_LINK_LE32(x) (((x) & cpu_to_le32(TRB_TYPE_BITMASK)) == \ @@ -1550,6 +1552,8 @@ void cdnsp_queue_configure_endpoint(struct cdnsp_device *pdev, void cdnsp_queue_reset_ep(struct cdnsp_device *pdev, unsigned int ep_index); void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, unsigned int ep_index); +void cdnsp_queue_flush_endpoint(struct cdnsp_device *pdev, + unsigned int ep_index); void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num); void cdnsp_queue_reset_device(struct cdnsp_device *pdev); void cdnsp_queue_new_dequeue_state(struct cdnsp_device *pdev, @@ -1583,6 +1587,7 @@ void cdnsp_irq_reset(struct cdnsp_device *pdev); int cdnsp_halt_endpoint(struct cdnsp_device *pdev, struct cdnsp_ep *pep, int value); int cdnsp_cmd_stop_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep); +int cdnsp_cmd_flush_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep); void cdnsp_setup_analyze(struct cdnsp_device *pdev); int cdnsp_status_stage(struct cdnsp_device *pdev); int cdnsp_reset_device(struct cdnsp_device *pdev); diff --git a/drivers/usb/cdns3/cdnsp-ring.c b/drivers/usb/cdns3/cdnsp-ring.c index 757fdd918286..3b17d9e4b07d 100644 --- a/drivers/usb/cdns3/cdnsp-ring.c +++ b/drivers/usb/cdns3/cdnsp-ring.c @@ -2159,6 +2159,19 @@ int cdnsp_cmd_stop_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep) return ret; } +int cdnsp_cmd_flush_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep) +{ + int ret; + + cdnsp_queue_flush_endpoint(pdev, pep->idx); + cdnsp_ring_cmd_db(pdev); + ret = cdnsp_wait_for_cmd_compl(pdev); + + trace_cdnsp_handle_cmd_flush_ep(pep->out_ctx); + + return ret; +} + /* * The transfer burst count field of the isochronous TRB defines the number of * bursts that are required to move all packets in this TD. Only SuperSpeed @@ -2488,6 +2501,17 @@ void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, unsigned int ep_index) EP_ID_FOR_TRB(ep_index)); } +/* + * Queue a flush endpoint request on the command ring. + */ +void cdnsp_queue_flush_endpoint(struct cdnsp_device *pdev, + unsigned int ep_index) +{ + cdnsp_queue_command(pdev, 0, 0, 0, TRB_TYPE(TRB_FLUSH_ENDPOINT) | + SLOT_ID_FOR_TRB(pdev->slot_id) | + EP_ID_FOR_TRB(ep_index)); +} + void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num) { u32 lo, mid; -- Gitee From 3712d1c2a1661f606896899244b964b2471fe7a3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:54 +0800 Subject: [PATCH 0231/1421] Revert "btrfs: fix inode lookup error handling during log replay" This reverts commit 5b7ed63d0c4796bde574be646ccfb21ed8bc9409. --- fs/btrfs/tree-log.c | 223 +++++++++++++++----------------------------- 1 file changed, 77 insertions(+), 146 deletions(-) diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 16434106c465..f846dcbd7075 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -145,9 +145,6 @@ static struct btrfs_inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *r unsigned int nofs_flag; struct inode *inode; - /* Only meant to be called for subvolume roots and not for log roots. */ - ASSERT(is_fstree(btrfs_root_id(root))); - /* * We're holding a transaction handle whether we are logging or * replaying a log tree, so we must make sure NOFS semantics apply @@ -619,6 +616,20 @@ static int read_alloc_one_name(struct extent_buffer *eb, void *start, int len, return 0; } +/* + * simple helper to read an inode off the disk from a given root + * This can only be called for subvolume roots and not for the log + */ +static noinline struct inode *read_one_inode(struct btrfs_root *root, + u64 objectid) +{ + struct btrfs_inode *inode; + + inode = btrfs_iget_logging(objectid, root); + if (IS_ERR(inode)) + return NULL; + return &inode->vfs_inode; +} /* replays a single extent in 'eb' at 'slot' with 'key' into the * subvolume 'root'. path is released on entry and should be released @@ -673,15 +684,10 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, goto out; } - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(key->objectid, root); - if (IS_ERR(btrfs_inode)) { - ret = PTR_ERR(btrfs_inode); - goto out; - } - inode = &btrfs_inode->vfs_inode; + inode = read_one_inode(root, key->objectid); + if (!inode) { + ret = -EIO; + goto out; } /* @@ -960,16 +966,10 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans, btrfs_release_path(path); - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(location.objectid, root); - if (IS_ERR(btrfs_inode)) { - ret = PTR_ERR(btrfs_inode); - inode = NULL; - goto out; - } - inode = &btrfs_inode->vfs_inode; + inode = read_one_inode(root, location.objectid); + if (!inode) { + ret = -EIO; + goto out; } ret = link_to_fixup_dir(trans, root, path, location.objectid); @@ -1186,21 +1186,18 @@ static inline int __add_inode_ref(struct btrfs_trans_handle *trans, kfree(victim_name.name); return ret; } else if (!ret) { - struct btrfs_inode *btrfs_victim; - - btrfs_victim = btrfs_iget_logging(parent_objectid, root); - if (IS_ERR(btrfs_victim)) { - ret = PTR_ERR(btrfs_victim); - } else { - victim_parent = &btrfs_victim->vfs_inode; + ret = -ENOENT; + victim_parent = read_one_inode(root, + parent_objectid); + if (victim_parent) { inc_nlink(&inode->vfs_inode); btrfs_release_path(path); ret = unlink_inode_for_log_replay(trans, BTRFS_I(victim_parent), inode, &victim_name); - iput(victim_parent); } + iput(victim_parent); kfree(victim_name.name); if (ret) return ret; @@ -1337,16 +1334,11 @@ static int unlink_old_inode_refs(struct btrfs_trans_handle *trans, struct inode *dir; btrfs_release_path(path); - { - struct btrfs_inode *btrfs_dir; - - btrfs_dir = btrfs_iget_logging(parent_id, root); - if (IS_ERR(btrfs_dir)) { - ret = PTR_ERR(btrfs_dir); - kfree(name.name); - goto out; - } - dir = &btrfs_dir->vfs_inode; + dir = read_one_inode(root, parent_id); + if (!dir) { + ret = -ENOENT; + kfree(name.name); + goto out; } ret = unlink_inode_for_log_replay(trans, BTRFS_I(dir), inode, &name); @@ -1417,28 +1409,16 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans, * copy the back ref in. The link count fixup code will take * care of the rest */ - { - struct btrfs_inode *btrfs_dir; - - btrfs_dir = btrfs_iget_logging(parent_objectid, root); - if (IS_ERR(btrfs_dir)) { - ret = PTR_ERR(btrfs_dir); - dir = NULL; - goto out; - } - dir = &btrfs_dir->vfs_inode; + dir = read_one_inode(root, parent_objectid); + if (!dir) { + ret = -ENOENT; + goto out; } - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(inode_objectid, root); - if (IS_ERR(btrfs_inode)) { - ret = PTR_ERR(btrfs_inode); - inode = NULL; - goto out; - } - inode = &btrfs_inode->vfs_inode; + inode = read_one_inode(root, inode_objectid); + if (!inode) { + ret = -EIO; + goto out; } while (ref_ptr < ref_end) { @@ -1449,16 +1429,11 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans, * parent object can change from one array * item to another. */ + if (!dir) + dir = read_one_inode(root, parent_objectid); if (!dir) { - struct btrfs_inode *btrfs_dir; - - btrfs_dir = btrfs_iget_logging(parent_objectid, root); - if (IS_ERR(btrfs_dir)) { - ret = PTR_ERR(btrfs_dir); - dir = NULL; - goto out; - } - dir = &btrfs_dir->vfs_inode; + ret = -ENOENT; + goto out; } } else { ret = ref_get_fields(eb, ref_ptr, &name, &ref_index); @@ -1726,15 +1701,10 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans, break; btrfs_release_path(path); - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(key.offset, root); - if (IS_ERR(btrfs_inode)) { - ret = PTR_ERR(btrfs_inode); - break; - } - inode = &btrfs_inode->vfs_inode; + inode = read_one_inode(root, key.offset); + if (!inode) { + ret = -EIO; + break; } ret = fixup_inode_link_count(trans, inode); @@ -1768,14 +1738,9 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans, int ret = 0; struct inode *inode; - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(objectid, root); - if (IS_ERR(btrfs_inode)) - return PTR_ERR(btrfs_inode); - inode = &btrfs_inode->vfs_inode; - } + inode = read_one_inode(root, objectid); + if (!inode) + return -EIO; key.objectid = BTRFS_TREE_LOG_FIXUP_OBJECTID; key.type = BTRFS_ORPHAN_ITEM_KEY; @@ -1813,24 +1778,14 @@ static noinline int insert_one_name(struct btrfs_trans_handle *trans, struct inode *dir; int ret; - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(location->objectid, root); - if (IS_ERR(btrfs_inode)) - return PTR_ERR(btrfs_inode); - inode = &btrfs_inode->vfs_inode; - } - - { - struct btrfs_inode *btrfs_dir; + inode = read_one_inode(root, location->objectid); + if (!inode) + return -ENOENT; - btrfs_dir = btrfs_iget_logging(dirid, root); - if (IS_ERR(btrfs_dir)) { - iput(inode); - return PTR_ERR(btrfs_dir); - } - dir = &btrfs_dir->vfs_inode; + dir = read_one_inode(root, dirid); + if (!dir) { + iput(inode); + return -EIO; } ret = btrfs_add_link(trans, BTRFS_I(dir), BTRFS_I(inode), name, @@ -1908,14 +1863,9 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans, bool update_size = true; bool name_added = false; - { - struct btrfs_inode *btrfs_dir; - - btrfs_dir = btrfs_iget_logging(key->objectid, root); - if (IS_ERR(btrfs_dir)) - return PTR_ERR(btrfs_dir); - dir = &btrfs_dir->vfs_inode; - } + dir = read_one_inode(root, key->objectid); + if (!dir) + return -EIO; ret = read_alloc_one_name(eb, di + 1, btrfs_dir_name_len(eb, di), &name); if (ret) @@ -2217,16 +2167,10 @@ static noinline int check_item_in_log(struct btrfs_trans_handle *trans, btrfs_dir_item_key_to_cpu(eb, di, &location); btrfs_release_path(path); btrfs_release_path(log_path); - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(location.objectid, root); - if (IS_ERR(btrfs_inode)) { - ret = PTR_ERR(btrfs_inode); - inode = NULL; - goto out; - } - inode = &btrfs_inode->vfs_inode; + inode = read_one_inode(root, location.objectid); + if (!inode) { + ret = -EIO; + goto out; } ret = link_to_fixup_dir(trans, root, path, location.objectid); @@ -2377,22 +2321,14 @@ static noinline int replay_dir_deletes(struct btrfs_trans_handle *trans, if (!log_path) return -ENOMEM; - { - struct btrfs_inode *btrfs_dir; - - btrfs_dir = btrfs_iget_logging(dirid, root); - /* - * It isn't an error if the inode isn't there, that can happen because - * we replay the deletes before we copy in the inode item from the log. - */ - if (IS_ERR(btrfs_dir)) { - btrfs_free_path(log_path); - ret = PTR_ERR(btrfs_dir); - if (ret == -ENOENT) - ret = 0; - return ret; - } - dir = &btrfs_dir->vfs_inode; + dir = read_one_inode(root, dirid); + /* it isn't an error if the inode isn't there, that can happen + * because we replay the deletes before we copy in the inode item + * from the log + */ + if (!dir) { + btrfs_free_path(log_path); + return 0; } range_start = 0; @@ -2551,15 +2487,10 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb, struct inode *inode; u64 from; - { - struct btrfs_inode *btrfs_inode; - - btrfs_inode = btrfs_iget_logging(key.objectid, root); - if (IS_ERR(btrfs_inode)) { - ret = PTR_ERR(btrfs_inode); - break; - } - inode = &btrfs_inode->vfs_inode; + inode = read_one_inode(root, key.objectid); + if (!inode) { + ret = -EIO; + break; } from = ALIGN(i_size_read(inode), root->fs_info->sectorsize); -- Gitee From ce4b2b1d4101c0e2191e396ad50cc8a87b869938 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:54 +0800 Subject: [PATCH 0232/1421] Revert "btrfs: return a btrfs_inode from btrfs_iget_logging()" This reverts commit caff3ad94487a7b66e3be6de726b2fe959b59ec1. --- fs/btrfs/tree-log.c | 94 +++++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index f846dcbd7075..a17942f4c155 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -140,7 +140,7 @@ static void wait_log_commit(struct btrfs_root *root, int transid); * and once to do all the other items. */ -static struct btrfs_inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *root) +static struct inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *root) { unsigned int nofs_flag; struct inode *inode; @@ -156,10 +156,7 @@ static struct btrfs_inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *r inode = btrfs_iget(root->fs_info->sb, objectid, root); memalloc_nofs_restore(nofs_flag); - if (IS_ERR(inode)) - return ERR_CAST(inode); - - return BTRFS_I(inode); + return inode; } /* @@ -623,12 +620,12 @@ static int read_alloc_one_name(struct extent_buffer *eb, void *start, int len, static noinline struct inode *read_one_inode(struct btrfs_root *root, u64 objectid) { - struct btrfs_inode *inode; + struct inode *inode; inode = btrfs_iget_logging(objectid, root); if (IS_ERR(inode)) - return NULL; - return &inode->vfs_inode; + inode = NULL; + return inode; } /* replays a single extent in 'eb' at 'slot' with 'key' into the @@ -5422,6 +5419,7 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans, ihold(&curr_inode->vfs_inode); while (true) { + struct inode *vfs_inode; struct btrfs_key key; struct btrfs_key found_key; u64 next_index; @@ -5437,7 +5435,7 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans, struct extent_buffer *leaf = path->nodes[0]; struct btrfs_dir_item *di; struct btrfs_key di_key; - struct btrfs_inode *di_inode; + struct inode *di_inode; int log_mode = LOG_INODE_EXISTS; int type; @@ -5464,16 +5462,17 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans, goto out; } - if (!need_log_inode(trans, di_inode)) { - btrfs_add_delayed_iput(di_inode); + if (!need_log_inode(trans, BTRFS_I(di_inode))) { + btrfs_add_delayed_iput(BTRFS_I(di_inode)); break; } ctx->log_new_dentries = false; if (type == BTRFS_FT_DIR) log_mode = LOG_INODE_ALL; - ret = btrfs_log_inode(trans, di_inode, log_mode, ctx); - btrfs_add_delayed_iput(di_inode); + ret = btrfs_log_inode(trans, BTRFS_I(di_inode), + log_mode, ctx); + btrfs_add_delayed_iput(BTRFS_I(di_inode)); if (ret) goto out; if (ctx->log_new_dentries) { @@ -5515,13 +5514,14 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans, kfree(dir_elem); btrfs_add_delayed_iput(curr_inode); + curr_inode = NULL; - curr_inode = btrfs_iget_logging(ino, root); - if (IS_ERR(curr_inode)) { - ret = PTR_ERR(curr_inode); - curr_inode = NULL; + vfs_inode = btrfs_iget_logging(ino, root); + if (IS_ERR(vfs_inode)) { + ret = PTR_ERR(vfs_inode); break; } + curr_inode = BTRFS_I(vfs_inode); } out: btrfs_free_path(path); @@ -5599,7 +5599,7 @@ static int add_conflicting_inode(struct btrfs_trans_handle *trans, struct btrfs_log_ctx *ctx) { struct btrfs_ino_list *ino_elem; - struct btrfs_inode *inode; + struct inode *inode; /* * It's rare to have a lot of conflicting inodes, in practice it is not @@ -5690,12 +5690,12 @@ static int add_conflicting_inode(struct btrfs_trans_handle *trans, * inode in LOG_INODE_EXISTS mode and rename operations update the log, * so that the log ends up with the new name and without the old name. */ - if (!need_log_inode(trans, inode)) { - btrfs_add_delayed_iput(inode); + if (!need_log_inode(trans, BTRFS_I(inode))) { + btrfs_add_delayed_iput(BTRFS_I(inode)); return 0; } - btrfs_add_delayed_iput(inode); + btrfs_add_delayed_iput(BTRFS_I(inode)); ino_elem = kmalloc(sizeof(*ino_elem), GFP_NOFS); if (!ino_elem) @@ -5731,7 +5731,7 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans, */ while (!list_empty(&ctx->conflict_inodes)) { struct btrfs_ino_list *curr; - struct btrfs_inode *inode; + struct inode *inode; u64 ino; u64 parent; @@ -5767,8 +5767,9 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans, * dir index key range logged for the directory. So we * must make sure the deletion is recorded. */ - ret = btrfs_log_inode(trans, inode, LOG_INODE_ALL, ctx); - btrfs_add_delayed_iput(inode); + ret = btrfs_log_inode(trans, BTRFS_I(inode), + LOG_INODE_ALL, ctx); + btrfs_add_delayed_iput(BTRFS_I(inode)); if (ret) break; continue; @@ -5784,8 +5785,8 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans, * it again because if some other task logged the inode after * that, we can avoid doing it again. */ - if (!need_log_inode(trans, inode)) { - btrfs_add_delayed_iput(inode); + if (!need_log_inode(trans, BTRFS_I(inode))) { + btrfs_add_delayed_iput(BTRFS_I(inode)); continue; } @@ -5796,8 +5797,8 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans, * well because during a rename we pin the log and update the * log with the new name before we unpin it. */ - ret = btrfs_log_inode(trans, inode, LOG_INODE_EXISTS, ctx); - btrfs_add_delayed_iput(inode); + ret = btrfs_log_inode(trans, BTRFS_I(inode), LOG_INODE_EXISTS, ctx); + btrfs_add_delayed_iput(BTRFS_I(inode)); if (ret) break; } @@ -6289,7 +6290,7 @@ static int log_new_delayed_dentries(struct btrfs_trans_handle *trans, list_for_each_entry(item, delayed_ins_list, log_list) { struct btrfs_dir_item *dir_item; - struct btrfs_inode *di_inode; + struct inode *di_inode; struct btrfs_key key; int log_mode = LOG_INODE_EXISTS; @@ -6305,8 +6306,8 @@ static int log_new_delayed_dentries(struct btrfs_trans_handle *trans, break; } - if (!need_log_inode(trans, di_inode)) { - btrfs_add_delayed_iput(di_inode); + if (!need_log_inode(trans, BTRFS_I(di_inode))) { + btrfs_add_delayed_iput(BTRFS_I(di_inode)); continue; } @@ -6314,12 +6315,12 @@ static int log_new_delayed_dentries(struct btrfs_trans_handle *trans, log_mode = LOG_INODE_ALL; ctx->log_new_dentries = false; - ret = btrfs_log_inode(trans, di_inode, log_mode, ctx); + ret = btrfs_log_inode(trans, BTRFS_I(di_inode), log_mode, ctx); if (!ret && ctx->log_new_dentries) - ret = log_new_dir_dentries(trans, di_inode, ctx); + ret = log_new_dir_dentries(trans, BTRFS_I(di_inode), ctx); - btrfs_add_delayed_iput(di_inode); + btrfs_add_delayed_iput(BTRFS_I(di_inode)); if (ret) break; @@ -6727,7 +6728,7 @@ static int btrfs_log_all_parents(struct btrfs_trans_handle *trans, ptr = btrfs_item_ptr_offset(leaf, slot); while (cur_offset < item_size) { struct btrfs_key inode_key; - struct btrfs_inode *dir_inode; + struct inode *dir_inode; inode_key.type = BTRFS_INODE_ITEM_KEY; inode_key.offset = 0; @@ -6776,16 +6777,18 @@ static int btrfs_log_all_parents(struct btrfs_trans_handle *trans, goto out; } - if (!need_log_inode(trans, dir_inode)) { - btrfs_add_delayed_iput(dir_inode); + if (!need_log_inode(trans, BTRFS_I(dir_inode))) { + btrfs_add_delayed_iput(BTRFS_I(dir_inode)); continue; } ctx->log_new_dentries = false; - ret = btrfs_log_inode(trans, dir_inode, LOG_INODE_ALL, ctx); + ret = btrfs_log_inode(trans, BTRFS_I(dir_inode), + LOG_INODE_ALL, ctx); if (!ret && ctx->log_new_dentries) - ret = log_new_dir_dentries(trans, dir_inode, ctx); - btrfs_add_delayed_iput(dir_inode); + ret = log_new_dir_dentries(trans, + BTRFS_I(dir_inode), ctx); + btrfs_add_delayed_iput(BTRFS_I(dir_inode)); if (ret) goto out; } @@ -6810,7 +6813,7 @@ static int log_new_ancestors(struct btrfs_trans_handle *trans, struct extent_buffer *leaf; int slot; struct btrfs_key search_key; - struct btrfs_inode *inode; + struct inode *inode; u64 ino; int ret = 0; @@ -6825,10 +6828,11 @@ static int log_new_ancestors(struct btrfs_trans_handle *trans, if (IS_ERR(inode)) return PTR_ERR(inode); - if (inode->generation >= trans->transid && - need_log_inode(trans, inode)) - ret = btrfs_log_inode(trans, inode, LOG_INODE_EXISTS, ctx); - btrfs_add_delayed_iput(inode); + if (BTRFS_I(inode)->generation >= trans->transid && + need_log_inode(trans, BTRFS_I(inode))) + ret = btrfs_log_inode(trans, BTRFS_I(inode), + LOG_INODE_EXISTS, ctx); + btrfs_add_delayed_iput(BTRFS_I(inode)); if (ret) return ret; -- Gitee From 55b6dfc91432f56964d86f0247c4b05cbff1df43 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:54 +0800 Subject: [PATCH 0233/1421] Revert "btrfs: remove redundant root argument from fixup_inode_link_count()" This reverts commit 15a5cccd597e29ffa310f1937a6718479be21180. --- fs/btrfs/tree-log.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index a17942f4c155..13377c3b2289 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -1504,7 +1504,8 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans, return ret; } -static int count_inode_extrefs(struct btrfs_inode *inode, struct btrfs_path *path) +static int count_inode_extrefs(struct btrfs_root *root, + struct btrfs_inode *inode, struct btrfs_path *path) { int ret = 0; int name_len; @@ -1518,8 +1519,8 @@ static int count_inode_extrefs(struct btrfs_inode *inode, struct btrfs_path *pat struct extent_buffer *leaf; while (1) { - ret = btrfs_find_one_extref(inode->root, inode_objectid, offset, - path, &extref, &offset); + ret = btrfs_find_one_extref(root, inode_objectid, offset, path, + &extref, &offset); if (ret) break; @@ -1547,7 +1548,8 @@ static int count_inode_extrefs(struct btrfs_inode *inode, struct btrfs_path *pat return nlink; } -static int count_inode_refs(struct btrfs_inode *inode, struct btrfs_path *path) +static int count_inode_refs(struct btrfs_root *root, + struct btrfs_inode *inode, struct btrfs_path *path) { int ret; struct btrfs_key key; @@ -1562,7 +1564,7 @@ static int count_inode_refs(struct btrfs_inode *inode, struct btrfs_path *path) key.offset = (u64)-1; while (1) { - ret = btrfs_search_slot(NULL, inode->root, &key, path, 0, 0); + ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); if (ret < 0) break; if (ret > 0) { @@ -1614,9 +1616,9 @@ static int count_inode_refs(struct btrfs_inode *inode, struct btrfs_path *path) * will free the inode. */ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans, + struct btrfs_root *root, struct inode *inode) { - struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_path *path; int ret; u64 nlink = 0; @@ -1626,13 +1628,13 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans, if (!path) return -ENOMEM; - ret = count_inode_refs(BTRFS_I(inode), path); + ret = count_inode_refs(root, BTRFS_I(inode), path); if (ret < 0) goto out; nlink = ret; - ret = count_inode_extrefs(BTRFS_I(inode), path); + ret = count_inode_extrefs(root, BTRFS_I(inode), path); if (ret < 0) goto out; @@ -1704,7 +1706,7 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans, break; } - ret = fixup_inode_link_count(trans, inode); + ret = fixup_inode_link_count(trans, root, inode); iput(inode); if (ret) break; -- Gitee From fd0a982dd9f1b6261de53680cce0b6eef2d913d5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:54 +0800 Subject: [PATCH 0234/1421] Revert "btrfs: remove redundant root argument from btrfs_update_inode_fallback()" This reverts commit 9d3848cb237cf03cf39aa6c1b9807b5dbfe89aba. --- fs/btrfs/btrfs_inode.h | 2 +- fs/btrfs/inode.c | 12 ++++++------ fs/btrfs/transaction.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index c23c56ead6b2..ec6679a538c1 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -488,7 +488,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, int btrfs_update_inode(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct btrfs_inode *inode); int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans, - struct btrfs_inode *inode); + struct btrfs_root *root, struct btrfs_inode *inode); int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct btrfs_inode *inode); int btrfs_orphan_cleanup(struct btrfs_root *root); int btrfs_cont_expand(struct btrfs_inode *inode, loff_t oldsize, loff_t size); diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 218d15f5ddf7..c80c91848554 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -3077,7 +3077,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent) goto out; } trans->block_rsv = &inode->block_rsv; - ret = btrfs_update_inode_fallback(trans, inode); + ret = btrfs_update_inode_fallback(trans, root, inode); if (ret) /* -ENOMEM or corruption */ btrfs_abort_transaction(trans, ret); goto out; @@ -3143,7 +3143,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent) &cached_state); btrfs_inode_safe_disk_i_size_write(inode, 0); - ret = btrfs_update_inode_fallback(trans, inode); + ret = btrfs_update_inode_fallback(trans, root, inode); if (ret) { /* -ENOMEM or corruption */ btrfs_abort_transaction(trans, ret); goto out; @@ -4043,13 +4043,13 @@ int btrfs_update_inode(struct btrfs_trans_handle *trans, } int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans, - struct btrfs_inode *inode) + struct btrfs_root *root, struct btrfs_inode *inode) { int ret; - ret = btrfs_update_inode(trans, inode->root, inode); + ret = btrfs_update_inode(trans, root, inode); if (ret == -ENOSPC) - return btrfs_update_inode_item(trans, inode->root, inode); + return btrfs_update_inode_item(trans, root, inode); return ret; } @@ -4327,7 +4327,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, btrfs_i_size_write(dir, dir->vfs_inode.i_size - fname.disk_name.len * 2); inode_inc_iversion(&dir->vfs_inode); dir->vfs_inode.i_mtime = inode_set_ctime_current(&dir->vfs_inode); - ret = btrfs_update_inode_fallback(trans, dir); + ret = btrfs_update_inode_fallback(trans, root, dir); if (ret) btrfs_abort_transaction(trans, ret); out: diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 3989cb19cdae..aa03db69a016 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -1860,7 +1860,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, btrfs_i_size_write(BTRFS_I(parent_inode), parent_inode->i_size + fname.disk_name.len * 2); parent_inode->i_mtime = inode_set_ctime_current(parent_inode); - ret = btrfs_update_inode_fallback(trans, BTRFS_I(parent_inode)); + ret = btrfs_update_inode_fallback(trans, parent_root, BTRFS_I(parent_inode)); if (ret) { btrfs_abort_transaction(trans, ret); goto fail; -- Gitee From ea03cee2dde3e16c31b3b550dac38bb711b18af7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:54 +0800 Subject: [PATCH 0235/1421] Revert "btrfs: remove noinline from btrfs_update_inode()" This reverts commit 91c038bbdc97269ecac28c48e1fd6220c8e4c891. --- fs/btrfs/inode.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index c80c91848554..e8e57abb032d 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4014,9 +4014,9 @@ static noinline int btrfs_update_inode_item(struct btrfs_trans_handle *trans, /* * copy everything in the in-memory inode into the btree. */ -int btrfs_update_inode(struct btrfs_trans_handle *trans, - struct btrfs_root *root, - struct btrfs_inode *inode) +noinline int btrfs_update_inode(struct btrfs_trans_handle *trans, + struct btrfs_root *root, + struct btrfs_inode *inode) { struct btrfs_fs_info *fs_info = root->fs_info; int ret; -- Gitee From 8e74bcf4a9a8b8d56ce1f49e743dc6713fe7acc4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:55 +0800 Subject: [PATCH 0236/1421] Revert "netlink: make sure we allow at least one dump skb" This reverts commit 9f3ccd496c0d91fabe5e0c5bc5608679323fecde. --- net/netlink/af_netlink.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 0a412d9a8e5f..0b2c7cb1409a 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -2199,11 +2199,11 @@ static int netlink_dump(struct sock *sk, bool lock_taken) struct netlink_ext_ack extack = {}; struct netlink_callback *cb; struct sk_buff *skb = NULL; - unsigned int rmem, rcvbuf; size_t max_recvmsg_len; struct module *module; int err = -ENOBUFS; int alloc_min_size; + unsigned int rmem; int alloc_size; if (!lock_taken) @@ -2235,9 +2235,8 @@ static int netlink_dump(struct sock *sk, bool lock_taken) if (!skb) goto errout_skb; - rcvbuf = READ_ONCE(sk->sk_rcvbuf); rmem = atomic_add_return(skb->truesize, &sk->sk_rmem_alloc); - if (rmem != skb->truesize && rmem >= rcvbuf) { + if (rmem >= READ_ONCE(sk->sk_rcvbuf)) { atomic_sub(skb->truesize, &sk->sk_rmem_alloc); goto errout_skb; } -- Gitee From 8a8518b0a57362fc7dedb20ed53b4901550395ad Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:55 +0800 Subject: [PATCH 0237/1421] Revert "netlink: Fix rmem check in netlink_broadcast_deliver()." This reverts commit e34e55a6179c44217c95d900f184163d4aaa25a0. --- net/netlink/af_netlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 0b2c7cb1409a..6476640b6b1e 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1405,7 +1405,7 @@ static int netlink_broadcast_deliver(struct sock *sk, struct sk_buff *skb) rmem = atomic_add_return(skb->truesize, &sk->sk_rmem_alloc); rcvbuf = READ_ONCE(sk->sk_rcvbuf); - if ((rmem == skb->truesize || rmem <= rcvbuf) && + if ((rmem != skb->truesize || rmem <= rcvbuf) && !test_bit(NETLINK_S_CONGESTED, &nlk->state)) { netlink_skb_set_owner_r(skb, sk); __netlink_sendskb(sk, skb); -- Gitee From 9af0b8b22f20e18d16648b6cfdf972fd3a5306c2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:55 +0800 Subject: [PATCH 0238/1421] Revert "erofs: fix to add missing tracepoint in erofs_read_folio()" This reverts commit 3b66e1ca2e1051088cf0cd0435ebba4be9bd571d. --- fs/erofs/data.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index 51250ac184a5..19ab9bb3a9a0 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -358,8 +358,6 @@ int erofs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, */ static int erofs_read_folio(struct file *file, struct folio *folio) { - trace_erofs_read_folio(folio, true); - return iomap_read_folio(folio, &erofs_iomap_ops); } -- Gitee From 3167bfe23c1c55d337a0053917e3db4e643ccc77 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:55 +0800 Subject: [PATCH 0239/1421] Revert "ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked()" This reverts commit 3a6c30ed30a9ba1ecf416b3c03b88689da847528. --- fs/smb/server/vfs.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/smb/server/vfs.c b/fs/smb/server/vfs.c index de813700f3d4..3bbf23827060 100644 --- a/fs/smb/server/vfs.c +++ b/fs/smb/server/vfs.c @@ -1293,7 +1293,6 @@ int ksmbd_vfs_kern_path_locked(struct ksmbd_work *work, char *name, err = ksmbd_vfs_lock_parent(parent_path->dentry, path->dentry); if (err) { - mnt_drop_write(parent_path->mnt); path_put(path); path_put(parent_path); } -- Gitee From 93f162dacc616765bf944055083c6338250218a7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:56 +0800 Subject: [PATCH 0240/1421] Revert "smb: server: make use of rdma_destroy_qp()" This reverts commit 696ea6e69c651402905369be23cfc16206a57f10. --- fs/smb/server/transport_rdma.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/smb/server/transport_rdma.c b/fs/smb/server/transport_rdma.c index 7b6639949c25..8faa25c6e129 100644 --- a/fs/smb/server/transport_rdma.c +++ b/fs/smb/server/transport_rdma.c @@ -426,8 +426,7 @@ static void free_transport(struct smb_direct_transport *t) if (t->qp) { ib_drain_qp(t->qp); ib_mr_pool_destroy(t->qp, &t->qp->rdma_mrs); - t->qp = NULL; - rdma_destroy_qp(t->cm_id); + ib_destroy_qp(t->qp); } ksmbd_debug(RDMA, "drain the reassembly queue\n"); @@ -1935,8 +1934,8 @@ static int smb_direct_create_qpair(struct smb_direct_transport *t, return 0; err: if (t->qp) { + ib_destroy_qp(t->qp); t->qp = NULL; - rdma_destroy_qp(t->cm_id); } if (t->recv_cq) { ib_destroy_cq(t->recv_cq); -- Gitee From efe954ce0e53bbfa9b24d052408d53d7afb9df1e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:56 +0800 Subject: [PATCH 0241/1421] Revert "x86/mm: Disable hugetlb page table sharing on 32-bit" This reverts commit 915d98ec4d675bbb65a64f3a83d4b3544b38d76c. --- arch/x86/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 2b5b7d9a24e9..caa6adcedc18 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -128,7 +128,7 @@ config X86 select ARCH_WANTS_DYNAMIC_TASK_STRUCT select ARCH_WANTS_NO_INSTR select ARCH_WANT_GENERAL_HUGETLB - select ARCH_WANT_HUGE_PMD_SHARE if X86_64 + select ARCH_WANT_HUGE_PMD_SHARE select ARCH_WANT_LD_ORPHAN_WARN select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP if X86_64 select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP if X86_64 -- Gitee From e892a9a2fc36e32b362da2871b88c2fff8b83235 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:56 +0800 Subject: [PATCH 0242/1421] Revert "x86/rdrand: Disable RDSEED on AMD Cyan Skillfish" This reverts commit cb9a5c50640260d005a48106bec3a0994be505f8. --- arch/x86/include/asm/msr-index.h | 1 - arch/x86/kernel/cpu/amd.c | 7 ------- tools/arch/x86/include/asm/msr-index.h | 1 - 3 files changed, 9 deletions(-) diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index 033855457581..9fbad4cb971b 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -575,7 +575,6 @@ #define MSR_AMD64_OSVW_STATUS 0xc0010141 #define MSR_AMD_PPIN_CTL 0xc00102f0 #define MSR_AMD_PPIN 0xc00102f1 -#define MSR_AMD64_CPUID_FN_7 0xc0011002 #define MSR_AMD64_CPUID_FN_1 0xc0011004 #define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_DC_CFG 0xc0011022 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 5fcdfbb792bd..f6690df70b43 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -1154,13 +1154,6 @@ static void init_amd_zen2(struct cpuinfo_x86 *c) { fix_erratum_1386(c); zen2_zenbleed_check(c); - - /* Disable RDSEED on AMD Cyan Skillfish because of an error. */ - if (c->x86_model == 0x47 && c->x86_stepping == 0x0) { - clear_cpu_cap(c, X86_FEATURE_RDSEED); - msr_clear_bit(MSR_AMD64_CPUID_FN_7, 18); - pr_emerg("RDSEED is not reliable on this platform; disabling.\n"); - } } static void init_amd_zen3(struct cpuinfo_x86 *c) diff --git a/tools/arch/x86/include/asm/msr-index.h b/tools/arch/x86/include/asm/msr-index.h index 76f9cad9fb62..1d111350197f 100644 --- a/tools/arch/x86/include/asm/msr-index.h +++ b/tools/arch/x86/include/asm/msr-index.h @@ -550,7 +550,6 @@ #define MSR_AMD64_OSVW_STATUS 0xc0010141 #define MSR_AMD_PPIN_CTL 0xc00102f0 #define MSR_AMD_PPIN 0xc00102f1 -#define MSR_AMD64_CPUID_FN_7 0xc0011002 #define MSR_AMD64_CPUID_FN_1 0xc0011004 #define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_DC_CFG 0xc0011022 -- Gitee From abc5e47f7e405cbe455b9ac5bb2561863f5e9718 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:56 +0800 Subject: [PATCH 0243/1421] Revert "pwm: mediatek: Ensure to disable clocks in error path" This reverts commit 4bb6f418ee24f7021debdc81b5b575d6497c7716. --- drivers/pwm/pwm-mediatek.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c index ff7c70a0033d..6b1a75b6bd12 100644 --- a/drivers/pwm/pwm-mediatek.c +++ b/drivers/pwm/pwm-mediatek.c @@ -133,10 +133,8 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm, return ret; clk_rate = clk_get_rate(pc->clk_pwms[pwm->hwpwm]); - if (!clk_rate) { - ret = -EINVAL; - goto out; - } + if (!clk_rate) + return -EINVAL; /* Make sure we use the bus clock and not the 26MHz clock */ if (pc->soc->has_ck_26m_sel) @@ -155,9 +153,9 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm, } if (clkdiv > PWM_CLK_DIV_MAX) { + pwm_mediatek_clk_disable(chip, pwm); dev_err(chip->dev, "period of %d ns not supported\n", period_ns); - ret = -EINVAL; - goto out; + return -EINVAL; } if (pc->soc->pwm45_fixup && pwm->hwpwm > 2) { @@ -174,10 +172,9 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm, pwm_mediatek_writel(pc, pwm->hwpwm, reg_width, cnt_period); pwm_mediatek_writel(pc, pwm->hwpwm, reg_thres, cnt_duty); -out: pwm_mediatek_clk_disable(chip, pwm); - return ret; + return 0; } static int pwm_mediatek_enable(struct pwm_chip *chip, struct pwm_device *pwm) -- Gitee From eff9b114fab5dfb8e4249be32af2ab65b2f002bc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:56 +0800 Subject: [PATCH 0244/1421] Revert "mm/vmalloc: leave lazy MMU mode on PTE mapping error" This reverts commit e706ce5ac27cef46f77328c4d639468f185bcab2. --- mm/vmalloc.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 7eb92bcdbd8c..fb947787f25d 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -459,7 +459,6 @@ static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, pgprot_t prot, struct page **pages, int *nr, pgtbl_mod_mask *mask) { - int err = 0; pte_t *pte; /* @@ -473,25 +472,18 @@ static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr, do { struct page *page = pages[*nr]; - if (WARN_ON(!pte_none(ptep_get(pte)))) { - err = -EBUSY; - break; - } - if (WARN_ON(!page)) { - err = -ENOMEM; - break; - } - if (WARN_ON(!pfn_valid(page_to_pfn(page)))) { - err = -EINVAL; - break; - } + if (WARN_ON(!pte_none(ptep_get(pte)))) + return -EBUSY; + if (WARN_ON(!page)) + return -ENOMEM; + if (WARN_ON(!pfn_valid(page_to_pfn(page)))) + return -EINVAL; set_pte_at(&init_mm, addr, pte, mk_pte(page, prot)); (*nr)++; } while (pte++, addr += PAGE_SIZE, addr != end); *mask |= PGTBL_PTE_MODIFIED; - - return err; + return 0; } static int vmap_pages_pmd_range(pud_t *pud, unsigned long addr, -- Gitee From 813b5ab4161ae6806f9bd305e7c9887add336031 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:57 +0800 Subject: [PATCH 0245/1421] Revert "scripts/gdb: fix interrupts.py after maple tree conversion" This reverts commit ccf88989afa4a8b01bd5ae2db256687ff23bc79d. --- scripts/gdb/linux/constants.py.in | 7 - scripts/gdb/linux/interrupts.py | 12 +- scripts/gdb/linux/mapletree.py | 252 ------------------------------ scripts/gdb/linux/xarray.py | 28 ---- 4 files changed, 6 insertions(+), 293 deletions(-) delete mode 100644 scripts/gdb/linux/mapletree.py delete mode 100644 scripts/gdb/linux/xarray.py diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in index 866c13468ebf..e810e0c27ff1 100644 --- a/scripts/gdb/linux/constants.py.in +++ b/scripts/gdb/linux/constants.py.in @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -94,12 +93,6 @@ LX_GDBPARSED(RADIX_TREE_MAP_SIZE) LX_GDBPARSED(RADIX_TREE_MAP_SHIFT) LX_GDBPARSED(RADIX_TREE_MAP_MASK) -/* linux/maple_tree.h */ -LX_VALUE(MAPLE_NODE_SLOTS) -LX_VALUE(MAPLE_RANGE64_SLOTS) -LX_VALUE(MAPLE_ARANGE64_SLOTS) -LX_GDBPARSED(MAPLE_NODE_MASK) - /* linux/vmalloc.h */ LX_VALUE(VM_IOREMAP) LX_VALUE(VM_ALLOC) diff --git a/scripts/gdb/linux/interrupts.py b/scripts/gdb/linux/interrupts.py index b371a62213a0..f0cc42a04659 100644 --- a/scripts/gdb/linux/interrupts.py +++ b/scripts/gdb/linux/interrupts.py @@ -7,7 +7,7 @@ import gdb from linux import constants from linux import cpus from linux import utils -from linux import mapletree +from linux import radixtree irq_desc_type = utils.CachedType("struct irq_desc") @@ -23,12 +23,12 @@ def irqd_is_level(desc): def show_irq_desc(prec, irq): text = "" - desc = mapletree.mtree_load(gdb.parse_and_eval("&sparse_irqs"), irq) + desc = radixtree.lookup(gdb.parse_and_eval("&irq_desc_tree"), irq) if desc is None: return text - desc = desc.cast(irq_desc_type.get_type().pointer()) - if desc == 0: + desc = desc.cast(irq_desc_type.get_type()) + if desc is None: return text if irq_settings_is_hidden(desc): @@ -221,8 +221,8 @@ class LxInterruptList(gdb.Command): gdb.write("CPU%-8d" % cpu) gdb.write("\n") - if utils.gdb_eval_or_none("&sparse_irqs") is None: - raise gdb.GdbError("Unable to find the sparse IRQ tree, is CONFIG_SPARSE_IRQ enabled?") + if utils.gdb_eval_or_none("&irq_desc_tree") is None: + return for irq in range(nr_irqs): gdb.write(show_irq_desc(prec, irq)) diff --git a/scripts/gdb/linux/mapletree.py b/scripts/gdb/linux/mapletree.py deleted file mode 100644 index d52d51c0a03f..000000000000 --- a/scripts/gdb/linux/mapletree.py +++ /dev/null @@ -1,252 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# -# Maple tree helpers -# -# Copyright (c) 2025 Broadcom -# -# Authors: -# Florian Fainelli - -import gdb - -from linux import utils -from linux import constants -from linux import xarray - -maple_tree_root_type = utils.CachedType("struct maple_tree") -maple_node_type = utils.CachedType("struct maple_node") -maple_enode_type = utils.CachedType("void") - -maple_dense = 0 -maple_leaf_64 = 1 -maple_range_64 = 2 -maple_arange_64 = 3 - -class Mas(object): - ma_active = 0 - ma_start = 1 - ma_root = 2 - ma_none = 3 - ma_pause = 4 - ma_overflow = 5 - ma_underflow = 6 - ma_error = 7 - - def __init__(self, mt, first, end): - if mt.type == maple_tree_root_type.get_type().pointer(): - self.tree = mt.dereference() - elif mt.type != maple_tree_root_type.get_type(): - raise gdb.GdbError("must be {} not {}" - .format(maple_tree_root_type.get_type().pointer(), mt.type)) - self.tree = mt - self.index = first - self.last = end - self.node = None - self.status = self.ma_start - self.min = 0 - self.max = -1 - - def is_start(self): - # mas_is_start() - return self.status == self.ma_start - - def is_ptr(self): - # mas_is_ptr() - return self.status == self.ma_root - - def is_none(self): - # mas_is_none() - return self.status == self.ma_none - - def root(self): - # mas_root() - return self.tree['ma_root'].cast(maple_enode_type.get_type().pointer()) - - def start(self): - # mas_start() - if self.is_start() is False: - return None - - self.min = 0 - self.max = ~0 - - while True: - self.depth = 0 - root = self.root() - if xarray.xa_is_node(root): - self.depth = 0 - self.status = self.ma_active - self.node = mte_safe_root(root) - self.offset = 0 - if mte_dead_node(self.node) is True: - continue - - return None - - self.node = None - # Empty tree - if root is None: - self.status = self.ma_none - self.offset = constants.LX_MAPLE_NODE_SLOTS - return None - - # Single entry tree - self.status = self.ma_root - self.offset = constants.LX_MAPLE_NODE_SLOTS - - if self.index != 0: - return None - - return root - - return None - - def reset(self): - # mas_reset() - self.status = self.ma_start - self.node = None - -def mte_safe_root(node): - if node.type != maple_enode_type.get_type().pointer(): - raise gdb.GdbError("{} must be {} not {}" - .format(mte_safe_root.__name__, maple_enode_type.get_type().pointer(), node.type)) - ulong_type = utils.get_ulong_type() - indirect_ptr = node.cast(ulong_type) & ~0x2 - val = indirect_ptr.cast(maple_enode_type.get_type().pointer()) - return val - -def mte_node_type(entry): - ulong_type = utils.get_ulong_type() - val = None - if entry.type == maple_enode_type.get_type().pointer(): - val = entry.cast(ulong_type) - elif entry.type == ulong_type: - val = entry - else: - raise gdb.GdbError("{} must be {} not {}" - .format(mte_node_type.__name__, maple_enode_type.get_type().pointer(), entry.type)) - return (val >> 0x3) & 0xf - -def ma_dead_node(node): - if node.type != maple_node_type.get_type().pointer(): - raise gdb.GdbError("{} must be {} not {}" - .format(ma_dead_node.__name__, maple_node_type.get_type().pointer(), node.type)) - ulong_type = utils.get_ulong_type() - parent = node['parent'] - indirect_ptr = node['parent'].cast(ulong_type) & ~constants.LX_MAPLE_NODE_MASK - return indirect_ptr == node - -def mte_to_node(enode): - ulong_type = utils.get_ulong_type() - if enode.type == maple_enode_type.get_type().pointer(): - indirect_ptr = enode.cast(ulong_type) - elif enode.type == ulong_type: - indirect_ptr = enode - else: - raise gdb.GdbError("{} must be {} not {}" - .format(mte_to_node.__name__, maple_enode_type.get_type().pointer(), enode.type)) - indirect_ptr = indirect_ptr & ~constants.LX_MAPLE_NODE_MASK - return indirect_ptr.cast(maple_node_type.get_type().pointer()) - -def mte_dead_node(enode): - if enode.type != maple_enode_type.get_type().pointer(): - raise gdb.GdbError("{} must be {} not {}" - .format(mte_dead_node.__name__, maple_enode_type.get_type().pointer(), enode.type)) - node = mte_to_node(enode) - return ma_dead_node(node) - -def ma_is_leaf(tp): - result = tp < maple_range_64 - return tp < maple_range_64 - -def mt_pivots(t): - if t == maple_dense: - return 0 - elif t == maple_leaf_64 or t == maple_range_64: - return constants.LX_MAPLE_RANGE64_SLOTS - 1 - elif t == maple_arange_64: - return constants.LX_MAPLE_ARANGE64_SLOTS - 1 - -def ma_pivots(node, t): - if node.type != maple_node_type.get_type().pointer(): - raise gdb.GdbError("{}: must be {} not {}" - .format(ma_pivots.__name__, maple_node_type.get_type().pointer(), node.type)) - if t == maple_arange_64: - return node['ma64']['pivot'] - elif t == maple_leaf_64 or t == maple_range_64: - return node['mr64']['pivot'] - else: - return None - -def ma_slots(node, tp): - if node.type != maple_node_type.get_type().pointer(): - raise gdb.GdbError("{}: must be {} not {}" - .format(ma_slots.__name__, maple_node_type.get_type().pointer(), node.type)) - if tp == maple_arange_64: - return node['ma64']['slot'] - elif tp == maple_range_64 or tp == maple_leaf_64: - return node['mr64']['slot'] - elif tp == maple_dense: - return node['slot'] - else: - return None - -def mt_slot(mt, slots, offset): - ulong_type = utils.get_ulong_type() - return slots[offset].cast(ulong_type) - -def mtree_lookup_walk(mas): - ulong_type = utils.get_ulong_type() - n = mas.node - - while True: - node = mte_to_node(n) - tp = mte_node_type(n) - pivots = ma_pivots(node, tp) - end = mt_pivots(tp) - offset = 0 - while True: - if pivots[offset] >= mas.index: - break - if offset >= end: - break - offset += 1 - - slots = ma_slots(node, tp) - n = mt_slot(mas.tree, slots, offset) - if ma_dead_node(node) is True: - mas.reset() - return None - break - - if ma_is_leaf(tp) is True: - break - - return n - -def mtree_load(mt, index): - ulong_type = utils.get_ulong_type() - # MT_STATE(...) - mas = Mas(mt, index, index) - entry = None - - while True: - entry = mas.start() - if mas.is_none(): - return None - - if mas.is_ptr(): - if index != 0: - entry = None - return entry - - entry = mtree_lookup_walk(mas) - if entry is None and mas.is_start(): - continue - else: - break - - if xarray.xa_is_zero(entry): - return None - - return entry diff --git a/scripts/gdb/linux/xarray.py b/scripts/gdb/linux/xarray.py deleted file mode 100644 index f4477b5def75..000000000000 --- a/scripts/gdb/linux/xarray.py +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# -# Xarray helpers -# -# Copyright (c) 2025 Broadcom -# -# Authors: -# Florian Fainelli - -import gdb - -from linux import utils -from linux import constants - -def xa_is_internal(entry): - ulong_type = utils.get_ulong_type() - return ((entry.cast(ulong_type) & 3) == 2) - -def xa_mk_internal(v): - return ((v << 2) | 2) - -def xa_is_zero(entry): - ulong_type = utils.get_ulong_type() - return entry.cast(ulong_type) == xa_mk_internal(257) - -def xa_is_node(entry): - ulong_type = utils.get_ulong_type() - return xa_is_internal(entry) and (entry.cast(ulong_type) > 4096) -- Gitee From 951a299c4cf0360b84dc05c33ab51e0a411e2ebb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:57 +0800 Subject: [PATCH 0246/1421] Revert "scripts/gdb: de-reference per-CPU MCE interrupts" This reverts commit 6ac0d736ecddaa71dede94887603b9eed65c4333. --- scripts/gdb/linux/interrupts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gdb/linux/interrupts.py b/scripts/gdb/linux/interrupts.py index f0cc42a04659..32f7811b4561 100644 --- a/scripts/gdb/linux/interrupts.py +++ b/scripts/gdb/linux/interrupts.py @@ -110,7 +110,7 @@ def x86_show_mce(prec, var, pfx, desc): pvar = gdb.parse_and_eval(var) text = "%*s: " % (prec, pfx) for cpu in cpus.each_online_cpu(): - text += "%10u " % (cpus.per_cpu(pvar, cpu).dereference()) + text += "%10u " % (cpus.per_cpu(pvar, cpu)) text += " %s\n" % (desc) return text -- Gitee From 0590d2218e3f512d6cd2bc24204a9787474b0ba6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:57 +0800 Subject: [PATCH 0247/1421] Revert "scripts/gdb: fix interrupts display after MCP on x86" This reverts commit 0c2ea2faddb0716d4c4b6e378077370e2850a2f3. --- scripts/gdb/linux/interrupts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gdb/linux/interrupts.py b/scripts/gdb/linux/interrupts.py index 32f7811b4561..ef478e273791 100644 --- a/scripts/gdb/linux/interrupts.py +++ b/scripts/gdb/linux/interrupts.py @@ -142,7 +142,7 @@ def x86_show_interupts(prec): if constants.LX_CONFIG_X86_MCE: text += x86_show_mce(prec, "&mce_exception_count", "MCE", "Machine check exceptions") - text += x86_show_mce(prec, "&mce_poll_count", "MCP", "Machine check polls") + text == x86_show_mce(prec, "&mce_poll_count", "MCP", "Machine check polls") text += show_irq_err_count(prec) -- Gitee From 7ed14f09cda9f69cf64465c5d5281e59799872fd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:58 +0800 Subject: [PATCH 0248/1421] Revert "mm: fix the inaccurate memory statistics issue for users" This reverts commit 0108969848efdda372abb0b6b90e1aecc670b5f5. --- fs/proc/task_mmu.c | 14 +++++++------- include/linux/mm.h | 5 ----- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 8efbe269fe67..c8eaa37d0820 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -42,9 +42,9 @@ void task_mem(struct seq_file *m, struct mm_struct *mm) mm_purg_pages_info(mm, &nr_purg_sum, &nr_purg_pin); #endif - anon = get_mm_counter_sum(mm, MM_ANONPAGES); - file = get_mm_counter_sum(mm, MM_FILEPAGES); - shmem = get_mm_counter_sum(mm, MM_SHMEMPAGES); + anon = get_mm_counter(mm, MM_ANONPAGES); + file = get_mm_counter(mm, MM_FILEPAGES); + shmem = get_mm_counter(mm, MM_SHMEMPAGES); /* * Note: to minimize their overhead, mm maintains hiwater_vm and @@ -65,7 +65,7 @@ void task_mem(struct seq_file *m, struct mm_struct *mm) text = min(text, mm->exec_vm << PAGE_SHIFT); lib = (mm->exec_vm << PAGE_SHIFT) - text; - swap = get_mm_counter_sum(mm, MM_SWAPENTS); + swap = get_mm_counter(mm, MM_SWAPENTS); SEQ_PUT_DEC("VmPeak:\t", hiwater_vm); SEQ_PUT_DEC(" kB\nVmSize:\t", total_vm); SEQ_PUT_DEC(" kB\nVmLck:\t", mm->locked_vm); @@ -102,12 +102,12 @@ unsigned long task_statm(struct mm_struct *mm, unsigned long *shared, unsigned long *text, unsigned long *data, unsigned long *resident) { - *shared = get_mm_counter_sum(mm, MM_FILEPAGES) + - get_mm_counter_sum(mm, MM_SHMEMPAGES); + *shared = get_mm_counter(mm, MM_FILEPAGES) + + get_mm_counter(mm, MM_SHMEMPAGES); *text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK)) >> PAGE_SHIFT; *data = mm->data_vm + mm->stack_vm; - *resident = *shared + get_mm_counter_sum(mm, MM_ANONPAGES); + *resident = *shared + get_mm_counter(mm, MM_ANONPAGES); return mm->total_vm; } diff --git a/include/linux/mm.h b/include/linux/mm.h index 4176fa18f692..6427828111d4 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2577,11 +2577,6 @@ static inline unsigned long get_mm_counter(struct mm_struct *mm, int member) return percpu_counter_read_positive(&mm->rss_stat[member]); } -static inline unsigned long get_mm_counter_sum(struct mm_struct *mm, int member) -{ - return percpu_counter_sum_positive(&mm->rss_stat[member]); -} - void mm_trace_rss_stat(struct mm_struct *mm, int member); static inline void add_mm_counter(struct mm_struct *mm, int member, long value) -- Gitee From bb0d6ec0afa4899a4c01aa34d5371382c385b660 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:58 +0800 Subject: [PATCH 0249/1421] Revert "maple_tree: fix mt_destroy_walk() on root leaf node" This reverts commit 39bff526a0d4b18287f4f9bf6806ee08a1c24e1e. --- lib/maple_tree.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 6f7a2c9cf922..27f55f61d88e 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5270,7 +5270,6 @@ static void mt_destroy_walk(struct maple_enode *enode, struct maple_tree *mt, struct maple_enode *start; if (mte_is_leaf(enode)) { - mte_set_node_dead(enode); node->type = mte_node_type(enode); goto free_leaf; } -- Gitee From 9e86f1a4b475eb0b8cdfa4e367092b89f3b12519 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:58 +0800 Subject: [PATCH 0250/1421] Revert "kallsyms: fix build without execinfo" This reverts commit 94418f2f7255d029daa3bd833841ebbe1e1137ff. --- tools/include/linux/kallsyms.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/include/linux/kallsyms.h b/tools/include/linux/kallsyms.h index f61a01dd7eb7..5a37ccbec54f 100644 --- a/tools/include/linux/kallsyms.h +++ b/tools/include/linux/kallsyms.h @@ -18,7 +18,6 @@ static inline const char *kallsyms_lookup(unsigned long addr, return NULL; } -#ifdef HAVE_BACKTRACE_SUPPORT #include #include static inline void print_ip_sym(const char *loglvl, unsigned long ip) @@ -31,8 +30,5 @@ static inline void print_ip_sym(const char *loglvl, unsigned long ip) free(name); } -#else -static inline void print_ip_sym(const char *loglvl, unsigned long ip) {} -#endif #endif -- Gitee From 54d479629bb202932c7efb72ea2421e2345307e0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:58 +0800 Subject: [PATCH 0251/1421] Revert "Revert "ACPI: battery: negate current when discharging"" This reverts commit f03c9fb946c834f053571c61f7db96f3f9fe1895. --- drivers/acpi/battery.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index e3cbaf3c3bbc..cd3cbb7a36f8 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c @@ -243,10 +243,23 @@ static int acpi_battery_get_property(struct power_supply *psy, break; case POWER_SUPPLY_PROP_CURRENT_NOW: case POWER_SUPPLY_PROP_POWER_NOW: - if (battery->rate_now == ACPI_BATTERY_VALUE_UNKNOWN) + if (battery->rate_now == ACPI_BATTERY_VALUE_UNKNOWN) { ret = -ENODEV; - else - val->intval = battery->rate_now * 1000; + break; + } + + val->intval = battery->rate_now * 1000; + /* + * When discharging, the current should be reported as a + * negative number as per the power supply class interface + * definition. + */ + if (psp == POWER_SUPPLY_PROP_CURRENT_NOW && + (battery->state & ACPI_BATTERY_STATE_DISCHARGING) && + acpi_battery_handle_discharging(battery) + == POWER_SUPPLY_STATUS_DISCHARGING) + val->intval = -val->intval; + break; case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN: -- Gitee From 6eda29f2e6554fa664738bea41366efa7d9a0966 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:58 +0800 Subject: [PATCH 0252/1421] Revert "drm/framebuffer: Acquire internal references on GEM handles" This reverts commit aa8f871eb021b9c2e7d31ccd0051dd4f52dc4489. --- drivers/gpu/drm/drm_framebuffer.c | 31 ++-------------- drivers/gpu/drm/drm_gem.c | 38 ++++++++------------ drivers/gpu/drm/drm_gem_framebuffer_helper.c | 16 +++++---- drivers/gpu/drm/drm_internal.h | 2 +- include/drm/drm_framebuffer.h | 7 ---- 5 files changed, 26 insertions(+), 68 deletions(-) diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c index 4ef05c8c75e6..1955eaeba0ab 100644 --- a/drivers/gpu/drm/drm_framebuffer.c +++ b/drivers/gpu/drm/drm_framebuffer.c @@ -844,23 +844,11 @@ void drm_framebuffer_free(struct kref *kref) int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb, const struct drm_framebuffer_funcs *funcs) { - unsigned int i; int ret; - bool exists; if (WARN_ON_ONCE(fb->dev != dev || !fb->format)) return -EINVAL; - for (i = 0; i < fb->format->num_planes; i++) { - if (drm_WARN_ON_ONCE(dev, fb->internal_flags & DRM_FRAMEBUFFER_HAS_HANDLE_REF(i))) - fb->internal_flags &= ~DRM_FRAMEBUFFER_HAS_HANDLE_REF(i); - if (fb->obj[i]) { - exists = drm_gem_object_handle_get_if_exists_unlocked(fb->obj[i]); - if (exists) - fb->internal_flags |= DRM_FRAMEBUFFER_HAS_HANDLE_REF(i); - } - } - INIT_LIST_HEAD(&fb->filp_head); fb->funcs = funcs; @@ -869,7 +857,7 @@ int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb, ret = __drm_mode_object_add(dev, &fb->base, DRM_MODE_OBJECT_FB, false, drm_framebuffer_free); if (ret) - goto err; + goto out; mutex_lock(&dev->mode_config.fb_lock); dev->mode_config.num_fb++; @@ -877,16 +865,7 @@ int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb, mutex_unlock(&dev->mode_config.fb_lock); drm_mode_object_register(dev, &fb->base); - - return 0; - -err: - for (i = 0; i < fb->format->num_planes; i++) { - if (fb->internal_flags & DRM_FRAMEBUFFER_HAS_HANDLE_REF(i)) { - drm_gem_object_handle_put_unlocked(fb->obj[i]); - fb->internal_flags &= ~DRM_FRAMEBUFFER_HAS_HANDLE_REF(i); - } - } +out: return ret; } EXPORT_SYMBOL(drm_framebuffer_init); @@ -963,12 +942,6 @@ EXPORT_SYMBOL(drm_framebuffer_unregister_private); void drm_framebuffer_cleanup(struct drm_framebuffer *fb) { struct drm_device *dev = fb->dev; - unsigned int i; - - for (i = 0; i < fb->format->num_planes; i++) { - if (fb->internal_flags & DRM_FRAMEBUFFER_HAS_HANDLE_REF(i)) - drm_gem_object_handle_put_unlocked(fb->obj[i]); - } mutex_lock(&dev->mode_config.fb_lock); list_del(&fb->head); diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index a3370c77e949..d7a577483d1f 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -197,34 +197,23 @@ static void drm_gem_object_handle_get(struct drm_gem_object *obj) } /** - * drm_gem_object_handle_get_if_exists_unlocked - acquire reference on user-space handle, if any + * drm_gem_object_handle_get_unlocked - acquire reference on user-space handles * @obj: GEM object * - * Acquires a reference on the GEM buffer object's handle. Required to keep - * the GEM object alive. Call drm_gem_object_handle_put_if_exists_unlocked() - * to release the reference. Does nothing if the buffer object has no handle. - * - * Returns: - * True if a handle exists, or false otherwise + * Acquires a reference on the GEM buffer object's handle. Required + * to keep the GEM object alive. Call drm_gem_object_handle_put_unlocked() + * to release the reference. */ -bool drm_gem_object_handle_get_if_exists_unlocked(struct drm_gem_object *obj) +void drm_gem_object_handle_get_unlocked(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; guard(mutex)(&dev->object_name_lock); - /* - * First ref taken during GEM object creation, if any. Some - * drivers set up internal framebuffers with GEM objects that - * do not have a GEM handle. Hence, this counter can be zero. - */ - if (!obj->handle_count) - return false; - + drm_WARN_ON(dev, !obj->handle_count); /* first ref taken in create-tail helper */ drm_gem_object_handle_get(obj); - - return true; } +EXPORT_SYMBOL(drm_gem_object_handle_get_unlocked); /** * drm_gem_object_handle_free - release resources bound to userspace handles @@ -257,7 +246,7 @@ static void drm_gem_object_exported_dma_buf_free(struct drm_gem_object *obj) } /** - * drm_gem_object_handle_put_unlocked - releases reference on user-space handle + * drm_gem_object_handle_put_unlocked - releases reference on user-space handles * @obj: GEM object * * Releases a reference on the GEM buffer object's handle. Possibly releases @@ -268,14 +257,14 @@ void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) struct drm_device *dev = obj->dev; bool final = false; - if (drm_WARN_ON(dev, READ_ONCE(obj->handle_count) == 0)) + if (WARN_ON(READ_ONCE(obj->handle_count) == 0)) return; /* - * Must bump handle count first as this may be the last - * ref, in which case the object would disappear before - * we checked for a name. - */ + * Must bump handle count first as this may be the last + * ref, in which case the object would disappear before we + * checked for a name + */ mutex_lock(&dev->object_name_lock); if (--obj->handle_count == 0) { @@ -288,6 +277,7 @@ void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) if (final) drm_gem_object_put(obj); } +EXPORT_SYMBOL(drm_gem_object_handle_put_unlocked); /* * Called at device or object close to release the file's diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c index 3bdb6ba37ff4..70cf930b83f4 100644 --- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c +++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c @@ -99,7 +99,7 @@ void drm_gem_fb_destroy(struct drm_framebuffer *fb) unsigned int i; for (i = 0; i < fb->format->num_planes; i++) - drm_gem_object_put(fb->obj[i]); + drm_gem_object_handle_put_unlocked(fb->obj[i]); drm_framebuffer_cleanup(fb); kfree(fb); @@ -182,8 +182,10 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, if (!objs[i]) { drm_dbg_kms(dev, "Failed to lookup GEM object\n"); ret = -ENOENT; - goto err_gem_object_put; + goto err_gem_object_handle_put_unlocked; } + drm_gem_object_handle_get_unlocked(objs[i]); + drm_gem_object_put(objs[i]); min_size = (height - 1) * mode_cmd->pitches[i] + drm_format_info_min_pitch(info, i, width) @@ -193,22 +195,22 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, drm_dbg_kms(dev, "GEM object size (%zu) smaller than minimum size (%u) for plane %d\n", objs[i]->size, min_size, i); - drm_gem_object_put(objs[i]); + drm_gem_object_handle_put_unlocked(objs[i]); ret = -EINVAL; - goto err_gem_object_put; + goto err_gem_object_handle_put_unlocked; } } ret = drm_gem_fb_init(dev, fb, mode_cmd, objs, i, funcs); if (ret) - goto err_gem_object_put; + goto err_gem_object_handle_put_unlocked; return 0; -err_gem_object_put: +err_gem_object_handle_put_unlocked: while (i > 0) { --i; - drm_gem_object_put(objs[i]); + drm_gem_object_handle_put_unlocked(objs[i]); } return ret; } diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index 8d433fe37e8f..dbba0abffae1 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -155,7 +155,7 @@ void drm_sysfs_lease_event(struct drm_device *dev); /* drm_gem.c */ int drm_gem_init(struct drm_device *dev); -bool drm_gem_object_handle_get_if_exists_unlocked(struct drm_gem_object *obj); +void drm_gem_object_handle_get_unlocked(struct drm_gem_object *obj); void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj); int drm_gem_handle_create_tail(struct drm_file *file_priv, struct drm_gem_object *obj, diff --git a/include/drm/drm_framebuffer.h b/include/drm/drm_framebuffer.h index 990259873e1e..0dcc07b68654 100644 --- a/include/drm/drm_framebuffer.h +++ b/include/drm/drm_framebuffer.h @@ -23,7 +23,6 @@ #ifndef __DRM_FRAMEBUFFER_H__ #define __DRM_FRAMEBUFFER_H__ -#include #include #include #include @@ -101,8 +100,6 @@ struct drm_framebuffer_funcs { unsigned num_clips); }; -#define DRM_FRAMEBUFFER_HAS_HANDLE_REF(_i) BIT(0u + (_i)) - /** * struct drm_framebuffer - frame buffer object * @@ -191,10 +188,6 @@ struct drm_framebuffer { * DRM_MODE_FB_MODIFIERS. */ int flags; - /** - * @internal_flags: Framebuffer flags like DRM_FRAMEBUFFER_HAS_HANDLE_REF. - */ - unsigned int internal_flags; /** * @hot_x: X coordinate of the cursor hotspot. Used by the legacy cursor * IOCTL when the driver supports cursor through a DRM_PLANE_TYPE_CURSOR -- Gitee From 22587945db60df58938f8a45e87b4b0ca7af2c89 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:59 +0800 Subject: [PATCH 0253/1421] Revert "Revert "usb: gadget: u_serial: Add null pointer check in gs_start_io"" This reverts commit db242e229cd44e0bc7d656115595a47164d1b42c. --- drivers/usb/gadget/function/u_serial.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index 4925c874316c..7a306b11881f 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -539,16 +539,20 @@ static int gs_alloc_requests(struct usb_ep *ep, struct list_head *head, static int gs_start_io(struct gs_port *port) { struct list_head *head = &port->read_pool; - struct usb_ep *ep = port->port_usb->out; + struct usb_ep *ep; int status; unsigned started; + if (!port->port_usb || !port->port.tty) + return -EIO; + /* Allocate RX and TX I/O buffers. We can't easily do this much * earlier (with GFP_KERNEL) because the requests are coupled to * endpoints, as are the packet sizes we'll be using. Different * configurations may use different endpoints with a given port; * and high speed vs full speed changes packet sizes too. */ + ep = port->port_usb->out; status = gs_alloc_requests(ep, head, gs_read_complete, &port->read_allocated); if (status) -- Gitee From 714bdca40b06e6fffc56640fb8439729e1475978 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:59 +0800 Subject: [PATCH 0254/1421] Revert "usb: gadget: u_serial: Fix race condition in TTY wakeup" This reverts commit ce6c8b927e6430bd4a846ed8a1b1525c83e9ba7b. --- drivers/usb/gadget/function/u_serial.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index 7a306b11881f..729b0472bab0 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -291,8 +291,8 @@ __acquires(&port->port_lock) break; } - if (do_tty_wake) - tty_port_tty_wakeup(&port->port); + if (do_tty_wake && port->port.tty) + tty_wakeup(port->port.tty); return status; } @@ -573,7 +573,7 @@ static int gs_start_io(struct gs_port *port) gs_start_tx(port); /* Unblock any pending writes into our circular buffer, in case * we didn't in gs_start_tx() */ - tty_port_tty_wakeup(&port->port); + tty_wakeup(port->port.tty); } else { /* Free reqs only if we are still connected */ if (port->port_usb) { -- Gitee From 18784e53ef5bdc1876c5f79210b6ad4880b2d087 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:59 +0800 Subject: [PATCH 0255/1421] Revert "drm/gem: Fix race in drm_gem_handle_create_tail()" This reverts commit 49ea97eedfba598f8b0885a815dd5e38c4feed3e. --- drivers/gpu/drm/drm_gem.c | 10 +--------- include/drm/drm_file.h | 3 --- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index d7a577483d1f..b023ff9c3d44 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -289,9 +289,6 @@ drm_gem_object_release_handle(int id, void *ptr, void *data) struct drm_file *file_priv = data; struct drm_gem_object *obj = ptr; - if (drm_WARN_ON(obj->dev, !data)) - return 0; - if (obj->funcs->close) obj->funcs->close(obj, file_priv); @@ -412,7 +409,7 @@ drm_gem_handle_create_tail(struct drm_file *file_priv, idr_preload(GFP_KERNEL); spin_lock(&file_priv->table_lock); - ret = idr_alloc(&file_priv->object_idr, NULL, 1, 0, GFP_NOWAIT); + ret = idr_alloc(&file_priv->object_idr, obj, 1, 0, GFP_NOWAIT); spin_unlock(&file_priv->table_lock); idr_preload_end(); @@ -433,11 +430,6 @@ drm_gem_handle_create_tail(struct drm_file *file_priv, goto err_revoke; } - /* mirrors drm_gem_handle_delete to avoid races */ - spin_lock(&file_priv->table_lock); - obj = idr_replace(&file_priv->object_idr, obj, handle); - WARN_ON(obj != NULL); - spin_unlock(&file_priv->table_lock); *handlep = handle; return 0; diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index 0cb5edd9c467..cc61f6a2b2ad 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -302,9 +302,6 @@ struct drm_file { * * Mapping of mm object handles to object pointers. Used by the GEM * subsystem. Protected by @table_lock. - * - * Note that allocated entries might be NULL as a transient state when - * creating or deleting a handle. */ struct idr object_idr; -- Gitee From 360a951521bb266beefe89f9aab1630b6dbf6aba Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:59 +0800 Subject: [PATCH 0256/1421] Revert "drm/ttm: fix error handling in ttm_buffer_object_transfer" This reverts commit 6de97b0d47aa50580d28e586867599873ee4bd2c. --- drivers/gpu/drm/ttm/ttm_bo_util.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index 64606104551c..0b3f4267130c 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -254,13 +254,6 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo, ret = dma_resv_trylock(&fbo->base.base._resv); WARN_ON(!ret); - ret = dma_resv_reserve_fences(&fbo->base.base._resv, 1); - if (ret) { - dma_resv_unlock(&fbo->base.base._resv); - kfree(fbo); - return ret; - } - if (fbo->base.resource) { ttm_resource_set_bo(fbo->base.resource, &fbo->base); bo->resource = NULL; @@ -269,6 +262,12 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo, fbo->base.bulk_move = NULL; } + ret = dma_resv_reserve_fences(&fbo->base.base._resv, 1); + if (ret) { + kfree(fbo); + return ret; + } + ttm_bo_get(bo); fbo->bo = bo; -- Gitee From bb89682a3d49f77720306e2ae6ec99390ae640db Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:35:59 +0800 Subject: [PATCH 0257/1421] Revert "drm/sched: Increment job count before swapping tail spsc queue" This reverts commit fbd39e39b4a4979decb5c5ec490e81b8b1db5d18. --- include/drm/spsc_queue.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/drm/spsc_queue.h b/include/drm/spsc_queue.h index ee9df8cc67b7..125f096c88cb 100644 --- a/include/drm/spsc_queue.h +++ b/include/drm/spsc_queue.h @@ -70,11 +70,9 @@ static inline bool spsc_queue_push(struct spsc_queue *queue, struct spsc_node *n preempt_disable(); - atomic_inc(&queue->job_count); - smp_mb__after_atomic(); - tail = (struct spsc_node **)atomic_long_xchg(&queue->tail, (long)&node->next); WRITE_ONCE(*tail, node); + atomic_inc(&queue->job_count); /* * In case of first element verify new node will be visible to the consumer -- Gitee From e92415723eda4d7d9750d4e3c102f7df9ea1086f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:00 +0800 Subject: [PATCH 0258/1421] Revert "drm/gem: Acquire references on GEM handles for framebuffers" This reverts commit 49563cb6ca5b41271af7fe57a0c30aba5a76cc00. --- drivers/gpu/drm/drm_gem.c | 44 ++------------------ drivers/gpu/drm/drm_gem_framebuffer_helper.c | 16 ++++--- drivers/gpu/drm/drm_internal.h | 2 - 3 files changed, 11 insertions(+), 51 deletions(-) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index b023ff9c3d44..deb93f78ce34 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -186,35 +186,6 @@ void drm_gem_private_object_fini(struct drm_gem_object *obj) } EXPORT_SYMBOL(drm_gem_private_object_fini); -static void drm_gem_object_handle_get(struct drm_gem_object *obj) -{ - struct drm_device *dev = obj->dev; - - drm_WARN_ON(dev, !mutex_is_locked(&dev->object_name_lock)); - - if (obj->handle_count++ == 0) - drm_gem_object_get(obj); -} - -/** - * drm_gem_object_handle_get_unlocked - acquire reference on user-space handles - * @obj: GEM object - * - * Acquires a reference on the GEM buffer object's handle. Required - * to keep the GEM object alive. Call drm_gem_object_handle_put_unlocked() - * to release the reference. - */ -void drm_gem_object_handle_get_unlocked(struct drm_gem_object *obj) -{ - struct drm_device *dev = obj->dev; - - guard(mutex)(&dev->object_name_lock); - - drm_WARN_ON(dev, !obj->handle_count); /* first ref taken in create-tail helper */ - drm_gem_object_handle_get(obj); -} -EXPORT_SYMBOL(drm_gem_object_handle_get_unlocked); - /** * drm_gem_object_handle_free - release resources bound to userspace handles * @obj: GEM object to clean up. @@ -245,14 +216,8 @@ static void drm_gem_object_exported_dma_buf_free(struct drm_gem_object *obj) } } -/** - * drm_gem_object_handle_put_unlocked - releases reference on user-space handles - * @obj: GEM object - * - * Releases a reference on the GEM buffer object's handle. Possibly releases - * the GEM buffer object and associated dma-buf objects. - */ -void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) +static void +drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; bool final = false; @@ -277,7 +242,6 @@ void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj) if (final) drm_gem_object_put(obj); } -EXPORT_SYMBOL(drm_gem_object_handle_put_unlocked); /* * Called at device or object close to release the file's @@ -399,8 +363,8 @@ drm_gem_handle_create_tail(struct drm_file *file_priv, int ret; WARN_ON(!mutex_is_locked(&dev->object_name_lock)); - - drm_gem_object_handle_get(obj); + if (obj->handle_count++ == 0) + drm_gem_object_get(obj); /* * Get the user-visible handle using idr. Preload and perform diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c index 70cf930b83f4..3bdb6ba37ff4 100644 --- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c +++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c @@ -99,7 +99,7 @@ void drm_gem_fb_destroy(struct drm_framebuffer *fb) unsigned int i; for (i = 0; i < fb->format->num_planes; i++) - drm_gem_object_handle_put_unlocked(fb->obj[i]); + drm_gem_object_put(fb->obj[i]); drm_framebuffer_cleanup(fb); kfree(fb); @@ -182,10 +182,8 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, if (!objs[i]) { drm_dbg_kms(dev, "Failed to lookup GEM object\n"); ret = -ENOENT; - goto err_gem_object_handle_put_unlocked; + goto err_gem_object_put; } - drm_gem_object_handle_get_unlocked(objs[i]); - drm_gem_object_put(objs[i]); min_size = (height - 1) * mode_cmd->pitches[i] + drm_format_info_min_pitch(info, i, width) @@ -195,22 +193,22 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, drm_dbg_kms(dev, "GEM object size (%zu) smaller than minimum size (%u) for plane %d\n", objs[i]->size, min_size, i); - drm_gem_object_handle_put_unlocked(objs[i]); + drm_gem_object_put(objs[i]); ret = -EINVAL; - goto err_gem_object_handle_put_unlocked; + goto err_gem_object_put; } } ret = drm_gem_fb_init(dev, fb, mode_cmd, objs, i, funcs); if (ret) - goto err_gem_object_handle_put_unlocked; + goto err_gem_object_put; return 0; -err_gem_object_handle_put_unlocked: +err_gem_object_put: while (i > 0) { --i; - drm_gem_object_handle_put_unlocked(objs[i]); + drm_gem_object_put(objs[i]); } return ret; } diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index dbba0abffae1..0ef5fc2a61f1 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -155,8 +155,6 @@ void drm_sysfs_lease_event(struct drm_device *dev); /* drm_gem.c */ int drm_gem_init(struct drm_device *dev); -void drm_gem_object_handle_get_unlocked(struct drm_gem_object *obj); -void drm_gem_object_handle_put_unlocked(struct drm_gem_object *obj); int drm_gem_handle_create_tail(struct drm_file *file_priv, struct drm_gem_object *obj, u32 *handlep); -- Gitee From a51f02ae12ca262c10bf9bf10c8eb15fc3c46f46 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:00 +0800 Subject: [PATCH 0259/1421] Revert "wifi: prevent A-MSDU attacks in mesh networks" This reverts commit 6581dfc91af86725b8c6d2590af29f5f03a817f0. --- net/wireless/util.c | 52 ++------------------------------------------- 1 file changed, 2 insertions(+), 50 deletions(-) diff --git a/net/wireless/util.c b/net/wireless/util.c index 24e5af65da58..7acd8d0db61a 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c @@ -826,52 +826,6 @@ bool ieee80211_is_valid_amsdu(struct sk_buff *skb, u8 mesh_hdr) } EXPORT_SYMBOL(ieee80211_is_valid_amsdu); - -/* - * Detects if an MSDU frame was maliciously converted into an A-MSDU - * frame by an adversary. This is done by parsing the received frame - * as if it were a regular MSDU, even though the A-MSDU flag is set. - * - * For non-mesh interfaces, detection involves checking whether the - * payload, when interpreted as an MSDU, begins with a valid RFC1042 - * header. This is done by comparing the A-MSDU subheader's destination - * address to the start of the RFC1042 header. - * - * For mesh interfaces, the MSDU includes a 6-byte Mesh Control field - * and an optional variable-length Mesh Address Extension field before - * the RFC1042 header. The position of the RFC1042 header must therefore - * be calculated based on the mesh header length. - * - * Since this function intentionally parses an A-MSDU frame as an MSDU, - * it only assumes that the A-MSDU subframe header is present, and - * beyond this it performs its own bounds checks under the assumption - * that the frame is instead parsed as a non-aggregated MSDU. - */ -static bool -is_amsdu_aggregation_attack(struct ethhdr *eth, struct sk_buff *skb, - enum nl80211_iftype iftype) -{ - int offset; - - /* Non-mesh case can be directly compared */ - if (iftype != NL80211_IFTYPE_MESH_POINT) - return ether_addr_equal(eth->h_dest, rfc1042_header); - - offset = __ieee80211_get_mesh_hdrlen(eth->h_dest[0]); - if (offset == 6) { - /* Mesh case with empty address extension field */ - return ether_addr_equal(eth->h_source, rfc1042_header); - } else if (offset + ETH_ALEN <= skb->len) { - /* Mesh case with non-empty address extension field */ - u8 temp[ETH_ALEN]; - - skb_copy_bits(skb, offset, temp, ETH_ALEN); - return ether_addr_equal(temp, rfc1042_header); - } - - return false; -} - void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, const u8 *addr, enum nl80211_iftype iftype, const unsigned int extra_headroom, @@ -913,10 +867,8 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, /* the last MSDU has no padding */ if (subframe_len > remaining) goto purge; - /* mitigate A-MSDU aggregation injection attacks, to be - * checked when processing first subframe (offset == 0). - */ - if (offset == 0 && is_amsdu_aggregation_attack(&hdr.eth, skb, iftype)) + /* mitigate A-MSDU aggregation injection attacks */ + if (ether_addr_equal(hdr.eth.h_dest, rfc1042_header)) goto purge; offset += sizeof(struct ethhdr); -- Gitee From a320afe5f1d6fd386d5c481ce90bbc41d6c6c585 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:00 +0800 Subject: [PATCH 0260/1421] Revert "pinctrl: qcom: msm: mark certain pins as invalid for interrupts" This reverts commit ec959184161d94be6989993567be9d3f2ca3b519. --- drivers/pinctrl/qcom/pinctrl-msm.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c index 13dc8bc1d0cf..ed70767ca0f0 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c @@ -1031,25 +1031,6 @@ static bool msm_gpio_needs_dual_edge_parent_workaround(struct irq_data *d, test_bit(d->hwirq, pctrl->skip_wake_irqs); } -static void msm_gpio_irq_init_valid_mask(struct gpio_chip *gc, - unsigned long *valid_mask, - unsigned int ngpios) -{ - struct msm_pinctrl *pctrl = gpiochip_get_data(gc); - const struct msm_pingroup *g; - int i; - - bitmap_fill(valid_mask, ngpios); - - for (i = 0; i < ngpios; i++) { - g = &pctrl->soc->groups[i]; - - if (g->intr_detection_width != 1 && - g->intr_detection_width != 2) - clear_bit(i, valid_mask); - } -} - static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); @@ -1411,7 +1392,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl) girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_bad_irq; girq->parents[0] = pctrl->irq; - girq->init_valid_mask = msm_gpio_irq_init_valid_mask; ret = gpiochip_add_data(&pctrl->chip, pctrl); if (ret) { -- Gitee From 0224ecce4bc1342cff7e2cf2bd1240f7783d6f7f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:00 +0800 Subject: [PATCH 0261/1421] Revert "md/md-bitmap: fix GPF in bitmap_get_stats()" This reverts commit 65883d9149d7fee63d765db4f670f32a6c625d70. --- drivers/md/md-bitmap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index 1f1991634d0a..21decb97bc05 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -2119,7 +2119,8 @@ int md_bitmap_get_stats(struct bitmap *bitmap, struct md_bitmap_stats *stats) if (!bitmap) return -ENOENT; - if (!bitmap->storage.sb_page) + if (!bitmap->mddev->bitmap_info.external && + !bitmap->storage.sb_page) return -EINVAL; sb = kmap_local_page(bitmap->storage.sb_page); stats->sync_size = le64_to_cpu(sb->sync_size); -- Gitee From ae3554acc9aa509b154f7db0d769dc54e5187592 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:00 +0800 Subject: [PATCH 0262/1421] Revert "gre: Fix IPv6 multicast route creation." This reverts commit ae7a0cf546b8effbcea170cbaa42a5888d6a1df4. --- net/ipv6/addrconf.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 74f7f3e8d960..231fa4dc6cde 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3499,9 +3499,11 @@ static void addrconf_gre_config(struct net_device *dev) ASSERT_RTNL(); - idev = addrconf_add_dev(dev); - if (IS_ERR(idev)) + idev = ipv6_find_idev(dev); + if (IS_ERR(idev)) { + pr_debug("%s: add_dev failed\n", __func__); return; + } /* Generate the IPv6 link-local address using addrconf_addr_gen(), * unless we have an IPv4 GRE device not bound to an IP address and @@ -3515,6 +3517,9 @@ static void addrconf_gre_config(struct net_device *dev) } add_v4_addrs(idev); + + if (dev->flags & IFF_POINTOPOINT) + addrconf_add_mroute(dev); } #endif -- Gitee From 812556d880da5c7ae788e5b655481a39122baaee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:01 +0800 Subject: [PATCH 0263/1421] Revert "KVM: SVM: Reject SEV{-ES} intra host migration if vCPU creation is in-flight" This reverts commit 184e8a668dddfcb6050b2a7a2805bc10a7cbde59. --- arch/x86/kvm/svm/sev.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 67c01bd332f6..99e72b8a96ac 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1782,10 +1782,6 @@ static int sev_check_source_vcpus(struct kvm *dst, struct kvm *src) struct kvm_vcpu *src_vcpu; unsigned long i; - if (src->created_vcpus != atomic_read(&src->online_vcpus) || - dst->created_vcpus != atomic_read(&dst->online_vcpus)) - return -EBUSY; - if (!sev_es_guest(src)) return 0; -- Gitee From fd200d47bcfbeec03af46c95dfa00904ae70edb4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:01 +0800 Subject: [PATCH 0264/1421] Revert "KVM: x86/xen: Allow 'out of range' event channel ports in IRQ routing table." This reverts commit 4bafd23db4b0b1de5782863942d24df6bb29e28f. --- arch/x86/kvm/xen.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index c4a158758cb7..0ea6016ad132 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -1737,19 +1737,8 @@ int kvm_xen_setup_evtchn(struct kvm *kvm, { struct kvm_vcpu *vcpu; - /* - * Don't check for the port being within range of max_evtchn_port(). - * Userspace can configure what ever targets it likes; events just won't - * be delivered if/while the target is invalid, just like userspace can - * configure MSIs which target non-existent APICs. - * - * This allow on Live Migration and Live Update, the IRQ routing table - * can be restored *independently* of other things like creating vCPUs, - * without imposing an ordering dependency on userspace. In this - * particular case, the problematic ordering would be with setting the - * Xen 'long mode' flag, which changes max_evtchn_port() to allow 4096 - * instead of 1024 event channels. - */ + if (ue->u.xen_evtchn.port >= max_evtchn_port(kvm)) + return -EINVAL; /* We only support 2 level event channels for now */ if (ue->u.xen_evtchn.priority != KVM_IRQ_ROUTING_XEN_EVTCHN_PRIO_2LEVEL) -- Gitee From 12b988c239a87d3ed041e1258e1baaeb9afd54fd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:01 +0800 Subject: [PATCH 0265/1421] Revert "x86/mce: Make sure CMCI banks are cleared during shutdown on Intel" This reverts commit 1b241e79cb6df5c3fe2479315e368a2bde113505. --- arch/x86/kernel/cpu/mce/intel.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/x86/kernel/cpu/mce/intel.c b/arch/x86/kernel/cpu/mce/intel.c index 0a9ce4f8a88c..f5323551c1a9 100644 --- a/arch/x86/kernel/cpu/mce/intel.c +++ b/arch/x86/kernel/cpu/mce/intel.c @@ -517,7 +517,6 @@ void mce_intel_feature_init(struct cpuinfo_x86 *c) void mce_intel_feature_clear(struct cpuinfo_x86 *c) { intel_clear_lmce(); - cmci_clear(); } bool intel_filter_mce(struct mce *m) -- Gitee From 2adfdbb5585bbcc3a19eb2e0715952be2e69191b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:01 +0800 Subject: [PATCH 0266/1421] Revert "x86/mce: Don't remove sysfs if thresholding sysfs init fails" This reverts commit f5f6c7fc2da6e6205d32100885a151dfcb628899. --- arch/x86/kernel/cpu/mce/core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 106436ec3c00..e103c227acd3 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -2704,9 +2704,15 @@ static int mce_cpu_dead(unsigned int cpu) static int mce_cpu_online(unsigned int cpu) { struct timer_list *t = this_cpu_ptr(&mce_timer); + int ret; mce_device_create(cpu); - mce_threshold_create_device(cpu); + + ret = mce_threshold_create_device(cpu); + if (ret) { + mce_device_remove(cpu); + return ret; + } mce_reenable_cpu(); mce_start_timer(t); return 0; -- Gitee From e75ce732b150bfb50560bb9e7d2ea8644c873ef1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:01 +0800 Subject: [PATCH 0267/1421] Revert "x86/mce/amd: Fix threshold limit reset" This reverts commit 1d8b487e20ae292ed13453af14e2689d68c38c9d. --- arch/x86/kernel/cpu/mce/amd.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/amd.c b/arch/x86/kernel/cpu/mce/amd.c index b89c5a385403..c5cda9ff4c3f 100644 --- a/arch/x86/kernel/cpu/mce/amd.c +++ b/arch/x86/kernel/cpu/mce/amd.c @@ -335,6 +335,7 @@ static void smca_configure(unsigned int bank, unsigned int cpu) struct thresh_restart { struct threshold_block *b; + int reset; int set_lvt_off; int lvt_off; u16 old_limit; @@ -429,13 +430,13 @@ static void threshold_restart_bank(void *_tr) rdmsr(tr->b->address, lo, hi); - /* - * Reset error count and overflow bit. - * This is done during init or after handling an interrupt. - */ - if (hi & MASK_OVERFLOW_HI || tr->set_lvt_off) { - hi &= ~(MASK_ERR_COUNT_HI | MASK_OVERFLOW_HI); - hi |= THRESHOLD_MAX - tr->b->threshold_limit; + if (tr->b->threshold_limit < (hi & THRESHOLD_MAX)) + tr->reset = 1; /* limit cannot be lower than err count */ + + if (tr->reset) { /* reset err count and overflow bit */ + hi = + (hi & ~(MASK_ERR_COUNT_HI | MASK_OVERFLOW_HI)) | + (THRESHOLD_MAX - tr->b->threshold_limit); } else if (tr->old_limit) { /* change limit w/o reset */ int new_count = (hi & THRESHOLD_MAX) + (tr->old_limit - tr->b->threshold_limit); -- Gitee From c4f93bb2360f686a98e9a66277fa5b1393d7fa39 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:02 +0800 Subject: [PATCH 0268/1421] Revert "x86/mce/amd: Add default names for MCA banks and blocks" This reverts commit 541787de21e1783907b5752df34e61fd1e009901. --- arch/x86/kernel/cpu/mce/amd.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/amd.c b/arch/x86/kernel/cpu/mce/amd.c index c5cda9ff4c3f..c267f43de39e 100644 --- a/arch/x86/kernel/cpu/mce/amd.c +++ b/arch/x86/kernel/cpu/mce/amd.c @@ -1049,20 +1049,13 @@ static const char *get_name(unsigned int cpu, unsigned int bank, struct threshol } bank_type = smca_get_bank_type(cpu, bank); + if (bank_type >= N_SMCA_BANK_TYPES) + return NULL; if (b && (bank_type == SMCA_UMC || bank_type == SMCA_UMC_V2)) { if (b->block < ARRAY_SIZE(smca_umc_block_names)) return smca_umc_block_names[b->block]; - } - - if (b && b->block) { - snprintf(buf_mcatype, MAX_MCATYPE_NAME_LEN, "th_block_%u", b->block); - return buf_mcatype; - } - - if (bank_type >= N_SMCA_BANK_TYPES) { - snprintf(buf_mcatype, MAX_MCATYPE_NAME_LEN, "th_bank_%u", bank); - return buf_mcatype; + return NULL; } if (per_cpu(smca_bank_counts, cpu)[bank_type] == 1) -- Gitee From 9681fc78c287a2a6ef12455848b81df40dad3404 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:02 +0800 Subject: [PATCH 0269/1421] Revert "ipmi:msghandler: Fix potential memory corruption in ipmi_create_user()" This reverts commit bce32a1b2041413799bdd01f092694d0c14bd0c3. --- drivers/char/ipmi/ipmi_msghandler.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index db8f1dadaa9f..186f1fee7534 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -1241,7 +1241,7 @@ int ipmi_create_user(unsigned int if_num, } /* Not found, return an error */ rv = -EINVAL; - goto out_unlock; + goto out_kfree; found: if (atomic_add_return(1, &intf->nr_users) > max_users) { @@ -1283,7 +1283,6 @@ int ipmi_create_user(unsigned int if_num, out_kfree: atomic_dec(&intf->nr_users); -out_unlock: srcu_read_unlock(&ipmi_interfaces_srcu, index); vfree(new_user); return rv; -- Gitee From 96d91fb026b8d3b7770cd7abe2fbb1c8f16ff223 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:02 +0800 Subject: [PATCH 0270/1421] Revert "rxrpc: Fix oops due to non-existence of prealloc backlog struct" This reverts commit 54190b1268b4d2c06999b13241bfec89c3be3f88. --- net/rxrpc/call_accept.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c index 773bdb2e37da..65ef58ab7aa0 100644 --- a/net/rxrpc/call_accept.c +++ b/net/rxrpc/call_accept.c @@ -254,9 +254,6 @@ static struct rxrpc_call *rxrpc_alloc_incoming_call(struct rxrpc_sock *rx, unsigned short call_tail, conn_tail, peer_tail; unsigned short call_count, conn_count; - if (!b) - return NULL; - /* #calls >= #conns >= #peers must hold true. */ call_head = smp_load_acquire(&b->call_backlog_head); call_tail = b->call_backlog_tail; -- Gitee From bbb4ba39d46dcff8ae9403d80875fd7b5903a092 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:02 +0800 Subject: [PATCH 0271/1421] Revert "Bluetooth: HCI: Set extended advertising data synchronously" This reverts commit ff97add63a2a34b6c0c2c0179ca3b7490a3b9806. --- net/bluetooth/hci_event.c | 36 +++++++ net/bluetooth/hci_sync.c | 213 ++++++++++++++------------------------ 2 files changed, 116 insertions(+), 133 deletions(-) diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 8516ba62c545..8d4ab29e3794 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -2139,6 +2139,40 @@ static u8 hci_cc_set_adv_param(struct hci_dev *hdev, void *data, return rp->status; } +static u8 hci_cc_set_ext_adv_param(struct hci_dev *hdev, void *data, + struct sk_buff *skb) +{ + struct hci_rp_le_set_ext_adv_params *rp = data; + struct hci_cp_le_set_ext_adv_params *cp; + struct adv_info *adv_instance; + + bt_dev_dbg(hdev, "status 0x%2.2x", rp->status); + + if (rp->status) + return rp->status; + + cp = hci_sent_cmd_data(hdev, HCI_OP_LE_SET_EXT_ADV_PARAMS); + if (!cp) + return rp->status; + + hci_dev_lock(hdev); + hdev->adv_addr_type = cp->own_addr_type; + if (!cp->handle) { + /* Store in hdev for instance 0 */ + hdev->adv_tx_power = rp->tx_power; + } else { + adv_instance = hci_find_adv_instance(hdev, cp->handle); + if (adv_instance) + adv_instance->tx_power = rp->tx_power; + } + /* Update adv data as tx power is known now */ + hci_update_adv_data(hdev, cp->handle); + + hci_dev_unlock(hdev); + + return rp->status; +} + static u8 hci_cc_read_rssi(struct hci_dev *hdev, void *data, struct sk_buff *skb) { @@ -4119,6 +4153,8 @@ static const struct hci_cc { HCI_CC(HCI_OP_LE_READ_NUM_SUPPORTED_ADV_SETS, hci_cc_le_read_num_adv_sets, sizeof(struct hci_rp_le_read_num_supported_adv_sets)), + HCI_CC(HCI_OP_LE_SET_EXT_ADV_PARAMS, hci_cc_set_ext_adv_param, + sizeof(struct hci_rp_le_set_ext_adv_params)), HCI_CC_STATUS(HCI_OP_LE_SET_EXT_ADV_ENABLE, hci_cc_le_set_ext_adv_enable), HCI_CC_STATUS(HCI_OP_LE_SET_ADV_SET_RAND_ADDR, diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index e1df1c62017d..71736537cc6e 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -1224,129 +1224,9 @@ static int hci_set_adv_set_random_addr_sync(struct hci_dev *hdev, u8 instance, sizeof(cp), &cp, HCI_CMD_TIMEOUT); } -static int -hci_set_ext_adv_params_sync(struct hci_dev *hdev, struct adv_info *adv, - const struct hci_cp_le_set_ext_adv_params *cp, - struct hci_rp_le_set_ext_adv_params *rp) -{ - struct sk_buff *skb; - - skb = __hci_cmd_sync(hdev, HCI_OP_LE_SET_EXT_ADV_PARAMS, sizeof(*cp), - cp, HCI_CMD_TIMEOUT); - - /* If command return a status event, skb will be set to -ENODATA */ - if (skb == ERR_PTR(-ENODATA)) - return 0; - - if (IS_ERR(skb)) { - bt_dev_err(hdev, "Opcode 0x%4.4x failed: %ld", - HCI_OP_LE_SET_EXT_ADV_PARAMS, PTR_ERR(skb)); - return PTR_ERR(skb); - } - - if (skb->len != sizeof(*rp)) { - bt_dev_err(hdev, "Invalid response length for 0x%4.4x: %u", - HCI_OP_LE_SET_EXT_ADV_PARAMS, skb->len); - kfree_skb(skb); - return -EIO; - } - - memcpy(rp, skb->data, sizeof(*rp)); - kfree_skb(skb); - - if (!rp->status) { - hdev->adv_addr_type = cp->own_addr_type; - if (!cp->handle) { - /* Store in hdev for instance 0 */ - hdev->adv_tx_power = rp->tx_power; - } else if (adv) { - adv->tx_power = rp->tx_power; - } - } - - return rp->status; -} - -static int hci_set_ext_adv_data_sync(struct hci_dev *hdev, u8 instance) -{ - struct { - struct hci_cp_le_set_ext_adv_data cp; - u8 data[HCI_MAX_EXT_AD_LENGTH]; - } pdu; - u8 len; - struct adv_info *adv = NULL; - int err; - - memset(&pdu, 0, sizeof(pdu)); - - if (instance) { - adv = hci_find_adv_instance(hdev, instance); - if (!adv || !adv->adv_data_changed) - return 0; - } - - len = eir_create_adv_data(hdev, instance, pdu.data); - - pdu.cp.length = len; - pdu.cp.handle = instance; - pdu.cp.operation = LE_SET_ADV_DATA_OP_COMPLETE; - pdu.cp.frag_pref = LE_SET_ADV_DATA_NO_FRAG; - - err = __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_EXT_ADV_DATA, - sizeof(pdu.cp) + len, &pdu.cp, - HCI_CMD_TIMEOUT); - if (err) - return err; - - /* Update data if the command succeed */ - if (adv) { - adv->adv_data_changed = false; - } else { - memcpy(hdev->adv_data, pdu.data, len); - hdev->adv_data_len = len; - } - - return 0; -} - -static int hci_set_adv_data_sync(struct hci_dev *hdev, u8 instance) -{ - struct hci_cp_le_set_adv_data cp; - u8 len; - - memset(&cp, 0, sizeof(cp)); - - len = eir_create_adv_data(hdev, instance, cp.data); - - /* There's nothing to do if the data hasn't changed */ - if (hdev->adv_data_len == len && - memcmp(cp.data, hdev->adv_data, len) == 0) - return 0; - - memcpy(hdev->adv_data, cp.data, sizeof(cp.data)); - hdev->adv_data_len = len; - - cp.length = len; - - return __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_ADV_DATA, - sizeof(cp), &cp, HCI_CMD_TIMEOUT); -} - -int hci_update_adv_data_sync(struct hci_dev *hdev, u8 instance) -{ - if (!hci_dev_test_flag(hdev, HCI_LE_ENABLED)) - return 0; - - if (ext_adv_capable(hdev)) - return hci_set_ext_adv_data_sync(hdev, instance); - - return hci_set_adv_data_sync(hdev, instance); -} - int hci_setup_ext_adv_instance_sync(struct hci_dev *hdev, u8 instance) { struct hci_cp_le_set_ext_adv_params cp; - struct hci_rp_le_set_ext_adv_params rp; bool connectable; u32 flags; bdaddr_t random_addr; @@ -1453,12 +1333,8 @@ int hci_setup_ext_adv_instance_sync(struct hci_dev *hdev, u8 instance) cp.secondary_phy = HCI_ADV_PHY_1M; } - err = hci_set_ext_adv_params_sync(hdev, adv, &cp, &rp); - if (err) - return err; - - /* Update adv data as tx power is known now */ - err = hci_set_ext_adv_data_sync(hdev, cp.handle); + err = __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_EXT_ADV_PARAMS, + sizeof(cp), &cp, HCI_CMD_TIMEOUT); if (err) return err; @@ -1983,6 +1859,82 @@ int hci_le_terminate_big_sync(struct hci_dev *hdev, u8 handle, u8 reason) sizeof(cp), &cp, HCI_CMD_TIMEOUT); } +static int hci_set_ext_adv_data_sync(struct hci_dev *hdev, u8 instance) +{ + struct { + struct hci_cp_le_set_ext_adv_data cp; + u8 data[HCI_MAX_EXT_AD_LENGTH]; + } pdu; + u8 len; + struct adv_info *adv = NULL; + int err; + + memset(&pdu, 0, sizeof(pdu)); + + if (instance) { + adv = hci_find_adv_instance(hdev, instance); + if (!adv || !adv->adv_data_changed) + return 0; + } + + len = eir_create_adv_data(hdev, instance, pdu.data); + + pdu.cp.length = len; + pdu.cp.handle = instance; + pdu.cp.operation = LE_SET_ADV_DATA_OP_COMPLETE; + pdu.cp.frag_pref = LE_SET_ADV_DATA_NO_FRAG; + + err = __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_EXT_ADV_DATA, + sizeof(pdu.cp) + len, &pdu.cp, + HCI_CMD_TIMEOUT); + if (err) + return err; + + /* Update data if the command succeed */ + if (adv) { + adv->adv_data_changed = false; + } else { + memcpy(hdev->adv_data, pdu.data, len); + hdev->adv_data_len = len; + } + + return 0; +} + +static int hci_set_adv_data_sync(struct hci_dev *hdev, u8 instance) +{ + struct hci_cp_le_set_adv_data cp; + u8 len; + + memset(&cp, 0, sizeof(cp)); + + len = eir_create_adv_data(hdev, instance, cp.data); + + /* There's nothing to do if the data hasn't changed */ + if (hdev->adv_data_len == len && + memcmp(cp.data, hdev->adv_data, len) == 0) + return 0; + + memcpy(hdev->adv_data, cp.data, sizeof(cp.data)); + hdev->adv_data_len = len; + + cp.length = len; + + return __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_ADV_DATA, + sizeof(cp), &cp, HCI_CMD_TIMEOUT); +} + +int hci_update_adv_data_sync(struct hci_dev *hdev, u8 instance) +{ + if (!hci_dev_test_flag(hdev, HCI_LE_ENABLED)) + return 0; + + if (ext_adv_capable(hdev)) + return hci_set_ext_adv_data_sync(hdev, instance); + + return hci_set_adv_data_sync(hdev, instance); +} + int hci_schedule_adv_instance_sync(struct hci_dev *hdev, u8 instance, bool force) { @@ -6301,7 +6253,6 @@ static int hci_le_ext_directed_advertising_sync(struct hci_dev *hdev, struct hci_conn *conn) { struct hci_cp_le_set_ext_adv_params cp; - struct hci_rp_le_set_ext_adv_params rp; int err; bdaddr_t random_addr; u8 own_addr_type; @@ -6343,12 +6294,8 @@ static int hci_le_ext_directed_advertising_sync(struct hci_dev *hdev, if (err) return err; - err = hci_set_ext_adv_params_sync(hdev, NULL, &cp, &rp); - if (err) - return err; - - /* Update adv data as tx power is known now */ - err = hci_set_ext_adv_data_sync(hdev, cp.handle); + err = __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_EXT_ADV_PARAMS, + sizeof(cp), &cp, HCI_CMD_TIMEOUT); if (err) return err; -- Gitee From 00c59a697b5663b1f23e6f662f85fd55cba8d5c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:03 +0800 Subject: [PATCH 0272/1421] Revert "perf: build: Setup PKG_CONFIG_LIBDIR for cross compilation" This reverts commit 3cf1f9549f372616b8481c1eedcde44be4a50119. --- tools/build/feature/Makefile | 25 +------------------------ tools/perf/Makefile.perf | 27 +-------------------------- 2 files changed, 2 insertions(+), 50 deletions(-) diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index 4f869fff28fe..dad79ede4e0a 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile @@ -80,30 +80,7 @@ FILES= \ FILES := $(addprefix $(OUTPUT),$(FILES)) -# Some distros provide the command $(CROSS_COMPILE)pkg-config for -# searching packges installed with Multiarch. Use it for cross -# compilation if it is existed. -ifneq (, $(shell which $(CROSS_COMPILE)pkg-config)) - PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config -else - PKG_CONFIG ?= pkg-config - - # PKG_CONFIG_PATH or PKG_CONFIG_LIBDIR, alongside PKG_CONFIG_SYSROOT_DIR - # for modified system root, are required for the cross compilation. - # If these PKG_CONFIG environment variables are not set, Multiarch library - # paths are used instead. - ifdef CROSS_COMPILE - ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH)$(PKG_CONFIG_SYSROOT_DIR),) - CROSS_ARCH = $(shell $(CC) -dumpmachine) - PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/lib/$(CROSS_ARCH)/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/lib/$(CROSS_ARCH)/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/ - export PKG_CONFIG_LIBDIR - endif - endif -endif +PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config all: $(FILES) diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index ff72a0d9dea0..b97224a8a65b 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -188,32 +188,7 @@ HOSTLD ?= ld HOSTAR ?= ar CLANG ?= clang -# Some distros provide the command $(CROSS_COMPILE)pkg-config for -# searching packges installed with Multiarch. Use it for cross -# compilation if it is existed. -ifneq (, $(shell which $(CROSS_COMPILE)pkg-config)) - PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config -else - PKG_CONFIG ?= pkg-config - - # PKG_CONFIG_PATH or PKG_CONFIG_LIBDIR, alongside PKG_CONFIG_SYSROOT_DIR - # for modified system root, is required for the cross compilation. - # If these PKG_CONFIG environment variables are not set, Multiarch library - # paths are used instead. - ifdef CROSS_COMPILE - ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH)$(PKG_CONFIG_SYSROOT_DIR),) - CROSS_ARCH = $(shell $(CC) -dumpmachine) - PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/lib/$(CROSS_ARCH)/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/lib/$(CROSS_ARCH)/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/ - PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/ - export PKG_CONFIG_LIBDIR - $(warning Missing PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for cross compilation,) - $(warning set PKG_CONFIG_LIBDIR for using Multiarch libs.) - endif - endif -endif +PKG_CONFIG = $(CROSS_COMPILE)pkg-config RM = rm -f LN = ln -f -- Gitee From 87332028d4c765825070c7dcd8df64f06d51e105 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:03 +0800 Subject: [PATCH 0273/1421] Revert "maple_tree: fix MA_STATE_PREALLOC flag in mas_preallocate()" This reverts commit 0ad588fd8f6f58263032a4dc97dcd0fa1c650744. --- lib/maple_tree.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 27f55f61d88e..a4a2592413b1 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5497,7 +5497,7 @@ int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp) /* At this point, we are at the leaf node that needs to be altered. */ /* Exact fit, no nodes needed. */ if (wr_mas.r_min == mas->index && wr_mas.r_max == mas->last) - goto set_flag; + return 0; mas_wr_end_piv(&wr_mas); node_size = mas_wr_new_end(&wr_mas); @@ -5506,10 +5506,10 @@ int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp) if (node_size == wr_mas.node_end) { /* reuse node */ if (!mt_in_rcu(mas->tree)) - goto set_flag; + return 0; /* shifting boundary */ if (wr_mas.offset_end - mas->offset == 1) - goto set_flag; + return 0; } if (node_size >= mt_slots[wr_mas.type]) { @@ -5528,13 +5528,10 @@ int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp) /* node store, slot store needs one node */ ask_now: - mas->mas_flags &= ~MA_STATE_PREALLOC; mas_node_count_gfp(mas, request, gfp); - if (likely(!mas_is_err(mas))) { -set_flag: - mas->mas_flags |= MA_STATE_PREALLOC; + mas->mas_flags |= MA_STATE_PREALLOC; + if (likely(!mas_is_err(mas))) return 0; - } mas_set_alloc_req(mas, 0); ret = xa_err(mas->node); -- Gitee From 5b4e724c5805cfc0b4df2fd7669c0c7dfacf195e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:03 +0800 Subject: [PATCH 0274/1421] Revert "rxrpc: Fix bug due to prealloc collision" This reverts commit 71be21e1c71f77d7e53202988cc5a411a95d513d. --- net/rxrpc/call_accept.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c index 65ef58ab7aa0..0f5a1d77b890 100644 --- a/net/rxrpc/call_accept.c +++ b/net/rxrpc/call_accept.c @@ -149,7 +149,6 @@ static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx, id_in_use: write_unlock(&rx->call_lock); - rxrpc_prefail_call(call, RXRPC_CALL_LOCAL_ERROR, -EBADSLT); rxrpc_cleanup_call(call); _leave(" = -EBADSLT"); return -EBADSLT; -- Gitee From c54e4a9d9dfd6a45cc4967c6c772eec782e813ac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:03 +0800 Subject: [PATCH 0275/1421] Revert "net/sched: Abort __tc_modify_qdisc if parent class does not exist" This reverts commit 1737856923cd76030fe7dbdbd952a7f6ce83b1d9. --- net/sched/sch_api.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index a300e8c1b53a..282423106f15 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -334,22 +334,17 @@ struct Qdisc *qdisc_lookup_rcu(struct net_device *dev, u32 handle) return q; } -static struct Qdisc *qdisc_leaf(struct Qdisc *p, u32 classid, - struct netlink_ext_ack *extack) +static struct Qdisc *qdisc_leaf(struct Qdisc *p, u32 classid) { unsigned long cl; const struct Qdisc_class_ops *cops = p->ops->cl_ops; - if (cops == NULL) { - NL_SET_ERR_MSG(extack, "Parent qdisc is not classful"); - return ERR_PTR(-EOPNOTSUPP); - } + if (cops == NULL) + return NULL; cl = cops->find(p, classid); - if (cl == 0) { - NL_SET_ERR_MSG(extack, "Specified class not found"); - return ERR_PTR(-ENOENT); - } + if (cl == 0) + return NULL; return cops->leaf(p, cl); } @@ -1502,7 +1497,7 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, NL_SET_ERR_MSG(extack, "Failed to find qdisc with specified classid"); return -ENOENT; } - q = qdisc_leaf(p, clid, extack); + q = qdisc_leaf(p, clid); } else if (dev_ingress_queue(dev)) { q = rtnl_dereference(dev_ingress_queue(dev)->qdisc_sleeping); } @@ -1513,8 +1508,6 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n, NL_SET_ERR_MSG(extack, "Cannot find specified qdisc on specified device"); return -ENOENT; } - if (IS_ERR(q)) - return PTR_ERR(q); if (tcm->tcm_handle && q->handle != tcm->tcm_handle) { NL_SET_ERR_MSG(extack, "Invalid handle"); @@ -1608,9 +1601,7 @@ static int tc_modify_qdisc(struct sk_buff *skb, struct nlmsghdr *n, NL_SET_ERR_MSG(extack, "Failed to find specified qdisc"); return -ENOENT; } - q = qdisc_leaf(p, clid, extack); - if (IS_ERR(q)) - return PTR_ERR(q); + q = qdisc_leaf(p, clid); } else if (dev_ingress_queue_create(dev)) { q = rtnl_dereference(dev_ingress_queue(dev)->qdisc_sleeping); } -- Gitee From 82c9656a158ad12f0fd63be4486e2302e9556122 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:03 +0800 Subject: [PATCH 0276/1421] Revert "atm: clip: Fix NULL pointer dereference in vcc_sendmsg()" This reverts commit 312215e74de23bea52f8a0f0120470887f4b723c. --- net/atm/clip.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/net/atm/clip.c b/net/atm/clip.c index 53d62361ae46..936b9558be4b 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c @@ -632,16 +632,8 @@ static void atmarpd_close(struct atm_vcc *vcc) module_put(THIS_MODULE); } -static int atmarpd_send(struct atm_vcc *vcc, struct sk_buff *skb) -{ - atm_return_tx(vcc, skb); - dev_kfree_skb_any(skb); - return 0; -} - static const struct atmdev_ops atmarpd_dev_ops = { - .close = atmarpd_close, - .send = atmarpd_send + .close = atmarpd_close }; -- Gitee From 486b6dfa2caf0833be96d71b32a75c461859ff77 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:04 +0800 Subject: [PATCH 0277/1421] Revert "atm: clip: Fix infinite recursive call of clip_push()." This reverts commit 1c99e22c8dafc4376fe36b607ff9a8649dbbe983. --- net/atm/clip.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/net/atm/clip.c b/net/atm/clip.c index 936b9558be4b..14b485f725d0 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c @@ -429,8 +429,6 @@ static int clip_mkip(struct atm_vcc *vcc, int timeout) if (!vcc->push) return -EBADFD; - if (vcc->user_back) - return -EINVAL; clip_vcc = kmalloc(sizeof(struct clip_vcc), GFP_KERNEL); if (!clip_vcc) return -ENOMEM; -- Gitee From 3684b8dfc75e1c2517cb979b0c97853d86828d95 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:04 +0800 Subject: [PATCH 0278/1421] Revert "atm: clip: Fix memory leak of struct clip_vcc." This reverts commit 7de47dbbed1c6073306bcb49c58be9a3fdb74dbd. --- net/atm/clip.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/net/atm/clip.c b/net/atm/clip.c index 14b485f725d0..8059b7d1fb93 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c @@ -645,9 +645,6 @@ static struct atm_dev atmarpd_dev = { static int atm_init_atmarp(struct atm_vcc *vcc) { - if (vcc->push == clip_push) - return -EINVAL; - mutex_lock(&atmarpd_lock); if (atmarpd) { mutex_unlock(&atmarpd_lock); @@ -672,7 +669,6 @@ static int atm_init_atmarp(struct atm_vcc *vcc) static int clip_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) { struct atm_vcc *vcc = ATM_SD(sock); - struct sock *sk = sock->sk; int err = 0; switch (cmd) { @@ -693,18 +689,14 @@ static int clip_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) err = clip_create(arg); break; case ATMARPD_CTRL: - lock_sock(sk); err = atm_init_atmarp(vcc); if (!err) { sock->state = SS_CONNECTED; __module_get(THIS_MODULE); } - release_sock(sk); break; case ATMARP_MKIP: - lock_sock(sk); err = clip_mkip(vcc, arg); - release_sock(sk); break; case ATMARP_SETENTRY: err = clip_setentry(vcc, (__force __be32)arg); -- Gitee From 7326ecc3c5ea2f14964f7db56a9b60e7af53457f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:04 +0800 Subject: [PATCH 0279/1421] Revert "atm: clip: Fix potential null-ptr-deref in to_atmarpd()." This reverts commit bb3ae249930ff2897ef8e3fd3b1b2348fef61791. --- net/atm/clip.c | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/net/atm/clip.c b/net/atm/clip.c index 8059b7d1fb93..511467bb7fe4 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c @@ -45,8 +45,7 @@ #include static struct net_device *clip_devs; -static struct atm_vcc __rcu *atmarpd; -static DEFINE_MUTEX(atmarpd_lock); +static struct atm_vcc *atmarpd; static struct timer_list idle_timer; static const struct neigh_ops clip_neigh_ops; @@ -54,35 +53,24 @@ static int to_atmarpd(enum atmarp_ctrl_type type, int itf, __be32 ip) { struct sock *sk; struct atmarp_ctrl *ctrl; - struct atm_vcc *vcc; struct sk_buff *skb; - int err = 0; pr_debug("(%d)\n", type); - - rcu_read_lock(); - vcc = rcu_dereference(atmarpd); - if (!vcc) { - err = -EUNATCH; - goto unlock; - } + if (!atmarpd) + return -EUNATCH; skb = alloc_skb(sizeof(struct atmarp_ctrl), GFP_ATOMIC); - if (!skb) { - err = -ENOMEM; - goto unlock; - } + if (!skb) + return -ENOMEM; ctrl = skb_put(skb, sizeof(struct atmarp_ctrl)); ctrl->type = type; ctrl->itf_num = itf; ctrl->ip = ip; - atm_force_charge(vcc, skb->truesize); + atm_force_charge(atmarpd, skb->truesize); - sk = sk_atm(vcc); + sk = sk_atm(atmarpd); skb_queue_tail(&sk->sk_receive_queue, skb); sk->sk_data_ready(sk); -unlock: - rcu_read_unlock(); - return err; + return 0; } static void link_vcc(struct clip_vcc *clip_vcc, struct atmarp_entry *entry) @@ -619,12 +607,10 @@ static void atmarpd_close(struct atm_vcc *vcc) { pr_debug("\n"); - mutex_lock(&atmarpd_lock); - RCU_INIT_POINTER(atmarpd, NULL); - mutex_unlock(&atmarpd_lock); - - synchronize_rcu(); + rtnl_lock(); + atmarpd = NULL; skb_queue_purge(&sk_atm(vcc)->sk_receive_queue); + rtnl_unlock(); pr_debug("(done)\n"); module_put(THIS_MODULE); @@ -645,15 +631,15 @@ static struct atm_dev atmarpd_dev = { static int atm_init_atmarp(struct atm_vcc *vcc) { - mutex_lock(&atmarpd_lock); + rtnl_lock(); if (atmarpd) { - mutex_unlock(&atmarpd_lock); + rtnl_unlock(); return -EADDRINUSE; } mod_timer(&idle_timer, jiffies + CLIP_CHECK_INTERVAL * HZ); - rcu_assign_pointer(atmarpd, vcc); + atmarpd = vcc; set_bit(ATM_VF_META, &vcc->flags); set_bit(ATM_VF_READY, &vcc->flags); /* allow replies and avoid getting closed if signaling dies */ @@ -662,7 +648,7 @@ static int atm_init_atmarp(struct atm_vcc *vcc) vcc->push = NULL; vcc->pop = NULL; /* crash */ vcc->push_oam = NULL; /* crash */ - mutex_unlock(&atmarpd_lock); + rtnl_unlock(); return 0; } -- Gitee From 418b0f73afccdb9f47e122058d09d6f780f503c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:04 +0800 Subject: [PATCH 0280/1421] Revert "net: phy: smsc: Fix link failure in forced mode with Auto-MDIX" This reverts commit cc8135f67292f50860622fab80a301fe67e835e8. --- drivers/net/phy/smsc.c | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index 4ca813c00947..1ce0ca8048ac 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c @@ -155,29 +155,10 @@ static int smsc_phy_reset(struct phy_device *phydev) static int lan87xx_config_aneg(struct phy_device *phydev) { - u8 mdix_ctrl; - int val; int rc; + int val; - /* When auto-negotiation is disabled (forced mode), the PHY's - * Auto-MDIX will continue toggling the TX/RX pairs. - * - * To establish a stable link, we must select a fixed MDI mode. - * If the user has not specified a fixed MDI mode (i.e., mdix_ctrl is - * 'auto'), we default to ETH_TP_MDI. This choice of a ETH_TP_MDI mode - * mirrors the behavior the hardware would exhibit if the AUTOMDIX_EN - * strap were configured for a fixed MDI connection. - */ - if (phydev->autoneg == AUTONEG_DISABLE) { - if (phydev->mdix_ctrl == ETH_TP_MDI_AUTO) - mdix_ctrl = ETH_TP_MDI; - else - mdix_ctrl = phydev->mdix_ctrl; - } else { - mdix_ctrl = phydev->mdix_ctrl; - } - - switch (mdix_ctrl) { + switch (phydev->mdix_ctrl) { case ETH_TP_MDI: val = SPECIAL_CTRL_STS_OVRRD_AMDIX_; break; @@ -203,7 +184,7 @@ static int lan87xx_config_aneg(struct phy_device *phydev) rc |= val; phy_write(phydev, SPECIAL_CTRL_STS, rc); - phydev->mdix = mdix_ctrl; + phydev->mdix = phydev->mdix_ctrl; return genphy_config_aneg(phydev); } -- Gitee From 2e7dc9de69caff68d71da1c49c696db48f482a4c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:04 +0800 Subject: [PATCH 0281/1421] Revert "net: phy: smsc: Force predictable MDI-X state on LAN87xx" This reverts commit 93ca0b812ccb17d93aa2f00843fe67c12a17e635. --- drivers/net/phy/smsc.c | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index 1ce0ca8048ac..b7f9c4649652 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c @@ -262,33 +262,6 @@ int lan87xx_read_status(struct phy_device *phydev) } EXPORT_SYMBOL_GPL(lan87xx_read_status); -static int lan87xx_phy_config_init(struct phy_device *phydev) -{ - int rc; - - /* The LAN87xx PHY's initial MDI-X mode is determined by the AUTOMDIX_EN - * hardware strap, but the driver cannot read the strap's status. This - * creates an unpredictable initial state. - * - * To ensure consistent and reliable behavior across all boards, - * override the strap configuration on initialization and force the PHY - * into a known state with Auto-MDIX enabled, which is the expected - * default for modern hardware. - */ - rc = phy_modify(phydev, SPECIAL_CTRL_STS, - SPECIAL_CTRL_STS_OVRRD_AMDIX_ | - SPECIAL_CTRL_STS_AMDIX_ENABLE_ | - SPECIAL_CTRL_STS_AMDIX_STATE_, - SPECIAL_CTRL_STS_OVRRD_AMDIX_ | - SPECIAL_CTRL_STS_AMDIX_ENABLE_); - if (rc < 0) - return rc; - - phydev->mdix_ctrl = ETH_TP_MDI_AUTO; - - return smsc_phy_config_init(phydev); -} - static int lan874x_phy_config_init(struct phy_device *phydev) { u16 val; @@ -724,7 +697,7 @@ static struct phy_driver smsc_phy_driver[] = { /* basic functions */ .read_status = lan87xx_read_status, - .config_init = lan87xx_phy_config_init, + .config_init = smsc_phy_config_init, .soft_reset = smsc_phy_reset, .config_aneg = lan87xx_config_aneg, -- Gitee From 81285869170152595279e6aa767a4139a6b04db6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:05 +0800 Subject: [PATCH 0282/1421] Revert "net: phy: smsc: Fix Auto-MDIX configuration when disabled by strap" This reverts commit b5178c462a2acbceeb70473bbcfdc5fa7f02e7be. --- drivers/net/phy/smsc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index b7f9c4649652..c88edb19d2e7 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c @@ -167,8 +167,7 @@ static int lan87xx_config_aneg(struct phy_device *phydev) SPECIAL_CTRL_STS_AMDIX_STATE_; break; case ETH_TP_MDI_AUTO: - val = SPECIAL_CTRL_STS_OVRRD_AMDIX_ | - SPECIAL_CTRL_STS_AMDIX_ENABLE_; + val = SPECIAL_CTRL_STS_AMDIX_ENABLE_; break; default: return genphy_config_aneg(phydev); -- Gitee From 9a6d84cccb775fd9e63c3d9aef56af8683733d54 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:05 +0800 Subject: [PATCH 0283/1421] Revert "net: stmmac: Fix interrupt handling for level-triggered mode in DWC_XGMAC2" This reverts commit f7e89337624a41a639f9de88ed024813fced29de. --- .../ethernet/stmicro/stmmac/dwxgmac2_dma.c | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c index 05ea74e93793..dd2ab6185c40 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c @@ -364,17 +364,19 @@ static int dwxgmac2_dma_interrupt(struct stmmac_priv *priv, } /* TX/RX NORMAL interrupts */ - if (likely(intr_status & XGMAC_RI)) { - u64_stats_update_begin(&stats->syncp); - u64_stats_inc(&stats->rx_normal_irq_n[chan]); - u64_stats_update_end(&stats->syncp); - ret |= handle_rx; - } - if (likely(intr_status & (XGMAC_TI | XGMAC_TBU))) { - u64_stats_update_begin(&stats->syncp); - u64_stats_inc(&stats->tx_normal_irq_n[chan]); - u64_stats_update_end(&stats->syncp); - ret |= handle_tx; + if (likely(intr_status & XGMAC_NIS)) { + if (likely(intr_status & XGMAC_RI)) { + u64_stats_update_begin(&stats->syncp); + u64_stats_inc(&stats->rx_normal_irq_n[chan]); + u64_stats_update_end(&stats->syncp); + ret |= handle_rx; + } + if (likely(intr_status & (XGMAC_TI | XGMAC_TBU))) { + u64_stats_update_begin(&stats->syncp); + u64_stats_inc(&stats->tx_normal_irq_n[chan]); + u64_stats_update_end(&stats->syncp); + ret |= handle_tx; + } } /* Clear interrupts */ -- Gitee From bfda9c03538d4dd1af103a53e6fcb5e222360689 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:05 +0800 Subject: [PATCH 0284/1421] Revert "vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local`" This reverts commit 84e8c99d0765358d26ab473277bfc063efecc456. --- net/vmw_vsock/af_vsock.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index f20b117e5255..58b7404a0da0 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -2436,8 +2436,6 @@ static long vsock_dev_do_ioctl(struct file *filp, cid = vsock_registered_transport_cid(&transport_g2h); if (cid == VMADDR_CID_ANY) cid = vsock_registered_transport_cid(&transport_h2g); - if (cid == VMADDR_CID_ANY) - cid = vsock_registered_transport_cid(&transport_local); if (put_user(cid, p) != 0) retval = -EFAULT; -- Gitee From f6a7d79cdcd7b124b823405844d054c4363c0e1b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:05 +0800 Subject: [PATCH 0285/1421] Revert "vsock: Fix transport_* TOCTOU" This reverts commit 6a26a24868936925bd3d079a7087ae843f19fda6. --- net/vmw_vsock/af_vsock.c | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 58b7404a0da0..dc62b30c0be5 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -406,8 +406,6 @@ EXPORT_SYMBOL_GPL(vsock_enqueue_accept); static bool vsock_use_local_transport(unsigned int remote_cid) { - lockdep_assert_held(&vsock_register_mutex); - if (!transport_local) return false; @@ -465,8 +463,6 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) remote_flags = vsk->remote_addr.svm_flags; - mutex_lock(&vsock_register_mutex); - switch (sk->sk_type) { case SOCK_DGRAM: new_transport = transport_dgram; @@ -482,15 +478,12 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) new_transport = transport_h2g; break; default: - ret = -ESOCKTNOSUPPORT; - goto err; + return -ESOCKTNOSUPPORT; } if (vsk->transport) { - if (vsk->transport == new_transport) { - ret = 0; - goto err; - } + if (vsk->transport == new_transport) + return 0; /* transport->release() must be called with sock lock acquired. * This path can only be taken during vsock_connect(), where we @@ -514,16 +507,8 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) /* We increase the module refcnt to prevent the transport unloading * while there are open sockets assigned to it. */ - if (!new_transport || !try_module_get(new_transport->module)) { - ret = -ENODEV; - goto err; - } - - /* It's safe to release the mutex after a successful try_module_get(). - * Whichever transport `new_transport` points at, it won't go away until - * the last module_put() below or in vsock_deassign_transport(). - */ - mutex_unlock(&vsock_register_mutex); + if (!new_transport || !try_module_get(new_transport->module)) + return -ENODEV; if (sk->sk_type == SOCK_SEQPACKET) { if (!new_transport->seqpacket_allow || @@ -542,9 +527,6 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) vsk->transport = new_transport; return 0; -err: - mutex_unlock(&vsock_register_mutex); - return ret; } EXPORT_SYMBOL_GPL(vsock_assign_transport); -- Gitee From 94e10fab69750d421531393493176bec67b30c9d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:05 +0800 Subject: [PATCH 0286/1421] Revert "vsock: Fix transport_{g2h,h2g} TOCTOU" This reverts commit 7cdceb1b9285a9f805b4c4f75975b5f7b0456cfa. --- net/vmw_vsock/af_vsock.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index dc62b30c0be5..f8f1a49689da 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -530,25 +530,9 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) } EXPORT_SYMBOL_GPL(vsock_assign_transport); -/* - * Provide safe access to static transport_{h2g,g2h,dgram,local} callbacks. - * Otherwise we may race with module removal. Do not use on `vsk->transport`. - */ -static u32 vsock_registered_transport_cid(const struct vsock_transport **transport) -{ - u32 cid = VMADDR_CID_ANY; - - mutex_lock(&vsock_register_mutex); - if (*transport) - cid = (*transport)->get_local_cid(); - mutex_unlock(&vsock_register_mutex); - - return cid; -} - bool vsock_find_cid(unsigned int cid) { - if (cid == vsock_registered_transport_cid(&transport_g2h)) + if (transport_g2h && cid == transport_g2h->get_local_cid()) return true; if (transport_h2g && cid == VMADDR_CID_HOST) @@ -2407,17 +2391,18 @@ static long vsock_dev_do_ioctl(struct file *filp, unsigned int cmd, void __user *ptr) { u32 __user *p = ptr; + u32 cid = VMADDR_CID_ANY; int retval = 0; - u32 cid; switch (cmd) { case IOCTL_VM_SOCKETS_GET_LOCAL_CID: /* To be compatible with the VMCI behavior, we prioritize the * guest CID instead of well-know host CID (VMADDR_CID_HOST). */ - cid = vsock_registered_transport_cid(&transport_g2h); - if (cid == VMADDR_CID_ANY) - cid = vsock_registered_transport_cid(&transport_h2g); + if (transport_g2h) + cid = transport_g2h->get_local_cid(); + else if (transport_h2g) + cid = transport_h2g->get_local_cid(); if (put_user(cid, p) != 0) retval = -EFAULT; -- Gitee From 501089677d6f888ad1a67e0fb49b6567a9e42815 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:06 +0800 Subject: [PATCH 0287/1421] Revert "tcp: Correct signedness in skb remaining space calculation" This reverts commit 11ce857aefaf94ee7e410c8aee0ec18bb56f3fb0. --- net/ipv4/tcp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index a4bbe959d1e2..ff22060f9145 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1132,7 +1132,7 @@ int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size) goto do_error; while (msg_data_left(msg)) { - int copy = 0; + ssize_t copy = 0; skb = tcp_write_queue_tail(sk); if (skb) -- Gitee From 56a76252db65e3e2df25c2aa14247d0770a53dac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:06 +0800 Subject: [PATCH 0288/1421] Revert "tipc: Fix use-after-free in tipc_conn_close()." This reverts commit ec5eae15c611d4a0f75b33c39bb97aecd8786652. --- net/tipc/topsrv.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/net/tipc/topsrv.c b/net/tipc/topsrv.c index ffe577bf6b51..8ee0c07d00e9 100644 --- a/net/tipc/topsrv.c +++ b/net/tipc/topsrv.c @@ -704,10 +704,8 @@ static void tipc_topsrv_stop(struct net *net) for (id = 0; srv->idr_in_use; id++) { con = idr_find(&srv->conn_idr, id); if (con) { - conn_get(con); spin_unlock_bh(&srv->idr_lock); tipc_conn_close(con); - conn_put(con); spin_lock_bh(&srv->idr_lock); } } -- Gitee From d1bef2915acddc14e50acfc85f5b25e5b428855c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:06 +0800 Subject: [PATCH 0289/1421] Revert "vsock: fix `vsock_proto` declaration" This reverts commit e9259716b89653d8321bbe9b36dc474b27af6dc7. --- include/net/af_vsock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h index 1820b87b8b7f..f8b09a82f62e 100644 --- a/include/net/af_vsock.h +++ b/include/net/af_vsock.h @@ -236,8 +236,8 @@ int __vsock_dgram_recvmsg(struct socket *sock, struct msghdr *msg, int vsock_dgram_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, int flags); -extern struct proto vsock_proto; #ifdef CONFIG_BPF_SYSCALL +extern struct proto vsock_proto; int vsock_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore); void __init vsock_bpf_build_proto(void); #else -- Gitee From f71c0e778db7553aca48b48487d0d6c0b9d6934a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:06 +0800 Subject: [PATCH 0290/1421] Revert "netlink: Fix wraparounds of sk->sk_rmem_alloc." This reverts commit b89c28d150cdcf1db22557e1b3d148b17ab87f2c. --- net/netlink/af_netlink.c | 81 ++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 49 deletions(-) diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 6476640b6b1e..4aa2cbe9d6fa 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -387,6 +387,7 @@ static void netlink_skb_set_owner_r(struct sk_buff *skb, struct sock *sk) WARN_ON(skb->sk != NULL); skb->sk = sk; skb->destructor = netlink_skb_destructor; + atomic_add(skb->truesize, &sk->sk_rmem_alloc); sk_mem_charge(sk, skb->truesize); } @@ -1222,48 +1223,41 @@ static struct sk_buff *netlink_alloc_large_skb(unsigned int size, int netlink_attachskb(struct sock *sk, struct sk_buff *skb, long *timeo, struct sock *ssk) { - DECLARE_WAITQUEUE(wait, current); struct netlink_sock *nlk; - unsigned int rmem; nlk = nlk_sk(sk); - rmem = atomic_add_return(skb->truesize, &sk->sk_rmem_alloc); - if ((rmem == skb->truesize || rmem < READ_ONCE(sk->sk_rcvbuf)) && - !test_bit(NETLINK_S_CONGESTED, &nlk->state)) { - netlink_skb_set_owner_r(skb, sk); - return 0; - } - - atomic_sub(skb->truesize, &sk->sk_rmem_alloc); - - if (!*timeo) { - if (!ssk || netlink_is_kernel(ssk)) - netlink_overrun(sk); - sock_put(sk); - kfree_skb(skb); - return -EAGAIN; - } + if ((atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || + test_bit(NETLINK_S_CONGESTED, &nlk->state))) { + DECLARE_WAITQUEUE(wait, current); + if (!*timeo) { + if (!ssk || netlink_is_kernel(ssk)) + netlink_overrun(sk); + sock_put(sk); + kfree_skb(skb); + return -EAGAIN; + } - __set_current_state(TASK_INTERRUPTIBLE); - add_wait_queue(&nlk->wait, &wait); - rmem = atomic_read(&sk->sk_rmem_alloc); + __set_current_state(TASK_INTERRUPTIBLE); + add_wait_queue(&nlk->wait, &wait); - if (((rmem && rmem + skb->truesize > READ_ONCE(sk->sk_rcvbuf)) || - test_bit(NETLINK_S_CONGESTED, &nlk->state)) && - !sock_flag(sk, SOCK_DEAD)) - *timeo = schedule_timeout(*timeo); + if ((atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || + test_bit(NETLINK_S_CONGESTED, &nlk->state)) && + !sock_flag(sk, SOCK_DEAD)) + *timeo = schedule_timeout(*timeo); - __set_current_state(TASK_RUNNING); - remove_wait_queue(&nlk->wait, &wait); - sock_put(sk); + __set_current_state(TASK_RUNNING); + remove_wait_queue(&nlk->wait, &wait); + sock_put(sk); - if (signal_pending(current)) { - kfree_skb(skb); - return sock_intr_errno(*timeo); + if (signal_pending(current)) { + kfree_skb(skb); + return sock_intr_errno(*timeo); + } + return 1; } - - return 1; + netlink_skb_set_owner_r(skb, sk); + return 0; } static int __netlink_sendskb(struct sock *sk, struct sk_buff *skb) @@ -1323,7 +1317,6 @@ static int netlink_unicast_kernel(struct sock *sk, struct sk_buff *skb, ret = -ECONNREFUSED; if (nlk->netlink_rcv != NULL) { ret = skb->len; - atomic_add(skb->truesize, &sk->sk_rmem_alloc); netlink_skb_set_owner_r(skb, sk); NETLINK_CB(skb).sk = ssk; netlink_deliver_tap_kernel(sk, ssk, skb); @@ -1400,19 +1393,13 @@ EXPORT_SYMBOL_GPL(netlink_strict_get_check); static int netlink_broadcast_deliver(struct sock *sk, struct sk_buff *skb) { struct netlink_sock *nlk = nlk_sk(sk); - unsigned int rmem, rcvbuf; - rmem = atomic_add_return(skb->truesize, &sk->sk_rmem_alloc); - rcvbuf = READ_ONCE(sk->sk_rcvbuf); - - if ((rmem != skb->truesize || rmem <= rcvbuf) && + if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf && !test_bit(NETLINK_S_CONGESTED, &nlk->state)) { netlink_skb_set_owner_r(skb, sk); __netlink_sendskb(sk, skb); - return rmem > (rcvbuf >> 1); + return atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1); } - - atomic_sub(skb->truesize, &sk->sk_rmem_alloc); return -1; } @@ -2203,7 +2190,6 @@ static int netlink_dump(struct sock *sk, bool lock_taken) struct module *module; int err = -ENOBUFS; int alloc_min_size; - unsigned int rmem; int alloc_size; if (!lock_taken) @@ -2213,6 +2199,9 @@ static int netlink_dump(struct sock *sk, bool lock_taken) goto errout_skb; } + if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) + goto errout_skb; + /* NLMSG_GOODSIZE is small to avoid high order allocations being * required, but it makes sense to _attempt_ a 16K bytes allocation * to reduce number of system calls on dump operations, if user @@ -2235,12 +2224,6 @@ static int netlink_dump(struct sock *sk, bool lock_taken) if (!skb) goto errout_skb; - rmem = atomic_add_return(skb->truesize, &sk->sk_rmem_alloc); - if (rmem >= READ_ONCE(sk->sk_rcvbuf)) { - atomic_sub(skb->truesize, &sk->sk_rmem_alloc); - goto errout_skb; - } - /* Trim skb to allocated size. User is expected to provide buffer as * large as max(min_dump_alloc, 16KiB (mac_recvmsg_len capped at * netlink_recvmsg())). dump will pack as many smaller messages as -- Gitee From baf8230f566120abafefee160cf303ddab8f07b9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:07 +0800 Subject: [PATCH 0291/1421] Revert "fix proc_sys_compare() handling of in-lookup dentries" This reverts commit 7b16917f9c820f83b7ae71d79f55dcd68c439b3c. --- fs/proc/inode.c | 2 +- fs/proc/proc_sysctl.c | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 4b3ae7e0def3..897c71077a0f 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c @@ -52,7 +52,7 @@ static void proc_evict_inode(struct inode *inode) head = ei->sysctl; if (head) { - WRITE_ONCE(ei->sysctl, NULL); + RCU_INIT_POINTER(ei->sysctl, NULL); proc_sys_evict_inode(inode, head); } } diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index b7d6bc5c1ce9..071a71eb1a2d 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -920,21 +920,17 @@ static int proc_sys_compare(const struct dentry *dentry, struct ctl_table_header *head; struct inode *inode; + /* Although proc doesn't have negative dentries, rcu-walk means + * that inode here can be NULL */ + /* AV: can it, indeed? */ + inode = d_inode_rcu(dentry); + if (!inode) + return 1; if (name->len != len) return 1; if (memcmp(name->name, str, len)) return 1; - - // false positive is fine here - we'll recheck anyway - if (d_in_lookup(dentry)) - return 0; - - inode = d_inode_rcu(dentry); - // we just might have run into dentry in the middle of __dentry_kill() - if (!inode) - return 1; - - head = READ_ONCE(PROC_I(inode)->sysctl); + head = rcu_dereference(PROC_I(inode)->sysctl); return !head || !sysctl_is_seen(head); } -- Gitee From 7155632a74fbb7daf15b8a43deadc25d612f79af Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:07 +0800 Subject: [PATCH 0292/1421] Revert "pinctrl: amd: Clear GPIO debounce for suspend" This reverts commit f087d17e2bd2f754c1d04de4f790c6d4bd5bcae7. --- drivers/pinctrl/pinctrl-amd.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c index ba38173d3ed3..75bff325a425 100644 --- a/drivers/pinctrl/pinctrl-amd.c +++ b/drivers/pinctrl/pinctrl-amd.c @@ -933,17 +933,6 @@ static int amd_gpio_suspend_hibernate_common(struct device *dev, bool is_suspend pin, is_suspend ? "suspend" : "hibernate"); } - /* - * debounce enabled over suspend has shown issues with a GPIO - * being unable to wake the system, as we're only interested in - * the actual wakeup event, clear it. - */ - if (gpio_dev->saved_regs[i] & (DB_CNTRl_MASK << DB_CNTRL_OFF)) { - amd_gpio_set_debounce(gpio_dev, pin, 0); - pm_pr_dbg("Clearing debounce for GPIO #%d during %s.\n", - pin, is_suspend ? "suspend" : "hibernate"); - } - raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); } -- Gitee From c599acffb9f07811dc65f8e8b62b7f8ec66a7a27 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:07 +0800 Subject: [PATCH 0293/1421] Revert "Bluetooth: hci_event: Fix not marking Broadcast Sink BIS as connected" This reverts commit 61ba6c2fd5877b3bc17dc29b7d10c7a9a7776dee. --- net/bluetooth/hci_event.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 8d4ab29e3794..4029330e29a9 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -6916,10 +6916,7 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, bis->iso_qos.bcast.in.sdu = le16_to_cpu(ev->max_pdu); if (!ev->status) { - bis->state = BT_CONNECTED; set_bit(HCI_CONN_BIG_SYNC, &bis->flags); - hci_debugfs_create_conn(bis); - hci_conn_add_sysfs(bis); hci_iso_setup_path(bis); } } -- Gitee From 8cc7cc90c99e78e7fa9f0cdcc6b0327b03094747 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:07 +0800 Subject: [PATCH 0294/1421] Revert "Bluetooth: hci_sync: Fix not disabling advertising instance" This reverts commit 415f616fd57d59e2b455146a34e865f22ed8eb06. --- net/bluetooth/hci_sync.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 71736537cc6e..d602e9d8eff4 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -1247,7 +1247,7 @@ int hci_setup_ext_adv_instance_sync(struct hci_dev *hdev, u8 instance) * Command Disallowed error, so we must first disable the * instance if it is active. */ - if (adv) { + if (adv && !adv->pending) { err = hci_disable_ext_adv_instance_sync(hdev, instance); if (err) return err; -- Gitee From a158f09496c66006d9c5b01600fa6d2dd66c4134 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:07 +0800 Subject: [PATCH 0295/1421] Revert "ASoC: cs35l56: probe() should fail if the device ID is not recognized" This reverts commit 8cccaa2ea06f898163c89f09cf363a0d50743d95. --- sound/soc/codecs/cs35l56-shared.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/cs35l56-shared.c b/sound/soc/codecs/cs35l56-shared.c index 25ee7477709e..d3db89c93b33 100644 --- a/sound/soc/codecs/cs35l56-shared.c +++ b/sound/soc/codecs/cs35l56-shared.c @@ -661,7 +661,7 @@ int cs35l56_hw_init(struct cs35l56_base *cs35l56_base) break; default: dev_err(cs35l56_base->dev, "Unknown device %x\n", devid); - return -ENODEV; + return ret; } ret = regmap_read(cs35l56_base->regmap, CS35L56_DSP_RESTRICT_STS1, &secured); -- Gitee From 29b663719f6e1b528036422288f320e8f3180e5f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:08 +0800 Subject: [PATCH 0296/1421] Revert "perf: Revert to requiring CAP_SYS_ADMIN for uprobes" This reverts commit a1d3b8013934f1870545914c1bcee8f4c6d48b4d. --- kernel/events/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 3a33d9c1b1b2..5c6da8bd03b1 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -10473,7 +10473,7 @@ static int perf_uprobe_event_init(struct perf_event *event) if (event->attr.type != perf_uprobe.type) return -ENOENT; - if (!capable(CAP_SYS_ADMIN)) + if (!perfmon_capable()) return -EACCES; /* -- Gitee From e63ffde6977f93162f5e50e686ec195f23808d1c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:08 +0800 Subject: [PATCH 0297/1421] Revert "perf/core: Fix the WARN_ON_ONCE is out of lock protected region" This reverts commit 4b8b68977008c8ae582fb6354adb9924cb4777de. --- kernel/events/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 5c6da8bd03b1..873b17545717 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -873,6 +873,8 @@ static void perf_cgroup_switch(struct task_struct *task) if (READ_ONCE(cpuctx->cgrp) == NULL) return; + WARN_ON_ONCE(cpuctx->ctx.nr_cgroups == 0); + cgrp = perf_cgroup_from_task(task, NULL); if (READ_ONCE(cpuctx->cgrp) == cgrp) return; @@ -884,8 +886,6 @@ static void perf_cgroup_switch(struct task_struct *task) if (READ_ONCE(cpuctx->cgrp) == NULL) return; - WARN_ON_ONCE(cpuctx->ctx.nr_cgroups == 0); - perf_ctx_disable(&cpuctx->ctx, true); ctx_sched_out(&cpuctx->ctx, EVENT_ALL|EVENT_CGROUP); -- Gitee From a584fad34214777cdcd84fbc968ff30c280652f0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:08 +0800 Subject: [PATCH 0298/1421] Revert "ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode" This reverts commit ef7af3e85a4ed87c558312ba3d55878ce970cdae. --- sound/soc/fsl/fsl_asrc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index 72dc23c994bc..b793263291dc 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -517,8 +517,7 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair, bool use_ideal_rate) regmap_update_bits(asrc->regmap, REG_ASRCTR, ASRCTR_ATSi_MASK(index), ASRCTR_ATS(index)); regmap_update_bits(asrc->regmap, REG_ASRCTR, - ASRCTR_IDRi_MASK(index) | ASRCTR_USRi_MASK(index), - ASRCTR_USR(index)); + ASRCTR_USRi_MASK(index), 0); /* Set the input and output clock sources */ regmap_update_bits(asrc->regmap, REG_ASRCSR, -- Gitee From 8776283a5a813a8fe24e2edb84321460d722f7cb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:08 +0800 Subject: [PATCH 0299/1421] Revert "drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling" This reverts commit cd128446d0858e52856f17f72981f494cf6bec3b. --- drivers/gpu/drm/exynos/exynos7_drm_decon.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c index 5f8e5e87d7cd..0156a5e94435 100644 --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c @@ -601,10 +601,6 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id) if (!ctx->drm_dev) goto out; - /* check if crtc and vblank have been initialized properly */ - if (!drm_dev_has_vblank(ctx->drm_dev)) - goto out; - if (!ctx->i80_if) { drm_crtc_handle_vblank(&ctx->crtc->base); -- Gitee From 028d0f96fcea9b28bb9dd8e1f0b6317ac82f8a61 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:08 +0800 Subject: [PATCH 0300/1421] Revert "eventpoll: don't decrement ep refcount while still holding the ep mutex" This reverts commit 12402c7f64ce3ea1d8482aed29bb237c7c4d9eb0. --- fs/eventpoll.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 31b32d9e7bbc..cde5a15b129f 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -772,7 +772,7 @@ static bool __ep_remove(struct eventpoll *ep, struct epitem *epi, bool force) call_rcu(&epi->rcu, epi_rcu_free); percpu_counter_dec(&ep->user->epoll_watches); - return true; + return ep_refcount_dec_and_test(ep); } /* @@ -780,14 +780,14 @@ static bool __ep_remove(struct eventpoll *ep, struct epitem *epi, bool force) */ static void ep_remove_safe(struct eventpoll *ep, struct epitem *epi) { - if (__ep_remove(ep, epi, false)) - WARN_ON_ONCE(ep_refcount_dec_and_test(ep)); + WARN_ON_ONCE(__ep_remove(ep, epi, false)); } static void ep_clear_and_put(struct eventpoll *ep) { struct rb_node *rbp, *next; struct epitem *epi; + bool dispose; /* We need to release all tasks waiting for these file */ if (waitqueue_active(&ep->poll_wait)) @@ -820,8 +820,10 @@ static void ep_clear_and_put(struct eventpoll *ep) cond_resched(); } + dispose = ep_refcount_dec_and_test(ep); mutex_unlock(&ep->mtx); - if (ep_refcount_dec_and_test(ep)) + + if (dispose) ep_free(ep); } @@ -1001,7 +1003,7 @@ void eventpoll_release_file(struct file *file) dispose = __ep_remove(ep, epi, true); mutex_unlock(&ep->mtx); - if (dispose && ep_refcount_dec_and_test(ep)) + if (dispose) ep_free(ep); goto again; } -- Gitee From d84483bf13cda13ea053adc9e59635b510bca22b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:09 +0800 Subject: [PATCH 0301/1421] Revert "Linux 6.6.98" This reverts commit 3dd5f04e7a58b45457a1a6e790f06e8d2aff5a95. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0bb5c23c6406..9d5c08363637 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 98 +SUBLEVEL = 97 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From 996721d4d8b368be24e8d449e9de245e66480db2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:09 +0800 Subject: [PATCH 0302/1421] Revert "x86/CPU/AMD: Properly check the TSA microcode" This reverts commit bc2a2aee08de9ef82c0476ee5c311af618858077. --- arch/x86/kernel/cpu/amd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index f6690df70b43..1180689a2390 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -547,7 +547,6 @@ static bool amd_check_tsa_microcode(void) p.ext_fam = c->x86 - 0xf; p.model = c->x86_model; - p.ext_model = c->x86_model >> 4; p.stepping = c->x86_stepping; if (cpu_has(c, X86_FEATURE_ZEN3) || -- Gitee From d5ce5bc0de0e37742a74b10128c223a7fd7429bd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:09 +0800 Subject: [PATCH 0303/1421] Revert "Linux 6.6.97" This reverts commit 3a5ecc8d78d2f0b8b7f728421243041a269f5802. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9d5c08363637..038fc8e0982b 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 97 +SUBLEVEL = 96 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From 9798a8eeb899249801bf52d93973f16c9537fc2b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:09 +0800 Subject: [PATCH 0304/1421] Revert "f2fs: fix to avoid use-after-free issue in f2fs_filemap_fault" This reverts commit 6740c249ae70e5c225b9f11b65c9760c92b64eb4. --- fs/f2fs/file.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index fa94dc66ce5f..82b5400ec702 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -50,7 +50,6 @@ static void f2fs_zero_post_eof_page(struct inode *inode, loff_t new_size) static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) { struct inode *inode = file_inode(vmf->vma->vm_file); - vm_flags_t flags = vmf->vma->vm_flags; vm_fault_t ret; ret = filemap_fault(vmf); @@ -58,7 +57,7 @@ static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) f2fs_update_iostat(F2FS_I_SB(inode), inode, APP_MAPPED_READ_IO, F2FS_BLKSIZE); - trace_f2fs_filemap_fault(inode, vmf->pgoff, flags, ret); + trace_f2fs_filemap_fault(inode, vmf->pgoff, vmf->vma->vm_flags, ret); return ret; } -- Gitee From 70bc3f0f39584a8c9f38d239e71406e11ed11e89 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:09 +0800 Subject: [PATCH 0305/1421] Revert "x86/process: Move the buffer clearing before MONITOR" This reverts commit 1795cafec78d20015c3267ce4e84011864f5c96d. --- arch/x86/include/asm/mwait.h | 25 ++++++++++--------------- arch/x86/kernel/process.c | 16 ++++------------ 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index ae7a83e3f743..e45d0dac7bb7 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -44,6 +44,8 @@ static __always_inline void __monitorx(const void *eax, unsigned long ecx, static __always_inline void __mwait(unsigned long eax, unsigned long ecx) { + x86_idle_clear_cpu_buffers(); + /* "mwait %eax, %ecx;" */ asm volatile(".byte 0x0f, 0x01, 0xc9;" :: "a" (eax), "c" (ecx)); @@ -87,6 +89,7 @@ static __always_inline void __mwaitx(unsigned long eax, unsigned long ebx, static __always_inline void __sti_mwait(unsigned long eax, unsigned long ecx) { + x86_idle_clear_cpu_buffers(); /* "mwait %eax, %ecx;" */ asm volatile("sti; .byte 0x0f, 0x01, 0xc9;" @@ -105,29 +108,21 @@ static __always_inline void __sti_mwait(unsigned long eax, unsigned long ecx) */ static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx) { - if (need_resched()) - return; - - x86_idle_clear_cpu_buffers(); - if (static_cpu_has_bug(X86_BUG_MONITOR) || !current_set_polling_and_test()) { const void *addr = ¤t_thread_info()->flags; alternative_input("", "clflush (%[addr])", X86_BUG_CLFLUSH_MONITOR, [addr] "a" (addr)); __monitor(addr, 0, 0); - if (need_resched()) - goto out; - - if (ecx & 1) { - __mwait(eax, ecx); - } else { - __sti_mwait(eax, ecx); - raw_local_irq_disable(); + if (!need_resched()) { + if (ecx & 1) { + __mwait(eax, ecx); + } else { + __sti_mwait(eax, ecx); + raw_local_irq_disable(); + } } } - -out: current_clr_polling(); } diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index e3c26cc45f70..33c235e9d0d3 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -928,24 +928,16 @@ static int prefer_mwait_c1_over_halt(const struct cpuinfo_x86 *c) */ static __cpuidle void mwait_idle(void) { - if (need_resched()) - return; - - x86_idle_clear_cpu_buffers(); - if (!current_set_polling_and_test()) { const void *addr = ¤t_thread_info()->flags; alternative_input("", "clflush (%[addr])", X86_BUG_CLFLUSH_MONITOR, [addr] "a" (addr)); __monitor(addr, 0, 0); - if (need_resched()) - goto out; - - __sti_mwait(0, 0); - raw_local_irq_disable(); + if (!need_resched()) { + __sti_mwait(0, 0); + raw_local_irq_disable(); + } } - -out: __current_clr_polling(); } -- Gitee From d1379c1a75bd05cca4e6997c29b16471addeef9c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:10 +0800 Subject: [PATCH 0306/1421] Revert "x86/microcode/AMD: Add TSA microcode SHAs" This reverts commit a995fe1b4b513ab64c91deb003f26af43cc3e175. --- arch/x86/kernel/cpu/microcode/amd_shas.c | 112 ----------------------- 1 file changed, 112 deletions(-) diff --git a/arch/x86/kernel/cpu/microcode/amd_shas.c b/arch/x86/kernel/cpu/microcode/amd_shas.c index 1fd349cfc802..2a1655b1fdd8 100644 --- a/arch/x86/kernel/cpu/microcode/amd_shas.c +++ b/arch/x86/kernel/cpu/microcode/amd_shas.c @@ -231,13 +231,6 @@ static const struct patch_digest phashes[] = { 0x0d,0x5b,0x65,0x34,0x69,0xb2,0x62,0x21, } }, - { 0xa0011d7, { - 0x35,0x07,0xcd,0x40,0x94,0xbc,0x81,0x6b, - 0xfc,0x61,0x56,0x1a,0xe2,0xdb,0x96,0x12, - 0x1c,0x1c,0x31,0xb1,0x02,0x6f,0xe5,0xd2, - 0xfe,0x1b,0x04,0x03,0x2c,0x8f,0x4c,0x36, - } - }, { 0xa001223, { 0xfb,0x32,0x5f,0xc6,0x83,0x4f,0x8c,0xb8, 0xa4,0x05,0xf9,0x71,0x53,0x01,0x16,0xc4, @@ -301,13 +294,6 @@ static const struct patch_digest phashes[] = { 0xc0,0xcd,0x33,0xf2,0x8d,0xf9,0xef,0x59, } }, - { 0xa00123b, { - 0xef,0xa1,0x1e,0x71,0xf1,0xc3,0x2c,0xe2, - 0xc3,0xef,0x69,0x41,0x7a,0x54,0xca,0xc3, - 0x8f,0x62,0x84,0xee,0xc2,0x39,0xd9,0x28, - 0x95,0xa7,0x12,0x49,0x1e,0x30,0x71,0x72, - } - }, { 0xa00820c, { 0xa8,0x0c,0x81,0xc0,0xa6,0x00,0xe7,0xf3, 0x5f,0x65,0xd3,0xb9,0x6f,0xea,0x93,0x63, @@ -315,13 +301,6 @@ static const struct patch_digest phashes[] = { 0xe1,0x3b,0x8d,0xb2,0xf8,0x22,0x03,0xe2, } }, - { 0xa00820d, { - 0xf9,0x2a,0xc0,0xf4,0x9e,0xa4,0x87,0xa4, - 0x7d,0x87,0x00,0xfd,0xab,0xda,0x19,0xca, - 0x26,0x51,0x32,0xc1,0x57,0x91,0xdf,0xc1, - 0x05,0xeb,0x01,0x7c,0x5a,0x95,0x21,0xb7, - } - }, { 0xa10113e, { 0x05,0x3c,0x66,0xd7,0xa9,0x5a,0x33,0x10, 0x1b,0xf8,0x9c,0x8f,0xed,0xfc,0xa7,0xa0, @@ -343,13 +322,6 @@ static const struct patch_digest phashes[] = { 0xf1,0x5e,0xb0,0xde,0xb4,0x98,0xae,0xc4, } }, - { 0xa10114c, { - 0x9e,0xb6,0xa2,0xd9,0x87,0x38,0xc5,0x64, - 0xd8,0x88,0xfa,0x78,0x98,0xf9,0x6f,0x74, - 0x39,0x90,0x1b,0xa5,0xcf,0x5e,0xb4,0x2a, - 0x02,0xff,0xd4,0x8c,0x71,0x8b,0xe2,0xc0, - } - }, { 0xa10123e, { 0x03,0xb9,0x2c,0x76,0x48,0x93,0xc9,0x18, 0xfb,0x56,0xfd,0xf7,0xe2,0x1d,0xca,0x4d, @@ -371,13 +343,6 @@ static const struct patch_digest phashes[] = { 0x1b,0x7d,0x64,0x9d,0x4b,0x53,0x13,0x75, } }, - { 0xa10124c, { - 0x29,0xea,0xf1,0x2c,0xb2,0xe4,0xef,0x90, - 0xa4,0xcd,0x1d,0x86,0x97,0x17,0x61,0x46, - 0xfc,0x22,0xcb,0x57,0x75,0x19,0xc8,0xcc, - 0x0c,0xf5,0xbc,0xac,0x81,0x9d,0x9a,0xd2, - } - }, { 0xa108108, { 0xed,0xc2,0xec,0xa1,0x15,0xc6,0x65,0xe9, 0xd0,0xef,0x39,0xaa,0x7f,0x55,0x06,0xc6, @@ -385,13 +350,6 @@ static const struct patch_digest phashes[] = { 0x28,0x1e,0x9c,0x59,0x69,0x99,0x4d,0x16, } }, - { 0xa108109, { - 0x85,0xb4,0xbd,0x7c,0x49,0xa7,0xbd,0xfa, - 0x49,0x36,0x80,0x81,0xc5,0xb7,0x39,0x1b, - 0x9a,0xaa,0x50,0xde,0x9b,0xe9,0x32,0x35, - 0x42,0x7e,0x51,0x4f,0x52,0x2c,0x28,0x59, - } - }, { 0xa20102d, { 0xf9,0x6e,0xf2,0x32,0xd3,0x0f,0x5f,0x11, 0x59,0xa1,0xfe,0xcc,0xcd,0x9b,0x42,0x89, @@ -399,13 +357,6 @@ static const struct patch_digest phashes[] = { 0x8c,0xe9,0x19,0x3e,0xcc,0x3f,0x7b,0xb4, } }, - { 0xa20102e, { - 0xbe,0x1f,0x32,0x04,0x0d,0x3c,0x9c,0xdd, - 0xe1,0xa4,0xbf,0x76,0x3a,0xec,0xc2,0xf6, - 0x11,0x00,0xa7,0xaf,0x0f,0xe5,0x02,0xc5, - 0x54,0x3a,0x1f,0x8c,0x16,0xb5,0xff,0xbe, - } - }, { 0xa201210, { 0xe8,0x6d,0x51,0x6a,0x8e,0x72,0xf3,0xfe, 0x6e,0x16,0xbc,0x62,0x59,0x40,0x17,0xe9, @@ -413,13 +364,6 @@ static const struct patch_digest phashes[] = { 0xf7,0x55,0xf0,0x13,0xbb,0x22,0xf6,0x41, } }, - { 0xa201211, { - 0x69,0xa1,0x17,0xec,0xd0,0xf6,0x6c,0x95, - 0xe2,0x1e,0xc5,0x59,0x1a,0x52,0x0a,0x27, - 0xc4,0xed,0xd5,0x59,0x1f,0xbf,0x00,0xff, - 0x08,0x88,0xb5,0xe1,0x12,0xb6,0xcc,0x27, - } - }, { 0xa404107, { 0xbb,0x04,0x4e,0x47,0xdd,0x5e,0x26,0x45, 0x1a,0xc9,0x56,0x24,0xa4,0x4c,0x82,0xb0, @@ -427,13 +371,6 @@ static const struct patch_digest phashes[] = { 0x13,0xbc,0xc5,0x25,0xe4,0xc5,0xc3,0x99, } }, - { 0xa404108, { - 0x69,0x67,0x43,0x06,0xf8,0x0c,0x62,0xdc, - 0xa4,0x21,0x30,0x4f,0x0f,0x21,0x2c,0xcb, - 0xcc,0x37,0xf1,0x1c,0xc3,0xf8,0x2f,0x19, - 0xdf,0x53,0x53,0x46,0xb1,0x15,0xea,0x00, - } - }, { 0xa500011, { 0x23,0x3d,0x70,0x7d,0x03,0xc3,0xc4,0xf4, 0x2b,0x82,0xc6,0x05,0xda,0x80,0x0a,0xf1, @@ -441,13 +378,6 @@ static const struct patch_digest phashes[] = { 0x11,0x5e,0x96,0x7e,0x71,0xe9,0xfc,0x74, } }, - { 0xa500012, { - 0xeb,0x74,0x0d,0x47,0xa1,0x8e,0x09,0xe4, - 0x93,0x4c,0xad,0x03,0x32,0x4c,0x38,0x16, - 0x10,0x39,0xdd,0x06,0xaa,0xce,0xd6,0x0f, - 0x62,0x83,0x9d,0x8e,0x64,0x55,0xbe,0x63, - } - }, { 0xa601209, { 0x66,0x48,0xd4,0x09,0x05,0xcb,0x29,0x32, 0x66,0xb7,0x9a,0x76,0xcd,0x11,0xf3,0x30, @@ -455,13 +385,6 @@ static const struct patch_digest phashes[] = { 0xe8,0x73,0xe2,0xd6,0xdb,0xd2,0x77,0x1d, } }, - { 0xa60120a, { - 0x0c,0x8b,0x3d,0xfd,0x52,0x52,0x85,0x7d, - 0x20,0x3a,0xe1,0x7e,0xa4,0x21,0x3b,0x7b, - 0x17,0x86,0xae,0xac,0x13,0xb8,0x63,0x9d, - 0x06,0x01,0xd0,0xa0,0x51,0x9a,0x91,0x2c, - } - }, { 0xa704107, { 0xf3,0xc6,0x58,0x26,0xee,0xac,0x3f,0xd6, 0xce,0xa1,0x72,0x47,0x3b,0xba,0x2b,0x93, @@ -469,13 +392,6 @@ static const struct patch_digest phashes[] = { 0x64,0x39,0x71,0x8c,0xce,0xe7,0x41,0x39, } }, - { 0xa704108, { - 0xd7,0x55,0x15,0x2b,0xfe,0xc4,0xbc,0x93, - 0xec,0x91,0xa0,0xae,0x45,0xb7,0xc3,0x98, - 0x4e,0xff,0x61,0x77,0x88,0xc2,0x70,0x49, - 0xe0,0x3a,0x1d,0x84,0x38,0x52,0xbf,0x5a, - } - }, { 0xa705206, { 0x8d,0xc0,0x76,0xbd,0x58,0x9f,0x8f,0xa4, 0x12,0x9d,0x21,0xfb,0x48,0x21,0xbc,0xe7, @@ -483,13 +399,6 @@ static const struct patch_digest phashes[] = { 0x03,0x35,0xe9,0xbe,0xfb,0x06,0xdf,0xfc, } }, - { 0xa705208, { - 0x30,0x1d,0x55,0x24,0xbc,0x6b,0x5a,0x19, - 0x0c,0x7d,0x1d,0x74,0xaa,0xd1,0xeb,0xd2, - 0x16,0x62,0xf7,0x5b,0xe1,0x1f,0x18,0x11, - 0x5c,0xf0,0x94,0x90,0x26,0xec,0x69,0xff, - } - }, { 0xa708007, { 0x6b,0x76,0xcc,0x78,0xc5,0x8a,0xa3,0xe3, 0x32,0x2d,0x79,0xe4,0xc3,0x80,0xdb,0xb2, @@ -497,13 +406,6 @@ static const struct patch_digest phashes[] = { 0xdf,0x92,0x73,0x84,0x87,0x3c,0x73,0x93, } }, - { 0xa708008, { - 0x08,0x6e,0xf0,0x22,0x4b,0x8e,0xc4,0x46, - 0x58,0x34,0xe6,0x47,0xa2,0x28,0xfd,0xab, - 0x22,0x3d,0xdd,0xd8,0x52,0x9e,0x1d,0x16, - 0xfa,0x01,0x68,0x14,0x79,0x3e,0xe8,0x6b, - } - }, { 0xa70c005, { 0x88,0x5d,0xfb,0x79,0x64,0xd8,0x46,0x3b, 0x4a,0x83,0x8e,0x77,0x7e,0xcf,0xb3,0x0f, @@ -511,13 +413,6 @@ static const struct patch_digest phashes[] = { 0xee,0x49,0xac,0xe1,0x8b,0x13,0xc5,0x13, } }, - { 0xa70c008, { - 0x0f,0xdb,0x37,0xa1,0x10,0xaf,0xd4,0x21, - 0x94,0x0d,0xa4,0xa2,0xe9,0x86,0x6c,0x0e, - 0x85,0x7c,0x36,0x30,0xa3,0x3a,0x78,0x66, - 0x18,0x10,0x60,0x0d,0x78,0x3d,0x44,0xd0, - } - }, { 0xaa00116, { 0xe8,0x4c,0x2c,0x88,0xa1,0xac,0x24,0x63, 0x65,0xe5,0xaa,0x2d,0x16,0xa9,0xc3,0xf5, @@ -546,11 +441,4 @@ static const struct patch_digest phashes[] = { 0x68,0x2f,0x46,0xee,0xfe,0xc6,0x6d,0xef, } }, - { 0xaa00216, { - 0x79,0xfb,0x5b,0x9f,0xb6,0xe6,0xa8,0xf5, - 0x4e,0x7c,0x4f,0x8e,0x1d,0xad,0xd0,0x08, - 0xc2,0x43,0x7c,0x8b,0xe6,0xdb,0xd0,0xd2, - 0xe8,0x39,0x26,0xc1,0xe5,0x5a,0x48,0xf1, - } - }, }; -- Gitee From 6af7901e106a27bbdc24b6bd5f9ed47a11054fe7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:10 +0800 Subject: [PATCH 0307/1421] Revert "KVM: SVM: Advertise TSA CPUID bits to guests" This reverts commit dc6d3b97f9b5a895301209bb7f93491d2b66f9f3. --- arch/x86/kvm/cpuid.c | 8 +------- arch/x86/kvm/reverse_cpuid.h | 8 -------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 288db3516772..a6cffeff75d4 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -780,7 +780,6 @@ void kvm_set_cpu_caps(void) kvm_cpu_cap_mask(CPUID_8000_0021_EAX, F(NO_NESTED_DATA_BP) | F(LFENCE_RDTSC) | 0 /* SmmPgCfgLock */ | - F(VERW_CLEAR) | F(NULL_SEL_CLR_BASE) | F(AUTOIBRS) | 0 /* PrefetchCtlMsr */ ); @@ -791,10 +790,6 @@ void kvm_set_cpu_caps(void) F(PERFMON_V2) ); - kvm_cpu_cap_init_kvm_defined(CPUID_8000_0021_ECX, - F(TSA_SQ_NO) | F(TSA_L1_NO) - ); - /* * Synthesize "LFENCE is serializing" into the AMD-defined entry in * KVM's supported CPUID if the feature is reported as supported by the @@ -1301,9 +1296,8 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function) entry->eax = entry->ebx = entry->ecx = entry->edx = 0; break; case 0x80000021: - entry->ebx = entry->edx = 0; + entry->ebx = entry->ecx = entry->edx = 0; cpuid_entry_override(entry, CPUID_8000_0021_EAX); - cpuid_entry_override(entry, CPUID_8000_0021_ECX); break; /* AMD Extended Performance Monitoring and Debug */ case 0x80000022: { diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index be23712354bd..2f4e155080ba 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -17,7 +17,6 @@ enum kvm_only_cpuid_leafs { CPUID_8000_0007_EDX, CPUID_8000_0022_EAX, CPUID_7_2_EDX, - CPUID_8000_0021_ECX, NR_KVM_CPU_CAPS, NKVMCAPINTS = NR_KVM_CPU_CAPS - NCAPINTS, @@ -62,10 +61,6 @@ enum kvm_only_cpuid_leafs { /* CPUID level 0x80000022 (EAX) */ #define KVM_X86_FEATURE_PERFMON_V2 KVM_X86_FEATURE(CPUID_8000_0022_EAX, 0) -/* CPUID level 0x80000021 (ECX) */ -#define KVM_X86_FEATURE_TSA_SQ_NO KVM_X86_FEATURE(CPUID_8000_0021_ECX, 1) -#define KVM_X86_FEATURE_TSA_L1_NO KVM_X86_FEATURE(CPUID_8000_0021_ECX, 2) - struct cpuid_reg { u32 function; u32 index; @@ -95,7 +90,6 @@ static const struct cpuid_reg reverse_cpuid[] = { [CPUID_8000_0021_EAX] = {0x80000021, 0, CPUID_EAX}, [CPUID_8000_0022_EAX] = {0x80000022, 0, CPUID_EAX}, [CPUID_7_2_EDX] = { 7, 2, CPUID_EDX}, - [CPUID_8000_0021_ECX] = {0x80000021, 0, CPUID_ECX}, }; /* @@ -135,8 +129,6 @@ static __always_inline u32 __feature_translate(int x86_feature) KVM_X86_TRANSLATE_FEATURE(PERFMON_V2); KVM_X86_TRANSLATE_FEATURE(RRSBA_CTRL); KVM_X86_TRANSLATE_FEATURE(BHI_CTRL); - KVM_X86_TRANSLATE_FEATURE(TSA_SQ_NO); - KVM_X86_TRANSLATE_FEATURE(TSA_L1_NO); default: return x86_feature; } -- Gitee From 6d434eb60bc3883f70e8006d7e795fd58fa8e49d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:10 +0800 Subject: [PATCH 0308/1421] Revert "x86/bugs: Add a Transient Scheduler Attacks mitigation" This reverts commit 74afb47dc71310023b3ceb9eec6edd1e98cde947. --- .../ABI/testing/sysfs-devices-system-cpu | 1 - .../admin-guide/kernel-parameters.txt | 13 -- arch/x86/Kconfig | 9 -- arch/x86/include/asm/cpu.h | 12 -- arch/x86/include/asm/cpufeatures.h | 6 - arch/x86/include/asm/mwait.h | 2 +- arch/x86/include/asm/nospec-branch.h | 14 +- arch/x86/kernel/cpu/amd.c | 60 --------- arch/x86/kernel/cpu/bugs.c | 121 ------------------ arch/x86/kernel/cpu/common.c | 14 +- arch/x86/kernel/cpu/microcode/amd.c | 12 ++ arch/x86/kernel/cpu/scattered.c | 2 - arch/x86/kvm/svm/vmenter.S | 6 - drivers/base/cpu.c | 3 - include/linux/cpu.h | 1 - 15 files changed, 18 insertions(+), 258 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu index 868ec736a9d2..0426ec112155 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu @@ -526,7 +526,6 @@ What: /sys/devices/system/cpu/vulnerabilities /sys/devices/system/cpu/vulnerabilities/spectre_v1 /sys/devices/system/cpu/vulnerabilities/spectre_v2 /sys/devices/system/cpu/vulnerabilities/srbds - /sys/devices/system/cpu/vulnerabilities/tsa /sys/devices/system/cpu/vulnerabilities/tsx_async_abort Date: January 2018 Contact: Linux kernel mailing list diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index bcfa49019c3f..f95734ceb82b 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -6645,19 +6645,6 @@ If not specified, "default" is used. In this case, the RNG's choice is left to each individual trust source. - tsa= [X86] Control mitigation for Transient Scheduler - Attacks on AMD CPUs. Search the following in your - favourite search engine for more details: - - "Technical guidance for mitigating transient scheduler - attacks". - - off - disable the mitigation - on - enable the mitigation (default) - user - mitigate only user/kernel transitions - vm - mitigate only guest/host transitions - - tsc= Disable clocksource stability checks for TSC. Format: [x86] reliable: mark tsc clocksource as reliable, this diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index caa6adcedc18..4372657ab0d6 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2621,15 +2621,6 @@ config MITIGATION_ITS disabled, mitigation cannot be enabled via cmdline. See -config MITIGATION_TSA - bool "Mitigate Transient Scheduler Attacks" - depends on CPU_SUP_AMD - default y - help - Enable mitigation for Transient Scheduler Attacks. TSA is a hardware - security vulnerability on AMD CPUs which can lead to forwarding of - invalid info to subsequent instructions and thus can affect their - timing and thereby cause a leakage. endif config ARCH_HAS_ADD_PAGES diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h index 9c67f8b4c919..fecc4fe1d68a 100644 --- a/arch/x86/include/asm/cpu.h +++ b/arch/x86/include/asm/cpu.h @@ -81,16 +81,4 @@ int intel_microcode_sanity_check(void *mc, bool print_err, int hdr_type); extern struct cpumask cpus_stop_mask; -union zen_patch_rev { - struct { - __u32 rev : 8, - stepping : 4, - model : 4, - __reserved : 4, - ext_model : 4, - ext_fam : 8; - }; - __u32 ucode_rev; -}; - #endif /* _ASM_X86_CPU_H */ diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 311cc58f2958..8a2482651a6f 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -449,7 +449,6 @@ /* AMD-defined Extended Feature 2 EAX, CPUID level 0x80000021 (EAX), word 20 */ #define X86_FEATURE_NO_NESTED_DATA_BP (20*32+ 0) /* "" No Nested Data Breakpoints */ #define X86_FEATURE_LFENCE_RDTSC (20*32+ 2) /* "" LFENCE always serializing / synchronizes RDTSC */ -#define X86_FEATURE_VERW_CLEAR (20*32+ 5) /* "" The memory form of VERW mitigates TSA */ #define X86_FEATURE_NULL_SEL_CLR_BASE (20*32+ 6) /* "" Null Selector Clears Base */ #define X86_FEATURE_AUTOIBRS (20*32+ 8) /* "" Automatic IBRS */ #define X86_FEATURE_NO_SMM_CTL_MSR (20*32+ 9) /* "" SMM_CTL MSR is not present */ @@ -471,10 +470,6 @@ #define X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT (21*32+ 4) /* "" Clear branch history at vmexit using SW loop */ #define X86_FEATURE_INDIRECT_THUNK_ITS (21*32 + 5) /* "" Use thunk for indirect branches in lower half of cacheline */ -#define X86_FEATURE_TSA_SQ_NO (21*32+11) /* "" AMD CPU not vulnerable to TSA-SQ */ -#define X86_FEATURE_TSA_L1_NO (21*32+12) /* "" AMD CPU not vulnerable to TSA-L1 */ -#define X86_FEATURE_CLEAR_CPU_BUF_VM (21*32+13) /* "" Clear CPU buffers using VERW before VMRUN */ - /* * BUG word(s) */ @@ -526,5 +521,4 @@ #define X86_BUG_IBPB_NO_RET X86_BUG(1*32 + 4) /* "ibpb_no_ret" IBPB omits return target predictions */ #define X86_BUG_ITS X86_BUG(1*32 + 5) /* CPU is affected by Indirect Target Selection */ #define X86_BUG_ITS_NATIVE_ONLY X86_BUG(1*32 + 6) /* CPU is affected by ITS, VMX is not affected */ -#define X86_BUG_TSA X86_BUG(1*32+ 9) /* "tsa" CPU is affected by Transient Scheduler Attacks */ #endif /* _ASM_X86_CPUFEATURES_H */ diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index e45d0dac7bb7..748c02179a87 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -80,7 +80,7 @@ static __always_inline void __mwait(unsigned long eax, unsigned long ecx) static __always_inline void __mwaitx(unsigned long eax, unsigned long ebx, unsigned long ecx) { - /* No need for TSA buffer clearing on AMD */ + /* No MDS buffer clear as this is AMD/HYGON only */ /* "mwaitx %eax, %ebx, %ecx;" */ asm volatile(".byte 0x0f, 0x01, 0xfb;" diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h index 04f5a41c3a04..c9444ede6761 100644 --- a/arch/x86/include/asm/nospec-branch.h +++ b/arch/x86/include/asm/nospec-branch.h @@ -330,25 +330,19 @@ * CFLAGS.ZF. * Note: Only the memory operand variant of VERW clears the CPU buffers. */ -.macro __CLEAR_CPU_BUFFERS feature +.macro CLEAR_CPU_BUFFERS #ifdef CONFIG_X86_64 - ALTERNATIVE "", "verw x86_verw_sel(%rip)", \feature + ALTERNATIVE "", "verw x86_verw_sel(%rip)", X86_FEATURE_CLEAR_CPU_BUF #else /* * In 32bit mode, the memory operand must be a %cs reference. The data * segments may not be usable (vm86 mode), and the stack segment may not * be flat (ESPFIX32). */ - ALTERNATIVE "", "verw %cs:x86_verw_sel", \feature + ALTERNATIVE "", "verw %cs:x86_verw_sel", X86_FEATURE_CLEAR_CPU_BUF #endif .endm -#define CLEAR_CPU_BUFFERS \ - __CLEAR_CPU_BUFFERS X86_FEATURE_CLEAR_CPU_BUF - -#define VM_CLEAR_CPU_BUFFERS \ - __CLEAR_CPU_BUFFERS X86_FEATURE_CLEAR_CPU_BUF_VM - #ifdef CONFIG_X86_64 .macro CLEAR_BRANCH_HISTORY ALTERNATIVE "", "call clear_bhb_loop", X86_FEATURE_CLEAR_BHB_LOOP @@ -633,7 +627,7 @@ static __always_inline void x86_clear_cpu_buffers(void) /** * x86_idle_clear_cpu_buffers - Buffer clearing support in idle for the MDS - * and TSA vulnerabilities. + * vulnerability * * Clear CPU buffers if the corresponding static key is enabled */ diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 1180689a2390..498f27537772 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -539,63 +539,6 @@ static void early_init_amd_mc(struct cpuinfo_x86 *c) #endif } -static bool amd_check_tsa_microcode(void) -{ - struct cpuinfo_x86 *c = &boot_cpu_data; - union zen_patch_rev p; - u32 min_rev = 0; - - p.ext_fam = c->x86 - 0xf; - p.model = c->x86_model; - p.stepping = c->x86_stepping; - - if (cpu_has(c, X86_FEATURE_ZEN3) || - cpu_has(c, X86_FEATURE_ZEN4)) { - switch (p.ucode_rev >> 8) { - case 0xa0011: min_rev = 0x0a0011d7; break; - case 0xa0012: min_rev = 0x0a00123b; break; - case 0xa0082: min_rev = 0x0a00820d; break; - case 0xa1011: min_rev = 0x0a10114c; break; - case 0xa1012: min_rev = 0x0a10124c; break; - case 0xa1081: min_rev = 0x0a108109; break; - case 0xa2010: min_rev = 0x0a20102e; break; - case 0xa2012: min_rev = 0x0a201211; break; - case 0xa4041: min_rev = 0x0a404108; break; - case 0xa5000: min_rev = 0x0a500012; break; - case 0xa6012: min_rev = 0x0a60120a; break; - case 0xa7041: min_rev = 0x0a704108; break; - case 0xa7052: min_rev = 0x0a705208; break; - case 0xa7080: min_rev = 0x0a708008; break; - case 0xa70c0: min_rev = 0x0a70c008; break; - case 0xaa002: min_rev = 0x0aa00216; break; - default: - pr_debug("%s: ucode_rev: 0x%x, current revision: 0x%x\n", - __func__, p.ucode_rev, c->microcode); - return false; - } - } - - if (!min_rev) - return false; - - return c->microcode >= min_rev; -} - -static void tsa_init(struct cpuinfo_x86 *c) -{ - if (cpu_has(c, X86_FEATURE_HYPERVISOR)) - return; - - if (cpu_has(c, X86_FEATURE_ZEN3) || - cpu_has(c, X86_FEATURE_ZEN4)) { - if (amd_check_tsa_microcode()) - setup_force_cpu_cap(X86_FEATURE_VERW_CLEAR); - } else { - setup_force_cpu_cap(X86_FEATURE_TSA_SQ_NO); - setup_force_cpu_cap(X86_FEATURE_TSA_L1_NO); - } -} - static void bsp_init_amd(struct cpuinfo_x86 *c) { if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { @@ -702,9 +645,6 @@ static void bsp_init_amd(struct cpuinfo_x86 *c) break; } - - tsa_init(c); - return; warn: diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index c4d5ac99c6af..35df0e86326a 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -50,7 +50,6 @@ static void __init l1d_flush_select_mitigation(void); static void __init srso_select_mitigation(void); static void __init gds_select_mitigation(void); static void __init its_select_mitigation(void); -static void __init tsa_select_mitigation(void); /* The base value of the SPEC_CTRL MSR without task-specific bits set */ u64 x86_spec_ctrl_base; @@ -186,7 +185,6 @@ void __init cpu_select_mitigations(void) srso_select_mitigation(); gds_select_mitigation(); its_select_mitigation(); - tsa_select_mitigation(); } /* @@ -2095,94 +2093,6 @@ static void update_mds_branch_idle(void) #define TAA_MSG_SMT "TAA CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html for more details.\n" #define MMIO_MSG_SMT "MMIO Stale Data CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/processor_mmio_stale_data.html for more details.\n" -#undef pr_fmt -#define pr_fmt(fmt) "Transient Scheduler Attacks: " fmt - -enum tsa_mitigations { - TSA_MITIGATION_NONE, - TSA_MITIGATION_UCODE_NEEDED, - TSA_MITIGATION_USER_KERNEL, - TSA_MITIGATION_VM, - TSA_MITIGATION_FULL, -}; - -static const char * const tsa_strings[] = { - [TSA_MITIGATION_NONE] = "Vulnerable", - [TSA_MITIGATION_UCODE_NEEDED] = "Vulnerable: Clear CPU buffers attempted, no microcode", - [TSA_MITIGATION_USER_KERNEL] = "Mitigation: Clear CPU buffers: user/kernel boundary", - [TSA_MITIGATION_VM] = "Mitigation: Clear CPU buffers: VM", - [TSA_MITIGATION_FULL] = "Mitigation: Clear CPU buffers", -}; - -static enum tsa_mitigations tsa_mitigation __ro_after_init = - IS_ENABLED(CONFIG_MITIGATION_TSA) ? TSA_MITIGATION_FULL : TSA_MITIGATION_NONE; - -static int __init tsa_parse_cmdline(char *str) -{ - if (!str) - return -EINVAL; - - if (!strcmp(str, "off")) - tsa_mitigation = TSA_MITIGATION_NONE; - else if (!strcmp(str, "on")) - tsa_mitigation = TSA_MITIGATION_FULL; - else if (!strcmp(str, "user")) - tsa_mitigation = TSA_MITIGATION_USER_KERNEL; - else if (!strcmp(str, "vm")) - tsa_mitigation = TSA_MITIGATION_VM; - else - pr_err("Ignoring unknown tsa=%s option.\n", str); - - return 0; -} -early_param("tsa", tsa_parse_cmdline); - -static void __init tsa_select_mitigation(void) -{ - if (tsa_mitigation == TSA_MITIGATION_NONE) - return; - - if (cpu_mitigations_off() || !boot_cpu_has_bug(X86_BUG_TSA)) { - tsa_mitigation = TSA_MITIGATION_NONE; - return; - } - - if (!boot_cpu_has(X86_FEATURE_VERW_CLEAR)) - tsa_mitigation = TSA_MITIGATION_UCODE_NEEDED; - - switch (tsa_mitigation) { - case TSA_MITIGATION_USER_KERNEL: - setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF); - break; - - case TSA_MITIGATION_VM: - setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF_VM); - break; - - case TSA_MITIGATION_UCODE_NEEDED: - if (!boot_cpu_has(X86_FEATURE_HYPERVISOR)) - goto out; - - pr_notice("Forcing mitigation on in a VM\n"); - - /* - * On the off-chance that microcode has been updated - * on the host, enable the mitigation in the guest just - * in case. - */ - fallthrough; - case TSA_MITIGATION_FULL: - setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF); - setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF_VM); - break; - default: - break; - } - -out: - pr_info("%s\n", tsa_strings[tsa_mitigation]); -} - void cpu_bugs_smt_update(void) { mutex_lock(&spec_ctrl_mutex); @@ -2236,24 +2146,6 @@ void cpu_bugs_smt_update(void) break; } - switch (tsa_mitigation) { - case TSA_MITIGATION_USER_KERNEL: - case TSA_MITIGATION_VM: - case TSA_MITIGATION_FULL: - case TSA_MITIGATION_UCODE_NEEDED: - /* - * TSA-SQ can potentially lead to info leakage between - * SMT threads. - */ - if (sched_smt_active()) - static_branch_enable(&cpu_buf_idle_clear); - else - static_branch_disable(&cpu_buf_idle_clear); - break; - case TSA_MITIGATION_NONE: - break; - } - mutex_unlock(&spec_ctrl_mutex); } @@ -3183,11 +3075,6 @@ static ssize_t gds_show_state(char *buf) return sysfs_emit(buf, "%s\n", gds_strings[gds_mitigation]); } -static ssize_t tsa_show_state(char *buf) -{ - return sysfs_emit(buf, "%s\n", tsa_strings[tsa_mitigation]); -} - static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr, char *buf, unsigned int bug) { @@ -3249,9 +3136,6 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr case X86_BUG_ITS: return its_show_state(buf); - case X86_BUG_TSA: - return tsa_show_state(buf); - default: break; } @@ -3336,9 +3220,4 @@ ssize_t cpu_show_indirect_target_selection(struct device *dev, struct device_att { return cpu_show_common(dev, attr, buf, X86_BUG_ITS); } - -ssize_t cpu_show_tsa(struct device *dev, struct device_attribute *attr, char *buf) -{ - return cpu_show_common(dev, attr, buf, X86_BUG_TSA); -} #endif diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index f66c71bffa6d..cc1bbf70477b 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -1277,8 +1277,6 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = { #define ITS BIT(8) /* CPU is affected by Indirect Target Selection, but guest-host isolation is not affected */ #define ITS_NATIVE_ONLY BIT(9) -/* CPU is affected by Transient Scheduler Attacks */ -#define TSA BIT(10) static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = { VULNBL_INTEL_STEPPINGS(IVYBRIDGE, X86_STEPPING_ANY, SRBDS), @@ -1326,7 +1324,7 @@ static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = { VULNBL_AMD(0x16, RETBLEED), VULNBL_AMD(0x17, RETBLEED | SMT_RSB | SRSO), VULNBL_HYGON(0x18, RETBLEED | SMT_RSB | SRSO), - VULNBL_AMD(0x19, SRSO | TSA), + VULNBL_AMD(0x19, SRSO), {} }; @@ -1531,16 +1529,6 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) setup_force_cpu_bug(X86_BUG_ITS_NATIVE_ONLY); } - if (c->x86_vendor == X86_VENDOR_AMD) { - if (!cpu_has(c, X86_FEATURE_TSA_SQ_NO) || - !cpu_has(c, X86_FEATURE_TSA_L1_NO)) { - if (cpu_matches(cpu_vuln_blacklist, TSA) || - /* Enable bug on Zen guests to allow for live migration. */ - (cpu_has(c, X86_FEATURE_HYPERVISOR) && cpu_has(c, X86_FEATURE_ZEN))) - setup_force_cpu_bug(X86_BUG_TSA); - } - } - if (cpu_matches(cpu_vuln_whitelist, NO_MELTDOWN)) return; diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 7444fe0e3d08..9b0570f769eb 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -96,6 +96,18 @@ static struct equiv_cpu_table { struct equiv_cpu_entry *entry; } equiv_table; +union zen_patch_rev { + struct { + __u32 rev : 8, + stepping : 4, + model : 4, + __reserved : 4, + ext_model : 4, + ext_fam : 8; + }; + __u32 ucode_rev; +}; + union cpuid_1_eax { struct { __u32 stepping : 4, diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c index 7a42e699f6e3..af5aa2c754c2 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c @@ -48,8 +48,6 @@ static const struct cpuid_bit cpuid_bits[] = { { X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 }, { X86_FEATURE_SMBA, CPUID_EBX, 2, 0x80000020, 0 }, { X86_FEATURE_BMEC, CPUID_EBX, 3, 0x80000020, 0 }, - { X86_FEATURE_TSA_SQ_NO, CPUID_ECX, 1, 0x80000021, 0 }, - { X86_FEATURE_TSA_L1_NO, CPUID_ECX, 2, 0x80000021, 0 }, { X86_FEATURE_PERFMON_V2, CPUID_EAX, 0, 0x80000022, 0 }, { X86_FEATURE_AMD_LBR_V2, CPUID_EAX, 1, 0x80000022, 0 }, { X86_FEATURE_AMD_LBR_PMC_FREEZE, CPUID_EAX, 2, 0x80000022, 0 }, diff --git a/arch/x86/kvm/svm/vmenter.S b/arch/x86/kvm/svm/vmenter.S index 56fe34d9397f..ef2ebabb059c 100644 --- a/arch/x86/kvm/svm/vmenter.S +++ b/arch/x86/kvm/svm/vmenter.S @@ -167,9 +167,6 @@ SYM_FUNC_START(__svm_vcpu_run) #endif mov VCPU_RDI(%_ASM_DI), %_ASM_DI - /* Clobbers EFLAGS.ZF */ - VM_CLEAR_CPU_BUFFERS - /* Enter guest mode */ sti @@ -337,9 +334,6 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) mov SVM_current_vmcb(%_ASM_DI), %_ASM_AX mov KVM_VMCB_pa(%_ASM_AX), %_ASM_AX - /* Clobbers EFLAGS.ZF */ - VM_CLEAR_CPU_BUFFERS - /* Enter guest mode */ sti diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index a11aeef6d636..3f07d28b9dcd 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -605,7 +605,6 @@ CPU_SHOW_VULN_FALLBACK(spec_rstack_overflow); CPU_SHOW_VULN_FALLBACK(gds); CPU_SHOW_VULN_FALLBACK(reg_file_data_sampling); CPU_SHOW_VULN_FALLBACK(indirect_target_selection); -CPU_SHOW_VULN_FALLBACK(tsa); static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); @@ -622,7 +621,6 @@ static DEVICE_ATTR(spec_rstack_overflow, 0444, cpu_show_spec_rstack_overflow, NU static DEVICE_ATTR(gather_data_sampling, 0444, cpu_show_gds, NULL); static DEVICE_ATTR(reg_file_data_sampling, 0444, cpu_show_reg_file_data_sampling, NULL); static DEVICE_ATTR(indirect_target_selection, 0444, cpu_show_indirect_target_selection, NULL); -static DEVICE_ATTR(tsa, 0444, cpu_show_tsa, NULL); static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_meltdown.attr, @@ -640,7 +638,6 @@ static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_gather_data_sampling.attr, &dev_attr_reg_file_data_sampling.attr, &dev_attr_indirect_target_selection.attr, - &dev_attr_tsa.attr, NULL }; diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 6b4f9f169688..20db7fc0651f 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -79,7 +79,6 @@ extern ssize_t cpu_show_reg_file_data_sampling(struct device *dev, struct device_attribute *attr, char *buf); extern ssize_t cpu_show_indirect_target_selection(struct device *dev, struct device_attribute *attr, char *buf); -extern ssize_t cpu_show_tsa(struct device *dev, struct device_attribute *attr, char *buf); extern __printf(4, 5) struct device *cpu_device_create(struct device *parent, void *drvdata, -- Gitee From 2c7d6a6ca0c2aa074ece4441778bfb24e44ffb62 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:10 +0800 Subject: [PATCH 0309/1421] Revert "x86/bugs: Rename MDS machinery to something more generic" This reverts commit 67812cf5c76c7d8d785bf84243bfb9b1d89a76ab. --- .../hw-vuln/processor_mmio_stale_data.rst | 4 ++- Documentation/arch/x86/mds.rst | 8 ++--- arch/x86/entry/entry.S | 8 ++--- arch/x86/include/asm/irqflags.h | 4 +-- arch/x86/include/asm/mwait.h | 5 ++-- arch/x86/include/asm/nospec-branch.h | 29 +++++++++---------- arch/x86/kernel/cpu/bugs.c | 12 ++++---- arch/x86/kvm/vmx/vmx.c | 2 +- 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst b/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst index e916dc232b0f..c98fd11907cc 100644 --- a/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst +++ b/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst @@ -157,7 +157,9 @@ This is achieved by using the otherwise unused and obsolete VERW instruction in combination with a microcode update. The microcode clears the affected CPU buffers when the VERW instruction is executed. -Kernel does the buffer clearing with x86_clear_cpu_buffers(). +Kernel reuses the MDS function to invoke the buffer clearing: + + mds_clear_cpu_buffers() On MDS affected CPUs, the kernel already invokes CPU buffer clear on kernel/userspace, hypervisor/guest and C-state (idle) transitions. No diff --git a/Documentation/arch/x86/mds.rst b/Documentation/arch/x86/mds.rst index 43106f349cc3..c58c72362911 100644 --- a/Documentation/arch/x86/mds.rst +++ b/Documentation/arch/x86/mds.rst @@ -93,7 +93,7 @@ enters a C-state. The kernel provides a function to invoke the buffer clearing: - x86_clear_cpu_buffers() + mds_clear_cpu_buffers() Also macro CLEAR_CPU_BUFFERS can be used in ASM late in exit-to-user path. Other than CFLAGS.ZF, this macro doesn't clobber any registers. @@ -185,9 +185,9 @@ Mitigation points idle clearing would be a window dressing exercise and is therefore not activated. - The invocation is controlled by the static key cpu_buf_idle_clear which is - switched depending on the chosen mitigation mode and the SMT state of the - system. + The invocation is controlled by the static key mds_idle_clear which is + switched depending on the chosen mitigation mode and the SMT state of + the system. The buffer clear is only invoked before entering the C-State to prevent that stale data from the idling CPU from spilling to the Hyper-Thread diff --git a/arch/x86/entry/entry.S b/arch/x86/entry/entry.S index 4e7ecffee762..ad292c0d971a 100644 --- a/arch/x86/entry/entry.S +++ b/arch/x86/entry/entry.S @@ -31,20 +31,20 @@ EXPORT_SYMBOL_GPL(entry_ibpb); /* * Define the VERW operand that is disguised as entry code so that - * it can be referenced with KPTI enabled. This ensures VERW can be + * it can be referenced with KPTI enabled. This ensure VERW can be * used late in exit-to-user path after page tables are switched. */ .pushsection .entry.text, "ax" .align L1_CACHE_BYTES, 0xcc -SYM_CODE_START_NOALIGN(x86_verw_sel) +SYM_CODE_START_NOALIGN(mds_verw_sel) UNWIND_HINT_UNDEFINED ANNOTATE_NOENDBR .word __KERNEL_DS .align L1_CACHE_BYTES, 0xcc -SYM_CODE_END(x86_verw_sel); +SYM_CODE_END(mds_verw_sel); /* For KVM */ -EXPORT_SYMBOL_GPL(x86_verw_sel); +EXPORT_SYMBOL_GPL(mds_verw_sel); .popsection diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h index 9bfb7b90e299..9acfe2bcf1fd 100644 --- a/arch/x86/include/asm/irqflags.h +++ b/arch/x86/include/asm/irqflags.h @@ -44,13 +44,13 @@ static __always_inline void native_irq_enable(void) static __always_inline void native_safe_halt(void) { - x86_idle_clear_cpu_buffers(); + mds_idle_clear_cpu_buffers(); asm volatile("sti; hlt": : :"memory"); } static __always_inline void native_halt(void) { - x86_idle_clear_cpu_buffers(); + mds_idle_clear_cpu_buffers(); asm volatile("hlt": : :"memory"); } diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index 748c02179a87..a541411d9226 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -44,7 +44,7 @@ static __always_inline void __monitorx(const void *eax, unsigned long ecx, static __always_inline void __mwait(unsigned long eax, unsigned long ecx) { - x86_idle_clear_cpu_buffers(); + mds_idle_clear_cpu_buffers(); /* "mwait %eax, %ecx;" */ asm volatile(".byte 0x0f, 0x01, 0xc9;" @@ -89,8 +89,7 @@ static __always_inline void __mwaitx(unsigned long eax, unsigned long ebx, static __always_inline void __sti_mwait(unsigned long eax, unsigned long ecx) { - x86_idle_clear_cpu_buffers(); - + mds_idle_clear_cpu_buffers(); /* "mwait %eax, %ecx;" */ asm volatile("sti; .byte 0x0f, 0x01, 0xc9;" :: "a" (eax), "c" (ecx)); diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h index c9444ede6761..bc4fa6d09d29 100644 --- a/arch/x86/include/asm/nospec-branch.h +++ b/arch/x86/include/asm/nospec-branch.h @@ -324,22 +324,22 @@ .endm /* - * Macro to execute VERW insns that mitigate transient data sampling - * attacks such as MDS or TSA. On affected systems a microcode update - * overloaded VERW insns to also clear the CPU buffers. VERW clobbers - * CFLAGS.ZF. + * Macro to execute VERW instruction that mitigate transient data sampling + * attacks such as MDS. On affected systems a microcode update overloaded VERW + * instruction to also clear the CPU buffers. VERW clobbers CFLAGS.ZF. + * * Note: Only the memory operand variant of VERW clears the CPU buffers. */ .macro CLEAR_CPU_BUFFERS #ifdef CONFIG_X86_64 - ALTERNATIVE "", "verw x86_verw_sel(%rip)", X86_FEATURE_CLEAR_CPU_BUF + ALTERNATIVE "", "verw mds_verw_sel(%rip)", X86_FEATURE_CLEAR_CPU_BUF #else /* * In 32bit mode, the memory operand must be a %cs reference. The data * segments may not be usable (vm86 mode), and the stack segment may not * be flat (ESPFIX32). */ - ALTERNATIVE "", "verw %cs:x86_verw_sel", X86_FEATURE_CLEAR_CPU_BUF + ALTERNATIVE "", "verw %cs:mds_verw_sel", X86_FEATURE_CLEAR_CPU_BUF #endif .endm @@ -592,24 +592,24 @@ DECLARE_STATIC_KEY_FALSE(switch_to_cond_stibp); DECLARE_STATIC_KEY_FALSE(switch_mm_cond_ibpb); DECLARE_STATIC_KEY_FALSE(switch_mm_always_ibpb); -DECLARE_STATIC_KEY_FALSE(cpu_buf_idle_clear); +DECLARE_STATIC_KEY_FALSE(mds_idle_clear); DECLARE_STATIC_KEY_FALSE(switch_mm_cond_l1d_flush); DECLARE_STATIC_KEY_FALSE(mmio_stale_data_clear); -extern u16 x86_verw_sel; +extern u16 mds_verw_sel; #include /** - * x86_clear_cpu_buffers - Buffer clearing support for different x86 CPU vulns + * mds_clear_cpu_buffers - Mitigation for MDS and TAA vulnerability * * This uses the otherwise unused and obsolete VERW instruction in * combination with microcode which triggers a CPU buffer flush when the * instruction is executed. */ -static __always_inline void x86_clear_cpu_buffers(void) +static __always_inline void mds_clear_cpu_buffers(void) { static const u16 ds = __KERNEL_DS; @@ -626,15 +626,14 @@ static __always_inline void x86_clear_cpu_buffers(void) } /** - * x86_idle_clear_cpu_buffers - Buffer clearing support in idle for the MDS - * vulnerability + * mds_idle_clear_cpu_buffers - Mitigation for MDS vulnerability * * Clear CPU buffers if the corresponding static key is enabled */ -static __always_inline void x86_idle_clear_cpu_buffers(void) +static __always_inline void mds_idle_clear_cpu_buffers(void) { - if (static_branch_likely(&cpu_buf_idle_clear)) - x86_clear_cpu_buffers(); + if (static_branch_likely(&mds_idle_clear)) + mds_clear_cpu_buffers(); } #endif /* __ASSEMBLY__ */ diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 35df0e86326a..07b45bbf6348 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -122,9 +122,9 @@ DEFINE_STATIC_KEY_FALSE(switch_mm_cond_ibpb); /* Control unconditional IBPB in switch_mm() */ DEFINE_STATIC_KEY_FALSE(switch_mm_always_ibpb); -/* Control CPU buffer clear before idling (halt, mwait) */ -DEFINE_STATIC_KEY_FALSE(cpu_buf_idle_clear); -EXPORT_SYMBOL_GPL(cpu_buf_idle_clear); +/* Control MDS CPU buffer clear before idling (halt, mwait) */ +DEFINE_STATIC_KEY_FALSE(mds_idle_clear); +EXPORT_SYMBOL_GPL(mds_idle_clear); /* * Controls whether l1d flush based mitigations are enabled, @@ -445,7 +445,7 @@ static void __init mmio_select_mitigation(void) * is required irrespective of SMT state. */ if (!(x86_arch_cap_msr & ARCH_CAP_FBSDP_NO)) - static_branch_enable(&cpu_buf_idle_clear); + static_branch_enable(&mds_idle_clear); /* * Check if the system has the right microcode. @@ -2082,10 +2082,10 @@ static void update_mds_branch_idle(void) return; if (sched_smt_active()) { - static_branch_enable(&cpu_buf_idle_clear); + static_branch_enable(&mds_idle_clear); } else if (mmio_mitigation == MMIO_MITIGATION_OFF || (x86_arch_cap_msr & ARCH_CAP_FBSDP_NO)) { - static_branch_disable(&cpu_buf_idle_clear); + static_branch_disable(&mds_idle_clear); } } diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index e53620e18925..e7f3b70f9114 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -7263,7 +7263,7 @@ static noinstr void vmx_vcpu_enter_exit(struct kvm_vcpu *vcpu, vmx_l1d_flush(vcpu); else if (static_branch_unlikely(&mmio_stale_data_clear) && kvm_arch_has_assigned_device(vcpu->kvm)) - x86_clear_cpu_buffers(); + mds_clear_cpu_buffers(); vmx_disable_fb_clear(vmx); -- Gitee From cf81a6536b263f7388f81c242f0e3d52beec1037 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:10 +0800 Subject: [PATCH 0310/1421] Revert "powerpc/kernel: Fix ppc_save_regs inclusion in build" This reverts commit d555d370bbb49273a5725388924c650e6d17755a. --- arch/powerpc/kernel/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 131c859b2467..b7629122680b 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile @@ -165,7 +165,9 @@ endif obj64-$(CONFIG_PPC_TRANSACTIONAL_MEM) += tm.o +ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC_CORE)$(CONFIG_PPC_BOOK3S),) obj-y += ppc_save_regs.o +endif obj-$(CONFIG_EPAPR_PARAVIRT) += epapr_paravirt.o epapr_hcalls.o obj-$(CONFIG_KVM_GUEST) += kvm.o kvm_emul.o -- Gitee From 97d46bf6d2ad93ff8fb372187cd6cb659a2d9aac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:11 +0800 Subject: [PATCH 0311/1421] Revert "usb: typec: displayport: Fix potential deadlock" This reverts commit e688ba88dc8aeff44deb4f6bc5b08d4f20a6755c. --- drivers/usb/typec/altmodes/displayport.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index 7eb78885fa2b..2f8d3ed01d5b 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -324,7 +324,8 @@ static int dp_altmode_vdm(struct typec_altmode *alt, case CMDT_RSP_NAK: switch (cmd) { case DP_CMD_STATUS_UPDATE: - dp->state = DP_STATE_EXIT; + if (typec_altmode_exit(alt)) + dev_err(&dp->alt->dev, "Exit Mode Failed!\n"); break; case DP_CMD_CONFIGURE: dp->data.conf = 0; -- Gitee From c4b0662f8b7004ff46773366f9f1a70547222747 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:11 +0800 Subject: [PATCH 0312/1421] Revert "platform/x86: think-lmi: Fix sysfs group cleanup" This reverts commit f3adc7a6cc54d37ee255e8c68df4932636054259. --- drivers/platform/x86/think-lmi.c | 43 +++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index d5319b4637e1..c3f1735a5551 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -916,7 +916,6 @@ static const struct attribute_group auth_attr_group = { .is_visible = auth_attr_is_visible, .attrs = auth_attrs, }; -__ATTRIBUTE_GROUPS(auth_attr); /* ---- Attributes sysfs --------------------------------------------------------- */ static ssize_t display_name_show(struct kobject *kobj, struct kobj_attribute *attr, @@ -1120,7 +1119,6 @@ static const struct attribute_group tlmi_attr_group = { .is_visible = attr_is_visible, .attrs = tlmi_attrs, }; -__ATTRIBUTE_GROUPS(tlmi_attr); static void tlmi_attr_setting_release(struct kobject *kobj) { @@ -1140,13 +1138,11 @@ static void tlmi_pwd_setting_release(struct kobject *kobj) static const struct kobj_type tlmi_attr_setting_ktype = { .release = &tlmi_attr_setting_release, .sysfs_ops = &kobj_sysfs_ops, - .default_groups = tlmi_attr_groups, }; static const struct kobj_type tlmi_pwd_setting_ktype = { .release = &tlmi_pwd_setting_release, .sysfs_ops = &kobj_sysfs_ops, - .default_groups = auth_attr_groups, }; static ssize_t pending_reboot_show(struct kobject *kobj, struct kobj_attribute *attr, @@ -1217,8 +1213,14 @@ static struct kobj_attribute debug_cmd = __ATTR_WO(debug_cmd); static void tlmi_release_attr(void) { struct kobject *pos, *n; + int i; /* Attribute structures */ + for (i = 0; i < TLMI_SETTINGS_COUNT; i++) { + if (tlmi_priv.setting[i]) { + sysfs_remove_group(&tlmi_priv.setting[i]->kobj, &tlmi_attr_group); + } + } sysfs_remove_file(&tlmi_priv.attribute_kset->kobj, &pending_reboot.attr); if (tlmi_priv.can_debug_cmd && debug_support) sysfs_remove_file(&tlmi_priv.attribute_kset->kobj, &debug_cmd.attr); @@ -1233,6 +1235,15 @@ static void tlmi_release_attr(void) kfree(tlmi_priv.pwd_admin->save_signature); /* Authentication structures */ + sysfs_remove_group(&tlmi_priv.pwd_admin->kobj, &auth_attr_group); + sysfs_remove_group(&tlmi_priv.pwd_power->kobj, &auth_attr_group); + + if (tlmi_priv.opcode_support) { + sysfs_remove_group(&tlmi_priv.pwd_system->kobj, &auth_attr_group); + sysfs_remove_group(&tlmi_priv.pwd_hdd->kobj, &auth_attr_group); + sysfs_remove_group(&tlmi_priv.pwd_nvme->kobj, &auth_attr_group); + } + list_for_each_entry_safe(pos, n, &tlmi_priv.authentication_kset->list, entry) kobject_put(pos); @@ -1303,6 +1314,10 @@ static int tlmi_sysfs_init(void) NULL, "%s", tlmi_priv.setting[i]->display_name); if (ret) goto fail_create_attr; + + ret = sysfs_create_group(&tlmi_priv.setting[i]->kobj, &tlmi_attr_group); + if (ret) + goto fail_create_attr; } ret = sysfs_create_file(&tlmi_priv.attribute_kset->kobj, &pending_reboot.attr); @@ -1322,12 +1337,20 @@ static int tlmi_sysfs_init(void) if (ret) goto fail_create_attr; + ret = sysfs_create_group(&tlmi_priv.pwd_admin->kobj, &auth_attr_group); + if (ret) + goto fail_create_attr; + tlmi_priv.pwd_power->kobj.kset = tlmi_priv.authentication_kset; ret = kobject_init_and_add(&tlmi_priv.pwd_power->kobj, &tlmi_pwd_setting_ktype, NULL, "%s", "Power-on"); if (ret) goto fail_create_attr; + ret = sysfs_create_group(&tlmi_priv.pwd_power->kobj, &auth_attr_group); + if (ret) + goto fail_create_attr; + if (tlmi_priv.opcode_support) { tlmi_priv.pwd_system->kobj.kset = tlmi_priv.authentication_kset; ret = kobject_init_and_add(&tlmi_priv.pwd_system->kobj, &tlmi_pwd_setting_ktype, @@ -1335,17 +1358,29 @@ static int tlmi_sysfs_init(void) if (ret) goto fail_create_attr; + ret = sysfs_create_group(&tlmi_priv.pwd_system->kobj, &auth_attr_group); + if (ret) + goto fail_create_attr; + tlmi_priv.pwd_hdd->kobj.kset = tlmi_priv.authentication_kset; ret = kobject_init_and_add(&tlmi_priv.pwd_hdd->kobj, &tlmi_pwd_setting_ktype, NULL, "%s", "HDD"); if (ret) goto fail_create_attr; + ret = sysfs_create_group(&tlmi_priv.pwd_hdd->kobj, &auth_attr_group); + if (ret) + goto fail_create_attr; + tlmi_priv.pwd_nvme->kobj.kset = tlmi_priv.authentication_kset; ret = kobject_init_and_add(&tlmi_priv.pwd_nvme->kobj, &tlmi_pwd_setting_ktype, NULL, "%s", "NVMe"); if (ret) goto fail_create_attr; + + ret = sysfs_create_group(&tlmi_priv.pwd_nvme->kobj, &auth_attr_group); + if (ret) + goto fail_create_attr; } return ret; -- Gitee From f8eb286dcbbb8b301fe9336c5e7074efc0c71686 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:11 +0800 Subject: [PATCH 0313/1421] Revert "platform/x86: think-lmi: Fix kobject cleanup" This reverts commit 46c7f39247f6d541da44a2e67d350260c8bf00f9. --- drivers/platform/x86/think-lmi.c | 35 +++++++++++++++----------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index c3f1735a5551..62f03a66a619 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -1212,22 +1212,19 @@ static struct kobj_attribute debug_cmd = __ATTR_WO(debug_cmd); /* ---- Initialisation --------------------------------------------------------- */ static void tlmi_release_attr(void) { - struct kobject *pos, *n; int i; /* Attribute structures */ for (i = 0; i < TLMI_SETTINGS_COUNT; i++) { if (tlmi_priv.setting[i]) { sysfs_remove_group(&tlmi_priv.setting[i]->kobj, &tlmi_attr_group); + kobject_put(&tlmi_priv.setting[i]->kobj); } } sysfs_remove_file(&tlmi_priv.attribute_kset->kobj, &pending_reboot.attr); if (tlmi_priv.can_debug_cmd && debug_support) sysfs_remove_file(&tlmi_priv.attribute_kset->kobj, &debug_cmd.attr); - list_for_each_entry_safe(pos, n, &tlmi_priv.attribute_kset->list, entry) - kobject_put(pos); - kset_unregister(tlmi_priv.attribute_kset); /* Free up any saved signatures */ @@ -1236,17 +1233,19 @@ static void tlmi_release_attr(void) /* Authentication structures */ sysfs_remove_group(&tlmi_priv.pwd_admin->kobj, &auth_attr_group); + kobject_put(&tlmi_priv.pwd_admin->kobj); sysfs_remove_group(&tlmi_priv.pwd_power->kobj, &auth_attr_group); + kobject_put(&tlmi_priv.pwd_power->kobj); if (tlmi_priv.opcode_support) { sysfs_remove_group(&tlmi_priv.pwd_system->kobj, &auth_attr_group); + kobject_put(&tlmi_priv.pwd_system->kobj); sysfs_remove_group(&tlmi_priv.pwd_hdd->kobj, &auth_attr_group); + kobject_put(&tlmi_priv.pwd_hdd->kobj); sysfs_remove_group(&tlmi_priv.pwd_nvme->kobj, &auth_attr_group); + kobject_put(&tlmi_priv.pwd_nvme->kobj); } - list_for_each_entry_safe(pos, n, &tlmi_priv.authentication_kset->list, entry) - kobject_put(pos); - kset_unregister(tlmi_priv.authentication_kset); } @@ -1310,8 +1309,8 @@ static int tlmi_sysfs_init(void) /* Build attribute */ tlmi_priv.setting[i]->kobj.kset = tlmi_priv.attribute_kset; - ret = kobject_init_and_add(&tlmi_priv.setting[i]->kobj, &tlmi_attr_setting_ktype, - NULL, "%s", tlmi_priv.setting[i]->display_name); + ret = kobject_add(&tlmi_priv.setting[i]->kobj, NULL, + "%s", tlmi_priv.setting[i]->display_name); if (ret) goto fail_create_attr; @@ -1332,8 +1331,7 @@ static int tlmi_sysfs_init(void) /* Create authentication entries */ tlmi_priv.pwd_admin->kobj.kset = tlmi_priv.authentication_kset; - ret = kobject_init_and_add(&tlmi_priv.pwd_admin->kobj, &tlmi_pwd_setting_ktype, - NULL, "%s", "Admin"); + ret = kobject_add(&tlmi_priv.pwd_admin->kobj, NULL, "%s", "Admin"); if (ret) goto fail_create_attr; @@ -1342,8 +1340,7 @@ static int tlmi_sysfs_init(void) goto fail_create_attr; tlmi_priv.pwd_power->kobj.kset = tlmi_priv.authentication_kset; - ret = kobject_init_and_add(&tlmi_priv.pwd_power->kobj, &tlmi_pwd_setting_ktype, - NULL, "%s", "Power-on"); + ret = kobject_add(&tlmi_priv.pwd_power->kobj, NULL, "%s", "Power-on"); if (ret) goto fail_create_attr; @@ -1353,8 +1350,7 @@ static int tlmi_sysfs_init(void) if (tlmi_priv.opcode_support) { tlmi_priv.pwd_system->kobj.kset = tlmi_priv.authentication_kset; - ret = kobject_init_and_add(&tlmi_priv.pwd_system->kobj, &tlmi_pwd_setting_ktype, - NULL, "%s", "System"); + ret = kobject_add(&tlmi_priv.pwd_system->kobj, NULL, "%s", "System"); if (ret) goto fail_create_attr; @@ -1363,8 +1359,7 @@ static int tlmi_sysfs_init(void) goto fail_create_attr; tlmi_priv.pwd_hdd->kobj.kset = tlmi_priv.authentication_kset; - ret = kobject_init_and_add(&tlmi_priv.pwd_hdd->kobj, &tlmi_pwd_setting_ktype, - NULL, "%s", "HDD"); + ret = kobject_add(&tlmi_priv.pwd_hdd->kobj, NULL, "%s", "HDD"); if (ret) goto fail_create_attr; @@ -1373,8 +1368,7 @@ static int tlmi_sysfs_init(void) goto fail_create_attr; tlmi_priv.pwd_nvme->kobj.kset = tlmi_priv.authentication_kset; - ret = kobject_init_and_add(&tlmi_priv.pwd_nvme->kobj, &tlmi_pwd_setting_ktype, - NULL, "%s", "NVMe"); + ret = kobject_add(&tlmi_priv.pwd_nvme->kobj, NULL, "%s", "NVMe"); if (ret) goto fail_create_attr; @@ -1411,6 +1405,8 @@ static struct tlmi_pwd_setting *tlmi_create_auth(const char *pwd_type, new_pwd->maxlen = tlmi_priv.pwdcfg.core.max_length; new_pwd->index = 0; + kobject_init(&new_pwd->kobj, &tlmi_pwd_setting_ktype); + return new_pwd; } @@ -1514,6 +1510,7 @@ static int tlmi_analyze(void) if (setting->possible_values) strreplace(setting->possible_values, ',', ';'); + kobject_init(&setting->kobj, &tlmi_attr_setting_ktype); tlmi_priv.setting[i] = setting; kfree(item); } -- Gitee From 29cdde809c573749744a420f839a39cd11cff123 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:11 +0800 Subject: [PATCH 0314/1421] Revert "platform/x86: think-lmi: Create ksets consecutively" This reverts commit 7c27832a5f9dec07e5f4e48a957bad43b0283748. --- drivers/platform/x86/think-lmi.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 62f03a66a619..626990d103e3 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -1285,14 +1285,6 @@ static int tlmi_sysfs_init(void) goto fail_device_created; } - tlmi_priv.authentication_kset = kset_create_and_add("authentication", NULL, - &tlmi_priv.class_dev->kobj); - if (!tlmi_priv.authentication_kset) { - kset_unregister(tlmi_priv.attribute_kset); - ret = -ENOMEM; - goto fail_device_created; - } - for (i = 0; i < TLMI_SETTINGS_COUNT; i++) { /* Check if index is a valid setting - skip if it isn't */ if (!tlmi_priv.setting[i]) @@ -1330,6 +1322,12 @@ static int tlmi_sysfs_init(void) } /* Create authentication entries */ + tlmi_priv.authentication_kset = kset_create_and_add("authentication", NULL, + &tlmi_priv.class_dev->kobj); + if (!tlmi_priv.authentication_kset) { + ret = -ENOMEM; + goto fail_create_attr; + } tlmi_priv.pwd_admin->kobj.kset = tlmi_priv.authentication_kset; ret = kobject_add(&tlmi_priv.pwd_admin->kobj, NULL, "%s", "Admin"); if (ret) -- Gitee From f30f82bbe9e27ce1deb2b5ca4e389edfe192c105 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:11 +0800 Subject: [PATCH 0315/1421] Revert "powercap: intel_rapl: Do not change CLAMPING bit if ENABLE bit cannot be changed" This reverts commit 6448834aeb30888d9f87bcf422639b1f4aea79d1. --- drivers/powercap/intel_rapl_common.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/powercap/intel_rapl_common.c b/drivers/powercap/intel_rapl_common.c index 5a09a56698f4..f1de4111e98d 100644 --- a/drivers/powercap/intel_rapl_common.c +++ b/drivers/powercap/intel_rapl_common.c @@ -338,28 +338,12 @@ static int set_domain_enable(struct powercap_zone *power_zone, bool mode) { struct rapl_domain *rd = power_zone_to_rapl_domain(power_zone); struct rapl_defaults *defaults = get_defaults(rd->rp); - u64 val; int ret; cpus_read_lock(); ret = rapl_write_pl_data(rd, POWER_LIMIT1, PL_ENABLE, mode); - if (ret) - goto end; - - ret = rapl_read_pl_data(rd, POWER_LIMIT1, PL_ENABLE, false, &val); - if (ret) - goto end; - - if (mode != val) { - pr_debug("%s cannot be %s\n", power_zone->name, - str_enabled_disabled(mode)); - goto end; - } - - if (defaults->set_floor_freq) + if (!ret && defaults->set_floor_freq) defaults->set_floor_freq(rd, mode); - -end: cpus_read_unlock(); return ret; -- Gitee From f8f913def5b317804c8995f27cc2b403dca2dd95 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:12 +0800 Subject: [PATCH 0316/1421] Revert "Logitech C-270 even more broken" This reverts commit e1bd79e2e50b63d4e5a470db36a94b1ba3c2ea32. --- drivers/usb/core/quirks.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 46db600fdd82..c979ecd0169a 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -227,8 +227,7 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x046a, 0x0023), .driver_info = USB_QUIRK_RESET_RESUME }, /* Logitech HD Webcam C270 */ - { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME | - USB_QUIRK_NO_LPM}, + { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME }, /* Logitech HD Pro Webcams C920, C920-C, C922, C925e and C930e */ { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT }, -- Gitee From 8ed830aee4d52c1f0b3d285c1cccae505b924a1f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:12 +0800 Subject: [PATCH 0317/1421] Revert "i2c/designware: Fix an initialization issue" This reverts commit ba353d9c9786645c5343d9288a685390f7032b8e. --- drivers/i2c/busses/i2c-designware-master.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c index e865869ccc50..51f5491648c0 100644 --- a/drivers/i2c/busses/i2c-designware-master.c +++ b/drivers/i2c/busses/i2c-designware-master.c @@ -327,7 +327,6 @@ static int amd_i2c_dw_xfer_quirk(struct i2c_adapter *adap, struct i2c_msg *msgs, dev->msgs = msgs; dev->msgs_num = num_msgs; - dev->msg_write_idx = 0; i2c_dw_xfer_init(dev); regmap_write(dev->map, DW_IC_INTR_MASK, 0); -- Gitee From 41194cfdbb275d0e44f113b116e5b0cd28cbdf51 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:12 +0800 Subject: [PATCH 0318/1421] Revert "dma-buf: fix timeout handling in dma_resv_wait_timeout v2" This reverts commit cd0e7ae6ae8c1265aa7ae0c715ddf7db8122d46c. --- drivers/dma-buf/dma-resv.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/dma-buf/dma-resv.c b/drivers/dma-buf/dma-resv.c index 8f3fa149a76d..9093f751f133 100644 --- a/drivers/dma-buf/dma-resv.c +++ b/drivers/dma-buf/dma-resv.c @@ -678,13 +678,11 @@ long dma_resv_wait_timeout(struct dma_resv *obj, enum dma_resv_usage usage, dma_resv_iter_begin(&cursor, obj, usage); dma_resv_for_each_fence_unlocked(&cursor, fence) { - ret = dma_fence_wait_timeout(fence, intr, timeout); - if (ret <= 0) - break; - - /* Even for zero timeout the return value is 1 */ - if (timeout) - timeout = ret; + ret = dma_fence_wait_timeout(fence, intr, ret); + if (ret <= 0) { + dma_resv_iter_end(&cursor); + return ret; + } } dma_resv_iter_end(&cursor); -- Gitee From fd2ad3454727a54bbfff24acc6db1e11edf03220 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:12 +0800 Subject: [PATCH 0319/1421] Revert "smb: client: fix readdir returning wrong type with POSIX extensions" This reverts commit 91bf6fc61fdca0c69e4e299f1b7760cc9efddd5e. --- fs/smb/client/readdir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c index 0be16f8acd9a..222348ae6258 100644 --- a/fs/smb/client/readdir.c +++ b/fs/smb/client/readdir.c @@ -263,7 +263,7 @@ cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info, /* The Mode field in the response can now include the file type as well */ fattr->cf_mode = wire_mode_to_posix(le32_to_cpu(info->Mode), fattr->cf_cifsattrs & ATTR_DIRECTORY); - fattr->cf_dtype = S_DT(fattr->cf_mode); + fattr->cf_dtype = S_DT(le32_to_cpu(info->Mode)); switch (fattr->cf_mode & S_IFMT) { case S_IFLNK: -- Gitee From fb469be62a91b03dfe2578865c1393ac790ffd89 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:12 +0800 Subject: [PATCH 0320/1421] Revert "usb: chipidea: udc: disconnect/reconnect from host when do suspend/resume" This reverts commit a53b1a1427a8579f82c93ed99fa691ca77014698. --- drivers/usb/chipidea/udc.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 0bee561420af..f2ae5f4c5828 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -2213,10 +2213,6 @@ static void udc_suspend(struct ci_hdrc *ci) */ if (hw_read(ci, OP_ENDPTLISTADDR, ~0) == 0) hw_write(ci, OP_ENDPTLISTADDR, ~0, ~0); - - if (ci->gadget.connected && - (!ci->suspended || !device_may_wakeup(ci->dev))) - usb_gadget_disconnect(&ci->gadget); } static void udc_resume(struct ci_hdrc *ci, bool power_lost) @@ -2227,9 +2223,6 @@ static void udc_resume(struct ci_hdrc *ci, bool power_lost) OTGSC_BSVIS | OTGSC_BSVIE); if (ci->vbus_active) usb_gadget_vbus_disconnect(&ci->gadget); - } else if (ci->vbus_active && ci->driver && - !ci->gadget.connected) { - usb_gadget_connect(&ci->gadget); } /* Restore value 0 if it was set for power lost check */ -- Gitee From 379a02e7121109382b6c4f5947c3cd19a4835e4e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:13 +0800 Subject: [PATCH 0321/1421] Revert "usb: cdnsp: do not disable slot for disabled slot" This reverts commit b4f0a46fc45b51d54093f72d76806887f175285f. --- drivers/usb/cdns3/cdnsp-ring.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/usb/cdns3/cdnsp-ring.c b/drivers/usb/cdns3/cdnsp-ring.c index 3b17d9e4b07d..080a3f17a35d 100644 --- a/drivers/usb/cdns3/cdnsp-ring.c +++ b/drivers/usb/cdns3/cdnsp-ring.c @@ -772,9 +772,7 @@ static int cdnsp_update_port_id(struct cdnsp_device *pdev, u32 port_id) } if (port_id != old_port) { - if (pdev->slot_id) - cdnsp_disable_slot(pdev); - + cdnsp_disable_slot(pdev); pdev->active_port = port; cdnsp_enable_slot(pdev); } -- Gitee From 93232958e3665f41400f51890a7b0ede2a215b56 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:13 +0800 Subject: [PATCH 0322/1421] Revert "Input: iqs7222 - explicitly define number of external channels" This reverts commit f6687f7c7f5de3bb3c26d16e7554b2a6de3468d3. --- drivers/input/misc/iqs7222.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/input/misc/iqs7222.c b/drivers/input/misc/iqs7222.c index ce7e977cc8a7..b98529568eeb 100644 --- a/drivers/input/misc/iqs7222.c +++ b/drivers/input/misc/iqs7222.c @@ -301,7 +301,6 @@ struct iqs7222_dev_desc { int allow_offset; int event_offset; int comms_offset; - int ext_chan; bool legacy_gesture; struct iqs7222_reg_grp_desc reg_grps[IQS7222_NUM_REG_GRPS]; }; @@ -316,7 +315,6 @@ static const struct iqs7222_dev_desc iqs7222_devs[] = { .allow_offset = 9, .event_offset = 10, .comms_offset = 12, - .ext_chan = 10, .reg_grps = { [IQS7222_REG_GRP_STAT] = { .base = IQS7222_SYS_STATUS, @@ -375,7 +373,6 @@ static const struct iqs7222_dev_desc iqs7222_devs[] = { .allow_offset = 9, .event_offset = 10, .comms_offset = 12, - .ext_chan = 10, .legacy_gesture = true, .reg_grps = { [IQS7222_REG_GRP_STAT] = { @@ -2247,7 +2244,7 @@ static int iqs7222_parse_chan(struct iqs7222_private *iqs7222, const struct iqs7222_dev_desc *dev_desc = iqs7222->dev_desc; struct i2c_client *client = iqs7222->client; int num_chan = dev_desc->reg_grps[IQS7222_REG_GRP_CHAN].num_row; - int ext_chan = dev_desc->ext_chan ? : num_chan; + int ext_chan = rounddown(num_chan, 10); int error, i; u16 *chan_setup = iqs7222->chan_setup[chan_index]; u16 *sys_setup = iqs7222->sys_setup; @@ -2451,7 +2448,7 @@ static int iqs7222_parse_sldr(struct iqs7222_private *iqs7222, const struct iqs7222_dev_desc *dev_desc = iqs7222->dev_desc; struct i2c_client *client = iqs7222->client; int num_chan = dev_desc->reg_grps[IQS7222_REG_GRP_CHAN].num_row; - int ext_chan = dev_desc->ext_chan ? : num_chan; + int ext_chan = rounddown(num_chan, 10); int count, error, reg_offset, i; u16 *event_mask = &iqs7222->sys_setup[dev_desc->event_offset]; u16 *sldr_setup = iqs7222->sldr_setup[sldr_index]; -- Gitee From 0e9c01f5f06eb759419c5268ed0664a2e374bd74 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:13 +0800 Subject: [PATCH 0323/1421] Revert "Input: xpad - support Acer NGR 200 Controller" This reverts commit c45a8114dfba704f50a6770dc3a6e53f69d5fb10. --- drivers/input/joystick/xpad.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 05c00421ff2b..e6fed973ea74 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -174,7 +174,6 @@ static const struct xpad_device { { 0x05fd, 0x107a, "InterAct 'PowerPad Pro' X-Box pad (Germany)", 0, XTYPE_XBOX }, { 0x05fe, 0x3030, "Chic Controller", 0, XTYPE_XBOX }, { 0x05fe, 0x3031, "Chic Controller", 0, XTYPE_XBOX }, - { 0x0502, 0x1305, "Acer NGR200", 0, XTYPE_XBOX }, { 0x062a, 0x0020, "Logic3 Xbox GamePad", 0, XTYPE_XBOX }, { 0x062a, 0x0033, "Competition Pro Steering Wheel", 0, XTYPE_XBOX }, { 0x06a3, 0x0200, "Saitek Racing Wheel", 0, XTYPE_XBOX }, @@ -515,7 +514,6 @@ static const struct usb_device_id xpad_table[] = { XPAD_XBOX360_VENDOR(0x045e), /* Microsoft Xbox 360 controllers */ XPAD_XBOXONE_VENDOR(0x045e), /* Microsoft Xbox One controllers */ XPAD_XBOX360_VENDOR(0x046d), /* Logitech Xbox 360-style controllers */ - XPAD_XBOX360_VENDOR(0x0502), /* Acer Inc. Xbox 360 style controllers */ XPAD_XBOX360_VENDOR(0x056e), /* Elecom JC-U3613M */ XPAD_XBOX360_VENDOR(0x06a3), /* Saitek P3600 */ XPAD_XBOX360_VENDOR(0x0738), /* Mad Catz Xbox 360 controllers */ -- Gitee From f0c05ee4c5df44e630fcce2b2c761e33956a0ef2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:13 +0800 Subject: [PATCH 0324/1421] Revert "xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS" This reverts commit b876c48c92a90c4ebcf243ef15163798df44a942. --- drivers/usb/host/xhci-plat.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 749ba3596c2b..8832e0cedada 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -313,8 +313,7 @@ int xhci_plat_probe(struct platform_device *pdev, struct device *sysdev, const s } usb3_hcd = xhci_get_usb3_hcd(xhci); - if (usb3_hcd && HCC_MAX_PSA(xhci->hcc_params) >= 4 && - !(xhci->quirks & XHCI_BROKEN_STREAMS)) + if (usb3_hcd && HCC_MAX_PSA(xhci->hcc_params) >= 4) usb3_hcd->can_do_streams = 1; if (xhci->shared_hcd) { -- Gitee From 5b46e1f6f6a084ab59353f6aa714eb74b22ea563 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:14 +0800 Subject: [PATCH 0325/1421] Revert "xhci: dbc: Flush queued requests before stopping dbc" This reverts commit f7eb8afbbdffae322f601d9a675e328746172a29. --- drivers/usb/host/xhci-dbgcap.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/usb/host/xhci-dbgcap.c b/drivers/usb/host/xhci-dbgcap.c index 2cd8c757c653..fab9e6be4e27 100644 --- a/drivers/usb/host/xhci-dbgcap.c +++ b/drivers/usb/host/xhci-dbgcap.c @@ -639,10 +639,6 @@ static void xhci_dbc_stop(struct xhci_dbc *dbc) case DS_DISABLED: return; case DS_CONFIGURED: - spin_lock(&dbc->lock); - xhci_dbc_flush_requests(dbc); - spin_unlock(&dbc->lock); - if (dbc->driver->disconnect) dbc->driver->disconnect(dbc); break; -- Gitee From 8447d09d5e006069034aab1d5c38694c79f05d1b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:14 +0800 Subject: [PATCH 0326/1421] Revert "xhci: dbctty: disable ECHO flag by default" This reverts commit 091e880e6ccc6907928f815252584e4ea6e416a6. --- drivers/usb/host/xhci-dbgtty.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/usb/host/xhci-dbgtty.c b/drivers/usb/host/xhci-dbgtty.c index aa689fbd3dce..0266c2f5bc0d 100644 --- a/drivers/usb/host/xhci-dbgtty.c +++ b/drivers/usb/host/xhci-dbgtty.c @@ -585,7 +585,6 @@ int dbc_tty_init(void) dbc_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; dbc_tty_driver->subtype = SERIAL_TYPE_NORMAL; dbc_tty_driver->init_termios = tty_std_termios; - dbc_tty_driver->init_termios.c_lflag &= ~ECHO; dbc_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; dbc_tty_driver->init_termios.c_ispeed = 9600; -- Gitee From a6e39e78348d79b30219916623460ea86da2c46b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:14 +0800 Subject: [PATCH 0327/1421] Revert "usb: xhci: quirk for data loss in ISOC transfers" This reverts commit d52e7a4f536f6ee435ca7985103d83ce82753656. --- drivers/usb/host/xhci-mem.c | 4 ---- drivers/usb/host/xhci-pci.c | 25 ------------------------- drivers/usb/host/xhci.h | 1 - 3 files changed, 30 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index cceb69d4f61e..22cca89efbfd 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -1436,10 +1436,6 @@ int xhci_endpoint_init(struct xhci_hcd *xhci, /* Periodic endpoint bInterval limit quirk */ if (usb_endpoint_xfer_int(&ep->desc) || usb_endpoint_xfer_isoc(&ep->desc)) { - if ((xhci->quirks & XHCI_LIMIT_ENDPOINT_INTERVAL_9) && - interval >= 9) { - interval = 8; - } if ((xhci->quirks & XHCI_LIMIT_ENDPOINT_INTERVAL_7) && udev->speed >= USB_SPEED_HIGH && interval >= 7) { diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 5abc48f148dc..c1a172b6feae 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -65,22 +65,12 @@ #define PCI_DEVICE_ID_INTEL_ALDER_LAKE_PCH_XHCI 0x51ed #define PCI_DEVICE_ID_INTEL_ALDER_LAKE_N_PCH_XHCI 0x54ed -#define PCI_DEVICE_ID_AMD_ARIEL_TYPEC_XHCI 0x13ed -#define PCI_DEVICE_ID_AMD_ARIEL_TYPEA_XHCI 0x13ee -#define PCI_DEVICE_ID_AMD_STARSHIP_XHCI 0x148c -#define PCI_DEVICE_ID_AMD_FIREFLIGHT_15D4_XHCI 0x15d4 -#define PCI_DEVICE_ID_AMD_FIREFLIGHT_15D5_XHCI 0x15d5 -#define PCI_DEVICE_ID_AMD_RAVEN_15E0_XHCI 0x15e0 -#define PCI_DEVICE_ID_AMD_RAVEN_15E1_XHCI 0x15e1 -#define PCI_DEVICE_ID_AMD_RAVEN2_XHCI 0x15e5 #define PCI_DEVICE_ID_AMD_RENOIR_XHCI 0x1639 #define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9 #define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba #define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb #define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc -#define PCI_DEVICE_ID_ATI_NAVI10_7316_XHCI 0x7316 - #define PCI_DEVICE_ID_ASMEDIA_1042_XHCI 0x1042 #define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142 #define PCI_DEVICE_ID_ASMEDIA_1142_XHCI 0x1242 @@ -358,21 +348,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) if (pdev->vendor == PCI_VENDOR_ID_NEC) xhci->quirks |= XHCI_NEC_HOST; - if (pdev->vendor == PCI_VENDOR_ID_AMD && - (pdev->device == PCI_DEVICE_ID_AMD_ARIEL_TYPEC_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_ARIEL_TYPEA_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_STARSHIP_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_FIREFLIGHT_15D4_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_FIREFLIGHT_15D5_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_RAVEN_15E0_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_RAVEN_15E1_XHCI || - pdev->device == PCI_DEVICE_ID_AMD_RAVEN2_XHCI)) - xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_9; - - if (pdev->vendor == PCI_VENDOR_ID_ATI && - pdev->device == PCI_DEVICE_ID_ATI_NAVI10_7316_XHCI) - xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_9; - if (pdev->vendor == PCI_VENDOR_ID_AMD && xhci->hci_version == 0x96) xhci->quirks |= XHCI_AMD_0x96_HOST; diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 159cdfc71290..74bdd035d756 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1659,7 +1659,6 @@ struct xhci_hcd { #define XHCI_WRITE_64_HI_LO BIT_ULL(47) #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48) #define XHCI_ETRON_HOST BIT_ULL(49) -#define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50) unsigned int num_active_eps; unsigned int limit_active_eps; -- Gitee From 3662b8bd4d432c37953d1fb34d0525ab7fa539b4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:14 +0800 Subject: [PATCH 0328/1421] Revert "NFSv4/flexfiles: Fix handling of NFS level errors in I/O" This reverts commit 4012cc23e1279e0165cb4b7075fb24e2b71ec1b4. --- fs/nfs/flexfilelayout/flexfilelayout.c | 121 +++++++------------------ 1 file changed, 34 insertions(+), 87 deletions(-) diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c index 0a26444fe202..0bc537de1b29 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.c +++ b/fs/nfs/flexfilelayout/flexfilelayout.c @@ -1096,7 +1096,6 @@ static void ff_layout_reset_read(struct nfs_pgio_header *hdr) } static int ff_layout_async_handle_error_v4(struct rpc_task *task, - u32 op_status, struct nfs4_state *state, struct nfs_client *clp, struct pnfs_layout_segment *lseg, @@ -1107,42 +1106,32 @@ static int ff_layout_async_handle_error_v4(struct rpc_task *task, struct nfs4_deviceid_node *devid = FF_LAYOUT_DEVID_NODE(lseg, idx); struct nfs4_slot_table *tbl = &clp->cl_session->fc_slot_table; - switch (op_status) { - case NFS4_OK: - case NFS4ERR_NXIO: - break; - case NFSERR_PERM: - if (!task->tk_xprt) - break; - xprt_force_disconnect(task->tk_xprt); - goto out_retry; - case NFS4ERR_BADSESSION: - case NFS4ERR_BADSLOT: - case NFS4ERR_BAD_HIGH_SLOT: - case NFS4ERR_DEADSESSION: - case NFS4ERR_CONN_NOT_BOUND_TO_SESSION: - case NFS4ERR_SEQ_FALSE_RETRY: - case NFS4ERR_SEQ_MISORDERED: + switch (task->tk_status) { + case -NFS4ERR_BADSESSION: + case -NFS4ERR_BADSLOT: + case -NFS4ERR_BAD_HIGH_SLOT: + case -NFS4ERR_DEADSESSION: + case -NFS4ERR_CONN_NOT_BOUND_TO_SESSION: + case -NFS4ERR_SEQ_FALSE_RETRY: + case -NFS4ERR_SEQ_MISORDERED: dprintk("%s ERROR %d, Reset session. Exchangeid " "flags 0x%x\n", __func__, task->tk_status, clp->cl_exchange_flags); nfs4_schedule_session_recovery(clp->cl_session, task->tk_status); - goto out_retry; - case NFS4ERR_DELAY: - nfs_inc_stats(lseg->pls_layout->plh_inode, NFSIOS_DELAY); - fallthrough; - case NFS4ERR_GRACE: + break; + case -NFS4ERR_DELAY: + case -NFS4ERR_GRACE: rpc_delay(task, FF_LAYOUT_POLL_RETRY_MAX); - goto out_retry; - case NFS4ERR_RETRY_UNCACHED_REP: - goto out_retry; + break; + case -NFS4ERR_RETRY_UNCACHED_REP: + break; /* Invalidate Layout errors */ - case NFS4ERR_PNFS_NO_LAYOUT: - case NFS4ERR_STALE: - case NFS4ERR_BADHANDLE: - case NFS4ERR_ISDIR: - case NFS4ERR_FHEXPIRED: - case NFS4ERR_WRONG_TYPE: + case -NFS4ERR_PNFS_NO_LAYOUT: + case -ESTALE: /* mapped NFS4ERR_STALE */ + case -EBADHANDLE: /* mapped NFS4ERR_BADHANDLE */ + case -EISDIR: /* mapped NFS4ERR_ISDIR */ + case -NFS4ERR_FHEXPIRED: + case -NFS4ERR_WRONG_TYPE: dprintk("%s Invalid layout error %d\n", __func__, task->tk_status); /* @@ -1155,11 +1144,6 @@ static int ff_layout_async_handle_error_v4(struct rpc_task *task, pnfs_destroy_layout(NFS_I(inode)); rpc_wake_up(&tbl->slot_tbl_waitq); goto reset; - default: - break; - } - - switch (task->tk_status) { /* RPC connection errors */ case -ECONNREFUSED: case -EHOSTDOWN: @@ -1175,56 +1159,26 @@ static int ff_layout_async_handle_error_v4(struct rpc_task *task, nfs4_delete_deviceid(devid->ld, devid->nfs_client, &devid->deviceid); rpc_wake_up(&tbl->slot_tbl_waitq); - break; + fallthrough; default: - break; - } - - if (ff_layout_avoid_mds_available_ds(lseg)) - return -NFS4ERR_RESET_TO_PNFS; + if (ff_layout_avoid_mds_available_ds(lseg)) + return -NFS4ERR_RESET_TO_PNFS; reset: - dprintk("%s Retry through MDS. Error %d\n", __func__, - task->tk_status); - return -NFS4ERR_RESET_TO_MDS; - -out_retry: + dprintk("%s Retry through MDS. Error %d\n", __func__, + task->tk_status); + return -NFS4ERR_RESET_TO_MDS; + } task->tk_status = 0; return -EAGAIN; } /* Retry all errors through either pNFS or MDS except for -EJUKEBOX */ static int ff_layout_async_handle_error_v3(struct rpc_task *task, - u32 op_status, - struct nfs_client *clp, struct pnfs_layout_segment *lseg, u32 idx) { struct nfs4_deviceid_node *devid = FF_LAYOUT_DEVID_NODE(lseg, idx); - switch (op_status) { - case NFS_OK: - case NFSERR_NXIO: - break; - case NFSERR_PERM: - if (!task->tk_xprt) - break; - xprt_force_disconnect(task->tk_xprt); - goto out_retry; - case NFSERR_ACCES: - case NFSERR_BADHANDLE: - case NFSERR_FBIG: - case NFSERR_IO: - case NFSERR_NOSPC: - case NFSERR_ROFS: - case NFSERR_STALE: - goto out_reset_to_pnfs; - case NFSERR_JUKEBOX: - nfs_inc_stats(lseg->pls_layout->plh_inode, NFSIOS_DELAY); - goto out_retry; - default: - break; - } - switch (task->tk_status) { /* File access problems. Don't mark the device as unavailable */ case -EACCES: @@ -1243,7 +1197,6 @@ static int ff_layout_async_handle_error_v3(struct rpc_task *task, nfs4_delete_deviceid(devid->ld, devid->nfs_client, &devid->deviceid); } -out_reset_to_pnfs: /* FIXME: Need to prevent infinite looping here. */ return -NFS4ERR_RESET_TO_PNFS; out_retry: @@ -1254,7 +1207,6 @@ static int ff_layout_async_handle_error_v3(struct rpc_task *task, } static int ff_layout_async_handle_error(struct rpc_task *task, - u32 op_status, struct nfs4_state *state, struct nfs_client *clp, struct pnfs_layout_segment *lseg, @@ -1273,11 +1225,10 @@ static int ff_layout_async_handle_error(struct rpc_task *task, switch (vers) { case 3: - return ff_layout_async_handle_error_v3(task, op_status, clp, - lseg, idx); + return ff_layout_async_handle_error_v3(task, lseg, idx); case 4: - return ff_layout_async_handle_error_v4(task, op_status, state, - clp, lseg, idx); + return ff_layout_async_handle_error_v4(task, state, clp, + lseg, idx); default: /* should never happen */ WARN_ON_ONCE(1); @@ -1330,7 +1281,6 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg, switch (status) { case NFS4ERR_DELAY: case NFS4ERR_GRACE: - case NFS4ERR_PERM: break; case NFS4ERR_NXIO: ff_layout_mark_ds_unreachable(lseg, idx); @@ -1363,8 +1313,7 @@ static int ff_layout_read_done_cb(struct rpc_task *task, trace_ff_layout_read_error(hdr); } - err = ff_layout_async_handle_error(task, hdr->res.op_status, - hdr->args.context->state, + err = ff_layout_async_handle_error(task, hdr->args.context->state, hdr->ds_clp, hdr->lseg, hdr->pgio_mirror_idx); @@ -1534,8 +1483,7 @@ static int ff_layout_write_done_cb(struct rpc_task *task, trace_ff_layout_write_error(hdr); } - err = ff_layout_async_handle_error(task, hdr->res.op_status, - hdr->args.context->state, + err = ff_layout_async_handle_error(task, hdr->args.context->state, hdr->ds_clp, hdr->lseg, hdr->pgio_mirror_idx); @@ -1581,9 +1529,8 @@ static int ff_layout_commit_done_cb(struct rpc_task *task, trace_ff_layout_commit_error(data); } - err = ff_layout_async_handle_error(task, data->res.op_status, - NULL, data->ds_clp, data->lseg, - data->ds_commit_index); + err = ff_layout_async_handle_error(task, NULL, data->ds_clp, + data->lseg, data->ds_commit_index); trace_nfs4_pnfs_commit_ds(data, err); switch (err) { -- Gitee From b514a205958d50f412516e36007fd85ee66044c2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:14 +0800 Subject: [PATCH 0329/1421] Revert "fs: export anon_inode_make_secure_inode() and fix secretmem LSM bypass" This reverts commit ebf77751bee8f515f6c34c24b61dfcd8f8b804c1. --- fs/anon_inodes.c | 23 +++++------------------ include/linux/fs.h | 2 -- mm/secretmem.c | 11 ++++++++++- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c index a25766e90f0a..24192a7667ed 100644 --- a/fs/anon_inodes.c +++ b/fs/anon_inodes.c @@ -55,26 +55,15 @@ static struct file_system_type anon_inode_fs_type = { .kill_sb = kill_anon_super, }; -/** - * anon_inode_make_secure_inode - allocate an anonymous inode with security context - * @sb: [in] Superblock to allocate from - * @name: [in] Name of the class of the newfile (e.g., "secretmem") - * @context_inode: - * [in] Optional parent inode for security inheritance - * - * The function ensures proper security initialization through the LSM hook - * security_inode_init_security_anon(). - * - * Return: Pointer to new inode on success, ERR_PTR on failure. - */ -struct inode *anon_inode_make_secure_inode(struct super_block *sb, const char *name, - const struct inode *context_inode) +static struct inode *anon_inode_make_secure_inode( + const char *name, + const struct inode *context_inode) { struct inode *inode; const struct qstr qname = QSTR_INIT(name, strlen(name)); int error; - inode = alloc_anon_inode(sb); + inode = alloc_anon_inode(anon_inode_mnt->mnt_sb); if (IS_ERR(inode)) return inode; inode->i_flags &= ~S_PRIVATE; @@ -85,7 +74,6 @@ struct inode *anon_inode_make_secure_inode(struct super_block *sb, const char *n } return inode; } -EXPORT_SYMBOL_GPL_FOR_MODULES(anon_inode_make_secure_inode, "kvm"); static struct file *__anon_inode_getfile(const char *name, const struct file_operations *fops, @@ -100,8 +88,7 @@ static struct file *__anon_inode_getfile(const char *name, return ERR_PTR(-ENOENT); if (secure) { - inode = anon_inode_make_secure_inode(anon_inode_mnt->mnt_sb, - name, context_inode); + inode = anon_inode_make_secure_inode(name, context_inode); if (IS_ERR(inode)) { file = ERR_CAST(inode); goto err; diff --git a/include/linux/fs.h b/include/linux/fs.h index b641a01512fb..81edfa1e66b6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3170,8 +3170,6 @@ extern int simple_write_begin(struct file *file, struct address_space *mapping, extern const struct address_space_operations ram_aops; extern int always_delete_dentry(const struct dentry *); extern struct inode *alloc_anon_inode(struct super_block *); -struct inode *anon_inode_make_secure_inode(struct super_block *sb, const char *name, - const struct inode *context_inode); extern int simple_nosetlease(struct file *, int, struct file_lock **, void **); extern const struct dentry_operations simple_dentry_operations; diff --git a/mm/secretmem.c b/mm/secretmem.c index 4bedf491a8a7..399552814fd0 100644 --- a/mm/secretmem.c +++ b/mm/secretmem.c @@ -195,10 +195,19 @@ static struct file *secretmem_file_create(unsigned long flags) struct file *file; struct inode *inode; const char *anon_name = "[secretmem]"; + const struct qstr qname = QSTR_INIT(anon_name, strlen(anon_name)); + int err; - inode = anon_inode_make_secure_inode(secretmem_mnt->mnt_sb, anon_name, NULL); + inode = alloc_anon_inode(secretmem_mnt->mnt_sb); if (IS_ERR(inode)) return ERR_CAST(inode); + + err = security_inode_init_security_anon(inode, &qname, NULL); + if (err) { + file = ERR_PTR(err); + goto err_free_inode; + } + file = alloc_file_pseudo(inode, secretmem_mnt, "secretmem", O_RDWR, &secretmem_fops); if (IS_ERR(file)) -- Gitee From e361a16179cfd2f38a00582423582093a4504713 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:15 +0800 Subject: [PATCH 0330/1421] Revert "module: Provide EXPORT_SYMBOL_GPL_FOR_MODULES() helper" This reverts commit ef2fe2a150a6eb56dedc5ac9c94fdd6173b13fd8. --- Documentation/core-api/symbol-namespaces.rst | 22 -------------------- include/linux/export.h | 12 ++--------- 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/Documentation/core-api/symbol-namespaces.rst b/Documentation/core-api/symbol-namespaces.rst index 29875e25e376..12e4aecdae94 100644 --- a/Documentation/core-api/symbol-namespaces.rst +++ b/Documentation/core-api/symbol-namespaces.rst @@ -28,9 +28,6 @@ kernel. As of today, modules that make use of symbols exported into namespaces, are required to import the namespace. Otherwise the kernel will, depending on its configuration, reject loading the module or warn about a missing import. -Additionally, it is possible to put symbols into a module namespace, strictly -limiting which modules are allowed to use these symbols. - 2. How to define Symbol Namespaces ================================== @@ -87,22 +84,6 @@ unit as preprocessor statement. The above example would then read:: within the corresponding compilation unit before any EXPORT_SYMBOL macro is used. -2.3 Using the EXPORT_SYMBOL_GPL_FOR_MODULES() macro -=================================================== - -Symbols exported using this macro are put into a module namespace. This -namespace cannot be imported. - -The macro takes a comma separated list of module names, allowing only those -modules to access this symbol. Simple tail-globs are supported. - -For example: - - EXPORT_SYMBOL_GPL_FOR_MODULES(preempt_notifier_inc, "kvm,kvm-*") - -will limit usage of this symbol to modules whoes name matches the given -patterns. - 3. How to use Symbols exported in Namespaces ============================================ @@ -174,6 +155,3 @@ in-tree modules:: You can also run nsdeps for external module builds. A typical usage is:: $ make -C M=$PWD nsdeps - -Note: it will happily generate an import statement for the module namespace; -which will not work and generates build and runtime failures. diff --git a/include/linux/export.h b/include/linux/export.h index 06f7a4eb6492..9911508a9604 100644 --- a/include/linux/export.h +++ b/include/linux/export.h @@ -42,17 +42,11 @@ extern struct module __this_module; .long sym #endif -/* - * LLVM integrated assembler cam merge adjacent string literals (like - * C and GNU-as) passed to '.ascii', but not to '.asciz' and chokes on: - * - * .asciz "MODULE_" "kvm" ; - */ -#define ___EXPORT_SYMBOL(sym, license, ns...) \ +#define ___EXPORT_SYMBOL(sym, license, ns) \ .section ".export_symbol","a" ASM_NL \ __export_symbol_##sym: ASM_NL \ .asciz license ASM_NL \ - .ascii ns "\0" ASM_NL \ + .asciz ns ASM_NL \ __EXPORT_SYMBOL_REF(sym) ASM_NL \ .previous @@ -94,6 +88,4 @@ extern struct module __this_module; #define EXPORT_SYMBOL_NS(sym, ns) __EXPORT_SYMBOL(sym, "", __stringify(ns)) #define EXPORT_SYMBOL_NS_GPL(sym, ns) __EXPORT_SYMBOL(sym, "GPL", __stringify(ns)) -#define EXPORT_SYMBOL_GPL_FOR_MODULES(sym, mods) __EXPORT_SYMBOL(sym, "GPL", "module:" mods) - #endif /* _LINUX_EXPORT_H */ -- Gitee From d8f5b36c155e154798f094252dec62db79a647d5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:15 +0800 Subject: [PATCH 0331/1421] Revert "platform/x86: hp-bioscfg: Fix class device unregistration" This reverts commit df93663f56391867fb4e4a06bb0bd6d0c2c0f186. --- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c index b62b158cffd8..049851e469f6 100644 --- a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +++ b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c @@ -1039,7 +1039,7 @@ static int __init hp_init(void) release_attributes_data(); err_destroy_classdev: - device_unregister(bioscfg_drv.class_dev); + device_destroy(&firmware_attributes_class, MKDEV(0, 0)); err_unregister_class: hp_exit_attr_set_interface(); @@ -1050,7 +1050,7 @@ static int __init hp_init(void) static void __exit hp_exit(void) { release_attributes_data(); - device_unregister(bioscfg_drv.class_dev); + device_destroy(&firmware_attributes_class, MKDEV(0, 0)); hp_exit_attr_set_interface(); } -- Gitee From 39494f88f623e761185c901eade8c4b8ffe215b1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:15 +0800 Subject: [PATCH 0332/1421] Revert "platform/x86: hp-bioscfg: Directly use firmware_attributes_class" This reverts commit 052a7840c2a21f824827039654423539384778a4. --- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c index 049851e469f6..b8bac35ebd42 100644 --- a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +++ b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c @@ -24,6 +24,8 @@ struct bioscfg_priv bioscfg_drv = { .mutex = __MUTEX_INITIALIZER(bioscfg_drv.mutex), }; +static const struct class *fw_attr_class; + ssize_t display_name_language_code_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) @@ -972,7 +974,11 @@ static int __init hp_init(void) if (ret) return ret; - bioscfg_drv.class_dev = device_create(&firmware_attributes_class, NULL, MKDEV(0, 0), + ret = fw_attributes_class_get(&fw_attr_class); + if (ret) + goto err_unregister_class; + + bioscfg_drv.class_dev = device_create(fw_attr_class, NULL, MKDEV(0, 0), NULL, "%s", DRIVER_NAME); if (IS_ERR(bioscfg_drv.class_dev)) { ret = PTR_ERR(bioscfg_drv.class_dev); @@ -1039,9 +1045,10 @@ static int __init hp_init(void) release_attributes_data(); err_destroy_classdev: - device_destroy(&firmware_attributes_class, MKDEV(0, 0)); + device_destroy(fw_attr_class, MKDEV(0, 0)); err_unregister_class: + fw_attributes_class_put(); hp_exit_attr_set_interface(); return ret; @@ -1050,8 +1057,9 @@ static int __init hp_init(void) static void __exit hp_exit(void) { release_attributes_data(); - device_destroy(&firmware_attributes_class, MKDEV(0, 0)); + device_destroy(fw_attr_class, MKDEV(0, 0)); + fw_attributes_class_put(); hp_exit_attr_set_interface(); } -- Gitee From ecd4f4f787868c0d543de77a9e453e5fa2316d88 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:15 +0800 Subject: [PATCH 0333/1421] Revert "drm/v3d: Disable interrupts before resetting the GPU" This reverts commit 6cb40cfb00dd2e4bc2dc803a9f680d79a4cb234c. --- drivers/gpu/drm/v3d/v3d_drv.h | 8 -------- drivers/gpu/drm/v3d/v3d_gem.c | 2 -- drivers/gpu/drm/v3d/v3d_irq.c | 37 ++++++++++------------------------- 3 files changed, 10 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h index bcef978ba9c4..7f664a4b2a75 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h @@ -62,12 +62,6 @@ struct v3d_perfmon { u64 values[]; }; -enum v3d_irq { - V3D_CORE_IRQ, - V3D_HUB_IRQ, - V3D_MAX_IRQS, -}; - struct v3d_dev { struct drm_device drm; @@ -77,8 +71,6 @@ struct v3d_dev { int ver; bool single_irq_line; - int irq[V3D_MAX_IRQS]; - void __iomem *hub_regs; void __iomem *core_regs[3]; void __iomem *bridge_regs; diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c index ef991a9b1c6c..2e94ce788c71 100644 --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c @@ -120,8 +120,6 @@ v3d_reset(struct v3d_dev *v3d) if (false) v3d_idle_axi(v3d, 0); - v3d_irq_disable(v3d); - v3d_idle_gca(v3d); v3d_reset_v3d(v3d); diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c index 641315dbee8b..b2d59a168697 100644 --- a/drivers/gpu/drm/v3d/v3d_irq.c +++ b/drivers/gpu/drm/v3d/v3d_irq.c @@ -215,7 +215,7 @@ v3d_hub_irq(int irq, void *arg) int v3d_irq_init(struct v3d_dev *v3d) { - int irq, ret, core; + int irq1, ret, core; INIT_WORK(&v3d->overflow_mem_work, v3d_overflow_mem_work); @@ -226,24 +226,17 @@ v3d_irq_init(struct v3d_dev *v3d) V3D_CORE_WRITE(core, V3D_CTL_INT_CLR, V3D_CORE_IRQS); V3D_WRITE(V3D_HUB_INT_CLR, V3D_HUB_IRQS); - irq = platform_get_irq_optional(v3d_to_pdev(v3d), 1); - if (irq == -EPROBE_DEFER) - return irq; - if (irq > 0) { - v3d->irq[V3D_CORE_IRQ] = irq; - - ret = devm_request_irq(v3d->drm.dev, v3d->irq[V3D_CORE_IRQ], + irq1 = platform_get_irq_optional(v3d_to_pdev(v3d), 1); + if (irq1 == -EPROBE_DEFER) + return irq1; + if (irq1 > 0) { + ret = devm_request_irq(v3d->drm.dev, irq1, v3d_irq, IRQF_SHARED, "v3d_core0", v3d); if (ret) goto fail; - - irq = platform_get_irq(v3d_to_pdev(v3d), 0); - if (irq < 0) - return irq; - v3d->irq[V3D_HUB_IRQ] = irq; - - ret = devm_request_irq(v3d->drm.dev, v3d->irq[V3D_HUB_IRQ], + ret = devm_request_irq(v3d->drm.dev, + platform_get_irq(v3d_to_pdev(v3d), 0), v3d_hub_irq, IRQF_SHARED, "v3d_hub", v3d); if (ret) @@ -251,12 +244,8 @@ v3d_irq_init(struct v3d_dev *v3d) } else { v3d->single_irq_line = true; - irq = platform_get_irq(v3d_to_pdev(v3d), 0); - if (irq < 0) - return irq; - v3d->irq[V3D_CORE_IRQ] = irq; - - ret = devm_request_irq(v3d->drm.dev, v3d->irq[V3D_CORE_IRQ], + ret = devm_request_irq(v3d->drm.dev, + platform_get_irq(v3d_to_pdev(v3d), 0), v3d_irq, IRQF_SHARED, "v3d", v3d); if (ret) @@ -297,12 +286,6 @@ v3d_irq_disable(struct v3d_dev *v3d) V3D_CORE_WRITE(core, V3D_CTL_INT_MSK_SET, ~0); V3D_WRITE(V3D_HUB_INT_MSK_SET, ~0); - /* Finish any interrupt handler still in flight. */ - for (int i = 0; i < V3D_MAX_IRQS; i++) { - if (v3d->irq[i]) - synchronize_irq(v3d->irq[i]); - } - /* Clear any pending interrupts we might have left. */ for (core = 0; core < v3d->cores; core++) V3D_CORE_WRITE(core, V3D_CTL_INT_CLR, V3D_CORE_IRQS); -- Gitee From 46ce12ad3d4303f965d3e8808485afc442a6a65d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:15 +0800 Subject: [PATCH 0334/1421] Revert "rcu: Return early if callback is not specified" This reverts commit 9026c43ca26a019a85234de738fe6e2764efc653. --- kernel/rcu/tree.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 536acebf22b0..1fb3b7a0ed5d 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2699,10 +2699,6 @@ __call_rcu_common(struct rcu_head *head, rcu_callback_t func, bool lazy_in) /* Misaligned rcu_head! */ WARN_ON_ONCE((unsigned long)head & (sizeof(void *) - 1)); - /* Avoid NULL dereference if callback is NULL. */ - if (WARN_ON_ONCE(!func)) - return; - if (debug_rcu_head_queue(head)) { /* * Probable double call_rcu(), so leak the callback. -- Gitee From 8c7011f279fa472076bbfd15cf9f2a1d2d2a1d1b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:16 +0800 Subject: [PATCH 0335/1421] Revert "mtd: spinand: fix memory leak of ECC engine conf" This reverts commit 5fb040850a9083f55369f990c3279500309d8cb6. --- drivers/mtd/nand/spi/core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c index cd21bf8f254a..393ff37f0d23 100644 --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c @@ -1316,7 +1316,6 @@ static void spinand_cleanup(struct spinand_device *spinand) { struct nand_device *nand = spinand_to_nand(spinand); - nanddev_ecc_engine_cleanup(nand); nanddev_cleanup(nand); spinand_manufacturer_cleanup(spinand); kfree(spinand->databuf); -- Gitee From 375ecd65ae19f84481e8e1ad6ee83f582fd3ff15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:16 +0800 Subject: [PATCH 0336/1421] Revert "ACPICA: Refuse to evaluate a method if arguments are missing" This reverts commit 1048b0e802d64d306dc6bfa183d5207af64653a6. --- drivers/acpi/acpica/dsmethod.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/acpi/acpica/dsmethod.c b/drivers/acpi/acpica/dsmethod.c index a232746d150a..e809c2aed78a 100644 --- a/drivers/acpi/acpica/dsmethod.c +++ b/drivers/acpi/acpica/dsmethod.c @@ -483,13 +483,6 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread, return_ACPI_STATUS(AE_NULL_OBJECT); } - if (this_walk_state->num_operands < obj_desc->method.param_count) { - ACPI_ERROR((AE_INFO, "Missing argument for method [%4.4s]", - acpi_ut_get_node_name(method_node))); - - return_ACPI_STATUS(AE_AML_UNINITIALIZED_ARG); - } - /* Init for new method, possibly wait on method mutex */ status = -- Gitee From ff4f38febf722ad331db1345c4733b21b154a62c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:16 +0800 Subject: [PATCH 0337/1421] Revert "wifi: ath6kl: remove WARN on bad firmware input" This reverts commit ec90e07811c19ff7dce77fc9171d42fa969a5df0. --- drivers/net/wireless/ath/ath6kl/bmi.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath6kl/bmi.c b/drivers/net/wireless/ath/ath6kl/bmi.c index 5a9e93fd1ef4..af98e871199d 100644 --- a/drivers/net/wireless/ath/ath6kl/bmi.c +++ b/drivers/net/wireless/ath/ath6kl/bmi.c @@ -87,9 +87,7 @@ int ath6kl_bmi_get_target_info(struct ath6kl *ar, * We need to do some backwards compatibility to make this work. */ if (le32_to_cpu(targ_info->byte_count) != sizeof(*targ_info)) { - ath6kl_err("mismatched byte count %d vs. expected %zd\n", - le32_to_cpu(targ_info->byte_count), - sizeof(*targ_info)); + WARN_ON(1); return -EINVAL; } -- Gitee From 2c052a8aa6ffa5bc36f6afd69fe4f14febd79e30 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:16 +0800 Subject: [PATCH 0338/1421] Revert "wifi: mac80211: drop invalid source address OCB frames" This reverts commit a8639b23b72a537a8d7e338ca87c7531b761c36e. --- net/mac80211/rx.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 58665b6ae635..5eb233f61981 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -4419,10 +4419,6 @@ static bool ieee80211_accept_frame(struct ieee80211_rx_data *rx) if (!multicast && !ether_addr_equal(sdata->dev->dev_addr, hdr->addr1)) return false; - /* reject invalid/our STA address */ - if (!is_valid_ether_addr(hdr->addr2) || - ether_addr_equal(sdata->dev->dev_addr, hdr->addr2)) - return false; if (!rx->sta) { int rate_idx; if (status->encoding != RX_ENC_LEGACY) -- Gitee From a1ff4947481a13a4f127082fa91198e87233be06 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:17 +0800 Subject: [PATCH 0339/1421] Revert "aoe: defer rexmit timer downdev work to workqueue" This reverts commit 11d767d1df4211c542f7e39531942943c4280ca4. --- drivers/block/aoe/aoe.h | 1 - drivers/block/aoe/aoecmd.c | 8 ++------ drivers/block/aoe/aoedev.c | 5 +---- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/block/aoe/aoe.h b/drivers/block/aoe/aoe.h index d35caa3c69e1..749ae1246f4c 100644 --- a/drivers/block/aoe/aoe.h +++ b/drivers/block/aoe/aoe.h @@ -80,7 +80,6 @@ enum { DEVFL_NEWSIZE = (1<<6), /* need to update dev size in block layer */ DEVFL_FREEING = (1<<7), /* set when device is being cleaned up */ DEVFL_FREED = (1<<8), /* device has been cleaned up */ - DEVFL_DEAD = (1<<9), /* device has timed out of aoe_deadsecs */ }; enum { diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index c4c5cf1ec71b..d1f4ddc57645 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c @@ -754,7 +754,7 @@ rexmit_timer(struct timer_list *timer) utgts = count_targets(d, NULL); - if (d->flags & (DEVFL_TKILL | DEVFL_DEAD)) { + if (d->flags & DEVFL_TKILL) { spin_unlock_irqrestore(&d->lock, flags); return; } @@ -786,8 +786,7 @@ rexmit_timer(struct timer_list *timer) * to clean up. */ list_splice(&flist, &d->factive[0]); - d->flags |= DEVFL_DEAD; - queue_work(aoe_wq, &d->work); + aoedev_downdev(d); goto out; } @@ -899,9 +898,6 @@ aoecmd_sleepwork(struct work_struct *work) { struct aoedev *d = container_of(work, struct aoedev, work); - if (d->flags & DEVFL_DEAD) - aoedev_downdev(d); - if (d->flags & DEVFL_GDALLOC) aoeblk_gdalloc(d); diff --git a/drivers/block/aoe/aoedev.c b/drivers/block/aoe/aoedev.c index 4240e11adfb7..280679bde3a5 100644 --- a/drivers/block/aoe/aoedev.c +++ b/drivers/block/aoe/aoedev.c @@ -200,11 +200,8 @@ aoedev_downdev(struct aoedev *d) struct list_head *head, *pos, *nx; struct request *rq, *rqnext; int i; - unsigned long flags; - spin_lock_irqsave(&d->lock, flags); - d->flags &= ~(DEVFL_UP | DEVFL_DEAD); - spin_unlock_irqrestore(&d->lock, flags); + d->flags &= ~DEVFL_UP; /* clean out active and to-be-retransmitted buffers */ for (i = 0; i < NFACTIVE; i++) { -- Gitee From b4c89583d44376134a7d08a1e2b90e1f5f320572 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:17 +0800 Subject: [PATCH 0340/1421] Revert "scsi: target: Fix NULL pointer dereference in core_scsi3_decode_spec_i_port()" This reverts commit 14db781ed14710837a2e9eb30749729e4f29779c. --- drivers/target/target_core_pr.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index a9eb6a3e8383..49d9167bb263 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -1841,9 +1841,7 @@ core_scsi3_decode_spec_i_port( } kmem_cache_free(t10_pr_reg_cache, dest_pr_reg); - - if (dest_se_deve) - core_scsi3_lunacl_undepend_item(dest_se_deve); + core_scsi3_lunacl_undepend_item(dest_se_deve); if (is_local) continue; -- Gitee From 96184eb69ea53c60fdea55fbb465ee64cfeba9c2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:17 +0800 Subject: [PATCH 0341/1421] Revert "regulator: fan53555: add enable_time support and soft-start times" This reverts commit 38bfdf7d057fe78df10b36c28567389e2e1960c1. --- drivers/regulator/fan53555.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c index 8912f5be7270..48f312167e53 100644 --- a/drivers/regulator/fan53555.c +++ b/drivers/regulator/fan53555.c @@ -147,7 +147,6 @@ struct fan53555_device_info { unsigned int slew_mask; const unsigned int *ramp_delay_table; unsigned int n_ramp_values; - unsigned int enable_time; unsigned int slew_rate; }; @@ -283,7 +282,6 @@ static int fan53526_voltages_setup_fairchild(struct fan53555_device_info *di) di->slew_mask = CTL_SLEW_MASK; di->ramp_delay_table = slew_rates; di->n_ramp_values = ARRAY_SIZE(slew_rates); - di->enable_time = 250; di->vsel_count = FAN53526_NVOLTAGES; return 0; @@ -298,12 +296,10 @@ static int fan53555_voltages_setup_fairchild(struct fan53555_device_info *di) case FAN53555_CHIP_REV_00: di->vsel_min = 600000; di->vsel_step = 10000; - di->enable_time = 400; break; case FAN53555_CHIP_REV_13: di->vsel_min = 800000; di->vsel_step = 10000; - di->enable_time = 400; break; default: dev_err(di->dev, @@ -315,19 +311,13 @@ static int fan53555_voltages_setup_fairchild(struct fan53555_device_info *di) case FAN53555_CHIP_ID_01: case FAN53555_CHIP_ID_03: case FAN53555_CHIP_ID_05: - di->vsel_min = 600000; - di->vsel_step = 10000; - di->enable_time = 400; - break; case FAN53555_CHIP_ID_08: di->vsel_min = 600000; di->vsel_step = 10000; - di->enable_time = 175; break; case FAN53555_CHIP_ID_04: di->vsel_min = 603000; di->vsel_step = 12826; - di->enable_time = 400; break; default: dev_err(di->dev, @@ -360,7 +350,6 @@ static int fan53555_voltages_setup_rockchip(struct fan53555_device_info *di) di->slew_mask = CTL_SLEW_MASK; di->ramp_delay_table = slew_rates; di->n_ramp_values = ARRAY_SIZE(slew_rates); - di->enable_time = 360; di->vsel_count = FAN53555_NVOLTAGES; return 0; @@ -383,7 +372,6 @@ static int rk8602_voltages_setup_rockchip(struct fan53555_device_info *di) di->slew_mask = CTL_SLEW_MASK; di->ramp_delay_table = slew_rates; di->n_ramp_values = ARRAY_SIZE(slew_rates); - di->enable_time = 360; di->vsel_count = RK8602_NVOLTAGES; return 0; @@ -407,7 +395,6 @@ static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di) di->slew_mask = CTL_SLEW_MASK; di->ramp_delay_table = slew_rates; di->n_ramp_values = ARRAY_SIZE(slew_rates); - di->enable_time = 400; di->vsel_count = FAN53555_NVOLTAGES; return 0; @@ -607,7 +594,6 @@ static int fan53555_regulator_register(struct fan53555_device_info *di, rdesc->ramp_mask = di->slew_mask; rdesc->ramp_delay_table = di->ramp_delay_table; rdesc->n_ramp_values = di->n_ramp_values; - rdesc->enable_time = di->enable_time; rdesc->owner = THIS_MODULE; rdev = devm_regulator_register(di->dev, &di->desc, config); -- Gitee From 5155fcd13ebdc282cbb7502eeb329a8f16dbe2bf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:17 +0800 Subject: [PATCH 0342/1421] Revert "ASoC: amd: yc: update quirk data for HP Victus" This reverts commit bd22d476ebddd7559622d336a844ecf3c0a74dcb. --- sound/soc/amd/yc/acp6x-mach.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 429e61d47ffb..1547cf8b46b1 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -521,13 +521,6 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "OMEN by HP Gaming Laptop 16z-n000"), } }, - { - .driver_data = &acp6x_card, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "HP"), - DMI_MATCH(DMI_PRODUCT_NAME, "Victus by HP Gaming Laptop 15-fb2xxx"), - } - }, { .driver_data = &acp6x_card, .matches = { -- Gitee From a8c017ac17f5ccd558adedddd9bd36e6a17e4832 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:17 +0800 Subject: [PATCH 0343/1421] Revert "powerpc: Fix struct termio related ioctl macros" This reverts commit 78d8ce759c8bde760d83f7969a131345d7142763. --- arch/powerpc/include/uapi/asm/ioctls.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/include/uapi/asm/ioctls.h b/arch/powerpc/include/uapi/asm/ioctls.h index b5211e413829..2c145da3b774 100644 --- a/arch/powerpc/include/uapi/asm/ioctls.h +++ b/arch/powerpc/include/uapi/asm/ioctls.h @@ -23,10 +23,10 @@ #define TCSETSW _IOW('t', 21, struct termios) #define TCSETSF _IOW('t', 22, struct termios) -#define TCGETA 0x40147417 /* _IOR('t', 23, struct termio) */ -#define TCSETA 0x80147418 /* _IOW('t', 24, struct termio) */ -#define TCSETAW 0x80147419 /* _IOW('t', 25, struct termio) */ -#define TCSETAF 0x8014741c /* _IOW('t', 28, struct termio) */ +#define TCGETA _IOR('t', 23, struct termio) +#define TCSETA _IOW('t', 24, struct termio) +#define TCSETAW _IOW('t', 25, struct termio) +#define TCSETAF _IOW('t', 28, struct termio) #define TCSBRK _IO('t', 29) #define TCXONC _IO('t', 30) -- Gitee From aa47e43b5ac8fcb97785a50a7c2aab2a73942c30 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:18 +0800 Subject: [PATCH 0344/1421] Revert "platform/x86/amd/pmc: Add PCSpecialist Lafite Pro V 14M to 8042 quirks list" This reverts commit c5c8222c1a93809f0a1850656add3a28b7ab1b17. --- drivers/platform/x86/amd/pmc/pmc-quirks.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/platform/x86/amd/pmc/pmc-quirks.c b/drivers/platform/x86/amd/pmc/pmc-quirks.c index 7ed12c1d3b34..2e3f6fc67c56 100644 --- a/drivers/platform/x86/amd/pmc/pmc-quirks.c +++ b/drivers/platform/x86/amd/pmc/pmc-quirks.c @@ -224,15 +224,6 @@ static const struct dmi_system_id fwbug_list[] = { DMI_MATCH(DMI_BOARD_NAME, "WUJIE14-GX4HRXL"), } }, - /* https://bugzilla.kernel.org/show_bug.cgi?id=220116 */ - { - .ident = "PCSpecialist Lafite Pro V 14M", - .driver_data = &quirk_spurious_8042, - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "PCSpecialist"), - DMI_MATCH(DMI_PRODUCT_NAME, "Lafite Pro V 14M"), - } - }, {} }; -- Gitee From 46ae0c0585326400bd12a92625884575d628bdae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:18 +0800 Subject: [PATCH 0345/1421] Revert "ASoC: amd: yc: Add quirk for MSI Bravo 17 D7VF internal mic" This reverts commit f6fb25fd6d902cfecc2692849553e8183e2d7fa0. --- sound/soc/amd/yc/acp6x-mach.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 1547cf8b46b1..40e2b5a87916 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -451,13 +451,6 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 17 D7VEK"), } }, - { - .driver_data = &acp6x_card, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), - DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 17 D7VF"), - } - }, { .driver_data = &acp6x_card, .matches = { -- Gitee From 5193f4e1beb2785e2daf3e10e9ad583f8da09f6c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:18 +0800 Subject: [PATCH 0346/1421] Revert "ata: pata_cs5536: fix build on 32-bit UML" This reverts commit dfd40daeb24fd061c47c1f968c451c83caceb0b9. --- drivers/ata/pata_cs5536.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/ata/pata_cs5536.c b/drivers/ata/pata_cs5536.c index 73e81e160c91..b811efd2cc34 100644 --- a/drivers/ata/pata_cs5536.c +++ b/drivers/ata/pata_cs5536.c @@ -27,7 +27,7 @@ #include #include -#if defined(CONFIG_X86) && defined(CONFIG_X86_32) +#ifdef CONFIG_X86_32 #include static int use_msr; module_param_named(msr, use_msr, int, 0644); -- Gitee From 1a3c7e4be05cc250abe48088aad5a93631a83145 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:18 +0800 Subject: [PATCH 0347/1421] Revert "ata: libata-acpi: Do not assume 40 wire cable if no devices are enabled" This reverts commit eebf086b3690b493960a8f90cfdcc01a8f7200d8. --- drivers/ata/libata-acpi.c | 24 ++++++++---------------- drivers/ata/pata_via.c | 6 ++++-- include/linux/libata.h | 7 ++++--- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c index 39a350755a1b..d36e71f475ab 100644 --- a/drivers/ata/libata-acpi.c +++ b/drivers/ata/libata-acpi.c @@ -514,19 +514,15 @@ unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev, EXPORT_SYMBOL_GPL(ata_acpi_gtm_xfermask); /** - * ata_acpi_cbl_pata_type - Return PATA cable type + * ata_acpi_cbl_80wire - Check for 80 wire cable * @ap: Port to check + * @gtm: GTM data to use * - * Return ATA_CBL_PATA* according to the transfer mode selected by BIOS + * Return 1 if the @gtm indicates the BIOS selected an 80wire mode. */ -int ata_acpi_cbl_pata_type(struct ata_port *ap) +int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm) { struct ata_device *dev; - int ret = ATA_CBL_PATA_UNK; - const struct ata_acpi_gtm *gtm = ata_acpi_init_gtm(ap); - - if (!gtm) - return ATA_CBL_PATA40; ata_for_each_dev(dev, &ap->link, ENABLED) { unsigned int xfer_mask, udma_mask; @@ -534,17 +530,13 @@ int ata_acpi_cbl_pata_type(struct ata_port *ap) xfer_mask = ata_acpi_gtm_xfermask(dev, gtm); ata_unpack_xfermask(xfer_mask, NULL, NULL, &udma_mask); - ret = ATA_CBL_PATA40; - - if (udma_mask & ~ATA_UDMA_MASK_40C) { - ret = ATA_CBL_PATA80; - break; - } + if (udma_mask & ~ATA_UDMA_MASK_40C) + return 1; } - return ret; + return 0; } -EXPORT_SYMBOL_GPL(ata_acpi_cbl_pata_type); +EXPORT_SYMBOL_GPL(ata_acpi_cbl_80wire); static void ata_acpi_gtf_to_tf(struct ata_device *dev, const struct ata_acpi_gtf *gtf, diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index bb80e7800dcb..d82728a01832 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c @@ -201,9 +201,11 @@ static int via_cable_detect(struct ata_port *ap) { two drives */ if (ata66 & (0x10100000 >> (16 * ap->port_no))) return ATA_CBL_PATA80; - /* Check with ACPI so we can spot BIOS reported SATA bridges */ - return ata_acpi_cbl_pata_type(ap); + if (ata_acpi_init_gtm(ap) && + ata_acpi_cbl_80wire(ap, ata_acpi_init_gtm(ap))) + return ATA_CBL_PATA80; + return ATA_CBL_PATA40; } static int via_pre_reset(struct ata_link *link, unsigned long deadline) diff --git a/include/linux/libata.h b/include/linux/libata.h index 285d709cbbde..91c4e11cb6ab 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -1305,7 +1305,7 @@ int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm); int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *stm); unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev, const struct ata_acpi_gtm *gtm); -int ata_acpi_cbl_pata_type(struct ata_port *ap); +int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm); #else static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap) { @@ -1330,9 +1330,10 @@ static inline unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev, return 0; } -static inline int ata_acpi_cbl_pata_type(struct ata_port *ap) +static inline int ata_acpi_cbl_80wire(struct ata_port *ap, + const struct ata_acpi_gtm *gtm) { - return ATA_CBL_PATA40; + return 0; } #endif -- Gitee From 91e8d90cf674ee8ab5d85d5ec2f4ded9d9c67d74 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:18 +0800 Subject: [PATCH 0348/1421] Revert "ALSA: sb: Force to disable DMAs once when DMA mode is changed" This reverts commit a8ede7a9a42215a1571f2bba7fee77af2739e47c. --- sound/isa/sb/sb16_main.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sound/isa/sb/sb16_main.c b/sound/isa/sb/sb16_main.c index 1497a7822eee..5efbd0a41312 100644 --- a/sound/isa/sb/sb16_main.c +++ b/sound/isa/sb/sb16_main.c @@ -714,10 +714,6 @@ static int snd_sb16_dma_control_put(struct snd_kcontrol *kcontrol, struct snd_ct change = nval != oval; snd_sb16_set_dma_mode(chip, nval); spin_unlock_irqrestore(&chip->reg_lock, flags); - if (change) { - snd_dma_disable(chip->dma8); - snd_dma_disable(chip->dma16); - } return change; } -- Gitee From 46046e992a89854e268f375359159a22aee5d539 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:19 +0800 Subject: [PATCH 0349/1421] Revert "ALSA: sb: Don't allow changing the DMA mode during operations" This reverts commit ffa2cf784b5463d98bc4d8f6c5de89d25d955894. --- sound/isa/sb/sb16_main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/sound/isa/sb/sb16_main.c b/sound/isa/sb/sb16_main.c index 5efbd0a41312..a9b87e159b2d 100644 --- a/sound/isa/sb/sb16_main.c +++ b/sound/isa/sb/sb16_main.c @@ -703,9 +703,6 @@ static int snd_sb16_dma_control_put(struct snd_kcontrol *kcontrol, struct snd_ct unsigned char nval, oval; int change; - if (chip->mode & (SB_MODE_PLAYBACK | SB_MODE_CAPTURE)) - return -EBUSY; - nval = ucontrol->value.enumerated.item[0]; if (nval > 2) return -EINVAL; -- Gitee From 0f2a61f03ad46ebd7995b2ecd8f3780789bbe46e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:19 +0800 Subject: [PATCH 0350/1421] Revert "drm/msm: Fix another leak in the submit error path" This reverts commit d01f04afb50925b81cbd9eeeb42ba4d17b43d0e4. --- drivers/gpu/drm/msm/msm_gem_submit.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index bbe4f1665b60..27366304f5d5 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c @@ -763,7 +763,6 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, struct msm_ringbuffer *ring; struct msm_submit_post_dep *post_deps = NULL; struct drm_syncobj **syncobjs_to_reset = NULL; - struct sync_file *sync_file = NULL; int out_fence_fd = -1; bool has_ww_ticket = false; unsigned i; @@ -980,7 +979,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, } if (ret == 0 && args->flags & MSM_SUBMIT_FENCE_FD_OUT) { - sync_file = sync_file_create(submit->user_fence); + struct sync_file *sync_file = sync_file_create(submit->user_fence); if (!sync_file) { ret = -ENOMEM; } else { @@ -1013,11 +1012,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, out_unlock: mutex_unlock(&queue->lock); out_post_unlock: - if (ret && (out_fence_fd >= 0)) { + if (ret && (out_fence_fd >= 0)) put_unused_fd(out_fence_fd); - if (sync_file) - fput(sync_file->file); - } if (!IS_ERR_OR_NULL(submit)) { msm_gem_submit_put(submit); -- Gitee From 00710684574dc40c9a9c76a020dcd431ac67da67 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:19 +0800 Subject: [PATCH 0351/1421] Revert "drm/msm: Fix a fence leak in submit error path" This reverts commit 5052794c391fb065c54f4426e8a4842dc669822e. --- drivers/gpu/drm/msm/msm_gem_submit.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index 27366304f5d5..018b39546fc1 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c @@ -85,15 +85,6 @@ void __msm_gem_submit_destroy(struct kref *kref) container_of(kref, struct msm_gem_submit, ref); unsigned i; - /* - * In error paths, we could unref the submit without calling - * drm_sched_entity_push_job(), so msm_job_free() will never - * get called. Since drm_sched_job_cleanup() will NULL out - * s_fence, we can use that to detect this case. - */ - if (submit->base.s_fence) - drm_sched_job_cleanup(&submit->base); - if (submit->fence_id) { spin_lock(&submit->queue->idr_lock); idr_remove(&submit->queue->fence_idr, submit->fence_id); -- Gitee From 198e61af88bd541f47f020e8819173ef67c6f769 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:19 +0800 Subject: [PATCH 0352/1421] Revert "drm/i915/dp_mst: Work around Thunderbolt sink disconnect after SINK_COUNT_ESI read" This reverts commit adcd56cd1fbaad3f74c8c229d656de80988f6155. --- arch/x86/kernel/cpu/common.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index cc1bbf70477b..3390814de0a5 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -2215,6 +2215,9 @@ EXPORT_PER_CPU_SYMBOL(__stack_chk_guard); #endif /* CONFIG_X86_64 */ +/* + * Clear all 6 debug registers: + */ static void initialize_debug_regs(void) { /* Control register first -- to make sure everything is disabled. */ -- Gitee From 63f041461515183e3dd17910b5f3c1ea932374ad Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:19 +0800 Subject: [PATCH 0353/1421] Revert "drm/simpledrm: Do not upcast in release helpers" This reverts commit d6c1dfc8f7d68a4ecfcbfa2ddc01b02a1ddef0cc. --- drivers/gpu/drm/tiny/simpledrm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c index 30676b107303..8ea120eb8674 100644 --- a/drivers/gpu/drm/tiny/simpledrm.c +++ b/drivers/gpu/drm/tiny/simpledrm.c @@ -276,7 +276,7 @@ static struct simpledrm_device *simpledrm_device_of_dev(struct drm_device *dev) static void simpledrm_device_release_clocks(void *res) { - struct simpledrm_device *sdev = res; + struct simpledrm_device *sdev = simpledrm_device_of_dev(res); unsigned int i; for (i = 0; i < sdev->clk_count; ++i) { @@ -374,7 +374,7 @@ static int simpledrm_device_init_clocks(struct simpledrm_device *sdev) static void simpledrm_device_release_regulators(void *res) { - struct simpledrm_device *sdev = res; + struct simpledrm_device *sdev = simpledrm_device_of_dev(res); unsigned int i; for (i = 0; i < sdev->regulator_count; ++i) { -- Gitee From 3efcdc374530203a91c65d3a3e87115008650fa6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:20 +0800 Subject: [PATCH 0354/1421] Revert "scsi: ufs: core: Fix clk scaling to be conditional in reset and restore" This reverts commit b28f16a7b57824203ac11a8c8a43a7945b1757ed. --- drivers/ufs/core/ufshcd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index da20bd3d46bc..fa86942efd11 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -7780,8 +7780,7 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba) hba->silence_err_logs = false; /* scale up clocks to max frequency before full reinitialization */ - if (ufshcd_is_clkscaling_supported(hba)) - ufshcd_scale_clks(hba, ULONG_MAX, true); + ufshcd_scale_clks(hba, ULONG_MAX, true); err = ufshcd_hba_enable(hba); -- Gitee From 8b277415267d3db5d08ea4b8f37c7c5172acacd3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:20 +0800 Subject: [PATCH 0355/1421] Revert "scsi: ufs: core: Add OPP support for scaling clocks and regulators" This reverts commit 533ed9227c20ccc99b7415cda7537d7a2476b939. --- drivers/ufs/core/ufshcd.c | 144 +++++++++----------------------------- include/ufs/ufshcd.h | 4 -- 2 files changed, 33 insertions(+), 115 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index fa86942efd11..08c46fefb32b 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -290,8 +289,7 @@ static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba); static int ufshcd_host_reset_and_restore(struct ufs_hba *hba); static void ufshcd_resume_clkscaling(struct ufs_hba *hba); static void ufshcd_suspend_clkscaling(struct ufs_hba *hba); -static int ufshcd_scale_clks(struct ufs_hba *hba, unsigned long freq, - bool scale_up); +static int ufshcd_scale_clks(struct ufs_hba *hba, bool scale_up); static irqreturn_t ufshcd_intr(int irq, void *__hba); static int ufshcd_change_power_mode(struct ufs_hba *hba, struct ufs_pa_layer_attr *pwr_mode); @@ -1080,32 +1078,14 @@ static int ufshcd_set_clk_freq(struct ufs_hba *hba, bool scale_up) return ret; } -static int ufshcd_opp_set_rate(struct ufs_hba *hba, unsigned long freq) -{ - struct dev_pm_opp *opp; - int ret; - - opp = dev_pm_opp_find_freq_floor_indexed(hba->dev, - &freq, 0); - if (IS_ERR(opp)) - return PTR_ERR(opp); - - ret = dev_pm_opp_set_opp(hba->dev, opp); - dev_pm_opp_put(opp); - - return ret; -} - /** * ufshcd_scale_clks - scale up or scale down UFS controller clocks * @hba: per adapter instance - * @freq: frequency to scale * @scale_up: True if scaling up and false if scaling down * * Return: 0 if successful; < 0 upon failure. */ -static int ufshcd_scale_clks(struct ufs_hba *hba, unsigned long freq, - bool scale_up) +static int ufshcd_scale_clks(struct ufs_hba *hba, bool scale_up) { int ret = 0; ktime_t start = ktime_get(); @@ -1114,21 +1094,13 @@ static int ufshcd_scale_clks(struct ufs_hba *hba, unsigned long freq, if (ret) goto out; - if (hba->use_pm_opp) - ret = ufshcd_opp_set_rate(hba, freq); - else - ret = ufshcd_set_clk_freq(hba, scale_up); + ret = ufshcd_set_clk_freq(hba, scale_up); if (ret) goto out; ret = ufshcd_vops_clk_scale_notify(hba, scale_up, POST_CHANGE); - if (ret) { - if (hba->use_pm_opp) - ufshcd_opp_set_rate(hba, - hba->devfreq->previous_freq); - else - ufshcd_set_clk_freq(hba, !scale_up); - } + if (ret) + ufshcd_set_clk_freq(hba, !scale_up); out: trace_ufshcd_profile_clk_scaling(dev_name(hba->dev), @@ -1140,13 +1112,12 @@ static int ufshcd_scale_clks(struct ufs_hba *hba, unsigned long freq, /** * ufshcd_is_devfreq_scaling_required - check if scaling is required or not * @hba: per adapter instance - * @freq: frequency to scale * @scale_up: True if scaling up and false if scaling down * * Return: true if scaling is required, false otherwise. */ static bool ufshcd_is_devfreq_scaling_required(struct ufs_hba *hba, - unsigned long freq, bool scale_up) + bool scale_up) { struct ufs_clk_info *clki; struct list_head *head = &hba->clk_list_head; @@ -1154,9 +1125,6 @@ static bool ufshcd_is_devfreq_scaling_required(struct ufs_hba *hba, if (list_empty(head)) return false; - if (hba->use_pm_opp) - return freq != hba->clk_scaling.target_freq; - list_for_each_entry(clki, head, list) { if (!IS_ERR_OR_NULL(clki->clk)) { if (scale_up && clki->max_freq) { @@ -1355,14 +1323,12 @@ static void ufshcd_clock_scaling_unprepare(struct ufs_hba *hba, int err, bool sc /** * ufshcd_devfreq_scale - scale up/down UFS clocks and gear * @hba: per adapter instance - * @freq: frequency to scale * @scale_up: True for scaling up and false for scalin down * * Return: 0 for success; -EBUSY if scaling can't happen at this time; non-zero * for any other errors. */ -static int ufshcd_devfreq_scale(struct ufs_hba *hba, unsigned long freq, - bool scale_up) +static int ufshcd_devfreq_scale(struct ufs_hba *hba, bool scale_up) { int ret = 0; @@ -1377,7 +1343,7 @@ static int ufshcd_devfreq_scale(struct ufs_hba *hba, unsigned long freq, goto out_unprepare; } - ret = ufshcd_scale_clks(hba, freq, scale_up); + ret = ufshcd_scale_clks(hba, scale_up); if (ret) { if (!scale_up) ufshcd_scale_gear(hba, true); @@ -1388,8 +1354,7 @@ static int ufshcd_devfreq_scale(struct ufs_hba *hba, unsigned long freq, if (scale_up) { ret = ufshcd_scale_gear(hba, true); if (ret) { - ufshcd_scale_clks(hba, hba->devfreq->previous_freq, - false); + ufshcd_scale_clks(hba, false); goto out_unprepare; } } @@ -1448,22 +1413,9 @@ static int ufshcd_devfreq_target(struct device *dev, if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; - if (hba->use_pm_opp) { - struct dev_pm_opp *opp; - - /* Get the recommended frequency from OPP framework */ - opp = devfreq_recommended_opp(dev, freq, flags); - if (IS_ERR(opp)) - return PTR_ERR(opp); - - dev_pm_opp_put(opp); - } else { - /* Override with the closest supported frequency */ - clki = list_first_entry(&hba->clk_list_head, struct ufs_clk_info, - list); - *freq = (unsigned long) clk_round_rate(clki->clk, *freq); - } - + clki = list_first_entry(&hba->clk_list_head, struct ufs_clk_info, list); + /* Override with the closest supported frequency */ + *freq = (unsigned long) clk_round_rate(clki->clk, *freq); spin_lock_irqsave(hba->host->host_lock, irq_flags); if (ufshcd_eh_in_progress(hba)) { spin_unlock_irqrestore(hba->host->host_lock, irq_flags); @@ -1478,17 +1430,12 @@ static int ufshcd_devfreq_target(struct device *dev, goto out; } - /* Decide based on the target or rounded-off frequency and update */ - if (hba->use_pm_opp) - scale_up = *freq > hba->clk_scaling.target_freq; - else - scale_up = *freq == clki->max_freq; - - if (!hba->use_pm_opp && !scale_up) + /* Decide based on the rounded-off frequency and update */ + scale_up = *freq == clki->max_freq; + if (!scale_up) *freq = clki->min_freq; - /* Update the frequency */ - if (!ufshcd_is_devfreq_scaling_required(hba, *freq, scale_up)) { + if (!ufshcd_is_devfreq_scaling_required(hba, scale_up)) { spin_unlock_irqrestore(hba->host->host_lock, irq_flags); ret = 0; goto out; /* no state change required */ @@ -1496,9 +1443,7 @@ static int ufshcd_devfreq_target(struct device *dev, spin_unlock_irqrestore(hba->host->host_lock, irq_flags); start = ktime_get(); - ret = ufshcd_devfreq_scale(hba, *freq, scale_up); - if (!ret) - hba->clk_scaling.target_freq = *freq; + ret = ufshcd_devfreq_scale(hba, scale_up); trace_ufshcd_profile_clk_scaling(dev_name(hba->dev), (scale_up ? "up" : "down"), @@ -1518,6 +1463,8 @@ static int ufshcd_devfreq_get_dev_status(struct device *dev, struct ufs_hba *hba = dev_get_drvdata(dev); struct ufs_clk_scaling *scaling = &hba->clk_scaling; unsigned long flags; + struct list_head *clk_list = &hba->clk_list_head; + struct ufs_clk_info *clki; ktime_t curr_t; if (!ufshcd_is_clkscaling_supported(hba)) @@ -1530,24 +1477,17 @@ static int ufshcd_devfreq_get_dev_status(struct device *dev, if (!scaling->window_start_t) goto start_window; + clki = list_first_entry(clk_list, struct ufs_clk_info, list); /* * If current frequency is 0, then the ondemand governor considers * there's no initial frequency set. And it always requests to set * to max. frequency. */ - if (hba->use_pm_opp) { - stat->current_frequency = hba->clk_scaling.target_freq; - } else { - struct list_head *clk_list = &hba->clk_list_head; - struct ufs_clk_info *clki; - - clki = list_first_entry(clk_list, struct ufs_clk_info, list); - stat->current_frequency = clki->curr_freq; - } - + stat->current_frequency = clki->curr_freq; if (scaling->is_busy_started) scaling->tot_busy_t += ktime_us_delta(curr_t, scaling->busy_start_t); + stat->total_time = ktime_us_delta(curr_t, scaling->window_start_t); stat->busy_time = scaling->tot_busy_t; start_window: @@ -1576,11 +1516,9 @@ static int ufshcd_devfreq_init(struct ufs_hba *hba) if (list_empty(clk_list)) return 0; - if (!hba->use_pm_opp) { - clki = list_first_entry(clk_list, struct ufs_clk_info, list); - dev_pm_opp_add(hba->dev, clki->min_freq, 0); - dev_pm_opp_add(hba->dev, clki->max_freq, 0); - } + clki = list_first_entry(clk_list, struct ufs_clk_info, list); + dev_pm_opp_add(hba->dev, clki->min_freq, 0); + dev_pm_opp_add(hba->dev, clki->max_freq, 0); ufshcd_vops_config_scaling_param(hba, &hba->vps->devfreq_profile, &hba->vps->ondemand_data); @@ -1592,10 +1530,8 @@ static int ufshcd_devfreq_init(struct ufs_hba *hba) ret = PTR_ERR(devfreq); dev_err(hba->dev, "Unable to register with devfreq %d\n", ret); - if (!hba->use_pm_opp) { - dev_pm_opp_remove(hba->dev, clki->min_freq); - dev_pm_opp_remove(hba->dev, clki->max_freq); - } + dev_pm_opp_remove(hba->dev, clki->min_freq); + dev_pm_opp_remove(hba->dev, clki->max_freq); return ret; } @@ -1607,6 +1543,7 @@ static int ufshcd_devfreq_init(struct ufs_hba *hba) static void ufshcd_devfreq_remove(struct ufs_hba *hba) { struct list_head *clk_list = &hba->clk_list_head; + struct ufs_clk_info *clki; if (!hba->devfreq) return; @@ -1614,13 +1551,9 @@ static void ufshcd_devfreq_remove(struct ufs_hba *hba) devfreq_remove_device(hba->devfreq); hba->devfreq = NULL; - if (!hba->use_pm_opp) { - struct ufs_clk_info *clki; - - clki = list_first_entry(clk_list, struct ufs_clk_info, list); - dev_pm_opp_remove(hba->dev, clki->min_freq); - dev_pm_opp_remove(hba->dev, clki->max_freq); - } + clki = list_first_entry(clk_list, struct ufs_clk_info, list); + dev_pm_opp_remove(hba->dev, clki->min_freq); + dev_pm_opp_remove(hba->dev, clki->max_freq); } static void ufshcd_suspend_clkscaling(struct ufs_hba *hba) @@ -1696,7 +1629,7 @@ static ssize_t ufshcd_clkscale_enable_store(struct device *dev, ufshcd_resume_clkscaling(hba); } else { ufshcd_suspend_clkscaling(hba); - err = ufshcd_devfreq_scale(hba, ULONG_MAX, true); + err = ufshcd_devfreq_scale(hba, true); if (err) dev_err(hba->dev, "%s: failed to scale clocks up %d\n", __func__, err); @@ -7780,7 +7713,7 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba) hba->silence_err_logs = false; /* scale up clocks to max frequency before full reinitialization */ - ufshcd_scale_clks(hba, ULONG_MAX, true); + ufshcd_scale_clks(hba, true); err = ufshcd_hba_enable(hba); @@ -9418,17 +9351,6 @@ static int ufshcd_init_clocks(struct ufs_hba *hba) dev_dbg(dev, "%s: clk: %s, rate: %lu\n", __func__, clki->name, clk_get_rate(clki->clk)); } - - /* Set Max. frequency for all clocks */ - if (hba->use_pm_opp) { - ret = ufshcd_opp_set_rate(hba, ULONG_MAX); - if (ret) { - dev_err(hba->dev, "%s: failed to set OPP: %d", __func__, - ret); - goto out; - } - } - out: return ret; } diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index e9db9682316a..d5aa832f8dba 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -430,7 +430,6 @@ struct ufs_clk_gating { * @workq: workqueue to schedule devfreq suspend/resume work * @suspend_work: worker to suspend devfreq * @resume_work: worker to resume devfreq - * @target_freq: frequency requested by devfreq framework * @min_gear: lowest HS gear to scale down to * @is_enabled: tracks if scaling is currently enabled or not, controlled by * clkscale_enable sysfs node @@ -450,7 +449,6 @@ struct ufs_clk_scaling { struct workqueue_struct *workq; struct work_struct suspend_work; struct work_struct resume_work; - unsigned long target_freq; u32 min_gear; bool is_enabled; bool is_allowed; @@ -864,7 +862,6 @@ enum ufshcd_mcq_opr { * @auto_bkops_enabled: to track whether bkops is enabled in device * @vreg_info: UFS device voltage regulator information * @clk_list_head: UFS host controller clocks list node head - * @use_pm_opp: Indicates whether OPP based scaling is used or not * @req_abort_count: number of times ufshcd_abort() has been called * @lanes_per_direction: number of lanes per data direction between the UFS * controller and the UFS device. @@ -1017,7 +1014,6 @@ struct ufs_hba { bool auto_bkops_enabled; struct ufs_vreg_info vreg_info; struct list_head clk_list_head; - bool use_pm_opp; /* Number of requests aborts */ int req_abort_count; -- Gitee From 04e7ccaacde23bd37bfcfb98bfe7a6706b18184b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:20 +0800 Subject: [PATCH 0356/1421] Revert "scsi: ufs: core: Fix abnormal scale up after last cmd finish" This reverts commit 4f8393e81b7cd8e221457d3d09e9b4a38d27b6d2. --- drivers/ufs/core/ufshcd.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 08c46fefb32b..412931cf240f 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -289,6 +289,7 @@ static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba); static int ufshcd_host_reset_and_restore(struct ufs_hba *hba); static void ufshcd_resume_clkscaling(struct ufs_hba *hba); static void ufshcd_suspend_clkscaling(struct ufs_hba *hba); +static void __ufshcd_suspend_clkscaling(struct ufs_hba *hba); static int ufshcd_scale_clks(struct ufs_hba *hba, bool scale_up); static irqreturn_t ufshcd_intr(int irq, void *__hba); static int ufshcd_change_power_mode(struct ufs_hba *hba, @@ -1376,10 +1377,9 @@ static void ufshcd_clk_scaling_suspend_work(struct work_struct *work) return; } hba->clk_scaling.is_suspended = true; - hba->clk_scaling.window_start_t = 0; spin_unlock_irqrestore(hba->host->host_lock, irq_flags); - devfreq_suspend_device(hba->devfreq); + __ufshcd_suspend_clkscaling(hba); } static void ufshcd_clk_scaling_resume_work(struct work_struct *work) @@ -1556,6 +1556,16 @@ static void ufshcd_devfreq_remove(struct ufs_hba *hba) dev_pm_opp_remove(hba->dev, clki->max_freq); } +static void __ufshcd_suspend_clkscaling(struct ufs_hba *hba) +{ + unsigned long flags; + + devfreq_suspend_device(hba->devfreq); + spin_lock_irqsave(hba->host->host_lock, flags); + hba->clk_scaling.window_start_t = 0; + spin_unlock_irqrestore(hba->host->host_lock, flags); +} + static void ufshcd_suspend_clkscaling(struct ufs_hba *hba) { unsigned long flags; @@ -1568,12 +1578,11 @@ static void ufshcd_suspend_clkscaling(struct ufs_hba *hba) if (!hba->clk_scaling.is_suspended) { suspend = true; hba->clk_scaling.is_suspended = true; - hba->clk_scaling.window_start_t = 0; } spin_unlock_irqrestore(hba->host->host_lock, flags); if (suspend) - devfreq_suspend_device(hba->devfreq); + __ufshcd_suspend_clkscaling(hba); } static void ufshcd_resume_clkscaling(struct ufs_hba *hba) -- Gitee From d645b1c381930104f94e1ddcf5e740c908f67df1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:20 +0800 Subject: [PATCH 0357/1421] Revert "f2fs: fix to zero post-eof page" This reverts commit b0a5bde159588981521142eaeab78a3d4b416647. --- fs/f2fs/file.c | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 82b5400ec702..de74ee4f22ac 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -36,17 +36,6 @@ #include #include -static void f2fs_zero_post_eof_page(struct inode *inode, loff_t new_size) -{ - loff_t old_size = i_size_read(inode); - - if (old_size >= new_size) - return; - - /* zero or drop pages only in range of [old_size, new_size] */ - truncate_pagecache(inode, old_size); -} - static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) { struct inode *inode = file_inode(vmf->vma->vm_file); @@ -114,13 +103,8 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) f2fs_bug_on(sbi, f2fs_has_inline_data(inode)); - filemap_invalidate_lock(inode->i_mapping); - f2fs_zero_post_eof_page(inode, (folio->index + 1) << PAGE_SHIFT); - filemap_invalidate_unlock(inode->i_mapping); - file_update_time(vmf->vma->vm_file); filemap_invalidate_lock_shared(inode->i_mapping); - folio_lock(folio); if (unlikely(folio->mapping != inode->i_mapping || folio_pos(folio) > i_size_read(inode) || @@ -1067,8 +1051,6 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, f2fs_down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]); filemap_invalidate_lock(inode->i_mapping); - if (attr->ia_size > old_size) - f2fs_zero_post_eof_page(inode, attr->ia_size); truncate_setsize(inode, attr->ia_size); if (attr->ia_size <= old_size) @@ -1187,10 +1169,6 @@ static int f2fs_punch_hole(struct inode *inode, loff_t offset, loff_t len) if (ret) return ret; - filemap_invalidate_lock(inode->i_mapping); - f2fs_zero_post_eof_page(inode, offset + len); - filemap_invalidate_unlock(inode->i_mapping); - pg_start = ((unsigned long long) offset) >> PAGE_SHIFT; pg_end = ((unsigned long long) offset + len) >> PAGE_SHIFT; @@ -1475,8 +1453,6 @@ static int f2fs_do_collapse(struct inode *inode, loff_t offset, loff_t len) f2fs_down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]); filemap_invalidate_lock(inode->i_mapping); - f2fs_zero_post_eof_page(inode, offset + len); - f2fs_lock_op(sbi); f2fs_drop_extent_tree(inode); truncate_pagecache(inode, offset); @@ -1599,10 +1575,6 @@ static int f2fs_zero_range(struct inode *inode, loff_t offset, loff_t len, if (ret) return ret; - filemap_invalidate_lock(mapping); - f2fs_zero_post_eof_page(inode, offset + len); - filemap_invalidate_unlock(mapping); - pg_start = ((unsigned long long) offset) >> PAGE_SHIFT; pg_end = ((unsigned long long) offset + len) >> PAGE_SHIFT; @@ -1734,8 +1706,6 @@ static int f2fs_insert_range(struct inode *inode, loff_t offset, loff_t len) /* avoid gc operation during block exchange */ f2fs_down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]); filemap_invalidate_lock(mapping); - - f2fs_zero_post_eof_page(inode, offset + len); truncate_pagecache(inode, offset); while (!ret && idx > pg_start) { @@ -1791,10 +1761,6 @@ static int f2fs_expand_inode_data(struct inode *inode, loff_t offset, if (err) return err; - filemap_invalidate_lock(inode->i_mapping); - f2fs_zero_post_eof_page(inode, offset + len); - filemap_invalidate_unlock(inode->i_mapping); - f2fs_balance_fs(sbi, true); pg_start = ((unsigned long long)offset) >> PAGE_SHIFT; @@ -4729,10 +4695,6 @@ static ssize_t f2fs_write_checks(struct kiocb *iocb, struct iov_iter *from) err = file_modified(file); if (err) return err; - - filemap_invalidate_lock(inode->i_mapping); - f2fs_zero_post_eof_page(inode, iocb->ki_pos + iov_iter_count(from)); - filemap_invalidate_unlock(inode->i_mapping); return count; } -- Gitee From 465839122fbdb2f7b3b60f09ae4a30ee3b412224 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:20 +0800 Subject: [PATCH 0358/1421] Revert "f2fs: convert f2fs_vm_page_mkwrite() to use folio" This reverts commit 770d0175c78f6fe5297bc95911ae8438894da174. --- fs/f2fs/file.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index de74ee4f22ac..80a9a64596ae 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -53,7 +53,7 @@ static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) { - struct folio *folio = page_folio(vmf->page); + struct page *page = vmf->page; struct inode *inode = file_inode(vmf->vma->vm_file); struct f2fs_sb_info *sbi = F2FS_I_SB(inode); struct dnode_of_data dn; @@ -85,7 +85,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) #ifdef CONFIG_F2FS_FS_COMPRESSION if (f2fs_compressed_file(inode)) { - int ret = f2fs_is_compressed_cluster(inode, folio->index); + int ret = f2fs_is_compressed_cluster(inode, page->index); if (ret < 0) { err = ret; @@ -105,11 +105,11 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) file_update_time(vmf->vma->vm_file); filemap_invalidate_lock_shared(inode->i_mapping); - folio_lock(folio); - if (unlikely(folio->mapping != inode->i_mapping || - folio_pos(folio) > i_size_read(inode) || - !folio_test_uptodate(folio))) { - folio_unlock(folio); + lock_page(page); + if (unlikely(page->mapping != inode->i_mapping || + page_offset(page) > i_size_read(inode) || + !PageUptodate(page))) { + unlock_page(page); err = -EFAULT; goto out_sem; } @@ -117,9 +117,9 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) set_new_dnode(&dn, inode, NULL, NULL, 0); if (need_alloc) { /* block allocation */ - err = f2fs_get_block_locked(&dn, folio->index); + err = f2fs_get_block_locked(&dn, page->index); } else { - err = f2fs_get_dnode_of_data(&dn, folio->index, LOOKUP_NODE); + err = f2fs_get_dnode_of_data(&dn, page->index, LOOKUP_NODE); f2fs_put_dnode(&dn); if (f2fs_is_pinned_file(inode) && !__is_valid_data_blkaddr(dn.data_blkaddr)) @@ -127,11 +127,11 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) } if (err) { - folio_unlock(folio); + unlock_page(page); goto out_sem; } - f2fs_wait_on_page_writeback(folio_page(folio, 0), DATA, false, true); + f2fs_wait_on_page_writeback(page, DATA, false, true); /* wait for GCed page writeback via META_MAPPING */ f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); @@ -139,18 +139,18 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) /* * check to see if the page is mapped already (no holes) */ - if (folio_test_mappedtodisk(folio)) + if (PageMappedToDisk(page)) goto out_sem; /* page is wholly or partially inside EOF */ - if (((loff_t)(folio->index + 1) << PAGE_SHIFT) > + if (((loff_t)(page->index + 1) << PAGE_SHIFT) > i_size_read(inode)) { loff_t offset; offset = i_size_read(inode) & ~PAGE_MASK; - folio_zero_segment(folio, offset, folio_size(folio)); + zero_user_segment(page, offset, PAGE_SIZE); } - folio_mark_dirty(folio); + set_page_dirty(page); f2fs_update_iostat(sbi, inode, APP_MAPPED_IO, F2FS_BLKSIZE); f2fs_update_time(sbi, REQ_TIME); @@ -162,7 +162,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) out: ret = vmf_fs_error(err); - trace_f2fs_vm_page_mkwrite(inode, folio->index, vmf->vma->vm_flags, ret); + trace_f2fs_vm_page_mkwrite(inode, page->index, vmf->vma->vm_flags, ret); return ret; } -- Gitee From e1b316a2bf995fffee5d4c69655373959a567a24 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:21 +0800 Subject: [PATCH 0359/1421] Revert "f2fs: prevent writing without fallocate() for pinned files" This reverts commit faa03ef16af4f28119133c8b1ef22ef232e35fa7. --- fs/f2fs/file.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 80a9a64596ae..192b0208551c 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -57,7 +57,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) struct inode *inode = file_inode(vmf->vma->vm_file); struct f2fs_sb_info *sbi = F2FS_I_SB(inode); struct dnode_of_data dn; - bool need_alloc = !f2fs_is_pinned_file(inode); + bool need_alloc = true; int err = 0; vm_fault_t ret; @@ -114,18 +114,19 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) goto out_sem; } - set_new_dnode(&dn, inode, NULL, NULL, 0); if (need_alloc) { /* block allocation */ + set_new_dnode(&dn, inode, NULL, NULL, 0); err = f2fs_get_block_locked(&dn, page->index); - } else { + } + +#ifdef CONFIG_F2FS_FS_COMPRESSION + if (!need_alloc) { + set_new_dnode(&dn, inode, NULL, NULL, 0); err = f2fs_get_dnode_of_data(&dn, page->index, LOOKUP_NODE); f2fs_put_dnode(&dn); - if (f2fs_is_pinned_file(inode) && - !__is_valid_data_blkaddr(dn.data_blkaddr)) - err = -EIO; } - +#endif if (err) { unlock_page(page); goto out_sem; @@ -3331,7 +3332,7 @@ static int f2fs_ioc_set_pin_file(struct file *filp, unsigned long arg) goto done; } - if (F2FS_HAS_BLOCKS(inode)) { + if (f2fs_sb_has_blkzoned(sbi) && F2FS_HAS_BLOCKS(inode)) { ret = -EFBIG; goto out; } @@ -4939,8 +4940,6 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) bool dio; bool may_need_sync = true; int preallocated; - const loff_t pos = iocb->ki_pos; - const ssize_t count = iov_iter_count(from); ssize_t ret; if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) { @@ -4962,12 +4961,6 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) inode_lock(inode); } - if (f2fs_is_pinned_file(inode) && - !f2fs_overwrite_io(inode, pos, count)) { - ret = -EIO; - goto out_unlock; - } - ret = f2fs_write_checks(iocb, from); if (ret <= 0) goto out_unlock; -- Gitee From a4da4e1b313d2e753e8bbe752c774676f6354878 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:21 +0800 Subject: [PATCH 0360/1421] Revert "f2fs: add tracepoint for f2fs_vm_page_mkwrite()" This reverts commit 24110f6d0da69f37c63086cc3c73c0ead20649ec. --- fs/f2fs/file.c | 25 ++++++++++-------------- include/trace/events/f2fs.h | 39 +++++++++++++------------------------ 2 files changed, 23 insertions(+), 41 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 192b0208551c..49a1ed7325c3 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -46,7 +46,7 @@ static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) f2fs_update_iostat(F2FS_I_SB(inode), inode, APP_MAPPED_READ_IO, F2FS_BLKSIZE); - trace_f2fs_filemap_fault(inode, vmf->pgoff, vmf->vma->vm_flags, ret); + trace_f2fs_filemap_fault(inode, vmf->pgoff, (unsigned long)ret); return ret; } @@ -59,29 +59,26 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) struct dnode_of_data dn; bool need_alloc = true; int err = 0; - vm_fault_t ret; if (unlikely(IS_IMMUTABLE(inode))) return VM_FAULT_SIGBUS; - if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) { - err = -EIO; - goto out; - } + if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) + return VM_FAULT_SIGBUS; if (unlikely(f2fs_cp_error(sbi))) { err = -EIO; - goto out; + goto err; } if (!f2fs_is_checkpoint_ready(sbi)) { err = -ENOSPC; - goto out; + goto err; } err = f2fs_convert_inline_inode(inode); if (err) - goto out; + goto err; #ifdef CONFIG_F2FS_FS_COMPRESSION if (f2fs_compressed_file(inode)) { @@ -89,7 +86,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) if (ret < 0) { err = ret; - goto out; + goto err; } else if (ret) { need_alloc = false; } @@ -156,15 +153,13 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) f2fs_update_iostat(sbi, inode, APP_MAPPED_IO, F2FS_BLKSIZE); f2fs_update_time(sbi, REQ_TIME); + trace_f2fs_vm_page_mkwrite(page, DATA); out_sem: filemap_invalidate_unlock_shared(inode->i_mapping); sb_end_pagefault(inode->i_sb); -out: - ret = vmf_fs_error(err); - - trace_f2fs_vm_page_mkwrite(inode, page->index, vmf->vma->vm_flags, ret); - return ret; +err: + return vmf_fs_error(err); } static const struct vm_operations_struct f2fs_file_vm_ops = { diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h index f2ce7f6da879..b6ffae01a8cd 100644 --- a/include/trace/events/f2fs.h +++ b/include/trace/events/f2fs.h @@ -1284,6 +1284,13 @@ DEFINE_EVENT(f2fs__page, f2fs_set_page_dirty, TP_ARGS(page, type) ); +DEFINE_EVENT(f2fs__page, f2fs_vm_page_mkwrite, + + TP_PROTO(struct page *page, int type), + + TP_ARGS(page, type) +); + TRACE_EVENT(f2fs_replace_atomic_write_block, TP_PROTO(struct inode *inode, struct inode *cow_inode, pgoff_t index, @@ -1321,50 +1328,30 @@ TRACE_EVENT(f2fs_replace_atomic_write_block, __entry->recovery) ); -DECLARE_EVENT_CLASS(f2fs_mmap, +TRACE_EVENT(f2fs_filemap_fault, - TP_PROTO(struct inode *inode, pgoff_t index, - vm_flags_t flags, vm_fault_t ret), + TP_PROTO(struct inode *inode, pgoff_t index, unsigned long ret), - TP_ARGS(inode, index, flags, ret), + TP_ARGS(inode, index, ret), TP_STRUCT__entry( __field(dev_t, dev) __field(ino_t, ino) __field(pgoff_t, index) - __field(vm_flags_t, flags) - __field(vm_fault_t, ret) + __field(unsigned long, ret) ), TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->ino = inode->i_ino; __entry->index = index; - __entry->flags = flags; __entry->ret = ret; ), - TP_printk("dev = (%d,%d), ino = %lu, index = %lu, flags: %s, ret: %s", + TP_printk("dev = (%d,%d), ino = %lu, index = %lu, ret = %lx", show_dev_ino(__entry), (unsigned long)__entry->index, - __print_flags(__entry->flags, "|", FAULT_FLAG_TRACE), - __print_flags(__entry->ret, "|", VM_FAULT_RESULT_TRACE)) -); - -DEFINE_EVENT(f2fs_mmap, f2fs_filemap_fault, - - TP_PROTO(struct inode *inode, pgoff_t index, - vm_flags_t flags, vm_fault_t ret), - - TP_ARGS(inode, index, flags, ret) -); - -DEFINE_EVENT(f2fs_mmap, f2fs_vm_page_mkwrite, - - TP_PROTO(struct inode *inode, pgoff_t index, - vm_flags_t flags, vm_fault_t ret), - - TP_ARGS(inode, index, flags, ret) + __entry->ret) ); TRACE_EVENT(f2fs_writepages, -- Gitee From 0e786384ac6dfe4adfcf86103a0eaa6517993138 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:21 +0800 Subject: [PATCH 0361/1421] Revert "x86/traps: Initialize DR6 by writing its architectural reset value" This reverts commit 288c4cb2dd375b01ab52f927cb5509eac0f52659. --- arch/x86/include/uapi/asm/debugreg.h | 21 +----------------- arch/x86/kernel/cpu/common.c | 21 +++++++++--------- arch/x86/kernel/traps.c | 32 +++++++++++----------------- 3 files changed, 24 insertions(+), 50 deletions(-) diff --git a/arch/x86/include/uapi/asm/debugreg.h b/arch/x86/include/uapi/asm/debugreg.h index 41da492dfb01..0007ba077c0c 100644 --- a/arch/x86/include/uapi/asm/debugreg.h +++ b/arch/x86/include/uapi/asm/debugreg.h @@ -15,26 +15,7 @@ which debugging register was responsible for the trap. The other bits are either reserved or not of interest to us. */ -/* - * Define bits in DR6 which are set to 1 by default. - * - * This is also the DR6 architectural value following Power-up, Reset or INIT. - * - * Note, with the introduction of Bus Lock Detection (BLD) and Restricted - * Transactional Memory (RTM), the DR6 register has been modified: - * - * 1) BLD flag (bit 11) is no longer reserved to 1 if the CPU supports - * Bus Lock Detection. The assertion of a bus lock could clear it. - * - * 2) RTM flag (bit 16) is no longer reserved to 1 if the CPU supports - * restricted transactional memory. #DB occurred inside an RTM region - * could clear it. - * - * Apparently, DR6.BLD and DR6.RTM are active low bits. - * - * As a result, DR6_RESERVED is an incorrect name now, but it is kept for - * compatibility. - */ +/* Define reserved bits in DR6 which are always set to 1 */ #define DR6_RESERVED (0xFFFF0FF0) #define DR_TRAP0 (0x1) /* db0 */ diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 3390814de0a5..b6e43dad577a 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -2218,16 +2218,17 @@ EXPORT_PER_CPU_SYMBOL(__stack_chk_guard); /* * Clear all 6 debug registers: */ -static void initialize_debug_regs(void) +static void clear_all_debug_regs(void) { - /* Control register first -- to make sure everything is disabled. */ - set_debugreg(0, 7); - set_debugreg(DR6_RESERVED, 6); - /* dr5 and dr4 don't exist */ - set_debugreg(0, 3); - set_debugreg(0, 2); - set_debugreg(0, 1); - set_debugreg(0, 0); + int i; + + for (i = 0; i < 8; i++) { + /* Ignore db4, db5 */ + if ((i == 4) || (i == 5)) + continue; + + set_debugreg(0, i); + } } #ifdef CONFIG_KGDB @@ -2370,7 +2371,7 @@ void cpu_init(void) load_mm_ldt(&init_mm); - initialize_debug_regs(); + clear_all_debug_regs(); dbg_restore_debug_regs(); doublefault_init_cpu_tss(); diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index a52db362a65d..8718d58dd0fb 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -975,32 +975,24 @@ static bool is_sysenter_singlestep(struct pt_regs *regs) #endif } -static __always_inline unsigned long debug_read_reset_dr6(void) +static __always_inline unsigned long debug_read_clear_dr6(void) { unsigned long dr6; - get_debugreg(dr6, 6); - dr6 ^= DR6_RESERVED; /* Flip to positive polarity */ - /* * The Intel SDM says: * - * Certain debug exceptions may clear bits 0-3 of DR6. - * - * BLD induced #DB clears DR6.BLD and any other debug - * exception doesn't modify DR6.BLD. + * Certain debug exceptions may clear bits 0-3. The remaining + * contents of the DR6 register are never cleared by the + * processor. To avoid confusion in identifying debug + * exceptions, debug handlers should clear the register before + * returning to the interrupted task. * - * RTM induced #DB clears DR6.RTM and any other debug - * exception sets DR6.RTM. - * - * To avoid confusion in identifying debug exceptions, - * debug handlers should set DR6.BLD and DR6.RTM, and - * clear other DR6 bits before returning. - * - * Keep it simple: write DR6 with its architectural reset - * value 0xFFFF0FF0, defined as DR6_RESERVED, immediately. + * Keep it simple: clear DR6 immediately. */ + get_debugreg(dr6, 6); set_debugreg(DR6_RESERVED, 6); + dr6 ^= DR6_RESERVED; /* Flip to positive polarity */ return dr6; } @@ -1196,19 +1188,19 @@ static __always_inline void exc_debug_user(struct pt_regs *regs, /* IST stack entry */ DEFINE_IDTENTRY_DEBUG(exc_debug) { - exc_debug_kernel(regs, debug_read_reset_dr6()); + exc_debug_kernel(regs, debug_read_clear_dr6()); } /* User entry, runs on regular task stack */ DEFINE_IDTENTRY_DEBUG_USER(exc_debug) { - exc_debug_user(regs, debug_read_reset_dr6()); + exc_debug_user(regs, debug_read_clear_dr6()); } #else /* 32 bit does not have separate entry points. */ DEFINE_IDTENTRY_RAW(exc_debug) { - unsigned long dr6 = debug_read_reset_dr6(); + unsigned long dr6 = debug_read_clear_dr6(); if (user_mode(regs)) exc_debug_user(regs, dr6); -- Gitee From 9bdb99644ef828bbe23fd2cdebe5898b19afdb10 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:21 +0800 Subject: [PATCH 0362/1421] Revert "bnxt: properly flush XDP redirect lists" This reverts commit 7d2f4f68804849302661ee0626937c42e35efabd. --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 8e4e8291d8c6..6bf4a2185385 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -2491,7 +2491,6 @@ static int __bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, { struct bnxt_napi *bnapi = cpr->bnapi; u32 raw_cons = cpr->cp_raw_cons; - bool flush_xdp = false; u32 cons; int tx_pkts = 0; int rx_pkts = 0; @@ -2529,8 +2528,6 @@ static int __bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, else rc = bnxt_force_rx_discard(bp, cpr, &raw_cons, &event); - if (event & BNXT_REDIRECT_EVENT) - flush_xdp = true; if (likely(rc >= 0)) rx_pkts += rc; /* Increment rx_pkts when rc is -ENOMEM to count towards @@ -2558,10 +2555,8 @@ static int __bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, } } - if (flush_xdp) { + if (event & BNXT_REDIRECT_EVENT) xdp_do_flush(); - event &= ~BNXT_REDIRECT_EVENT; - } if (event & BNXT_TX_EVENT) { struct bnxt_tx_ring_info *txr = bnapi->tx_ring; -- Gitee From 1df739878252e2e01775c702e58edf16974727aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:21 +0800 Subject: [PATCH 0363/1421] Revert "wifi: mac80211: finish link init before RCU publish" This reverts commit 58a613c292018c0fb3760de61ae28f65fb7ddff9. --- net/mac80211/link.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/net/mac80211/link.c b/net/mac80211/link.c index af4d2b2e9a26..16cbaea93fc3 100644 --- a/net/mac80211/link.c +++ b/net/mac80211/link.c @@ -28,16 +28,8 @@ void ieee80211_link_init(struct ieee80211_sub_if_data *sdata, if (link_id < 0) link_id = 0; - if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { - struct ieee80211_sub_if_data *ap_bss; - struct ieee80211_bss_conf *ap_bss_conf; - - ap_bss = container_of(sdata->bss, - struct ieee80211_sub_if_data, u.ap); - ap_bss_conf = sdata_dereference(ap_bss->vif.link_conf[link_id], - ap_bss); - memcpy(link_conf, ap_bss_conf, sizeof(*link_conf)); - } + rcu_assign_pointer(sdata->vif.link_conf[link_id], link_conf); + rcu_assign_pointer(sdata->link[link_id], link); link->sdata = sdata; link->link_id = link_id; @@ -73,9 +65,6 @@ void ieee80211_link_init(struct ieee80211_sub_if_data *sdata, ieee80211_link_debugfs_add(link); } - - rcu_assign_pointer(sdata->vif.link_conf[link_id], link_conf); - rcu_assign_pointer(sdata->link[link_id], link); } void ieee80211_link_stop(struct ieee80211_link_data *link) -- Gitee From 1bd09beb81303adc8cfebfe910d876691d1a11b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:22 +0800 Subject: [PATCH 0364/1421] Revert "wifi: mac80211: Add link iteration macro for link data" This reverts commit fa6db33b1407966f07a54b0799b19a8b8bfb1e27. --- net/mac80211/ieee80211_i.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 44aad3394084..04c876d78d3b 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -1186,15 +1186,6 @@ ieee80211_vif_get_shift(struct ieee80211_vif *vif) return shift; } -#define for_each_link_data(sdata, __link) \ - struct ieee80211_sub_if_data *__sdata = sdata; \ - for (int __link_id = 0; \ - __link_id < ARRAY_SIZE((__sdata)->link); __link_id++) \ - if ((!(__sdata)->vif.valid_links || \ - (__sdata)->vif.valid_links & BIT(__link_id)) && \ - ((__link) = sdata_dereference((__sdata)->link[__link_id], \ - (__sdata)))) - static inline int ieee80211_get_mbssid_beacon_len(struct cfg80211_mbssid_elems *elems, struct cfg80211_rnr_elems *rnr_elems, -- Gitee From 927543ad620a2677abab20fb2f4804cc5ad67ae1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:22 +0800 Subject: [PATCH 0365/1421] Revert "wifi: mac80211: chan: chandef is non-NULL for reserved" This reverts commit 2667e286c241499b4f917c119f0727174c2ccc79. --- net/mac80211/chan.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index 31c4f112345e..68952752b599 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -89,11 +89,11 @@ ieee80211_chanctx_reserved_chandef(struct ieee80211_local *local, lockdep_assert_held(&local->chanctx_mtx); - if (WARN_ON(!compat)) - return NULL; - list_for_each_entry(link, &ctx->reserved_links, reserved_chanctx_list) { + if (!compat) + compat = &link->reserved_chandef; + compat = cfg80211_chandef_compatible(&link->reserved_chandef, compat); if (!compat) -- Gitee From ec26501ad78b8614c0988bd7a6f126c9e2c6ba15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:22 +0800 Subject: [PATCH 0366/1421] Revert "Bluetooth: hci_core: Fix use-after-free in vhci_flush()" This reverts commit 02914d844bdd395b5fb7ede0a40726554ce6a6a0. --- include/net/bluetooth/hci_core.h | 2 -- net/bluetooth/hci_core.c | 34 ++++---------------------------- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 4f067599e6e9..d63af08c6cdc 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -29,7 +29,6 @@ #include #include #include -#include #include #include @@ -340,7 +339,6 @@ struct adv_monitor { struct hci_dev { struct list_head list; - struct srcu_struct srcu; struct mutex lock; struct ida unset_handle_ida; diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 824208a53c25..32f7bd0e8916 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -65,7 +65,7 @@ static DEFINE_IDA(hci_index_ida); /* Get HCI device by index. * Device is held on return. */ -static struct hci_dev *__hci_dev_get(int index, int *srcu_index) +struct hci_dev *hci_dev_get(int index) { struct hci_dev *hdev = NULL, *d; @@ -78,8 +78,6 @@ static struct hci_dev *__hci_dev_get(int index, int *srcu_index) list_for_each_entry(d, &hci_dev_list, list) { if (d->id == index) { hdev = hci_dev_hold(d); - if (srcu_index) - *srcu_index = srcu_read_lock(&d->srcu); break; } } @@ -87,22 +85,6 @@ static struct hci_dev *__hci_dev_get(int index, int *srcu_index) return hdev; } -struct hci_dev *hci_dev_get(int index) -{ - return __hci_dev_get(index, NULL); -} - -static struct hci_dev *hci_dev_get_srcu(int index, int *srcu_index) -{ - return __hci_dev_get(index, srcu_index); -} - -static void hci_dev_put_srcu(struct hci_dev *hdev, int srcu_index) -{ - srcu_read_unlock(&hdev->srcu, srcu_index); - hci_dev_put(hdev); -} - /* ---- Inquiry support ---- */ bool hci_discovery_active(struct hci_dev *hdev) @@ -608,9 +590,9 @@ static int hci_dev_do_reset(struct hci_dev *hdev) int hci_dev_reset(__u16 dev) { struct hci_dev *hdev; - int err, srcu_index; + int err; - hdev = hci_dev_get_srcu(dev, &srcu_index); + hdev = hci_dev_get(dev); if (!hdev) return -ENODEV; @@ -632,7 +614,7 @@ int hci_dev_reset(__u16 dev) err = hci_dev_do_reset(hdev); done: - hci_dev_put_srcu(hdev, srcu_index); + hci_dev_put(hdev); return err; } @@ -2442,11 +2424,6 @@ struct hci_dev *hci_alloc_dev_priv(int sizeof_priv) if (!hdev) return NULL; - if (init_srcu_struct(&hdev->srcu)) { - kfree(hdev); - return NULL; - } - hdev->pkt_type = (HCI_DM1 | HCI_DH1 | HCI_HV1); hdev->esco_type = (ESCO_HV1); hdev->link_mode = (HCI_LM_ACCEPT); @@ -2693,9 +2670,6 @@ void hci_unregister_dev(struct hci_dev *hdev) list_del(&hdev->list); write_unlock(&hci_dev_list_lock); - synchronize_srcu(&hdev->srcu); - cleanup_srcu_struct(&hdev->srcu); - cancel_work_sync(&hdev->rx_work); cancel_work_sync(&hdev->cmd_work); cancel_work_sync(&hdev->tx_work); -- Gitee From 3ebe40b4c71c775db4559596255ab23f8b62f156 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:22 +0800 Subject: [PATCH 0367/1421] Revert "smb: client: remove \t from TP_printk statements" This reverts commit 14440fb0e21e5bd9cc6dd880da9e7f4d2c2565c4. --- fs/smb/client/trace.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/fs/smb/client/trace.h b/fs/smb/client/trace.h index 4dfdc521c5c9..563cb4d8edf0 100644 --- a/fs/smb/client/trace.h +++ b/fs/smb/client/trace.h @@ -114,7 +114,7 @@ DECLARE_EVENT_CLASS(smb3_rw_err_class, __entry->len = len; __entry->rc = rc; ), - TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", + TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", __entry->xid, __entry->sesid, __entry->tid, __entry->fid, __entry->offset, __entry->len, __entry->rc) ) @@ -247,7 +247,7 @@ DECLARE_EVENT_CLASS(smb3_fd_class, __entry->tid = tid; __entry->sesid = sesid; ), - TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx", + TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx", __entry->xid, __entry->sesid, __entry->tid, __entry->fid) ) @@ -286,7 +286,7 @@ DECLARE_EVENT_CLASS(smb3_fd_err_class, __entry->sesid = sesid; __entry->rc = rc; ), - TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", + TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", __entry->xid, __entry->sesid, __entry->tid, __entry->fid, __entry->rc) ) @@ -558,7 +558,7 @@ DECLARE_EVENT_CLASS(smb3_cmd_err_class, __entry->status = status; __entry->rc = rc; ), - TP_printk("sid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", + TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, __entry->status, __entry->rc) ) @@ -593,7 +593,7 @@ DECLARE_EVENT_CLASS(smb3_cmd_done_class, __entry->cmd = cmd; __entry->mid = mid; ), - TP_printk("sid=0x%llx tid=0x%x cmd=%u mid=%llu", + TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", __entry->sesid, __entry->tid, __entry->cmd, __entry->mid) ) @@ -631,7 +631,7 @@ DECLARE_EVENT_CLASS(smb3_mid_class, __entry->when_sent = when_sent; __entry->when_received = when_received; ), - TP_printk("cmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", + TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, __entry->when_received) ) @@ -662,7 +662,7 @@ DECLARE_EVENT_CLASS(smb3_exit_err_class, __assign_str(func_name, func_name); __entry->rc = rc; ), - TP_printk("%s: xid=%u rc=%d", + TP_printk("\t%s: xid=%u rc=%d", __get_str(func_name), __entry->xid, __entry->rc) ) @@ -688,7 +688,7 @@ DECLARE_EVENT_CLASS(smb3_sync_err_class, __entry->ino = ino; __entry->rc = rc; ), - TP_printk("ino=%lu rc=%d", + TP_printk("\tino=%lu rc=%d", __entry->ino, __entry->rc) ) @@ -714,7 +714,7 @@ DECLARE_EVENT_CLASS(smb3_enter_exit_class, __entry->xid = xid; __assign_str(func_name, func_name); ), - TP_printk("%s: xid=%u", + TP_printk("\t%s: xid=%u", __get_str(func_name), __entry->xid) ) -- Gitee From 5f5ed25115b13a1fdf6204ffb13045121ac5ad84 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:22 +0800 Subject: [PATCH 0368/1421] Revert "btrfs: fix qgroup reservation leak on failure to allocate ordered extent" This reverts commit f3b2d0ddcdf1cf1851c95a5e8e3c6338e8338658. --- fs/btrfs/ordered-data.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index c68e9ecbc438..86d846eb5ed4 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c @@ -154,10 +154,9 @@ static struct btrfs_ordered_extent *alloc_ordered_extent( struct btrfs_ordered_extent *entry; int ret; u64 qgroup_rsv = 0; - const bool is_nocow = (flags & - ((1U << BTRFS_ORDERED_NOCOW) | (1U << BTRFS_ORDERED_PREALLOC))); - if (is_nocow) { + if (flags & + ((1 << BTRFS_ORDERED_NOCOW) | (1 << BTRFS_ORDERED_PREALLOC))) { /* For nocow write, we can release the qgroup rsv right now */ ret = btrfs_qgroup_free_data(inode, NULL, file_offset, num_bytes, &qgroup_rsv); if (ret < 0) @@ -172,13 +171,8 @@ static struct btrfs_ordered_extent *alloc_ordered_extent( return ERR_PTR(ret); } entry = kmem_cache_zalloc(btrfs_ordered_extent_cache, GFP_NOFS); - if (!entry) { - if (!is_nocow) - btrfs_qgroup_free_refroot(inode->root->fs_info, - btrfs_root_id(inode->root), - qgroup_rsv, BTRFS_QGROUP_RSV_DATA); + if (!entry) return ERR_PTR(-ENOMEM); - } entry->file_offset = file_offset; entry->num_bytes = num_bytes; -- Gitee From 54b25bff4f9a338d2ac71edc4eea7f28543c4a3e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:23 +0800 Subject: [PATCH 0369/1421] Revert "Revert "drm/i915/gem: Allow EXEC_CAPTURE on recoverable contexts on DG1"" This reverts commit 4be414c25c8c2664e2515ab768ee60ad51308dcd. --- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 5a687a3686bd..023b2ea74c36 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -2013,7 +2013,7 @@ static int eb_capture_stage(struct i915_execbuffer *eb) continue; if (i915_gem_context_is_recoverable(eb->gem_context) && - (IS_DGFX(eb->i915) || GRAPHICS_VER_FULL(eb->i915) > IP_VER(12, 0))) + GRAPHICS_VER_FULL(eb->i915) > IP_VER(12, 10)) return -EINVAL; for_each_batch_create_order(eb, j) { -- Gitee From 5b88338a648469f6efb32e00e7466142000bc295 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:23 +0800 Subject: [PATCH 0370/1421] Revert "smb: client: fix race condition in negotiate timeout by using more precise timing" This reverts commit a15b86f0f948d561a7538afb0aa0bcd09c69318c. --- fs/smb/client/cifsglob.h | 1 - fs/smb/client/connect.c | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index 5c856adf7be9..a6020f7408fe 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -743,7 +743,6 @@ struct TCP_Server_Info { __le32 session_key_id; /* retrieved from negotiate response and send in session setup request */ struct session_key session_key; unsigned long lstrp; /* when we got last response from this server */ - unsigned long neg_start; /* when negotiate started (jiffies) */ struct cifs_secmech secmech; /* crypto sec mech functs, descriptors */ #define CIFS_NEGFLAVOR_UNENCAP 1 /* wct == 17, but no ext_sec */ #define CIFS_NEGFLAVOR_EXTENDED 2 /* wct == 17, ext_sec bit set */ diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 8298d1745f9b..454420aa0222 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -677,12 +677,12 @@ server_unresponsive(struct TCP_Server_Info *server) /* * If we're in the process of mounting a share or reconnecting a session * and the server abruptly shut down (e.g. socket wasn't closed, packet - * had been ACK'ed but no SMB response), don't wait longer than 20s from - * when negotiate actually started. + * had been ACK'ed but no SMB response), don't wait longer than 20s to + * negotiate protocol. */ spin_lock(&server->srv_lock); if (server->tcpStatus == CifsInNegotiate && - time_after(jiffies, server->neg_start + 20 * HZ)) { + time_after(jiffies, server->lstrp + 20 * HZ)) { spin_unlock(&server->srv_lock); cifs_reconnect(server, false); return true; @@ -3998,7 +3998,6 @@ cifs_negotiate_protocol(const unsigned int xid, struct cifs_ses *ses, server->lstrp = jiffies; server->tcpStatus = CifsInNegotiate; - server->neg_start = jiffies; spin_unlock(&server->srv_lock); rc = server->ops->negotiate(xid, ses, server); -- Gitee From ce5187856403fb788264843a73b76b9097ac1b5a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:23 +0800 Subject: [PATCH 0371/1421] Revert "amd-xgbe: do not double read link status" This reverts commit 5d7a5086a136a128457b927754edb62e4ff710ed. --- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 ---- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 24 ++++++++------------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c index 8345d439184e..154e7598a32b 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -1413,10 +1413,6 @@ static void xgbe_phy_status(struct xgbe_prv_data *pdata) pdata->phy.link = pdata->phy_if.phy_impl.link_status(pdata, &an_restart); - /* bail out if the link status register read fails */ - if (pdata->phy.link < 0) - return; - if (an_restart) { xgbe_phy_config_aneg(pdata); goto adjust_link; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 32e633d11348..268399dfcf22 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -2855,7 +2855,8 @@ static bool xgbe_phy_valid_speed(struct xgbe_prv_data *pdata, int speed) static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) { struct xgbe_phy_data *phy_data = pdata->phy_data; - int reg, ret; + unsigned int reg; + int ret; *an_restart = 0; @@ -2889,20 +2890,11 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) return 0; } - reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); - if (reg < 0) - return reg; - - /* Link status is latched low so that momentary link drops - * can be detected. If link was already down read again - * to get the latest state. + /* Link status is latched low, so read once to clear + * and then read again to get current state */ - - if (!pdata->phy.link && !(reg & MDIO_STAT1_LSTATUS)) { - reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); - if (reg < 0) - return reg; - } + reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); + reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); if (pdata->en_rx_adap) { /* if the link is available and adaptation is done, @@ -2921,7 +2913,9 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) xgbe_phy_set_mode(pdata, phy_data->cur_mode); } - if (pdata->rx_adapt_done) + /* check again for the link and adaptation status */ + reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); + if ((reg & MDIO_STAT1_LSTATUS) && pdata->rx_adapt_done) return 1; } else if (reg & MDIO_STAT1_LSTATUS) return 1; -- Gitee From 85fabe60dbbb311ffbc9b2f604e2d9c2c3daf1ed Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:23 +0800 Subject: [PATCH 0372/1421] Revert "net/sched: Always pass notifications when child class becomes empty" This reverts commit e4ede7ca7f5e25e0d95b7acbc37db65711cc428c. --- net/sched/sch_api.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 282423106f15..df89790c459a 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -779,12 +779,15 @@ static u32 qdisc_alloc_handle(struct net_device *dev) void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len) { + bool qdisc_is_offloaded = sch->flags & TCQ_F_OFFLOADED; const struct Qdisc_class_ops *cops; unsigned long cl; u32 parentid; bool notify; int drops; + if (n == 0 && len == 0) + return; drops = max_t(int, n, 0); rcu_read_lock(); while ((parentid = sch->parent)) { @@ -793,8 +796,17 @@ void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len) if (sch->flags & TCQ_F_NOPARENT) break; - /* Notify parent qdisc only if child qdisc becomes empty. */ - notify = !sch->q.qlen; + /* Notify parent qdisc only if child qdisc becomes empty. + * + * If child was empty even before update then backlog + * counter is screwed and we skip notification because + * parent class is already passive. + * + * If the original child was offloaded then it is allowed + * to be seem as empty, so the parent is notified anyway. + */ + notify = !sch->q.qlen && !WARN_ON_ONCE(!n && + !qdisc_is_offloaded); /* TODO: perform the search on a per txq basis */ sch = qdisc_lookup_rcu(qdisc_dev(sch), TC_H_MAJ(parentid)); if (sch == NULL) { @@ -803,9 +815,6 @@ void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len) } cops = sch->ops->cl_ops; if (notify && cops->qlen_notify) { - /* Note that qlen_notify must be idempotent as it may get called - * multiple times. - */ cl = cops->find(sch, parentid); cops->qlen_notify(sch, cl); } -- Gitee From 30005383689ea23434eda9c66e24addc3637e097 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:24 +0800 Subject: [PATCH 0373/1421] Revert "nui: Fix dma_mapping_error() check" This reverts commit 291dfdd92b8b64e0dc07180e2fc76b1c7f11cbd3. --- drivers/net/ethernet/sun/niu.c | 31 +------------------------------ drivers/net/ethernet/sun/niu.h | 4 ---- 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c index fc6217917fc2..011d74087f86 100644 --- a/drivers/net/ethernet/sun/niu.c +++ b/drivers/net/ethernet/sun/niu.c @@ -3336,7 +3336,7 @@ static int niu_rbr_add_page(struct niu *np, struct rx_ring_info *rp, addr = np->ops->map_page(np->device, page, 0, PAGE_SIZE, DMA_FROM_DEVICE); - if (np->ops->mapping_error(np->device, addr)) { + if (!addr) { __free_page(page); return -ENOMEM; } @@ -6672,8 +6672,6 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb, len = skb_headlen(skb); mapping = np->ops->map_single(np->device, skb->data, len, DMA_TO_DEVICE); - if (np->ops->mapping_error(np->device, mapping)) - goto out_drop; prod = rp->prod; @@ -6715,8 +6713,6 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb, mapping = np->ops->map_page(np->device, skb_frag_page(frag), skb_frag_off(frag), len, DMA_TO_DEVICE); - if (np->ops->mapping_error(np->device, mapping)) - goto out_unmap; rp->tx_buffs[prod].skb = NULL; rp->tx_buffs[prod].mapping = mapping; @@ -6741,19 +6737,6 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb, out: return NETDEV_TX_OK; -out_unmap: - while (i--) { - const skb_frag_t *frag; - - prod = PREVIOUS_TX(rp, prod); - frag = &skb_shinfo(skb)->frags[i]; - np->ops->unmap_page(np->device, rp->tx_buffs[prod].mapping, - skb_frag_size(frag), DMA_TO_DEVICE); - } - - np->ops->unmap_single(np->device, rp->tx_buffs[rp->prod].mapping, - skb_headlen(skb), DMA_TO_DEVICE); - out_drop: rp->tx_errors++; kfree_skb(skb); @@ -9653,11 +9636,6 @@ static void niu_pci_unmap_single(struct device *dev, u64 dma_address, dma_unmap_single(dev, dma_address, size, direction); } -static int niu_pci_mapping_error(struct device *dev, u64 addr) -{ - return dma_mapping_error(dev, addr); -} - static const struct niu_ops niu_pci_ops = { .alloc_coherent = niu_pci_alloc_coherent, .free_coherent = niu_pci_free_coherent, @@ -9665,7 +9643,6 @@ static const struct niu_ops niu_pci_ops = { .unmap_page = niu_pci_unmap_page, .map_single = niu_pci_map_single, .unmap_single = niu_pci_unmap_single, - .mapping_error = niu_pci_mapping_error, }; static void niu_driver_version(void) @@ -10032,11 +10009,6 @@ static void niu_phys_unmap_single(struct device *dev, u64 dma_address, /* Nothing to do. */ } -static int niu_phys_mapping_error(struct device *dev, u64 dma_address) -{ - return false; -} - static const struct niu_ops niu_phys_ops = { .alloc_coherent = niu_phys_alloc_coherent, .free_coherent = niu_phys_free_coherent, @@ -10044,7 +10016,6 @@ static const struct niu_ops niu_phys_ops = { .unmap_page = niu_phys_unmap_page, .map_single = niu_phys_map_single, .unmap_single = niu_phys_unmap_single, - .mapping_error = niu_phys_mapping_error, }; static int niu_of_probe(struct platform_device *op) diff --git a/drivers/net/ethernet/sun/niu.h b/drivers/net/ethernet/sun/niu.h index 0b169c08b0f2..04c215f91fc0 100644 --- a/drivers/net/ethernet/sun/niu.h +++ b/drivers/net/ethernet/sun/niu.h @@ -2879,9 +2879,6 @@ struct tx_ring_info { #define NEXT_TX(tp, index) \ (((index) + 1) < (tp)->pending ? ((index) + 1) : 0) -#define PREVIOUS_TX(tp, index) \ - (((index) - 1) >= 0 ? ((index) - 1) : (((tp)->pending) - 1)) - static inline u32 niu_tx_avail(struct tx_ring_info *tp) { return (tp->pending - @@ -3143,7 +3140,6 @@ struct niu_ops { enum dma_data_direction direction); void (*unmap_single)(struct device *dev, u64 dma_address, size_t size, enum dma_data_direction direction); - int (*mapping_error)(struct device *dev, u64 dma_address); }; struct niu_link_config { -- Gitee From ce58566a17329150208f2cdedac7ed8e4f1e51f4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:24 +0800 Subject: [PATCH 0374/1421] Revert "rose: fix dangling neighbour pointers in rose_rt_device_down()" This reverts commit 7f8672aa04bbd31967f13dbe3725c3f642b15d52. --- net/rose/rose_route.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c index a7054546f52d..fee772b4637c 100644 --- a/net/rose/rose_route.c +++ b/net/rose/rose_route.c @@ -497,15 +497,22 @@ void rose_rt_device_down(struct net_device *dev) t = rose_node; rose_node = rose_node->next; - for (i = t->count - 1; i >= 0; i--) { + for (i = 0; i < t->count; i++) { if (t->neighbour[i] != s) continue; t->count--; - memmove(&t->neighbour[i], &t->neighbour[i + 1], - sizeof(t->neighbour[0]) * - (t->count - i)); + switch (i) { + case 0: + t->neighbour[0] = t->neighbour[1]; + fallthrough; + case 1: + t->neighbour[1] = t->neighbour[2]; + break; + case 2: + break; + } } if (t->count <= 0) -- Gitee From 20c7022832e722bb8a2592665abd0d6ac7ebfd43 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:24 +0800 Subject: [PATCH 0375/1421] Revert "enic: fix incorrect MTU comparison in enic_change_mtu()" This reverts commit 3f627d050a99770d0c921253616e9e96117b212e. --- drivers/net/ethernet/cisco/enic/enic_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c index 48701032c20c..cccf0db2fb4e 100644 --- a/drivers/net/ethernet/cisco/enic/enic_main.c +++ b/drivers/net/ethernet/cisco/enic/enic_main.c @@ -2057,10 +2057,10 @@ static int enic_change_mtu(struct net_device *netdev, int new_mtu) if (enic_is_dynamic(enic) || enic_is_sriov_vf(enic)) return -EOPNOTSUPP; - if (new_mtu > enic->port_mtu) + if (netdev->mtu > enic->port_mtu) netdev_warn(netdev, "interface MTU (%d) set higher than port MTU (%d)\n", - new_mtu, enic->port_mtu); + netdev->mtu, enic->port_mtu); return _enic_change_mtu(netdev, new_mtu); } -- Gitee From 11a50db20dace64e9a17607e393b51c0fde7d734 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:24 +0800 Subject: [PATCH 0376/1421] Revert "amd-xgbe: align CL37 AN sequence as per databook" This reverts commit f9369ae3698fee89c729351b77ea1b9fb01022ca. --- drivers/net/ethernet/amd/xgbe/xgbe-common.h | 2 -- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 9 --------- drivers/net/ethernet/amd/xgbe/xgbe.h | 4 ++-- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h index aa25a8a0a106..3b70f6737633 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h @@ -1373,8 +1373,6 @@ #define MDIO_VEND2_CTRL1_SS13 BIT(13) #endif -#define XGBE_VEND2_MAC_AUTO_SW BIT(9) - /* MDIO mask values */ #define XGBE_AN_CL73_INT_CMPLT BIT(0) #define XGBE_AN_CL73_INC_LINK BIT(1) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c index 154e7598a32b..4a2dc705b528 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -375,10 +375,6 @@ static void xgbe_an37_set(struct xgbe_prv_data *pdata, bool enable, reg |= MDIO_VEND2_CTRL1_AN_RESTART; XMDIO_WRITE(pdata, MDIO_MMD_VEND2, MDIO_CTRL1, reg); - - reg = XMDIO_READ(pdata, MDIO_MMD_VEND2, MDIO_PCS_DIG_CTRL); - reg |= XGBE_VEND2_MAC_AUTO_SW; - XMDIO_WRITE(pdata, MDIO_MMD_VEND2, MDIO_PCS_DIG_CTRL, reg); } static void xgbe_an37_restart(struct xgbe_prv_data *pdata) @@ -1007,11 +1003,6 @@ static void xgbe_an37_init(struct xgbe_prv_data *pdata) netif_dbg(pdata, link, pdata->netdev, "CL37 AN (%s) initialized\n", (pdata->an_mode == XGBE_AN_MODE_CL37) ? "BaseX" : "SGMII"); - - reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_CTRL1); - reg &= ~MDIO_AN_CTRL1_ENABLE; - XMDIO_WRITE(pdata, MDIO_MMD_AN, MDIO_CTRL1, reg); - } static void xgbe_an73_init(struct xgbe_prv_data *pdata) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index a596cd08124f..173f4dad470f 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -292,12 +292,12 @@ #define XGBE_LINK_TIMEOUT 5 #define XGBE_KR_TRAINING_WAIT_ITER 50 -#define XGBE_SGMII_AN_LINK_DUPLEX BIT(1) +#define XGBE_SGMII_AN_LINK_STATUS BIT(1) #define XGBE_SGMII_AN_LINK_SPEED (BIT(2) | BIT(3)) #define XGBE_SGMII_AN_LINK_SPEED_10 0x00 #define XGBE_SGMII_AN_LINK_SPEED_100 0x04 #define XGBE_SGMII_AN_LINK_SPEED_1000 0x08 -#define XGBE_SGMII_AN_LINK_STATUS BIT(4) +#define XGBE_SGMII_AN_LINK_DUPLEX BIT(4) /* ECC correctable error notification window (seconds) */ #define XGBE_ECC_LIMIT 60 -- Gitee From 93d27cb1ca0a0288d6d517a395cdf5bab3b7c75d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:24 +0800 Subject: [PATCH 0377/1421] Revert "lib: test_objagg: Set error message in check_expect_hints_stats()" This reverts commit 50105f38c46e9218ad993e27f2fb51e737a30061. --- lib/test_objagg.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/test_objagg.c b/lib/test_objagg.c index c0f7bb53db8d..c0c957c50635 100644 --- a/lib/test_objagg.c +++ b/lib/test_objagg.c @@ -899,10 +899,8 @@ static int check_expect_hints_stats(struct objagg_hints *objagg_hints, int err; stats = objagg_hints_stats_get(objagg_hints); - if (IS_ERR(stats)) { - *errmsg = "objagg_hints_stats_get() failed."; + if (IS_ERR(stats)) return PTR_ERR(stats); - } err = __check_expect_stats(stats, expect_stats, errmsg); objagg_stats_put(stats); return err; -- Gitee From 57105b9a601ba8a7cc3ba0f5cb07e8dc302f796a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:25 +0800 Subject: [PATCH 0378/1421] Revert "igc: disable L1.2 PCI-E link substate to avoid performance issue" This reverts commit d5a9d3d10e7802df4bd33ac332420aba4bae9ed6. --- drivers/net/ethernet/intel/igc/igc_main.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 11543db4c47f..e2f5c4384455 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -6772,10 +6772,6 @@ static int igc_probe(struct pci_dev *pdev, adapter->port_num = hw->bus.func; adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); - /* Disable ASPM L1.2 on I226 devices to avoid packet loss */ - if (igc_is_device_id_i226(hw)) - pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2); - err = pci_save_state(pdev); if (err) goto err_ioremap; @@ -7148,9 +7144,6 @@ static int __maybe_unused igc_resume(struct device *dev) pci_enable_wake(pdev, PCI_D3hot, 0); pci_enable_wake(pdev, PCI_D3cold, 0); - if (igc_is_device_id_i226(hw)) - pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2); - if (igc_init_interrupt_scheme(adapter, true)) { netdev_err(netdev, "Unable to allocate memory for queues\n"); return -ENOMEM; @@ -7266,9 +7259,6 @@ static pci_ers_result_t igc_io_slot_reset(struct pci_dev *pdev) pci_enable_wake(pdev, PCI_D3hot, 0); pci_enable_wake(pdev, PCI_D3cold, 0); - if (igc_is_device_id_i226(hw)) - pci_disable_link_state_locked(pdev, PCIE_LINK_STATE_L1_2); - /* In case of PCI error, adapter loses its HW address * so we should re-assign it here. */ -- Gitee From 923d0bccc1cbf1725133fbefae17c734f3cc4ce0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:25 +0800 Subject: [PATCH 0379/1421] Revert "drm/i915/gsc: mei interrupt top half should be in irq disabled context" This reverts commit c33c9b73c414b8f9de7043bf11a67cefd9bef04d. --- drivers/gpu/drm/i915/gt/intel_gsc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gsc.c b/drivers/gpu/drm/i915/gt/intel_gsc.c index 27420ed631d8..bcc3605158db 100644 --- a/drivers/gpu/drm/i915/gt/intel_gsc.c +++ b/drivers/gpu/drm/i915/gt/intel_gsc.c @@ -298,7 +298,7 @@ static void gsc_irq_handler(struct intel_gt *gt, unsigned int intf_id) if (gt->gsc.intf[intf_id].irq < 0) return; - ret = generic_handle_irq_safe(gt->gsc.intf[intf_id].irq); + ret = generic_handle_irq(gt->gsc.intf[intf_id].irq); if (ret) drm_err_ratelimited(>->i915->drm, "error handling GSC irq: %d\n", ret); } -- Gitee From 6cfe9223d1830eedd23f06ba6bdaa3d8bff93bbe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:25 +0800 Subject: [PATCH 0380/1421] Revert "drm/i915/gt: Fix timeline left held on VMA alloc error" This reverts commit 4d0b692d584282a9c488de7f6ad9d6055bf19f3e. --- drivers/gpu/drm/i915/gt/intel_ring_submission.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_ring_submission.c b/drivers/gpu/drm/i915/gt/intel_ring_submission.c index 4eb78895773f..92085ffd23de 100644 --- a/drivers/gpu/drm/i915/gt/intel_ring_submission.c +++ b/drivers/gpu/drm/i915/gt/intel_ring_submission.c @@ -573,6 +573,7 @@ static int ring_context_alloc(struct intel_context *ce) /* One ringbuffer to rule them all */ GEM_BUG_ON(!engine->legacy.ring); ce->ring = engine->legacy.ring; + ce->timeline = intel_timeline_get(engine->legacy.timeline); GEM_BUG_ON(ce->state); if (engine->context_size) { @@ -585,8 +586,6 @@ static int ring_context_alloc(struct intel_context *ce) ce->state = vma; } - ce->timeline = intel_timeline_get(engine->legacy.timeline); - return 0; } -- Gitee From 777ec1fd3cb03def444871b200162a859ba686f9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:25 +0800 Subject: [PATCH 0381/1421] Revert "net: usb: lan78xx: fix WARN in __netif_napi_del_locked on disconnect" This reverts commit 82e3dd2dd3ece998d0609549905f6f4d2c670f09. --- drivers/net/usb/lan78xx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index ec5689cd240a..09173d7b87ed 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -4229,6 +4229,8 @@ static void lan78xx_disconnect(struct usb_interface *intf) if (!dev) return; + netif_napi_del(&dev->napi); + udev = interface_to_usbdev(intf); net = dev->net; -- Gitee From 4844cd06f797ada8b7bc5f4c840268ef5a23329c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:26 +0800 Subject: [PATCH 0382/1421] Revert "smb: client: fix warning when reconnecting channel" This reverts commit 79b67066499b6f74377a5d1c948e8cd756b9da50. --- fs/smb/client/cifsglob.h | 1 - fs/smb/client/smb2pdu.c | 10 ++++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index a6020f7408fe..d776340ad91c 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -1268,7 +1268,6 @@ struct cifs_tcon { bool use_persistent:1; /* use persistent instead of durable handles */ bool no_lease:1; /* Do not request leases on files or directories */ bool use_witness:1; /* use witness protocol */ - bool dummy:1; /* dummy tcon used for reconnecting channels */ __le32 capabilities; __u32 share_flags; __u32 maximal_access; diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c index 357abb0170c4..e0f586009330 100644 --- a/fs/smb/client/smb2pdu.c +++ b/fs/smb/client/smb2pdu.c @@ -437,9 +437,9 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, free_xid(xid); ses->flags &= ~CIFS_SES_FLAGS_PENDING_QUERY_INTERFACES; - if (!tcon->ipc && !tcon->dummy) - queue_delayed_work(cifsiod_wq, &tcon->query_interfaces, - (SMB_INTERFACE_POLL_INTERVAL * HZ)); + /* regardless of rc value, setup polling */ + queue_delayed_work(cifsiod_wq, &tcon->query_interfaces, + (SMB_INTERFACE_POLL_INTERVAL * HZ)); mutex_unlock(&ses->session_mutex); @@ -4228,8 +4228,10 @@ void smb2_reconnect_server(struct work_struct *work) } goto done; } + tcon->status = TID_GOOD; - tcon->dummy = true; + tcon->retry = false; + tcon->need_reconnect = false; /* now reconnect sessions for necessary channels */ list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) { -- Gitee From 8bba661bc0a3a635bc4e9d9243d057dceca844fc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:26 +0800 Subject: [PATCH 0383/1421] Revert "platform/mellanox: mlxreg-lc: Fix logic error in power state check" This reverts commit d86f918c97941e1bed5c3c075dddd3cc7557496b. --- drivers/platform/mellanox/mlxreg-lc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/mellanox/mlxreg-lc.c b/drivers/platform/mellanox/mlxreg-lc.c index 74e9d78ff01e..8d833836a6d3 100644 --- a/drivers/platform/mellanox/mlxreg-lc.c +++ b/drivers/platform/mellanox/mlxreg-lc.c @@ -688,7 +688,7 @@ static int mlxreg_lc_completion_notify(void *handle, struct i2c_adapter *parent, if (regval & mlxreg_lc->data->mask) { mlxreg_lc->state |= MLXREG_LC_SYNCED; mlxreg_lc_state_update_locked(mlxreg_lc, MLXREG_LC_SYNCED, 1); - if (!(mlxreg_lc->state & MLXREG_LC_POWERED)) { + if (mlxreg_lc->state & ~MLXREG_LC_POWERED) { err = mlxreg_lc_power_on_off(mlxreg_lc, 1); if (err) goto mlxreg_lc_regmap_power_on_off_fail; -- Gitee From 53c5a9bbd0be11da868230a9ad755e7ecf3dcce0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:26 +0800 Subject: [PATCH 0384/1421] Revert "platform/x86: dell-wmi-sysman: Fix class device unregistration" This reverts commit e915f27ab182ce6c222423daff8655dfa8bfb741. --- drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c index f5402b714657..3c74d5e8350a 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c @@ -597,7 +597,7 @@ static int __init sysman_init(void) release_attributes_data(); err_destroy_classdev: - device_unregister(wmi_priv.class_dev); + device_destroy(&firmware_attributes_class, MKDEV(0, 0)); err_exit_bios_attr_pass_interface: exit_bios_attr_pass_interface(); @@ -611,7 +611,7 @@ static int __init sysman_init(void) static void __exit sysman_exit(void) { release_attributes_data(); - device_unregister(wmi_priv.class_dev); + device_destroy(&firmware_attributes_class, MKDEV(0, 0)); exit_bios_attr_set_interface(); exit_bios_attr_pass_interface(); } -- Gitee From a5109e22d39a4349d38b40985cbf5f58057bca07 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:26 +0800 Subject: [PATCH 0385/1421] Revert "platform/x86: dell-sysman: Directly use firmware_attributes_class" This reverts commit 99bd969407a187db000d85af7d60aafe8b0c767a. --- .../platform/x86/dell/dell-wmi-sysman/sysman.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c index 3c74d5e8350a..decb3b997d86 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c @@ -25,6 +25,7 @@ struct wmi_sysman_priv wmi_priv = { /* reset bios to defaults */ static const char * const reset_types[] = {"builtinsafe", "lastknowngood", "factory", "custom"}; static int reset_option = -1; +static const struct class *fw_attr_class; /** @@ -540,11 +541,15 @@ static int __init sysman_init(void) goto err_exit_bios_attr_pass_interface; } - wmi_priv.class_dev = device_create(&firmware_attributes_class, NULL, MKDEV(0, 0), + ret = fw_attributes_class_get(&fw_attr_class); + if (ret) + goto err_exit_bios_attr_pass_interface; + + wmi_priv.class_dev = device_create(fw_attr_class, NULL, MKDEV(0, 0), NULL, "%s", DRIVER_NAME); if (IS_ERR(wmi_priv.class_dev)) { ret = PTR_ERR(wmi_priv.class_dev); - goto err_exit_bios_attr_pass_interface; + goto err_unregister_class; } wmi_priv.main_dir_kset = kset_create_and_add("attributes", NULL, @@ -597,7 +602,10 @@ static int __init sysman_init(void) release_attributes_data(); err_destroy_classdev: - device_destroy(&firmware_attributes_class, MKDEV(0, 0)); + device_destroy(fw_attr_class, MKDEV(0, 0)); + +err_unregister_class: + fw_attributes_class_put(); err_exit_bios_attr_pass_interface: exit_bios_attr_pass_interface(); @@ -611,7 +619,8 @@ static int __init sysman_init(void) static void __exit sysman_exit(void) { release_attributes_data(); - device_destroy(&firmware_attributes_class, MKDEV(0, 0)); + device_destroy(fw_attr_class, MKDEV(0, 0)); + fw_attributes_class_put(); exit_bios_attr_set_interface(); exit_bios_attr_pass_interface(); } -- Gitee From e29a589aa774258e926bc2d87508b03aea8dd7f1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:26 +0800 Subject: [PATCH 0386/1421] Revert "platform/x86: think-lmi: Fix class device unregistration" This reverts commit df0e7a43a03948e08a78f7d40359136f5fef5bc0. --- drivers/platform/x86/think-lmi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 626990d103e3..f0efa60cf8ee 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -1380,7 +1380,7 @@ static int tlmi_sysfs_init(void) fail_create_attr: tlmi_release_attr(); fail_device_created: - device_unregister(tlmi_priv.class_dev); + device_destroy(&firmware_attributes_class, MKDEV(0, 0)); fail_class_created: return ret; } @@ -1604,7 +1604,7 @@ static int tlmi_analyze(void) static void tlmi_remove(struct wmi_device *wdev) { tlmi_release_attr(); - device_unregister(tlmi_priv.class_dev); + device_destroy(&firmware_attributes_class, MKDEV(0, 0)); } static int tlmi_probe(struct wmi_device *wdev, const void *context) -- Gitee From 4456104ef5183f5bc265cea1b24c6eb543a382b8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:27 +0800 Subject: [PATCH 0387/1421] Revert "platform/x86: think-lmi: Directly use firmware_attributes_class" This reverts commit 7c49bc13b32109d78d944953f8e404698ac746b9. --- drivers/platform/x86/think-lmi.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index f0efa60cf8ee..3a496c615ce6 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -195,6 +195,7 @@ static const char * const level_options[] = { [TLMI_LEVEL_MASTER] = "master", }; static struct think_lmi tlmi_priv; +static const struct class *fw_attr_class; static DEFINE_MUTEX(tlmi_mutex); /* ------ Utility functions ------------*/ @@ -1271,7 +1272,11 @@ static int tlmi_sysfs_init(void) { int i, ret; - tlmi_priv.class_dev = device_create(&firmware_attributes_class, NULL, MKDEV(0, 0), + ret = fw_attributes_class_get(&fw_attr_class); + if (ret) + return ret; + + tlmi_priv.class_dev = device_create(fw_attr_class, NULL, MKDEV(0, 0), NULL, "%s", "thinklmi"); if (IS_ERR(tlmi_priv.class_dev)) { ret = PTR_ERR(tlmi_priv.class_dev); @@ -1380,8 +1385,9 @@ static int tlmi_sysfs_init(void) fail_create_attr: tlmi_release_attr(); fail_device_created: - device_destroy(&firmware_attributes_class, MKDEV(0, 0)); + device_destroy(fw_attr_class, MKDEV(0, 0)); fail_class_created: + fw_attributes_class_put(); return ret; } @@ -1604,7 +1610,8 @@ static int tlmi_analyze(void) static void tlmi_remove(struct wmi_device *wdev) { tlmi_release_attr(); - device_destroy(&firmware_attributes_class, MKDEV(0, 0)); + device_destroy(fw_attr_class, MKDEV(0, 0)); + fw_attributes_class_put(); } static int tlmi_probe(struct wmi_device *wdev, const void *context) -- Gitee From f3fff19da7ad481b057108975df6cc72c2dd223a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:27 +0800 Subject: [PATCH 0388/1421] Revert "platform/x86: firmware_attributes_class: Simplify API" This reverts commit 726b24e6c99bd88dde8f7cf8e3f71d7532f3e0fd. --- .../platform/x86/firmware_attributes_class.c | 40 ++++++++++++------- .../platform/x86/firmware_attributes_class.h | 1 - 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/drivers/platform/x86/firmware_attributes_class.c b/drivers/platform/x86/firmware_attributes_class.c index e214efc97311..4801f9f44aaa 100644 --- a/drivers/platform/x86/firmware_attributes_class.c +++ b/drivers/platform/x86/firmware_attributes_class.c @@ -2,35 +2,47 @@ /* Firmware attributes class helper module */ +#include #include #include "firmware_attributes_class.h" -const struct class firmware_attributes_class = { +static DEFINE_MUTEX(fw_attr_lock); +static int fw_attr_inuse; + +static const struct class firmware_attributes_class = { .name = "firmware-attributes", }; -EXPORT_SYMBOL_GPL(firmware_attributes_class); - -static __init int fw_attributes_class_init(void) -{ - return class_register(&firmware_attributes_class); -} -module_init(fw_attributes_class_init); - -static __exit void fw_attributes_class_exit(void) -{ - class_unregister(&firmware_attributes_class); -} -module_exit(fw_attributes_class_exit); int fw_attributes_class_get(const struct class **fw_attr_class) { + int err; + + mutex_lock(&fw_attr_lock); + if (!fw_attr_inuse) { /*first time class is being used*/ + err = class_register(&firmware_attributes_class); + if (err) { + mutex_unlock(&fw_attr_lock); + return err; + } + } + fw_attr_inuse++; *fw_attr_class = &firmware_attributes_class; + mutex_unlock(&fw_attr_lock); return 0; } EXPORT_SYMBOL_GPL(fw_attributes_class_get); int fw_attributes_class_put(void) { + mutex_lock(&fw_attr_lock); + if (!fw_attr_inuse) { + mutex_unlock(&fw_attr_lock); + return -EINVAL; + } + fw_attr_inuse--; + if (!fw_attr_inuse) /* No more consumers */ + class_unregister(&firmware_attributes_class); + mutex_unlock(&fw_attr_lock); return 0; } EXPORT_SYMBOL_GPL(fw_attributes_class_put); diff --git a/drivers/platform/x86/firmware_attributes_class.h b/drivers/platform/x86/firmware_attributes_class.h index ef6c3764a834..8e0f47cfdf92 100644 --- a/drivers/platform/x86/firmware_attributes_class.h +++ b/drivers/platform/x86/firmware_attributes_class.h @@ -7,7 +7,6 @@ #include -extern const struct class firmware_attributes_class; int fw_attributes_class_get(const struct class **fw_attr_class); int fw_attributes_class_put(void); -- Gitee From d8e56a0ab640e8d454be7e80c9f23f6e527e0f1f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:27 +0800 Subject: [PATCH 0389/1421] Revert "platform/x86: firmware_attributes_class: Move include linux/device/class.h" This reverts commit 1012efc8f7ca685466576af2e7f71a8c5b02fa6b. --- drivers/platform/x86/firmware_attributes_class.c | 1 + drivers/platform/x86/firmware_attributes_class.h | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/platform/x86/firmware_attributes_class.c b/drivers/platform/x86/firmware_attributes_class.c index 4801f9f44aaa..dd8240009565 100644 --- a/drivers/platform/x86/firmware_attributes_class.c +++ b/drivers/platform/x86/firmware_attributes_class.c @@ -3,6 +3,7 @@ /* Firmware attributes class helper module */ #include +#include #include #include "firmware_attributes_class.h" diff --git a/drivers/platform/x86/firmware_attributes_class.h b/drivers/platform/x86/firmware_attributes_class.h index 8e0f47cfdf92..363c75f1ac1b 100644 --- a/drivers/platform/x86/firmware_attributes_class.h +++ b/drivers/platform/x86/firmware_attributes_class.h @@ -5,8 +5,6 @@ #ifndef FW_ATTR_CLASS_H #define FW_ATTR_CLASS_H -#include - int fw_attributes_class_get(const struct class **fw_attr_class); int fw_attributes_class_put(void); -- Gitee From ff7905dd739d90f149abd4db4c0c50de8b44f84a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:27 +0800 Subject: [PATCH 0390/1421] Revert "platform/x86: make fw_attr_class constant" This reverts commit ed91b309498f076db607d03c77825f247ad3ea6a. --- drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 2 +- drivers/platform/x86/firmware_attributes_class.c | 4 ++-- drivers/platform/x86/firmware_attributes_class.h | 2 +- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 2 +- drivers/platform/x86/think-lmi.c | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c index decb3b997d86..f567d37a64a3 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c @@ -25,7 +25,7 @@ struct wmi_sysman_priv wmi_priv = { /* reset bios to defaults */ static const char * const reset_types[] = {"builtinsafe", "lastknowngood", "factory", "custom"}; static int reset_option = -1; -static const struct class *fw_attr_class; +static struct class *fw_attr_class; /** diff --git a/drivers/platform/x86/firmware_attributes_class.c b/drivers/platform/x86/firmware_attributes_class.c index dd8240009565..fafe8eaf6e3e 100644 --- a/drivers/platform/x86/firmware_attributes_class.c +++ b/drivers/platform/x86/firmware_attributes_class.c @@ -10,11 +10,11 @@ static DEFINE_MUTEX(fw_attr_lock); static int fw_attr_inuse; -static const struct class firmware_attributes_class = { +static struct class firmware_attributes_class = { .name = "firmware-attributes", }; -int fw_attributes_class_get(const struct class **fw_attr_class) +int fw_attributes_class_get(struct class **fw_attr_class) { int err; diff --git a/drivers/platform/x86/firmware_attributes_class.h b/drivers/platform/x86/firmware_attributes_class.h index 363c75f1ac1b..486485cb1f54 100644 --- a/drivers/platform/x86/firmware_attributes_class.h +++ b/drivers/platform/x86/firmware_attributes_class.h @@ -5,7 +5,7 @@ #ifndef FW_ATTR_CLASS_H #define FW_ATTR_CLASS_H -int fw_attributes_class_get(const struct class **fw_attr_class); +int fw_attributes_class_get(struct class **fw_attr_class); int fw_attributes_class_put(void); #endif /* FW_ATTR_CLASS_H */ diff --git a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c index b8bac35ebd42..6ddca857cc4d 100644 --- a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +++ b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c @@ -24,7 +24,7 @@ struct bioscfg_priv bioscfg_drv = { .mutex = __MUTEX_INITIALIZER(bioscfg_drv.mutex), }; -static const struct class *fw_attr_class; +static struct class *fw_attr_class; ssize_t display_name_language_code_show(struct kobject *kobj, struct kobj_attribute *attr, diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 3a496c615ce6..2396decdb3cb 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -195,7 +195,7 @@ static const char * const level_options[] = { [TLMI_LEVEL_MASTER] = "master", }; static struct think_lmi tlmi_priv; -static const struct class *fw_attr_class; +static struct class *fw_attr_class; static DEFINE_MUTEX(tlmi_mutex); /* ------ Utility functions ------------*/ -- Gitee From 3d6a004b053fbd76b702284c60b6280b05574ca2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:27 +0800 Subject: [PATCH 0391/1421] Revert "arm64: dts: qcom: sm8550: add UART14 nodes" This reverts commit e7cd0375ae131d141a0976336ff3838311fb7315. --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 30 ---------------------------- 1 file changed, 30 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index 2f0f1c2ab739..c14c6f8583d5 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -1064,20 +1064,6 @@ spi13: spi@894000 { status = "disabled"; }; - uart14: serial@898000 { - compatible = "qcom,geni-uart"; - reg = <0 0x898000 0 0x4000>; - clock-names = "se"; - clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>; - pinctrl-names = "default"; - pinctrl-0 = <&qup_uart14_default>, <&qup_uart14_cts_rts>; - interrupts = ; - interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>, - <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>; - interconnect-names = "qup-core", "qup-config"; - status = "disabled"; - }; - i2c15: i2c@89c000 { compatible = "qcom,geni-i2c"; reg = <0 0x0089c000 0 0x4000>; @@ -3654,22 +3640,6 @@ qup_uart7_default: qup-uart7-default-state { bias-disable; }; - qup_uart14_default: qup-uart14-default-state { - /* TX, RX */ - pins = "gpio78", "gpio79"; - function = "qup2_se6"; - drive-strength = <2>; - bias-pull-up; - }; - - qup_uart14_cts_rts: qup-uart14-cts-rts-state { - /* CTS, RTS */ - pins = "gpio76", "gpio77"; - function = "qup2_se6"; - drive-strength = <2>; - bias-pull-down; - }; - sdc2_sleep: sdc2-sleep-state { clk-pins { pins = "sdc2_clk"; -- Gitee From 5f500925af1dcb3f80b823fdef5838ab0452c284 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:28 +0800 Subject: [PATCH 0392/1421] Revert "platform/x86: dell-wmi-sysman: Fix WMI data block retrieval in sysfs callbacks" This reverts commit 9f520db41d46d164dc4c54e04da6359ee78b9989. --- .../platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h | 5 ----- .../platform/x86/dell/dell-wmi-sysman/enum-attributes.c | 5 ++--- .../platform/x86/dell/dell-wmi-sysman/int-attributes.c | 5 ++--- .../x86/dell/dell-wmi-sysman/passobj-attributes.c | 5 ++--- .../platform/x86/dell/dell-wmi-sysman/string-attributes.c | 5 ++--- drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 8 ++++---- 6 files changed, 12 insertions(+), 21 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h b/drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h index 817ee7ba07ca..3ad33a094588 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h +++ b/drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h @@ -89,11 +89,6 @@ extern struct wmi_sysman_priv wmi_priv; enum { ENUM, INT, STR, PO }; -#define ENUM_MIN_ELEMENTS 8 -#define INT_MIN_ELEMENTS 9 -#define STR_MIN_ELEMENTS 8 -#define PO_MIN_ELEMENTS 4 - enum { ATTR_NAME, DISPL_NAME_LANG_CODE, diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/enum-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/enum-attributes.c index fc2f58b4cbc6..8cc212c85266 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/enum-attributes.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/enum-attributes.c @@ -23,10 +23,9 @@ static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *a obj = get_wmiobj_pointer(instance_id, DELL_WMI_BIOS_ENUMERATION_ATTRIBUTE_GUID); if (!obj) return -EIO; - if (obj->type != ACPI_TYPE_PACKAGE || obj->package.count < ENUM_MIN_ELEMENTS || - obj->package.elements[CURRENT_VAL].type != ACPI_TYPE_STRING) { + if (obj->package.elements[CURRENT_VAL].type != ACPI_TYPE_STRING) { kfree(obj); - return -EIO; + return -EINVAL; } ret = snprintf(buf, PAGE_SIZE, "%s\n", obj->package.elements[CURRENT_VAL].string.pointer); kfree(obj); diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/int-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/int-attributes.c index 735248064239..951e75b538fa 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/int-attributes.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/int-attributes.c @@ -25,10 +25,9 @@ static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *a obj = get_wmiobj_pointer(instance_id, DELL_WMI_BIOS_INTEGER_ATTRIBUTE_GUID); if (!obj) return -EIO; - if (obj->type != ACPI_TYPE_PACKAGE || obj->package.count < INT_MIN_ELEMENTS || - obj->package.elements[CURRENT_VAL].type != ACPI_TYPE_INTEGER) { + if (obj->package.elements[CURRENT_VAL].type != ACPI_TYPE_INTEGER) { kfree(obj); - return -EIO; + return -EINVAL; } ret = snprintf(buf, PAGE_SIZE, "%lld\n", obj->package.elements[CURRENT_VAL].integer.value); kfree(obj); diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c index 3167e06d416e..d8f1bf5e58a0 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c @@ -26,10 +26,9 @@ static ssize_t is_enabled_show(struct kobject *kobj, struct kobj_attribute *attr obj = get_wmiobj_pointer(instance_id, DELL_WMI_BIOS_PASSOBJ_ATTRIBUTE_GUID); if (!obj) return -EIO; - if (obj->type != ACPI_TYPE_PACKAGE || obj->package.count < PO_MIN_ELEMENTS || - obj->package.elements[IS_PASS_SET].type != ACPI_TYPE_INTEGER) { + if (obj->package.elements[IS_PASS_SET].type != ACPI_TYPE_INTEGER) { kfree(obj); - return -EIO; + return -EINVAL; } ret = snprintf(buf, PAGE_SIZE, "%lld\n", obj->package.elements[IS_PASS_SET].integer.value); kfree(obj); diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/string-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/string-attributes.c index 0d2c74f8d1aa..c392f0ecf8b5 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/string-attributes.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/string-attributes.c @@ -25,10 +25,9 @@ static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *a obj = get_wmiobj_pointer(instance_id, DELL_WMI_BIOS_STRING_ATTRIBUTE_GUID); if (!obj) return -EIO; - if (obj->type != ACPI_TYPE_PACKAGE || obj->package.count < STR_MIN_ELEMENTS || - obj->package.elements[CURRENT_VAL].type != ACPI_TYPE_STRING) { + if (obj->package.elements[CURRENT_VAL].type != ACPI_TYPE_STRING) { kfree(obj); - return -EIO; + return -EINVAL; } ret = snprintf(buf, PAGE_SIZE, "%s\n", obj->package.elements[CURRENT_VAL].string.pointer); kfree(obj); diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c index f567d37a64a3..af49dd6b31ad 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c @@ -408,10 +408,10 @@ static int init_bios_attributes(int attr_type, const char *guid) return retval; switch (attr_type) { - case ENUM: min_elements = ENUM_MIN_ELEMENTS; break; - case INT: min_elements = INT_MIN_ELEMENTS; break; - case STR: min_elements = STR_MIN_ELEMENTS; break; - case PO: min_elements = PO_MIN_ELEMENTS; break; + case ENUM: min_elements = 8; break; + case INT: min_elements = 9; break; + case STR: min_elements = 8; break; + case PO: min_elements = 4; break; default: pr_err("Error: Unknown attr_type: %d\n", attr_type); return -EINVAL; -- Gitee From 146f296e102efadba800489ca85381a122a747a4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:28 +0800 Subject: [PATCH 0393/1421] Revert "drm/i915/selftests: Change mock_request() to return error pointers" This reverts commit b02cfbdcd712bc135e869b5845b04f64ecebf2d0. --- drivers/gpu/drm/i915/selftests/i915_request.c | 20 +++++++++---------- drivers/gpu/drm/i915/selftests/mock_request.c | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c b/drivers/gpu/drm/i915/selftests/i915_request.c index c7ce2c570ad1..a9b79888c193 100644 --- a/drivers/gpu/drm/i915/selftests/i915_request.c +++ b/drivers/gpu/drm/i915/selftests/i915_request.c @@ -73,8 +73,8 @@ static int igt_add_request(void *arg) /* Basic preliminary test to create a request and let it loose! */ request = mock_request(rcs0(i915)->kernel_context, HZ / 10); - if (IS_ERR(request)) - return PTR_ERR(request); + if (!request) + return -ENOMEM; i915_request_add(request); @@ -91,8 +91,8 @@ static int igt_wait_request(void *arg) /* Submit a request, then wait upon it */ request = mock_request(rcs0(i915)->kernel_context, T); - if (IS_ERR(request)) - return PTR_ERR(request); + if (!request) + return -ENOMEM; i915_request_get(request); @@ -160,8 +160,8 @@ static int igt_fence_wait(void *arg) /* Submit a request, treat it as a fence and wait upon it */ request = mock_request(rcs0(i915)->kernel_context, T); - if (IS_ERR(request)) - return PTR_ERR(request); + if (!request) + return -ENOMEM; if (dma_fence_wait_timeout(&request->fence, false, T) != -ETIME) { pr_err("fence wait success before submit (expected timeout)!\n"); @@ -219,8 +219,8 @@ static int igt_request_rewind(void *arg) GEM_BUG_ON(IS_ERR(ce)); request = mock_request(ce, 2 * HZ); intel_context_put(ce); - if (IS_ERR(request)) { - err = PTR_ERR(request); + if (!request) { + err = -ENOMEM; goto err_context_0; } @@ -237,8 +237,8 @@ static int igt_request_rewind(void *arg) GEM_BUG_ON(IS_ERR(ce)); vip = mock_request(ce, 0); intel_context_put(ce); - if (IS_ERR(vip)) { - err = PTR_ERR(vip); + if (!vip) { + err = -ENOMEM; goto err_context_1; } diff --git a/drivers/gpu/drm/i915/selftests/mock_request.c b/drivers/gpu/drm/i915/selftests/mock_request.c index 1b0cf073e964..09f747228dff 100644 --- a/drivers/gpu/drm/i915/selftests/mock_request.c +++ b/drivers/gpu/drm/i915/selftests/mock_request.c @@ -35,7 +35,7 @@ mock_request(struct intel_context *ce, unsigned long delay) /* NB the i915->requests slab cache is enlarged to fit mock_request */ request = intel_context_create_request(ce); if (IS_ERR(request)) - return request; + return NULL; request->mock.delay = delay; return request; -- Gitee From acbc6377496584ffba40c1e2cf98aba8d1ae7bdd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:28 +0800 Subject: [PATCH 0394/1421] Revert "spi: spi-fsl-dspi: Clear completion counter before initiating transfer" This reverts commit f09f86b227e3d5de736184231620fe0496d6479f. --- drivers/spi/spi-fsl-dspi.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 3206c84c6f22..7dd94369abb4 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -988,20 +988,11 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr, if (dspi->devtype_data->trans_mode == DSPI_DMA_MODE) { status = dspi_dma_xfer(dspi); } else { - /* - * Reinitialize the completion before transferring data - * to avoid the case where it might remain in the done - * state due to a spurious interrupt from a previous - * transfer. This could falsely signal that the current - * transfer has completed. - */ - if (dspi->irq) - reinit_completion(&dspi->xfer_done); - dspi_fifo_write(dspi); if (dspi->irq) { wait_for_completion(&dspi->xfer_done); + reinit_completion(&dspi->xfer_done); } else { do { status = dspi_poll(dspi); -- Gitee From fd95b35271b111db317cf4fce4cf98e6d258518b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:28 +0800 Subject: [PATCH 0395/1421] Revert "drm/exynos: fimd: Guard display clock control with runtime PM calls" This reverts commit bb2fa466b32293b47b0840b61fe363533e829bc1. --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 341e95269836..5bdc246f5fad 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -187,7 +187,6 @@ struct fimd_context { u32 i80ifcon; bool i80_if; bool suspended; - bool dp_clk_enabled; wait_queue_head_t wait_vsync_queue; atomic_t wait_vsync_event; atomic_t win_updated; @@ -1048,18 +1047,7 @@ static void fimd_dp_clock_enable(struct exynos_drm_clk *clk, bool enable) struct fimd_context *ctx = container_of(clk, struct fimd_context, dp_clk); u32 val = enable ? DP_MIE_CLK_DP_ENABLE : DP_MIE_CLK_DISABLE; - - if (enable == ctx->dp_clk_enabled) - return; - - if (enable) - pm_runtime_resume_and_get(ctx->dev); - - ctx->dp_clk_enabled = enable; writel(val, ctx->regs + DP_MIE_CLKCON); - - if (!enable) - pm_runtime_put(ctx->dev); } static const struct exynos_drm_crtc_ops fimd_crtc_ops = { -- Gitee From 1a2f8c105b6bcea29980c89f7698ba29ec6a0d48 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:28 +0800 Subject: [PATCH 0396/1421] Revert "dpaa2-eth: fix xdp_rxq_info leak" This reverts commit 37a63567914c9ea93585e7b20cde3707f1ee969e. --- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 26 ++----------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index d3c36a6f84b0..40e881829595 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -3928,7 +3928,6 @@ static int dpaa2_eth_setup_rx_flow(struct dpaa2_eth_priv *priv, MEM_TYPE_PAGE_ORDER0, NULL); if (err) { dev_err(dev, "xdp_rxq_info_reg_mem_model failed\n"); - xdp_rxq_info_unreg(&fq->channel->xdp_rxq); return err; } @@ -4422,25 +4421,17 @@ static int dpaa2_eth_bind_dpni(struct dpaa2_eth_priv *priv) return -EINVAL; } if (err) - goto out; + return err; } err = dpni_get_qdid(priv->mc_io, 0, priv->mc_token, DPNI_QUEUE_TX, &priv->tx_qdid); if (err) { dev_err(dev, "dpni_get_qdid() failed\n"); - goto out; + return err; } return 0; - -out: - while (i--) { - if (priv->fq[i].type == DPAA2_RX_FQ && - xdp_rxq_info_is_reg(&priv->fq[i].channel->xdp_rxq)) - xdp_rxq_info_unreg(&priv->fq[i].channel->xdp_rxq); - } - return err; } /* Allocate rings for storing incoming frame descriptors */ @@ -4822,17 +4813,6 @@ static void dpaa2_eth_del_ch_napi(struct dpaa2_eth_priv *priv) } } -static void dpaa2_eth_free_rx_xdp_rxq(struct dpaa2_eth_priv *priv) -{ - int i; - - for (i = 0; i < priv->num_fqs; i++) { - if (priv->fq[i].type == DPAA2_RX_FQ && - xdp_rxq_info_is_reg(&priv->fq[i].channel->xdp_rxq)) - xdp_rxq_info_unreg(&priv->fq[i].channel->xdp_rxq); - } -} - static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) { struct device *dev; @@ -5036,7 +5016,6 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) free_percpu(priv->percpu_stats); err_alloc_percpu_stats: dpaa2_eth_del_ch_napi(priv); - dpaa2_eth_free_rx_xdp_rxq(priv); err_bind: dpaa2_eth_free_dpbps(priv); err_dpbp_setup: @@ -5089,7 +5068,6 @@ static void dpaa2_eth_remove(struct fsl_mc_device *ls_dev) free_percpu(priv->percpu_extras); dpaa2_eth_del_ch_napi(priv); - dpaa2_eth_free_rx_xdp_rxq(priv); dpaa2_eth_free_dpbps(priv); dpaa2_eth_free_dpio(priv); dpaa2_eth_free_dpni(priv); -- Gitee From 6013b00cbb9d0b43fc1f5fe63983a93e8dfcab30 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:29 +0800 Subject: [PATCH 0397/1421] Revert "ethernet: atl1: Add missing DMA mapping error checks and count errors" This reverts commit 79c8dc72deba818969c5690d1d29e6d2f990b7fb. --- drivers/net/ethernet/atheros/atlx/atl1.c | 79 +++++++----------------- 1 file changed, 22 insertions(+), 57 deletions(-) diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c index 4ed165702d58..02aa6fd8ebc2 100644 --- a/drivers/net/ethernet/atheros/atlx/atl1.c +++ b/drivers/net/ethernet/atheros/atlx/atl1.c @@ -1861,21 +1861,14 @@ static u16 atl1_alloc_rx_buffers(struct atl1_adapter *adapter) break; } + buffer_info->alloced = 1; + buffer_info->skb = skb; + buffer_info->length = (u16) adapter->rx_buffer_len; page = virt_to_page(skb->data); offset = offset_in_page(skb->data); buffer_info->dma = dma_map_page(&pdev->dev, page, offset, adapter->rx_buffer_len, DMA_FROM_DEVICE); - if (dma_mapping_error(&pdev->dev, buffer_info->dma)) { - kfree_skb(skb); - adapter->soft_stats.rx_dropped++; - break; - } - - buffer_info->alloced = 1; - buffer_info->skb = skb; - buffer_info->length = (u16)adapter->rx_buffer_len; - rfd_desc->buffer_addr = cpu_to_le64(buffer_info->dma); rfd_desc->buf_len = cpu_to_le16(adapter->rx_buffer_len); rfd_desc->coalese = 0; @@ -2190,8 +2183,8 @@ static int atl1_tx_csum(struct atl1_adapter *adapter, struct sk_buff *skb, return 0; } -static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, - struct tx_packet_desc *ptpd) +static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, + struct tx_packet_desc *ptpd) { struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring; struct atl1_buffer *buffer_info; @@ -2201,7 +2194,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, unsigned int nr_frags; unsigned int f; int retval; - u16 first_mapped; u16 next_to_use; u16 data_len; u8 hdr_len; @@ -2209,7 +2201,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, buf_len -= skb->data_len; nr_frags = skb_shinfo(skb)->nr_frags; next_to_use = atomic_read(&tpd_ring->next_to_use); - first_mapped = next_to_use; buffer_info = &tpd_ring->buffer_info[next_to_use]; BUG_ON(buffer_info->skb); /* put skb in last TPD */ @@ -2225,8 +2216,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, buffer_info->dma = dma_map_page(&adapter->pdev->dev, page, offset, hdr_len, DMA_TO_DEVICE); - if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma)) - goto dma_err; if (++next_to_use == tpd_ring->count) next_to_use = 0; @@ -2253,9 +2242,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, page, offset, buffer_info->length, DMA_TO_DEVICE); - if (dma_mapping_error(&adapter->pdev->dev, - buffer_info->dma)) - goto dma_err; if (++next_to_use == tpd_ring->count) next_to_use = 0; } @@ -2268,8 +2254,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, buffer_info->dma = dma_map_page(&adapter->pdev->dev, page, offset, buf_len, DMA_TO_DEVICE); - if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma)) - goto dma_err; if (++next_to_use == tpd_ring->count) next_to_use = 0; } @@ -2293,9 +2277,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, buffer_info->dma = skb_frag_dma_map(&adapter->pdev->dev, frag, i * ATL1_MAX_TX_BUF_LEN, buffer_info->length, DMA_TO_DEVICE); - if (dma_mapping_error(&adapter->pdev->dev, - buffer_info->dma)) - goto dma_err; if (++next_to_use == tpd_ring->count) next_to_use = 0; @@ -2304,22 +2285,6 @@ static bool atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb, /* last tpd's buffer-info */ buffer_info->skb = skb; - - return true; - - dma_err: - while (first_mapped != next_to_use) { - buffer_info = &tpd_ring->buffer_info[first_mapped]; - dma_unmap_page(&adapter->pdev->dev, - buffer_info->dma, - buffer_info->length, - DMA_TO_DEVICE); - buffer_info->dma = 0; - - if (++first_mapped == tpd_ring->count) - first_mapped = 0; - } - return false; } static void atl1_tx_queue(struct atl1_adapter *adapter, u16 count, @@ -2390,8 +2355,10 @@ static netdev_tx_t atl1_xmit_frame(struct sk_buff *skb, len = skb_headlen(skb); - if (unlikely(skb->len <= 0)) - goto drop_packet; + if (unlikely(skb->len <= 0)) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } nr_frags = skb_shinfo(skb)->nr_frags; for (f = 0; f < nr_frags; f++) { @@ -2404,9 +2371,10 @@ static netdev_tx_t atl1_xmit_frame(struct sk_buff *skb, if (mss) { if (skb->protocol == htons(ETH_P_IP)) { proto_hdr_len = skb_tcp_all_headers(skb); - if (unlikely(proto_hdr_len > len)) - goto drop_packet; - + if (unlikely(proto_hdr_len > len)) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } /* need additional TPD ? */ if (proto_hdr_len != len) count += (len - proto_hdr_len + @@ -2438,26 +2406,23 @@ static netdev_tx_t atl1_xmit_frame(struct sk_buff *skb, } tso = atl1_tso(adapter, skb, ptpd); - if (tso < 0) - goto drop_packet; + if (tso < 0) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } if (!tso) { ret_val = atl1_tx_csum(adapter, skb, ptpd); - if (ret_val < 0) - goto drop_packet; + if (ret_val < 0) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } } - if (!atl1_tx_map(adapter, skb, ptpd)) - goto drop_packet; - + atl1_tx_map(adapter, skb, ptpd); atl1_tx_queue(adapter, count, ptpd); atl1_update_mailbox(adapter); return NETDEV_TX_OK; - -drop_packet: - adapter->soft_stats.tx_errors++; - dev_kfree_skb_any(skb); - return NETDEV_TX_OK; } static int atl1_rings_clean(struct napi_struct *napi, int budget) -- Gitee From cfdd1bc2b3f548989e55c5778da42c3b13832867 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:29 +0800 Subject: [PATCH 0398/1421] Revert "btrfs: use btrfs_record_snapshot_destroy() during rmdir" This reverts commit c8b86a4a4810a30c149eb5cf94bcc9cf4edeb9a5. --- fs/btrfs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index e8e57abb032d..cee1a11959c5 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4657,7 +4657,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) * deletes for directory foo. */ if (BTRFS_I(inode)->last_unlink_trans >= trans->transid) - btrfs_record_snapshot_destroy(trans, BTRFS_I(dir)); + BTRFS_I(dir)->last_unlink_trans = BTRFS_I(inode)->last_unlink_trans; if (unlikely(btrfs_ino(BTRFS_I(inode)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { ret = btrfs_unlink_subvol(trans, BTRFS_I(dir), dentry); -- Gitee From 8408688e959df72efc7f7e7d22e7ed249c7f8e00 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:29 +0800 Subject: [PATCH 0399/1421] Revert "btrfs: propagate last_unlink_trans earlier when doing a rmdir" This reverts commit d71e79a649b5dc134d599d5f54ed255f74d82280. --- fs/btrfs/inode.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index cee1a11959c5..c2c07ad194c0 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4617,6 +4617,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; int ret = 0; struct btrfs_trans_handle *trans; + u64 last_unlink_trans; struct fscrypt_name fname; if (inode->i_size > BTRFS_EMPTY_DIR_SIZE) @@ -4642,23 +4643,6 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) goto out_notrans; } - /* - * Propagate the last_unlink_trans value of the deleted dir to its - * parent directory. This is to prevent an unrecoverable log tree in the - * case we do something like this: - * 1) create dir foo - * 2) create snapshot under dir foo - * 3) delete the snapshot - * 4) rmdir foo - * 5) mkdir foo - * 6) fsync foo or some file inside foo - * - * This is because we can't unlink other roots when replaying the dir - * deletes for directory foo. - */ - if (BTRFS_I(inode)->last_unlink_trans >= trans->transid) - BTRFS_I(dir)->last_unlink_trans = BTRFS_I(inode)->last_unlink_trans; - if (unlikely(btrfs_ino(BTRFS_I(inode)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { ret = btrfs_unlink_subvol(trans, BTRFS_I(dir), dentry); goto out; @@ -4668,11 +4652,27 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) if (ret) goto out; + last_unlink_trans = BTRFS_I(inode)->last_unlink_trans; + /* now the directory is empty */ ret = btrfs_unlink_inode(trans, BTRFS_I(dir), BTRFS_I(d_inode(dentry)), &fname.disk_name); - if (!ret) + if (!ret) { btrfs_i_size_write(BTRFS_I(inode), 0); + /* + * Propagate the last_unlink_trans value of the deleted dir to + * its parent directory. This is to prevent an unrecoverable + * log tree in the case we do something like this: + * 1) create dir foo + * 2) create snapshot under dir foo + * 3) delete the snapshot + * 4) rmdir foo + * 5) mkdir foo + * 6) fsync foo or some file inside foo + */ + if (last_unlink_trans >= trans->transid) + BTRFS_I(dir)->last_unlink_trans = last_unlink_trans; + } out: btrfs_end_transaction(trans); out_notrans: -- Gitee From 1d303c264258b2bdc868b8e70ff6643452cf80fc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:29 +0800 Subject: [PATCH 0400/1421] Revert "btrfs: rename err to ret in btrfs_rmdir()" This reverts commit 40be566662f6c6f2fd90dd70ba649cfba09a861a. --- fs/btrfs/inode.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index c2c07ad194c0..af1f22b3cff7 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4615,7 +4615,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) { struct inode *inode = d_inode(dentry); struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; - int ret = 0; + int err = 0; struct btrfs_trans_handle *trans; u64 last_unlink_trans; struct fscrypt_name fname; @@ -4631,33 +4631,33 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) return btrfs_delete_subvolume(BTRFS_I(dir), dentry); } - ret = fscrypt_setup_filename(dir, &dentry->d_name, 1, &fname); - if (ret) - return ret; + err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &fname); + if (err) + return err; /* This needs to handle no-key deletions later on */ trans = __unlink_start_trans(BTRFS_I(dir)); if (IS_ERR(trans)) { - ret = PTR_ERR(trans); + err = PTR_ERR(trans); goto out_notrans; } if (unlikely(btrfs_ino(BTRFS_I(inode)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { - ret = btrfs_unlink_subvol(trans, BTRFS_I(dir), dentry); + err = btrfs_unlink_subvol(trans, BTRFS_I(dir), dentry); goto out; } - ret = btrfs_orphan_add(trans, BTRFS_I(inode)); - if (ret) + err = btrfs_orphan_add(trans, BTRFS_I(inode)); + if (err) goto out; last_unlink_trans = BTRFS_I(inode)->last_unlink_trans; /* now the directory is empty */ - ret = btrfs_unlink_inode(trans, BTRFS_I(dir), BTRFS_I(d_inode(dentry)), + err = btrfs_unlink_inode(trans, BTRFS_I(dir), BTRFS_I(d_inode(dentry)), &fname.disk_name); - if (!ret) { + if (!err) { btrfs_i_size_write(BTRFS_I(inode), 0); /* * Propagate the last_unlink_trans value of the deleted dir to @@ -4679,7 +4679,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) btrfs_btree_balance_dirty(fs_info); fscrypt_free_filename(&fname); - return ret; + return err; } /* -- Gitee From f6f498530aace8edbd1507ab2f433b9ceb75b488 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:29 +0800 Subject: [PATCH 0401/1421] Revert "btrfs: fix iteration of extrefs during log replay" This reverts commit 2fa0c331c261dee53ca2dd90209bfd317e878ca0. --- fs/btrfs/tree-log.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 13377c3b2289..6dbb62f83f8c 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -1162,13 +1162,13 @@ static inline int __add_inode_ref(struct btrfs_trans_handle *trans, struct fscrypt_str victim_name; extref = (struct btrfs_inode_extref *)(base + cur_offset); - victim_name.len = btrfs_inode_extref_name_len(leaf, extref); if (btrfs_inode_extref_parent(leaf, extref) != parent_objectid) goto next; ret = read_alloc_one_name(leaf, &extref->name, - victim_name.len, &victim_name); + btrfs_inode_extref_name_len(leaf, extref), + &victim_name); if (ret) return ret; -- Gitee From d39087c5f76cac748ecf8b4a202a59641d2b8b62 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:30 +0800 Subject: [PATCH 0402/1421] Revert "btrfs: fix missing error handling when searching for inode refs during log replay" This reverts commit d12757b83a5f76e0bdea62316712f0fb4ce8a723. --- fs/btrfs/tree-log.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 6dbb62f83f8c..cc9a2f8a4ae3 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -1087,9 +1087,7 @@ static inline int __add_inode_ref(struct btrfs_trans_handle *trans, search_key.type = BTRFS_INODE_REF_KEY; search_key.offset = parent_objectid; ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); - if (ret < 0) { - return ret; - } else if (ret == 0) { + if (ret == 0) { struct btrfs_inode_ref *victim_ref; unsigned long ptr; unsigned long ptr_end; -- Gitee From 03095ef64e7f90a6d17dc0a7d6b61885b967b077 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:30 +0800 Subject: [PATCH 0403/1421] Revert "Bluetooth: Prevent unintended pause by checking if advertising is active" This reverts commit e9c4c4a388a1a66bb2dc5ce9e27668b408c40fb6. --- net/bluetooth/hci_sync.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index d602e9d8eff4..9ba4cb90891b 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -2518,10 +2518,6 @@ static int hci_pause_advertising_sync(struct hci_dev *hdev) int err; int old_state; - /* If controller is not advertising we are done. */ - if (!hci_dev_test_flag(hdev, HCI_LE_ADV)) - return 0; - /* If already been paused there is nothing to do. */ if (hdev->advertising_paused) return 0; -- Gitee From 1039ef01b12d2f6a01e2b5ef3eb5e735a7072bf1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:30 +0800 Subject: [PATCH 0404/1421] Revert "platform/mellanox: nvsw-sn2201: Fix bus number in adapter error message" This reverts commit 0fa2421c4d620aeccdc0b132761acfdec2970e3a. --- drivers/platform/mellanox/nvsw-sn2201.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/mellanox/nvsw-sn2201.c b/drivers/platform/mellanox/nvsw-sn2201.c index 6b4d3c44d7bd..1a7c45aa41bb 100644 --- a/drivers/platform/mellanox/nvsw-sn2201.c +++ b/drivers/platform/mellanox/nvsw-sn2201.c @@ -1088,7 +1088,7 @@ static int nvsw_sn2201_i2c_completion_notify(void *handle, int id) if (!nvsw_sn2201->main_mux_devs->adapter) { err = -ENODEV; dev_err(nvsw_sn2201->dev, "Failed to get adapter for bus %d\n", - nvsw_sn2201->main_mux_devs->nr); + nvsw_sn2201->cpld_devs->nr); goto i2c_get_adapter_main_fail; } -- Gitee From 88efc1e46a9fe2e1d22159379231486e50fc09a5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:30 +0800 Subject: [PATCH 0405/1421] Revert "RDMA/mlx5: Fix vport loopback for MPV device" This reverts commit f318e98cb7abf58adb6199bce98c6c2e65cf13f1. --- drivers/infiniband/hw/mlx5/main.c | 33 ------------------------------- 1 file changed, 33 deletions(-) diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index e922fb872865..ada7dbf8eb1c 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -1690,33 +1690,6 @@ static void deallocate_uars(struct mlx5_ib_dev *dev, context->devx_uid); } -static int mlx5_ib_enable_lb_mp(struct mlx5_core_dev *master, - struct mlx5_core_dev *slave) -{ - int err; - - err = mlx5_nic_vport_update_local_lb(master, true); - if (err) - return err; - - err = mlx5_nic_vport_update_local_lb(slave, true); - if (err) - goto out; - - return 0; - -out: - mlx5_nic_vport_update_local_lb(master, false); - return err; -} - -static void mlx5_ib_disable_lb_mp(struct mlx5_core_dev *master, - struct mlx5_core_dev *slave) -{ - mlx5_nic_vport_update_local_lb(slave, false); - mlx5_nic_vport_update_local_lb(master, false); -} - int mlx5_ib_enable_lb(struct mlx5_ib_dev *dev, bool td, bool qp) { int err = 0; @@ -3251,8 +3224,6 @@ static void mlx5_ib_unbind_slave_port(struct mlx5_ib_dev *ibdev, lockdep_assert_held(&mlx5_ib_multiport_mutex); - mlx5_ib_disable_lb_mp(ibdev->mdev, mpi->mdev); - mlx5_core_mp_event_replay(ibdev->mdev, MLX5_DRIVER_EVENT_AFFILIATION_REMOVED, NULL); @@ -3348,10 +3319,6 @@ static bool mlx5_ib_bind_slave_port(struct mlx5_ib_dev *ibdev, MLX5_DRIVER_EVENT_AFFILIATION_DONE, &key); - err = mlx5_ib_enable_lb_mp(ibdev->mdev, mpi->mdev); - if (err) - goto unbind; - return true; unbind: -- Gitee From 79283042bdf04ef59b6541f9484b85de13013e9f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:31 +0800 Subject: [PATCH 0406/1421] Revert "RDMA/mlx5: Fix CC counters query for MPV" This reverts commit 416091140739db4b6ccea0db26fbf0c3430a83d8. --- drivers/infiniband/hw/mlx5/counters.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/mlx5/counters.c b/drivers/infiniband/hw/mlx5/counters.c index d06128501ce4..f4aa72166cf3 100644 --- a/drivers/infiniband/hw/mlx5/counters.c +++ b/drivers/infiniband/hw/mlx5/counters.c @@ -407,7 +407,7 @@ static int do_get_hw_stats(struct ib_device *ibdev, */ goto done; } - ret = mlx5_lag_query_cong_counters(mdev, + ret = mlx5_lag_query_cong_counters(dev->mdev, stats->value + cnts->num_q_counters, cnts->num_cong_counters, -- Gitee From 4ce7c3614877a9bdd928862357e2952d752be473 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:31 +0800 Subject: [PATCH 0407/1421] Revert "RDMA/mlx5: Fix HW counters query for non-representor devices" This reverts commit 0827ba1cf6f100ef86c117e813f85e38879649b5. --- drivers/infiniband/hw/mlx5/counters.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/mlx5/counters.c b/drivers/infiniband/hw/mlx5/counters.c index f4aa72166cf3..b049bba21579 100644 --- a/drivers/infiniband/hw/mlx5/counters.c +++ b/drivers/infiniband/hw/mlx5/counters.c @@ -387,7 +387,7 @@ static int do_get_hw_stats(struct ib_device *ibdev, return ret; /* We don't expose device counters over Vports */ - if (is_mdev_switchdev_mode(dev->mdev) && dev->is_rep && port_num != 0) + if (is_mdev_switchdev_mode(dev->mdev) && port_num != 0) goto done; if (MLX5_CAP_PCAM_FEATURE(dev->mdev, rx_icrc_encapsulated_counter)) { -- Gitee From db3644411b02747d055f3920f4b91f94d5c6880b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:31 +0800 Subject: [PATCH 0408/1421] Revert "scsi: ufs: core: Fix spelling of a sysfs attribute name" This reverts commit e99b62c70e0390f96dfdf95d2621d93cf177b4ab. --- Documentation/ABI/testing/sysfs-driver-ufs | 2 +- drivers/ufs/core/ufs-sysfs.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-driver-ufs b/Documentation/ABI/testing/sysfs-driver-ufs index 84131641580c..0c7efaf62de0 100644 --- a/Documentation/ABI/testing/sysfs-driver-ufs +++ b/Documentation/ABI/testing/sysfs-driver-ufs @@ -711,7 +711,7 @@ Description: This file shows the thin provisioning type. This is one of The file is read only. -What: /sys/class/scsi_device/*/device/unit_descriptor/physical_memory_resource_count +What: /sys/class/scsi_device/*/device/unit_descriptor/physical_memory_resourse_count Date: February 2018 Contact: Stanislav Nijnikov Description: This file shows the total physical memory resources. This is diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c index 6c48255dfff0..3692b39b35e7 100644 --- a/drivers/ufs/core/ufs-sysfs.c +++ b/drivers/ufs/core/ufs-sysfs.c @@ -1278,7 +1278,7 @@ UFS_UNIT_DESC_PARAM(logical_block_size, _LOGICAL_BLK_SIZE, 1); UFS_UNIT_DESC_PARAM(logical_block_count, _LOGICAL_BLK_COUNT, 8); UFS_UNIT_DESC_PARAM(erase_block_size, _ERASE_BLK_SIZE, 4); UFS_UNIT_DESC_PARAM(provisioning_type, _PROVISIONING_TYPE, 1); -UFS_UNIT_DESC_PARAM(physical_memory_resource_count, _PHY_MEM_RSRC_CNT, 8); +UFS_UNIT_DESC_PARAM(physical_memory_resourse_count, _PHY_MEM_RSRC_CNT, 8); UFS_UNIT_DESC_PARAM(context_capabilities, _CTX_CAPABILITIES, 2); UFS_UNIT_DESC_PARAM(large_unit_granularity, _LARGE_UNIT_SIZE_M1, 1); UFS_UNIT_DESC_PARAM(wb_buf_alloc_units, _WB_BUF_ALLOC_UNITS, 4); @@ -1295,7 +1295,7 @@ static struct attribute *ufs_sysfs_unit_descriptor[] = { &dev_attr_logical_block_count.attr, &dev_attr_erase_block_size.attr, &dev_attr_provisioning_type.attr, - &dev_attr_physical_memory_resource_count.attr, + &dev_attr_physical_memory_resourse_count.attr, &dev_attr_context_capabilities.attr, &dev_attr_large_unit_granularity.attr, &dev_attr_wb_buf_alloc_units.attr, -- Gitee From 1cc2358182e137230af64d363de70d5dd9963548 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:31 +0800 Subject: [PATCH 0409/1421] Revert "scsi: qla4xxx: Fix missing DMA mapping error in qla4xxx_alloc_pdu()" This reverts commit 60e1a22b58161746cba94151cafef53b113da47e. --- drivers/scsi/qla4xxx/ql4_os.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 77c28d2ebf01..675332e49a7b 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c @@ -3420,8 +3420,6 @@ static int qla4xxx_alloc_pdu(struct iscsi_task *task, uint8_t opcode) task_data->data_dma = dma_map_single(&ha->pdev->dev, task->data, task->data_count, DMA_TO_DEVICE); - if (dma_mapping_error(&ha->pdev->dev, task_data->data_dma)) - return -ENOMEM; } DEBUG2(ql4_printk(KERN_INFO, ha, "%s: MaxRecvLen %u, iscsi hrd %d\n", -- Gitee From cf9be59cbd2bce49e699b33b8fc1219caad7ea7a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:31 +0800 Subject: [PATCH 0410/1421] Revert "scsi: qla2xxx: Fix DMA mapping test in qla24xx_get_port_database()" This reverts commit 56aba2cb1b1adb87493be4d3eedc9ca64f4ec149. --- drivers/scsi/qla2xxx/qla_mbx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 13b6cb1b93ac..0cd6f3e14882 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -2147,7 +2147,7 @@ qla24xx_get_port_database(scsi_qla_host_t *vha, u16 nport_handle, pdb_dma = dma_map_single(&vha->hw->pdev->dev, pdb, sizeof(*pdb), DMA_FROM_DEVICE); - if (dma_mapping_error(&vha->hw->pdev->dev, pdb_dma)) { + if (!pdb_dma) { ql_log(ql_log_warn, vha, 0x1116, "Failed to map dma buffer.\n"); return QLA_MEMORY_ALLOC_FAILED; } -- Gitee From 163ab9029e0a39f6db9503ae5088d498bec0d863 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:32 +0800 Subject: [PATCH 0411/1421] Revert "NFSv4/pNFS: Fix a race to wake on NFS_LAYOUT_DRAIN" This reverts commit e4dfdf1af29a9bf337fcea5f85c9296cfadd15fa. --- fs/nfs/pnfs.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 79d1ffdcbebd..73aa5a63afe3 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -1930,10 +1930,8 @@ static void nfs_layoutget_begin(struct pnfs_layout_hdr *lo) static void nfs_layoutget_end(struct pnfs_layout_hdr *lo) { if (atomic_dec_and_test(&lo->plh_outstanding) && - test_and_clear_bit(NFS_LAYOUT_DRAIN, &lo->plh_flags)) { - smp_mb__after_atomic(); + test_and_clear_bit(NFS_LAYOUT_DRAIN, &lo->plh_flags)) wake_up_bit(&lo->plh_flags, NFS_LAYOUT_DRAIN); - } } static bool pnfs_is_first_layoutget(struct pnfs_layout_hdr *lo) -- Gitee From b22a724a4948191e056b05c22250f90c2f593473 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:32 +0800 Subject: [PATCH 0412/1421] Revert "nfs: Clean up /proc/net/rpc/nfs when nfs_fs_proc_net_init() fails." This reverts commit 233804fa4f232770b154f5c4b2e84917d468d943. --- fs/nfs/inode.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 7e7dd2aab449..419d98cf9e29 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -2442,26 +2442,15 @@ EXPORT_SYMBOL_GPL(nfs_net_id); static int nfs_net_init(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); - int err; nfs_clients_init(net); if (!rpc_proc_register(net, &nn->rpcstats)) { - err = -ENOMEM; - goto err_proc_rpc; + nfs_clients_exit(net); + return -ENOMEM; } - err = nfs_fs_proc_net_init(net); - if (err) - goto err_proc_nfs; - - return 0; - -err_proc_nfs: - rpc_proc_unregister(net, "nfs"); -err_proc_rpc: - nfs_clients_exit(net); - return err; + return nfs_fs_proc_net_init(net); } static void nfs_net_exit(struct net *net) -- Gitee From 086dbed297bcc1a1175bddc9df9450bd685eaae9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:32 +0800 Subject: [PATCH 0413/1421] Revert "RDMA/mlx5: Initialize obj_event->obj_sub_list before xa_insert" This reverts commit 017121d2af1c6474bce542b8a8250d5ca4e6ebd0. --- drivers/infiniband/hw/mlx5/devx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/mlx5/devx.c b/drivers/infiniband/hw/mlx5/devx.c index 3f1fa45d9368..6e19974ecf6e 100644 --- a/drivers/infiniband/hw/mlx5/devx.c +++ b/drivers/infiniband/hw/mlx5/devx.c @@ -1914,7 +1914,6 @@ subscribe_event_xa_alloc(struct mlx5_devx_event_table *devx_event_table, /* Level1 is valid for future use, no need to free */ return -ENOMEM; - INIT_LIST_HEAD(&obj_event->obj_sub_list); err = xa_insert(&event->object_ids, key_level2, obj_event, @@ -1923,6 +1922,7 @@ subscribe_event_xa_alloc(struct mlx5_devx_event_table *devx_event_table, kfree(obj_event); return err; } + INIT_LIST_HEAD(&obj_event->obj_sub_list); } return 0; -- Gitee From 0cc755cd38417894044782050b4b414fbeb55965 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:32 +0800 Subject: [PATCH 0414/1421] Revert "platform/mellanox: mlxbf-tmfifo: fix vring_desc.len assignment" This reverts commit 52b6970dfa4c51cc45e672b0c28fc1579985c476. --- drivers/platform/mellanox/mlxbf-tmfifo.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/platform/mellanox/mlxbf-tmfifo.c b/drivers/platform/mellanox/mlxbf-tmfifo.c index 1015948ef43e..39828eb84e0b 100644 --- a/drivers/platform/mellanox/mlxbf-tmfifo.c +++ b/drivers/platform/mellanox/mlxbf-tmfifo.c @@ -281,8 +281,7 @@ static int mlxbf_tmfifo_alloc_vrings(struct mlxbf_tmfifo *fifo, vring->align = SMP_CACHE_BYTES; vring->index = i; vring->vdev_id = tm_vdev->vdev.id.device; - vring->drop_desc.len = cpu_to_virtio32(&tm_vdev->vdev, - VRING_DROP_DESC_MAX_LEN); + vring->drop_desc.len = VRING_DROP_DESC_MAX_LEN; dev = &tm_vdev->vdev.dev; size = vring_size(vring->num, vring->align); -- Gitee From 2a99eb0597852f61356c9785aaa30b179aa9daea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:32 +0800 Subject: [PATCH 0415/1421] Revert "arm64: dts: apple: t8103: Fix PCIe BCM4377 nodename" This reverts commit 36a057ebc99180037f10d3c5c28040542a03190b. --- arch/arm64/boot/dts/apple/t8103-jxxx.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi index cb78ce7af0b3..5988a4eb6efa 100644 --- a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi +++ b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi @@ -71,7 +71,7 @@ hpm1: usb-pd@3f { */ &port00 { bus-range = <1 1>; - wifi0: wifi@0,0 { + wifi0: network@0,0 { compatible = "pci14e4,4425"; reg = <0x10000 0x0 0x0 0x0 0x0>; /* To be filled by the loader */ -- Gitee From bc2831d49f2929c8417ecc089c780989db860d4e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:33 +0800 Subject: [PATCH 0416/1421] Revert "mtk-sd: reset host->mrq on prepare_data() error" This reverts commit b3afccdeb66e290b874cc120623efc5c0420b1a9. --- drivers/mmc/host/mtk-sd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c index cf685c0a17ed..d1bceb85c9eb 100644 --- a/drivers/mmc/host/mtk-sd.c +++ b/drivers/mmc/host/mtk-sd.c @@ -1347,7 +1347,6 @@ static void msdc_ops_request(struct mmc_host *mmc, struct mmc_request *mrq) if (mrq->data) { msdc_prepare_data(host, mrq->data); if (!msdc_data_prepared(mrq->data)) { - host->mrq = NULL; /* * Failed to prepare DMA area, fail fast before * starting any commands. -- Gitee From 959d49910a62e59606410fb28ec0332a7d376ed7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:33 +0800 Subject: [PATCH 0417/1421] Revert "mtk-sd: Prevent memory corruption from DMA map failure" This reverts commit 21013d2a7c1ffab2a73564ffc43042e4df8eed7a. --- drivers/mmc/host/mtk-sd.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c index d1bceb85c9eb..f201edbacd68 100644 --- a/drivers/mmc/host/mtk-sd.c +++ b/drivers/mmc/host/mtk-sd.c @@ -777,11 +777,6 @@ static void msdc_prepare_data(struct msdc_host *host, struct mmc_data *data) } } -static bool msdc_data_prepared(struct mmc_data *data) -{ - return data->host_cookie & MSDC_PREPARE_FLAG; -} - static void msdc_unprepare_data(struct msdc_host *host, struct mmc_data *data) { if (data->host_cookie & MSDC_ASYNC_FLAG) @@ -1344,18 +1339,8 @@ static void msdc_ops_request(struct mmc_host *mmc, struct mmc_request *mrq) WARN_ON(host->mrq); host->mrq = mrq; - if (mrq->data) { + if (mrq->data) msdc_prepare_data(host, mrq->data); - if (!msdc_data_prepared(mrq->data)) { - /* - * Failed to prepare DMA area, fail fast before - * starting any commands. - */ - mrq->cmd->error = -ENOSPC; - mmc_request_done(mmc_from_priv(host), mrq); - return; - } - } /* if SBC is required, we have HW option and SW option. * if HW option is enabled, and SBC does not have "special" flags, -- Gitee From 0883b04a8bc489f41463823b604d850d13a2b164 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:33 +0800 Subject: [PATCH 0418/1421] Revert "mtk-sd: Fix a pagefault in dma_unmap_sg() for not prepared data" This reverts commit e377012a0ba9f62f2645a8dce514a028e86b0bac. --- drivers/mmc/host/mtk-sd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c index f201edbacd68..02f3748e46c1 100644 --- a/drivers/mmc/host/mtk-sd.c +++ b/drivers/mmc/host/mtk-sd.c @@ -770,10 +770,9 @@ static inline void msdc_dma_setup(struct msdc_host *host, struct msdc_dma *dma, static void msdc_prepare_data(struct msdc_host *host, struct mmc_data *data) { if (!(data->host_cookie & MSDC_PREPARE_FLAG)) { + data->host_cookie |= MSDC_PREPARE_FLAG; data->sg_count = dma_map_sg(host->dev, data->sg, data->sg_len, mmc_get_dma_dir(data)); - if (data->sg_count) - data->host_cookie |= MSDC_PREPARE_FLAG; } } -- Gitee From 6057a560d70913a9dbb83be4e5e81ac905903158 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:33 +0800 Subject: [PATCH 0419/1421] Revert "usb: typec: altmodes/displayport: do not index invalid pin_assignments" This reverts commit fadbfc2d095efc2eef71f48b8eff2f04cd39db6f. --- drivers/usb/typec/altmodes/displayport.c | 2 +- include/linux/usb/typec_dp.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index 2f8d3ed01d5b..5f6fc5b79212 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -528,7 +528,7 @@ static ssize_t pin_assignment_show(struct device *dev, assignments = get_current_pin_assignments(dp); - for (i = 0; assignments && i < DP_PIN_ASSIGN_MAX; assignments >>= 1, i++) { + for (i = 0; assignments; assignments >>= 1, i++) { if (assignments & 1) { if (i == cur) len += sprintf(buf + len, "[%s] ", diff --git a/include/linux/usb/typec_dp.h b/include/linux/usb/typec_dp.h index c3f08af20295..8d09c2f0a9b8 100644 --- a/include/linux/usb/typec_dp.h +++ b/include/linux/usb/typec_dp.h @@ -56,7 +56,6 @@ enum { DP_PIN_ASSIGN_D, DP_PIN_ASSIGN_E, DP_PIN_ASSIGN_F, /* Not supported after v1.0b */ - DP_PIN_ASSIGN_MAX, }; /* DisplayPort alt mode specific commands */ -- Gitee From 7853ece8b3af5f802bfcb81dd8c3da1508d1a270 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:33 +0800 Subject: [PATCH 0420/1421] Revert "regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods" This reverts commit 14f8aa27cbf80e8d319da9a62882e40436c45936. --- drivers/regulator/gpio-regulator.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index 1bdd494cf882..65927fa2ef16 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c @@ -260,10 +260,8 @@ static int gpio_regulator_probe(struct platform_device *pdev) return -ENOMEM; } - drvdata->gpiods = devm_kcalloc(dev, config->ngpios, - sizeof(struct gpio_desc *), GFP_KERNEL); - if (!drvdata->gpiods) - return -ENOMEM; + drvdata->gpiods = devm_kzalloc(dev, sizeof(struct gpio_desc *), + GFP_KERNEL); if (config->input_supply) { drvdata->desc.supply_name = devm_kstrdup(&pdev->dev, @@ -276,6 +274,8 @@ static int gpio_regulator_probe(struct platform_device *pdev) } } + if (!drvdata->gpiods) + return -ENOMEM; for (i = 0; i < config->ngpios; i++) { drvdata->gpiods[i] = devm_gpiod_get_index(dev, NULL, -- Gitee From 4ed0ce2c82dfe6a769b001b03b576701a5eb98fa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:34 +0800 Subject: [PATCH 0421/1421] Revert "Bluetooth: MGMT: mesh_send: check instances prior disabling advertising" This reverts commit 33cef7462bdb2f369a61b672f9e7b8647fec391b. --- net/bluetooth/mgmt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 82fa8c28438f..8bef24228b5c 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -1074,8 +1074,7 @@ static int mesh_send_done_sync(struct hci_dev *hdev, void *data) struct mgmt_mesh_tx *mesh_tx; hci_dev_clear_flag(hdev, HCI_MESH_SENDING); - if (list_empty(&hdev->adv_instances)) - hci_disable_advertising_sync(hdev); + hci_disable_advertising_sync(hdev); mesh_tx = mgmt_mesh_next(hdev, NULL); if (mesh_tx) -- Gitee From 3babd78fefcd9ac0e3cfd90997656879c8b44007 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:34 +0800 Subject: [PATCH 0422/1421] Revert "Bluetooth: MGMT: set_mesh: update LE scan interval and window" This reverts commit e50729821e3a562e9ee55afb43e57c289b337a65. --- net/bluetooth/mgmt.c | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 8bef24228b5c..853d217cabc9 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -2140,9 +2140,6 @@ static int set_mesh_sync(struct hci_dev *hdev, void *data) else hci_dev_clear_flag(hdev, HCI_MESH); - hdev->le_scan_interval = __le16_to_cpu(cp->period); - hdev->le_scan_window = __le16_to_cpu(cp->window); - len -= sizeof(*cp); /* If filters don't fit, forward all adv pkts */ @@ -2157,7 +2154,6 @@ static int set_mesh(struct sock *sk, struct hci_dev *hdev, void *data, u16 len) { struct mgmt_cp_set_mesh *cp = data; struct mgmt_pending_cmd *cmd; - __u16 period, window; int err = 0; bt_dev_dbg(hdev, "sock %p", sk); @@ -2171,23 +2167,6 @@ static int set_mesh(struct sock *sk, struct hci_dev *hdev, void *data, u16 len) return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_MESH_RECEIVER, MGMT_STATUS_INVALID_PARAMS); - /* Keep allowed ranges in sync with set_scan_params() */ - period = __le16_to_cpu(cp->period); - - if (period < 0x0004 || period > 0x4000) - return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_MESH_RECEIVER, - MGMT_STATUS_INVALID_PARAMS); - - window = __le16_to_cpu(cp->window); - - if (window < 0x0004 || window > 0x4000) - return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_MESH_RECEIVER, - MGMT_STATUS_INVALID_PARAMS); - - if (window > period) - return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_MESH_RECEIVER, - MGMT_STATUS_INVALID_PARAMS); - hci_dev_lock(hdev); cmd = mgmt_pending_add(sk, MGMT_OP_SET_MESH_RECEIVER, hdev, data, len); @@ -6550,7 +6529,6 @@ static int set_scan_params(struct sock *sk, struct hci_dev *hdev, return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_SCAN_PARAMS, MGMT_STATUS_NOT_SUPPORTED); - /* Keep allowed ranges in sync with set_mesh() */ interval = __le16_to_cpu(cp->interval); if (interval < 0x0004 || interval > 0x4000) -- Gitee From d05f6b290a2616f68dbe02e32433d1e430fcc541 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:34 +0800 Subject: [PATCH 0423/1421] Revert "Bluetooth: hci_sync: revert some mesh modifications" This reverts commit bbae160a8ac6cad1d352e0e9ac19b0d649e5370f. --- net/bluetooth/hci_sync.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 9ba4cb90891b..e92bc4ceb5ad 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -2010,10 +2010,13 @@ static int hci_clear_adv_sets_sync(struct hci_dev *hdev, struct sock *sk) static int hci_clear_adv_sync(struct hci_dev *hdev, struct sock *sk, bool force) { struct adv_info *adv, *n; + int err = 0; if (ext_adv_capable(hdev)) /* Remove all existing sets */ - return hci_clear_adv_sets_sync(hdev, sk); + err = hci_clear_adv_sets_sync(hdev, sk); + if (ext_adv_capable(hdev)) + return err; /* This is safe as long as there is no command send while the lock is * held. @@ -2041,11 +2044,13 @@ static int hci_clear_adv_sync(struct hci_dev *hdev, struct sock *sk, bool force) static int hci_remove_adv_sync(struct hci_dev *hdev, u8 instance, struct sock *sk) { - int err; + int err = 0; /* If we use extended advertising, instance has to be removed first. */ if (ext_adv_capable(hdev)) - return hci_remove_ext_adv_instance_sync(hdev, instance, sk); + err = hci_remove_ext_adv_instance_sync(hdev, instance, sk); + if (ext_adv_capable(hdev)) + return err; /* This is safe as long as there is no command send while the lock is * held. @@ -2144,13 +2149,16 @@ int hci_read_tx_power_sync(struct hci_dev *hdev, __le16 handle, u8 type) int hci_disable_advertising_sync(struct hci_dev *hdev) { u8 enable = 0x00; + int err = 0; /* If controller is not advertising we are done. */ if (!hci_dev_test_flag(hdev, HCI_LE_ADV)) return 0; if (ext_adv_capable(hdev)) - return hci_disable_ext_adv_instance_sync(hdev, 0x00); + err = hci_disable_ext_adv_instance_sync(hdev, 0x00); + if (ext_adv_capable(hdev)) + return err; return __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable), &enable, HCI_CMD_TIMEOUT); -- Gitee From 7689742bbb4ab177b85370c3dc146d5bdf0a3a00 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:34 +0800 Subject: [PATCH 0424/1421] Revert "mmc: core: sd: Apply BROKEN_SD_DISCARD quirk earlier" This reverts commit 66406cf5d23a62f47e68d2e548b4235f99b3aad4. --- drivers/mmc/core/quirks.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h index c417ed34c057..7f893bafaa60 100644 --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h @@ -44,12 +44,6 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = { 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, MMC_QUIRK_NO_UHS_DDR50_TUNING, EXT_CSD_REV_ANY), - /* - * Some SD cards reports discard support while they don't - */ - MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd, - MMC_QUIRK_BROKEN_SD_DISCARD), - END_FIXUP }; @@ -153,6 +147,12 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = { MMC_FIXUP("M62704", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc, MMC_QUIRK_TRIM_BROKEN), + /* + * Some SD cards reports discard support while they don't + */ + MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd, + MMC_QUIRK_BROKEN_SD_DISCARD), + END_FIXUP }; -- Gitee From cd4c4f0b4faf86e3de744f6bd0d564c67766c827 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:35 +0800 Subject: [PATCH 0425/1421] Revert "Revert "mmc: sdhci: Disable SD card clock before changing parameters"" This reverts commit b2ed5eb7319f3b05e660625633c9645f3d67cb64. --- drivers/mmc/host/sdhci.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 9796a3cb3ca6..f32429ff905f 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2035,10 +2035,15 @@ void sdhci_set_clock(struct sdhci_host *host, unsigned int clock) host->mmc->actual_clock = 0; - sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL); + clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL); + if (clk & SDHCI_CLOCK_CARD_EN) + sdhci_writew(host, clk & ~SDHCI_CLOCK_CARD_EN, + SDHCI_CLOCK_CONTROL); - if (clock == 0) + if (clock == 0) { + sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL); return; + } clk = sdhci_calc_clk(host, clock, &host->mmc->actual_clock); sdhci_enable_clk(host, clk); -- Gitee From f28ebc1fd54d1e9c74e88ce8272ceced1c41468e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:35 +0800 Subject: [PATCH 0426/1421] Revert "mmc: sdhci: Add a helper function for dump register in dynamic debug mode" This reverts commit dc4faaaf719493d46ccdc93a13f25d8239ffe2bf. --- drivers/mmc/host/sdhci.h | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index 16d7bff9eae5..a315cee69809 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -825,20 +825,4 @@ void sdhci_switch_external_dma(struct sdhci_host *host, bool en); void sdhci_set_data_timeout_irq(struct sdhci_host *host, bool enable); void __sdhci_set_timeout(struct sdhci_host *host, struct mmc_command *cmd); -#if defined(CONFIG_DYNAMIC_DEBUG) || \ - (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE)) -#define SDHCI_DBG_ANYWAY 0 -#elif defined(DEBUG) -#define SDHCI_DBG_ANYWAY 1 -#else -#define SDHCI_DBG_ANYWAY 0 -#endif - -#define sdhci_dbg_dumpregs(host, fmt) \ -do { \ - DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \ - if (DYNAMIC_DEBUG_BRANCH(descriptor) || SDHCI_DBG_ANYWAY) \ - sdhci_dumpregs(host); \ -} while (0) - #endif /* __SDHCI_HW_H */ -- Gitee From a47d0ca0c142c394d8a41630e001ed32de921f8d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:35 +0800 Subject: [PATCH 0427/1421] Revert "vsock/vmci: Clear the vmci transport packet properly when initializing it" This reverts commit a5f69589a129ab036df7150a6f1ddb48dbac5b5d. --- net/vmw_vsock/vmci_transport.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c index 7eccd6708d66..b370070194fa 100644 --- a/net/vmw_vsock/vmci_transport.c +++ b/net/vmw_vsock/vmci_transport.c @@ -119,8 +119,6 @@ vmci_transport_packet_init(struct vmci_transport_packet *pkt, u16 proto, struct vmci_handle handle) { - memset(pkt, 0, sizeof(*pkt)); - /* We register the stream control handler as an any cid handle so we * must always send from a source address of VMADDR_CID_ANY */ @@ -133,6 +131,8 @@ vmci_transport_packet_init(struct vmci_transport_packet *pkt, pkt->type = type; pkt->src_port = src->svm_port; pkt->dst_port = dst->svm_port; + memset(&pkt->proto, 0, sizeof(pkt->proto)); + memset(&pkt->_reserved2, 0, sizeof(pkt->_reserved2)); switch (pkt->type) { case VMCI_TRANSPORT_PACKET_TYPE_INVALID: -- Gitee From c7c40a082946262b94284c883b319a547ddf3eca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:35 +0800 Subject: [PATCH 0428/1421] Revert "s390/pci: Do not try re-enabling load/store if device is disabled" This reverts commit 84e7147ea07c46487819d2f5a1be73c7e574fcaa. --- arch/s390/pci/pci_event.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c index d969f36bf186..b3961f1016ea 100644 --- a/arch/s390/pci/pci_event.c +++ b/arch/s390/pci/pci_event.c @@ -98,10 +98,6 @@ static pci_ers_result_t zpci_event_do_error_state_clear(struct pci_dev *pdev, struct zpci_dev *zdev = to_zpci(pdev); int rc; - /* The underlying device may have been disabled by the event */ - if (!zdev_enabled(zdev)) - return PCI_ERS_RESULT_NEED_RESET; - pr_info("%s: Unblocking device access for examination\n", pci_name(pdev)); rc = zpci_reset_load_store_blocked(zdev); if (rc) { -- Gitee From 24bff87f883d1dc75c663096e2f1a1133eb60f53 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:35 +0800 Subject: [PATCH 0429/1421] Revert "virtio-net: ensure the received length does not exceed allocated size" This reverts commit d46c1bd77346727d1c2bf898f58b07635cef4d0a. --- drivers/net/virtio_net.c | 38 ++++---------------------------------- 1 file changed, 4 insertions(+), 34 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 5a949f9446a8..3bf394b24d97 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -487,26 +487,6 @@ static unsigned int mergeable_ctx_to_truesize(void *mrg_ctx) return (unsigned long)mrg_ctx & ((1 << MRG_CTX_HEADER_SHIFT) - 1); } -static int check_mergeable_len(struct net_device *dev, void *mrg_ctx, - unsigned int len) -{ - unsigned int headroom, tailroom, room, truesize; - - truesize = mergeable_ctx_to_truesize(mrg_ctx); - headroom = mergeable_ctx_to_headroom(mrg_ctx); - tailroom = headroom ? sizeof(struct skb_shared_info) : 0; - room = SKB_DATA_ALIGN(headroom + tailroom); - - if (len > truesize - room) { - pr_debug("%s: rx error: len %u exceeds truesize %lu\n", - dev->name, len, (unsigned long)(truesize - room)); - DEV_STATS_INC(dev, rx_length_errors); - return -1; - } - - return 0; -} - static struct sk_buff *virtnet_build_skb(void *buf, unsigned int buflen, unsigned int headroom, unsigned int len) @@ -1104,8 +1084,7 @@ static unsigned int virtnet_get_headroom(struct virtnet_info *vi) * across multiple buffers (num_buf > 1), and we make sure buffers * have enough headroom. */ -static struct page *xdp_linearize_page(struct net_device *dev, - struct receive_queue *rq, +static struct page *xdp_linearize_page(struct receive_queue *rq, int *num_buf, struct page *p, int offset, @@ -1125,27 +1104,18 @@ static struct page *xdp_linearize_page(struct net_device *dev, memcpy(page_address(page) + page_off, page_address(p) + offset, *len); page_off += *len; - /* Only mergeable mode can go inside this while loop. In small mode, - * *num_buf == 1, so it cannot go inside. - */ while (--*num_buf) { unsigned int buflen; void *buf; - void *ctx; int off; - buf = virtnet_rq_get_buf(rq, &buflen, &ctx); + buf = virtnet_rq_get_buf(rq, &buflen, NULL); if (unlikely(!buf)) goto err_buf; p = virt_to_head_page(buf); off = buf - page_address(p); - if (check_mergeable_len(dev, ctx, buflen)) { - put_page(p); - goto err_buf; - } - /* guard against a misconfigured or uncooperative backend that * is sending packet larger than the MTU. */ @@ -1234,7 +1204,7 @@ static struct sk_buff *receive_small_xdp(struct net_device *dev, headroom = vi->hdr_len + header_offset; buflen = SKB_DATA_ALIGN(GOOD_PACKET_LEN + headroom) + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); - xdp_page = xdp_linearize_page(dev, rq, &num_buf, page, + xdp_page = xdp_linearize_page(rq, &num_buf, page, offset, header_offset, &tlen); if (!xdp_page) @@ -1569,7 +1539,7 @@ static void *mergeable_xdp_get_buf(struct virtnet_info *vi, */ if (!xdp_prog->aux->xdp_has_frags) { /* linearize data for XDP */ - xdp_page = xdp_linearize_page(vi->dev, rq, num_buf, + xdp_page = xdp_linearize_page(rq, num_buf, *page, offset, VIRTIO_XDP_HEADROOM, len); -- Gitee From ce53c9e4f2ef153f5a193986c10589bff2ea33d2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:36 +0800 Subject: [PATCH 0430/1421] Revert "rtc: cmos: use spin_lock_irqsave in cmos_interrupt" This reverts commit 348c73c5c917ae838cbdf0dde8127d071bb130fe. --- drivers/rtc/rtc-cmos.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index 095de4e0e4f3..5849d2970bba 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -697,12 +697,8 @@ static irqreturn_t cmos_interrupt(int irq, void *p) { u8 irqstat; u8 rtc_control; - unsigned long flags; - /* We cannot use spin_lock() here, as cmos_interrupt() is also called - * in a non-irq context. - */ - spin_lock_irqsave(&rtc_lock, flags); + spin_lock(&rtc_lock); /* When the HPET interrupt handler calls us, the interrupt * status is passed as arg1 instead of the irq number. But @@ -736,7 +732,7 @@ static irqreturn_t cmos_interrupt(int irq, void *p) hpet_mask_rtc_irq_bit(RTC_AIE); CMOS_READ(RTC_INTR_FLAGS); } - spin_unlock_irqrestore(&rtc_lock, flags); + spin_unlock(&rtc_lock); if (is_intr(irqstat)) { rtc_update_irq(p, 1, irqstat); @@ -1304,7 +1300,9 @@ static void cmos_check_wkalrm(struct device *dev) * ACK the rtc irq here */ if (t_now >= cmos->alarm_expires && cmos_use_acpi_alarm()) { + local_irq_disable(); cmos_interrupt(0, (void *)cmos->rtc); + local_irq_enable(); return; } -- Gitee From b684c91c3bcb54f1f33789b5fe2eea78b1fb1cc8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:36 +0800 Subject: [PATCH 0431/1421] Revert "rtc: pcf2127: fix SPI command byte for PCF2131" This reverts commit e4e36e957172386302cbef8991c4d1dfff00bec7. --- drivers/rtc/rtc-pcf2127.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c index fc079b9dcf71..b8cb09a82ea9 100644 --- a/drivers/rtc/rtc-pcf2127.c +++ b/drivers/rtc/rtc-pcf2127.c @@ -1383,11 +1383,6 @@ static int pcf2127_i2c_probe(struct i2c_client *client) variant = &pcf21xx_cfg[type]; } - if (variant->type == PCF2131) { - config.read_flag_mask = 0x0; - config.write_flag_mask = 0x0; - } - config.max_register = variant->max_register, regmap = devm_regmap_init(&client->dev, &pcf2127_i2c_regmap, -- Gitee From 7d14ad9d6a7780bfa155c8cea8e118be7d89cc94 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:36 +0800 Subject: [PATCH 0432/1421] Revert "rtc: pcf2127: add missing semicolon after statement" This reverts commit df5dbb01b59bc67a87f68a82b618398f298ad01f. --- drivers/rtc/rtc-pcf2127.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c index b8cb09a82ea9..9c04c4e1a49c 100644 --- a/drivers/rtc/rtc-pcf2127.c +++ b/drivers/rtc/rtc-pcf2127.c @@ -1456,7 +1456,7 @@ static int pcf2127_spi_probe(struct spi_device *spi) variant = &pcf21xx_cfg[type]; } - config.max_register = variant->max_register; + config.max_register = variant->max_register, regmap = devm_regmap_init_spi(spi, &config); if (IS_ERR(regmap)) { -- Gitee From 6e7690f878467aa74c2292bbdfaf51b91d9ed49c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:36 +0800 Subject: [PATCH 0433/1421] Revert "Linux 6.6.96" This reverts commit 2b3b516fc5f1fdd57938d841aae714f9c3f557d5. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 038fc8e0982b..679dff5e165c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 96 +SUBLEVEL = 95 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From c33cbb529993658792e76f5e679c82f979f6376b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:36 +0800 Subject: [PATCH 0434/1421] Revert "ARM: 9354/1: ptrace: Use bitfield helpers" This reverts commit 70ae25cdd715c53609be9daea3b8cc7d4db2c8b9. --- arch/arm/include/asm/ptrace.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index 14a38cc67e0b..7f44e88d1f25 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h @@ -10,7 +10,6 @@ #include #ifndef __ASSEMBLY__ -#include #include struct pt_regs { @@ -36,8 +35,8 @@ struct svc_pt_regs { #ifndef CONFIG_CPU_V7M #define isa_mode(regs) \ - (FIELD_GET(PSR_J_BIT, (regs)->ARM_cpsr) << 1 | \ - FIELD_GET(PSR_T_BIT, (regs)->ARM_cpsr)) + ((((regs)->ARM_cpsr & PSR_J_BIT) >> (__ffs(PSR_J_BIT) - 1)) | \ + (((regs)->ARM_cpsr & PSR_T_BIT) >> (__ffs(PSR_T_BIT)))) #else #define isa_mode(regs) 1 /* Thumb */ #endif -- Gitee From 3eff1a7a8b124c455eccf67c6f57e33f4129e8f8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:37 +0800 Subject: [PATCH 0435/1421] Revert "firmware: arm_scmi: Ensure that the message-id supports fastchannel" This reverts commit b599c1c689883fb099b63a857d83c1501829079d. --- drivers/firmware/arm_scmi/driver.c | 76 ++++++++++++--------------- drivers/firmware/arm_scmi/protocols.h | 2 - 2 files changed, 33 insertions(+), 45 deletions(-) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index d1fd2e492909..24babf87adb9 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1547,39 +1547,6 @@ static int scmi_common_extended_name_get(const struct scmi_protocol_handle *ph, return ret; } -/** - * scmi_protocol_msg_check - Check protocol message attributes - * - * @ph: A reference to the protocol handle. - * @message_id: The ID of the message to check. - * @attributes: A parameter to optionally return the retrieved message - * attributes, in case of Success. - * - * An helper to check protocol message attributes for a specific protocol - * and message pair. - * - * Return: 0 on SUCCESS - */ -static int scmi_protocol_msg_check(const struct scmi_protocol_handle *ph, - u32 message_id, u32 *attributes) -{ - int ret; - struct scmi_xfer *t; - - ret = xfer_get_init(ph, PROTOCOL_MESSAGE_ATTRIBUTES, - sizeof(__le32), 0, &t); - if (ret) - return ret; - - put_unaligned_le32(message_id, t->tx.buf); - ret = do_xfer(ph, t); - if (!ret && attributes) - *attributes = get_unaligned_le32(t->rx.buf); - xfer_put(ph, t); - - return ret; -} - /** * struct scmi_iterator - Iterator descriptor * @msg: A reference to the message TX buffer; filled by @prepare_message with @@ -1721,7 +1688,6 @@ scmi_common_fastchannel_init(const struct scmi_protocol_handle *ph, int ret; u32 flags; u64 phys_addr; - u32 attributes; u8 size; void __iomem *addr; struct scmi_xfer *t; @@ -1730,15 +1696,6 @@ scmi_common_fastchannel_init(const struct scmi_protocol_handle *ph, struct scmi_msg_resp_desc_fc *resp; const struct scmi_protocol_instance *pi = ph_to_pi(ph); - /* Check if the MSG_ID supports fastchannel */ - ret = scmi_protocol_msg_check(ph, message_id, &attributes); - if (ret || !MSG_SUPPORTS_FASTCHANNEL(attributes)) { - dev_dbg(ph->dev, - "Skip FC init for 0x%02X/%d domain:%d - ret:%d\n", - pi->proto->id, message_id, domain, ret); - return; - } - if (!p_addr) { ret = -EINVAL; goto err_out; @@ -1863,6 +1820,39 @@ static void scmi_common_fastchannel_db_ring(struct scmi_fc_db_info *db) #endif } +/** + * scmi_protocol_msg_check - Check protocol message attributes + * + * @ph: A reference to the protocol handle. + * @message_id: The ID of the message to check. + * @attributes: A parameter to optionally return the retrieved message + * attributes, in case of Success. + * + * An helper to check protocol message attributes for a specific protocol + * and message pair. + * + * Return: 0 on SUCCESS + */ +static int scmi_protocol_msg_check(const struct scmi_protocol_handle *ph, + u32 message_id, u32 *attributes) +{ + int ret; + struct scmi_xfer *t; + + ret = xfer_get_init(ph, PROTOCOL_MESSAGE_ATTRIBUTES, + sizeof(__le32), 0, &t); + if (ret) + return ret; + + put_unaligned_le32(message_id, t->tx.buf); + ret = do_xfer(ph, t); + if (!ret && attributes) + *attributes = get_unaligned_le32(t->rx.buf); + xfer_put(ph, t); + + return ret; +} + static const struct scmi_proto_helpers_ops helpers_ops = { .extended_name_get = scmi_common_extended_name_get, .iter_response_init = scmi_iterator_init, diff --git a/drivers/firmware/arm_scmi/protocols.h b/drivers/firmware/arm_scmi/protocols.h index 095b14a2d0a3..9fc2f1e293d4 100644 --- a/drivers/firmware/arm_scmi/protocols.h +++ b/drivers/firmware/arm_scmi/protocols.h @@ -29,8 +29,6 @@ #define PROTOCOL_REV_MAJOR(x) ((u16)(FIELD_GET(PROTOCOL_REV_MAJOR_MASK, (x)))) #define PROTOCOL_REV_MINOR(x) ((u16)(FIELD_GET(PROTOCOL_REV_MINOR_MASK, (x)))) -#define MSG_SUPPORTS_FASTCHANNEL(x) ((x) & BIT(0)) - enum scmi_common_cmd { PROTOCOL_VERSION = 0x0, PROTOCOL_ATTRIBUTES = 0x1, -- Gitee From 69498873580a5e032c4868378f11e77bad984fa1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:37 +0800 Subject: [PATCH 0436/1421] Revert "firmware: arm_scmi: Add a common helper to check if a message is supported" This reverts commit 080afd51e22204afa06fe96af09e9a722ecd0f33. --- drivers/firmware/arm_scmi/driver.c | 34 --------------------------- drivers/firmware/arm_scmi/protocols.h | 4 ---- 2 files changed, 38 deletions(-) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 24babf87adb9..65d1e66a347d 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1820,44 +1820,10 @@ static void scmi_common_fastchannel_db_ring(struct scmi_fc_db_info *db) #endif } -/** - * scmi_protocol_msg_check - Check protocol message attributes - * - * @ph: A reference to the protocol handle. - * @message_id: The ID of the message to check. - * @attributes: A parameter to optionally return the retrieved message - * attributes, in case of Success. - * - * An helper to check protocol message attributes for a specific protocol - * and message pair. - * - * Return: 0 on SUCCESS - */ -static int scmi_protocol_msg_check(const struct scmi_protocol_handle *ph, - u32 message_id, u32 *attributes) -{ - int ret; - struct scmi_xfer *t; - - ret = xfer_get_init(ph, PROTOCOL_MESSAGE_ATTRIBUTES, - sizeof(__le32), 0, &t); - if (ret) - return ret; - - put_unaligned_le32(message_id, t->tx.buf); - ret = do_xfer(ph, t); - if (!ret && attributes) - *attributes = get_unaligned_le32(t->rx.buf); - xfer_put(ph, t); - - return ret; -} - static const struct scmi_proto_helpers_ops helpers_ops = { .extended_name_get = scmi_common_extended_name_get, .iter_response_init = scmi_iterator_init, .iter_response_run = scmi_iterator_run, - .protocol_msg_check = scmi_protocol_msg_check, .fastchannel_init = scmi_common_fastchannel_init, .fastchannel_db_ring = scmi_common_fastchannel_db_ring, }; diff --git a/drivers/firmware/arm_scmi/protocols.h b/drivers/firmware/arm_scmi/protocols.h index 9fc2f1e293d4..78e1a01eb656 100644 --- a/drivers/firmware/arm_scmi/protocols.h +++ b/drivers/firmware/arm_scmi/protocols.h @@ -250,8 +250,6 @@ struct scmi_fc_info { * provided in @ops. * @iter_response_run: A common helper to trigger the run of a previously * initialized iterator. - * @protocol_msg_check: A common helper to check is a specific protocol message - * is supported. * @fastchannel_init: A common helper used to initialize FC descriptors by * gathering FC descriptions from the SCMI platform server. * @fastchannel_db_ring: A common helper to ring a FC doorbell. @@ -264,8 +262,6 @@ struct scmi_proto_helpers_ops { unsigned int max_resources, u8 msg_id, size_t tx_size, void *priv); int (*iter_response_run)(void *iter); - int (*protocol_msg_check)(const struct scmi_protocol_handle *ph, - u32 message_id, u32 *attributes); void (*fastchannel_init)(const struct scmi_protocol_handle *ph, u8 describe_id, u32 message_id, u32 valid_size, u32 domain, -- Gitee From e847ee6b282efaa851c91475ac799c61c96cc2a4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:37 +0800 Subject: [PATCH 0437/1421] Revert "nvme: always punt polled uring_cmd end_io work to task_work" This reverts commit 7e24c2dfc6ec3105ef28866840521ed169dc3692. --- drivers/nvme/host/ioctl.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c index 5cf050e562b7..4ce31f9f0694 100644 --- a/drivers/nvme/host/ioctl.c +++ b/drivers/nvme/host/ioctl.c @@ -526,14 +526,16 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, pdu->u.result = le64_to_cpu(nvme_req(req)->result.u64); /* - * IOPOLL could potentially complete this request directly, but - * if multiple rings are polling on the same queue, then it's possible - * for one ring to find completions for another ring. Punting the - * completion via task_work will always direct it to the right - * location, rather than potentially complete requests for ringA - * under iopoll invocations from ringB. + * For iopoll, complete it directly. + * Otherwise, move the completion to task work. */ - io_uring_cmd_do_in_task_lazy(ioucmd, nvme_uring_task_cb); + if (blk_rq_is_poll(req)) { + WRITE_ONCE(ioucmd->cookie, NULL); + nvme_uring_task_cb(ioucmd, IO_URING_F_UNLOCKED); + } else { + io_uring_cmd_do_in_task_lazy(ioucmd, nvme_uring_task_cb); + } + return RQ_END_IO_FREE; } -- Gitee From 7c03b54170629dca12f9ab8659969e13935c2aa3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:37 +0800 Subject: [PATCH 0438/1421] Revert "spi: spi-cadence-quadspi: Fix pm runtime unbalance" This reverts commit b20fef6dc316a31c466e7196363ddcc39259add3. --- drivers/spi/spi-cadence-quadspi.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c index 9285a683324f..bf9b816637d0 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1868,13 +1868,6 @@ static int cqspi_probe(struct platform_device *pdev) goto probe_setup_failed; } - pm_runtime_enable(dev); - - if (cqspi->rx_chan) { - dma_release_channel(cqspi->rx_chan); - goto probe_setup_failed; - } - ret = spi_register_controller(host); if (ret) { dev_err(&pdev->dev, "failed to register SPI ctlr %d\n", ret); @@ -1884,7 +1877,6 @@ static int cqspi_probe(struct platform_device *pdev) return 0; probe_setup_failed: cqspi_controller_enable(cqspi, 0); - pm_runtime_disable(dev); probe_reset_failed: if (cqspi->is_jh7110) cqspi_jh7110_disable_clk(pdev, cqspi); @@ -1906,8 +1898,7 @@ static void cqspi_remove(struct platform_device *pdev) if (cqspi->rx_chan) dma_release_channel(cqspi->rx_chan); - if (pm_runtime_get_sync(&pdev->dev) >= 0) - clk_disable(cqspi->clk); + clk_disable_unprepare(cqspi->clk); if (cqspi->is_jh7110) cqspi_jh7110_disable_clk(pdev, cqspi); -- Gitee From 767f0121f82f2f3b707c96cbb225820ea765625e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:37 +0800 Subject: [PATCH 0439/1421] Revert "Revert "ipv6: save dontfrag in cork"" This reverts commit 549a26cc566a57ff4cf6795c09dc576212b1041b. --- include/linux/ipv6.h | 1 + net/ipv6/ip6_output.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index af8a771a053c..d79851c5fabd 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h @@ -199,6 +199,7 @@ struct inet6_cork { struct ipv6_txoptions *opt; u8 hop_limit; u8 tclass; + u8 dontfrag:1; }; /* struct ipv6_pinfo - ipv6 private area */ diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index c86d5dca29df..28777b142240 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -1452,6 +1452,7 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork, } v6_cork->hop_limit = ipc6->hlimit; v6_cork->tclass = ipc6->tclass; + v6_cork->dontfrag = ipc6->dontfrag; if (rt->dst.flags & DST_XFRM_TUNNEL) mtu = np->pmtudisc >= IPV6_PMTUDISC_PROBE ? READ_ONCE(rt->dst.dev->mtu) : dst_mtu(&rt->dst); @@ -1485,7 +1486,7 @@ static int __ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb), void *from, size_t length, int transhdrlen, - unsigned int flags, struct ipcm6_cookie *ipc6) + unsigned int flags) { struct sk_buff *skb, *skb_prev = NULL; struct inet_cork *cork = &cork_full->base; @@ -1541,7 +1542,7 @@ static int __ip6_append_data(struct sock *sk, if (headersize + transhdrlen > mtu) goto emsgsize; - if (cork->length + length > mtu - headersize && ipc6->dontfrag && + if (cork->length + length > mtu - headersize && v6_cork->dontfrag && (sk->sk_protocol == IPPROTO_UDP || sk->sk_protocol == IPPROTO_ICMPV6 || sk->sk_protocol == IPPROTO_RAW)) { @@ -1913,7 +1914,7 @@ int ip6_append_data(struct sock *sk, return __ip6_append_data(sk, &sk->sk_write_queue, &inet->cork, &np->cork, sk_page_frag(sk), getfrag, - from, length, transhdrlen, flags, ipc6); + from, length, transhdrlen, flags); } EXPORT_SYMBOL_GPL(ip6_append_data); @@ -2118,7 +2119,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk, err = __ip6_append_data(sk, &queue, cork, &v6_cork, ¤t->task_frag, getfrag, from, length + exthdrlen, transhdrlen + exthdrlen, - flags, ipc6); + flags); if (err) { __ip6_flush_pending_frames(sk, &queue, cork, &v6_cork); return ERR_PTR(err); -- Gitee From 10b12b02df6444b427ae49f803ebfa66ebac77aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:38 +0800 Subject: [PATCH 0440/1421] Revert "x86/tools: Drop duplicate unlikely() definition in insn_decoder_test.c" This reverts commit e0d63dbd69ba5e184206f47924170cc5bd99275a. --- arch/x86/tools/insn_decoder_test.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 08cd913cbd4e..6c2986d2ad11 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -12,6 +12,8 @@ #include #include +#define unlikely(cond) (cond) + #include #include #include -- Gitee From 462ff31bd0d587f5e3efb873c27e5ae82080a9f7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:38 +0800 Subject: [PATCH 0441/1421] Revert "Kunit to check the longest symbol length" This reverts commit cf8e82714e9bc3dfa0ed842118e7dff625f9c5e1. --- arch/x86/tools/insn_decoder_test.c | 3 +- lib/Kconfig.debug | 9 ---- lib/Makefile | 2 - lib/longest_symbol_kunit.c | 82 ------------------------------ 4 files changed, 1 insertion(+), 95 deletions(-) delete mode 100644 lib/longest_symbol_kunit.c diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c index 6c2986d2ad11..472540aeabc2 100644 --- a/arch/x86/tools/insn_decoder_test.c +++ b/arch/x86/tools/insn_decoder_test.c @@ -10,7 +10,6 @@ #include #include #include -#include #define unlikely(cond) (cond) @@ -107,7 +106,7 @@ static void parse_args(int argc, char **argv) } } -#define BUFSIZE (256 + KSYM_NAME_LEN) +#define BUFSIZE 256 int main(int argc, char **argv) { diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 61322c961e22..2dcb380a4ba3 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -2754,15 +2754,6 @@ config FORTIFY_KUNIT_TEST by the str*() and mem*() family of functions. For testing runtime traps of FORTIFY_SOURCE, see LKDTM's "FORTIFY_*" tests. -config LONGEST_SYM_KUNIT_TEST - tristate "Test the longest symbol possible" if !KUNIT_ALL_TESTS - depends on KUNIT && KPROBES - default KUNIT_ALL_TESTS - help - Tests the longest symbol possible - - If unsure, say N. - config HW_BREAKPOINT_KUNIT_TEST bool "Test hw_breakpoint constraints accounting" if !KUNIT_ALL_TESTS depends on HAVE_HW_BREAKPOINT diff --git a/lib/Makefile b/lib/Makefile index b9d2577fbbe1..740109b6e2c8 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -402,8 +402,6 @@ obj-$(CONFIG_FORTIFY_KUNIT_TEST) += fortify_kunit.o obj-$(CONFIG_STRCAT_KUNIT_TEST) += strcat_kunit.o obj-$(CONFIG_STRSCPY_KUNIT_TEST) += strscpy_kunit.o obj-$(CONFIG_SIPHASH_KUNIT_TEST) += siphash_kunit.o -obj-$(CONFIG_LONGEST_SYM_KUNIT_TEST) += longest_symbol_kunit.o -CFLAGS_longest_symbol_kunit.o += $(call cc-disable-warning, missing-prototypes) obj-$(CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED) += devmem_is_allowed.o diff --git a/lib/longest_symbol_kunit.c b/lib/longest_symbol_kunit.c deleted file mode 100644 index 2fea82a6d34e..000000000000 --- a/lib/longest_symbol_kunit.c +++ /dev/null @@ -1,82 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Test the longest symbol length. Execute with: - * ./tools/testing/kunit/kunit.py run longest-symbol - * --arch=x86_64 --kconfig_add CONFIG_KPROBES=y --kconfig_add CONFIG_MODULES=y - * --kconfig_add CONFIG_RETPOLINE=n --kconfig_add CONFIG_CFI_CLANG=n - * --kconfig_add CONFIG_MITIGATION_RETPOLINE=n - */ - -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - -#include -#include -#include -#include - -#define DI(name) s##name##name -#define DDI(name) DI(n##name##name) -#define DDDI(name) DDI(n##name##name) -#define DDDDI(name) DDDI(n##name##name) -#define DDDDDI(name) DDDDI(n##name##name) - -/*Generate a symbol whose name length is 511 */ -#define LONGEST_SYM_NAME DDDDDI(g1h2i3j4k5l6m7n) - -#define RETURN_LONGEST_SYM 0xAAAAA - -noinline int LONGEST_SYM_NAME(void); -noinline int LONGEST_SYM_NAME(void) -{ - return RETURN_LONGEST_SYM; -} - -_Static_assert(sizeof(__stringify(LONGEST_SYM_NAME)) == KSYM_NAME_LEN, -"Incorrect symbol length found. Expected KSYM_NAME_LEN: " -__stringify(KSYM_NAME_LEN) ", but found: " -__stringify(sizeof(LONGEST_SYM_NAME))); - -static void test_longest_symbol(struct kunit *test) -{ - KUNIT_EXPECT_EQ(test, RETURN_LONGEST_SYM, LONGEST_SYM_NAME()); -}; - -static void test_longest_symbol_kallsyms(struct kunit *test) -{ - unsigned long (*kallsyms_lookup_name)(const char *name); - static int (*longest_sym)(void); - - struct kprobe kp = { - .symbol_name = "kallsyms_lookup_name", - }; - - if (register_kprobe(&kp) < 0) { - pr_info("%s: kprobe not registered", __func__); - KUNIT_FAIL(test, "test_longest_symbol kallsyms: kprobe not registered\n"); - return; - } - - kunit_warn(test, "test_longest_symbol kallsyms: kprobe registered\n"); - kallsyms_lookup_name = (unsigned long (*)(const char *name))kp.addr; - unregister_kprobe(&kp); - - longest_sym = - (void *) kallsyms_lookup_name(__stringify(LONGEST_SYM_NAME)); - KUNIT_EXPECT_EQ(test, RETURN_LONGEST_SYM, longest_sym()); -}; - -static struct kunit_case longest_symbol_test_cases[] = { - KUNIT_CASE(test_longest_symbol), - KUNIT_CASE(test_longest_symbol_kallsyms), - {} -}; - -static struct kunit_suite longest_symbol_test_suite = { - .name = "longest-symbol", - .test_cases = longest_symbol_test_cases, -}; -kunit_test_suite(longest_symbol_test_suite); - -MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("Test the longest symbol length"); -MODULE_AUTHOR("Sergio González Collado"); -- Gitee From 1fd324fdaa57e3e846cbd6d0cb72398886f260ca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:38 +0800 Subject: [PATCH 0442/1421] Revert "s390/entry: Fix last breaking event handling in case of stack corruption" This reverts commit 13550e6d5cb84d8ff90d7165b28e6c8227ad55b2. --- arch/s390/kernel/entry.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 0476ce7700df..ebad8c8b8c57 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S @@ -639,7 +639,7 @@ SYM_CODE_START(stack_overflow) stmg %r0,%r7,__PT_R0(%r11) stmg %r8,%r9,__PT_PSW(%r11) mvc __PT_R8(64,%r11),0(%r14) - mvc __PT_ORIG_GPR2(8,%r11),__LC_PGM_LAST_BREAK + stg %r10,__PT_ORIG_GPR2(%r11) # store last break to orig_gpr2 xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) lgr %r2,%r11 # pass pointer to pt_regs jg kernel_stack_overflow -- Gitee From be1588e07ef3b916247fc5cd266a8d254d565f29 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:39 +0800 Subject: [PATCH 0443/1421] Revert "media: uvcvideo: Rollback non processed entities on error" This reverts commit c8ce3c416298ea93cdfe5a20670665fbeb4018ff. --- drivers/media/usb/uvc/uvc_ctrl.c | 39 +++++++++++--------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index bd90d8bacd5e..59e21746f550 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1801,7 +1801,7 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev, unsigned int processed_ctrls = 0; struct uvc_control *ctrl; unsigned int i; - int ret = 0; + int ret; if (entity == NULL) return 0; @@ -1830,6 +1830,8 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev, dev->intfnum, ctrl->info.selector, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), ctrl->info.size); + else + ret = 0; if (!ret) processed_ctrls++; @@ -1841,25 +1843,17 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev, ctrl->dirty = 0; - if (!rollback && handle && - ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) - uvc_ctrl_set_handle(handle, ctrl, handle); - - if (ret < 0 && !rollback) { + if (ret < 0) { if (err_ctrl) *err_ctrl = ctrl; - /* - * If we fail to set a control, we need to rollback - * the next ones. - */ - rollback = 1; + return ret; } + if (!rollback && handle && + ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) + uvc_ctrl_set_handle(handle, ctrl, handle); } - if (ret) - return ret; - return processed_ctrls; } @@ -1890,8 +1884,7 @@ int __uvc_ctrl_commit(struct uvc_fh *handle, int rollback, struct uvc_video_chain *chain = handle->chain; struct uvc_control *err_ctrl; struct uvc_entity *entity; - int ret_out = 0; - int ret; + int ret = 0; /* Find the control. */ list_for_each_entry(entity, &chain->entities, chain) { @@ -1902,23 +1895,17 @@ int __uvc_ctrl_commit(struct uvc_fh *handle, int rollback, ctrls->error_idx = uvc_ctrl_find_ctrl_idx(entity, ctrls, err_ctrl); - /* - * When we fail to commit an entity, we need to - * restore the UVC_CTRL_DATA_BACKUP for all the - * controls in the other entities, otherwise our cache - * and the hardware will be out of sync. - */ - rollback = 1; - - ret_out = ret; + goto done; } else if (ret > 0 && !rollback) { uvc_ctrl_send_events(handle, entity, ctrls->controls, ctrls->count); } } + ret = 0; +done: mutex_unlock(&chain->ctrl_mutex); - return ret_out; + return ret; } int uvc_ctrl_get(struct uvc_video_chain *chain, -- Gitee From e613b3a59b4412926139a5f340180c5996ebcb81 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:39 +0800 Subject: [PATCH 0444/1421] Revert "kbuild: rpm-pkg: simplify installkernel %post" This reverts commit 3b4b7600e0da01a8a7544781298eba538b85ffe7. --- scripts/package/kernel.spec | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec index f58726671fb3..89298983a169 100644 --- a/scripts/package/kernel.spec +++ b/scripts/package/kernel.spec @@ -55,12 +55,12 @@ patch -p1 < %{SOURCE2} %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} %install -mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE} -cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz +mkdir -p %{buildroot}/boot +cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install -cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE} -cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config +cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} +cp .config %{buildroot}/boot/config-%{KERNELRELEASE} ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build %if %{with_devel} %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' @@ -70,14 +70,13 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA rm -rf %{buildroot} %post -if [ -x /usr/bin/kernel-install ]; then - /usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz +if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then +cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm +cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm +rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE} +/sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm +rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm fi -for file in vmlinuz System.map config; do - if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then - cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}" - fi -done %preun if [ -x /sbin/new-kernel-pkg ]; then @@ -95,6 +94,7 @@ fi %defattr (-, root, root) /lib/modules/%{KERNELRELEASE} %exclude /lib/modules/%{KERNELRELEASE}/build +/boot/* %files headers %defattr (-, root, root) -- Gitee From 361aa33bddc6aa87fddac603ae54312a54e30e32 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:39 +0800 Subject: [PATCH 0445/1421] Revert "scripts: clean up IA-64 code" This reverts commit af82392a41103fea20e9ee27300ff1c32531ee59. --- scripts/checkstack.pl | 3 +++ scripts/gdb/linux/tasks.py | 15 ++++++++++++--- scripts/head-object-list.txt | 1 + scripts/kconfig/mconf.c | 2 +- scripts/kconfig/nconf.c | 2 +- scripts/package/kernel.spec | 6 ++++++ scripts/package/mkdebian | 2 +- scripts/recordmcount.c | 1 + scripts/recordmcount.pl | 7 +++++++ scripts/xz_wrap.sh | 1 + 10 files changed, 34 insertions(+), 6 deletions(-) diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl index aad423c5181a..f27d552aec43 100755 --- a/scripts/checkstack.pl +++ b/scripts/checkstack.pl @@ -68,6 +68,9 @@ my (@stack, $re, $dre, $sub, $x, $xs, $funcre, $min_stack); # 2f60: 48 81 ec e8 05 00 00 sub $0x5e8,%rsp $re = qr/^.*[as][du][db] \$(0x$x{1,8}),\%(e|r)sp$/o; $dre = qr/^.*[as][du][db] (%.*),\%(e|r)sp$/o; + } elsif ($arch eq 'ia64') { + #e0000000044011fc: 01 0f fc 8c adds r12=-384,r12 + $re = qr/.*adds.*r12=-(([0-9]{2}|[3-9])[0-9]{2}),r12/o; } elsif ($arch eq 'm68k') { # 2b6c: 4e56 fb70 linkw %fp,#-1168 # 1df770: defc ffe4 addaw #-28,%sp diff --git a/scripts/gdb/linux/tasks.py b/scripts/gdb/linux/tasks.py index 5be53b372a69..17ec19e9b5bf 100644 --- a/scripts/gdb/linux/tasks.py +++ b/scripts/gdb/linux/tasks.py @@ -86,12 +86,21 @@ LxPs() thread_info_type = utils.CachedType("struct thread_info") +ia64_task_size = None + def get_thread_info(task): thread_info_ptr_type = thread_info_type.get_type().pointer() - if task.type.fields()[0].type == thread_info_type.get_type(): - return task['thread_info'] - thread_info = task['stack'].cast(thread_info_ptr_type) + if utils.is_target_arch("ia64"): + global ia64_task_size + if ia64_task_size is None: + ia64_task_size = gdb.parse_and_eval("sizeof(struct task_struct)") + thread_info_addr = task.address + ia64_task_size + thread_info = thread_info_addr.cast(thread_info_ptr_type) + else: + if task.type.fields()[0].type == thread_info_type.get_type(): + return task['thread_info'] + thread_info = task['stack'].cast(thread_info_ptr_type) return thread_info.dereference() diff --git a/scripts/head-object-list.txt b/scripts/head-object-list.txt index 890f69005bab..26359968744e 100644 --- a/scripts/head-object-list.txt +++ b/scripts/head-object-list.txt @@ -17,6 +17,7 @@ arch/arm/kernel/head-nommu.o arch/arm/kernel/head.o arch/csky/kernel/head.o arch/hexagon/kernel/head.o +arch/ia64/kernel/head.o arch/loongarch/kernel/head.o arch/m68k/68000/head.o arch/m68k/coldfire/head.o diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 3795c36a9181..eccc87a441e7 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -247,7 +247,7 @@ search_help[] = " -> PCI support (PCI [=y])\n" "(1) -> PCI access mode ( [=y])\n" " Defined at drivers/pci/Kconfig:47\n" - " Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" " Selects: LIBCRC32\n" " Selected by: BAR [=n]\n" "-----------------------------------------------------------------\n" diff --git a/scripts/kconfig/nconf.c b/scripts/kconfig/nconf.c index 8cd72fe25974..143a2c351d57 100644 --- a/scripts/kconfig/nconf.c +++ b/scripts/kconfig/nconf.c @@ -216,7 +216,7 @@ search_help[] = "Symbol: FOO [ = m]\n" "Prompt: Foo bus is used to drive the bar HW\n" "Defined at drivers/pci/Kconfig:47\n" -"Depends on: X86_LOCAL_APIC && X86_IO_APIC\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" "Location:\n" " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" " -> PCI support (PCI [ = y])\n" diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec index 89298983a169..3eee0143e0c5 100644 --- a/scripts/package/kernel.spec +++ b/scripts/package/kernel.spec @@ -56,7 +56,13 @@ patch -p1 < %{SOURCE2} %install mkdir -p %{buildroot}/boot +%ifarch ia64 +mkdir -p %{buildroot}/boot/efi +cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE} +ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/ +%else cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} +%endif %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian index c1a36da85e84..5044224cf671 100755 --- a/scripts/package/mkdebian +++ b/scripts/package/mkdebian @@ -26,7 +26,7 @@ set_debarch() { # Attempt to find the correct Debian architecture case "$UTS_MACHINE" in - i386|alpha|m68k|riscv*) + i386|ia64|alpha|m68k|riscv*) debarch="$UTS_MACHINE" ;; x86_64) debarch=amd64 ;; diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c index 3e4f54799cc0..40ae6b2c7a6d 100644 --- a/scripts/recordmcount.c +++ b/scripts/recordmcount.c @@ -590,6 +590,7 @@ static int do_file(char const *const fname) ideal_nop = ideal_nop4_arm64; is_fake_mcount64 = arm64_is_fake_mcount; break; + case EM_IA_64: reltype = R_IA64_IMM64; break; case EM_MIPS: /* reltype: e_class */ break; case EM_LOONGARCH: /* reltype: e_class */ break; case EM_PPC: reltype = R_PPC_ADDR32; break; diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl index f84df9e383fd..6a4645a57976 100755 --- a/scripts/recordmcount.pl +++ b/scripts/recordmcount.pl @@ -275,6 +275,13 @@ if ($arch eq "x86_64") { $section_type = '%progbits'; $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_AARCH64_CALL26\\s+_mcount\$"; $type = ".quad"; +} elsif ($arch eq "ia64") { + $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$"; + $type = "data8"; + + if ($is_module eq "0") { + $cc .= " -mconstant-gp"; + } } elsif ($arch eq "sparc64") { # In the objdump output there are giblets like: # 0000000000000000 : diff --git a/scripts/xz_wrap.sh b/scripts/xz_wrap.sh index d06baf626abe..76e9cbcfbeab 100755 --- a/scripts/xz_wrap.sh +++ b/scripts/xz_wrap.sh @@ -15,6 +15,7 @@ LZMA2OPTS= case $SRCARCH in x86) BCJ=--x86 ;; powerpc) BCJ=--powerpc ;; + ia64) BCJ=--ia64; LZMA2OPTS=pb=4 ;; arm) BCJ=--arm ;; sparc) BCJ=--sparc ;; esac -- Gitee From bfad543c7b87f1cc4dbebf1551d28bab151d4af5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:39 +0800 Subject: [PATCH 0446/1421] Revert "ksmbd: remove unsafe_memcpy use in session setup" This reverts commit 48cab81a7b267e8c556862ccfe44b87fa1f6e744. --- fs/smb/server/smb2pdu.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 6c22240368ab..9edf84da099f 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -1345,7 +1345,8 @@ static int ntlm_negotiate(struct ksmbd_work *work, return rc; sz = le16_to_cpu(rsp->SecurityBufferOffset); - chgblob = (struct challenge_message *)rsp->Buffer; + chgblob = + (struct challenge_message *)((char *)&rsp->hdr.ProtocolId + sz); memset(chgblob, 0, sizeof(struct challenge_message)); if (!work->conn->use_spnego) { @@ -1378,7 +1379,9 @@ static int ntlm_negotiate(struct ksmbd_work *work, goto out; } - memcpy(rsp->Buffer, spnego_blob, spnego_blob_len); + sz = le16_to_cpu(rsp->SecurityBufferOffset); + unsafe_memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, spnego_blob_len, + /* alloc is larger than blob, see smb2_allocate_rsp_buf() */); rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len); out: @@ -1460,7 +1463,10 @@ static int ntlm_authenticate(struct ksmbd_work *work, if (rc) return -ENOMEM; - memcpy(rsp->Buffer, spnego_blob, spnego_blob_len); + sz = le16_to_cpu(rsp->SecurityBufferOffset); + unsafe_memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, + spnego_blob_len, + /* alloc is larger than blob, see smb2_allocate_rsp_buf() */); rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len); kfree(spnego_blob); } -- Gitee From 5dd8a0584e32b2a8bc67d2109fffb06a2595bf25 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:39 +0800 Subject: [PATCH 0447/1421] Revert "ksmbd: Use unsafe_memcpy() for ntlm_negotiate" This reverts commit 9d0e910d824e4277e0df695324bd5b515571d14f. --- fs/smb/server/smb2pdu.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 9edf84da099f..185f7e0744f8 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -1380,8 +1380,7 @@ static int ntlm_negotiate(struct ksmbd_work *work, } sz = le16_to_cpu(rsp->SecurityBufferOffset); - unsafe_memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, spnego_blob_len, - /* alloc is larger than blob, see smb2_allocate_rsp_buf() */); + memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, spnego_blob_len); rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len); out: @@ -1464,9 +1463,7 @@ static int ntlm_authenticate(struct ksmbd_work *work, return -ENOMEM; sz = le16_to_cpu(rsp->SecurityBufferOffset); - unsafe_memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, - spnego_blob_len, - /* alloc is larger than blob, see smb2_allocate_rsp_buf() */); + memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, spnego_blob_len); rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len); kfree(spnego_blob); } -- Gitee From ba943740bb858493398872a699b7d2e35153fd47 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:40 +0800 Subject: [PATCH 0448/1421] Revert "drm/amdgpu: switch job hw_fence to amdgpu_fence" This reverts commit 84a1051325d1c5e97b02a882167c4a4bff57a08f. --- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 30 ++++++++++++++++----- drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 12 ++++----- drivers/gpu/drm/amd/amdgpu/amdgpu_job.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 16 ----------- 6 files changed, 32 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c index 256cc15fc9b5..963e106d32ee 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -1890,7 +1890,7 @@ static void amdgpu_ib_preempt_mark_partial_job(struct amdgpu_ring *ring) continue; } job = to_amdgpu_job(s_job); - if (preempted && (&job->hw_fence.base) == fence) + if (preempted && (&job->hw_fence) == fence) /* mark the job as preempted */ job->preemption_status |= AMDGPU_IB_PREEMPTED; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 200b59318759..f8058dd5356a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -5367,7 +5367,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev, * * job->base holds a reference to parent fence */ - if (job && dma_fence_is_signaled(&job->hw_fence.base)) { + if (job && dma_fence_is_signaled(&job->hw_fence)) { job_signaled = true; dev_info(adev->dev, "Guilty job already signaled, skipping HW reset"); goto skip_hw_reset; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index 017dd494d0a2..7537f5aa76f0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c @@ -41,6 +41,22 @@ #include "amdgpu_trace.h" #include "amdgpu_reset.h" +/* + * Fences mark an event in the GPUs pipeline and are used + * for GPU/CPU synchronization. When the fence is written, + * it is expected that all buffers associated with that fence + * are no longer in use by the associated ring on the GPU and + * that the relevant GPU caches have been flushed. + */ + +struct amdgpu_fence { + struct dma_fence base; + + /* RB, DMA, etc. */ + struct amdgpu_ring *ring; + ktime_t start_timestamp; +}; + static struct kmem_cache *amdgpu_fence_slab; int amdgpu_fence_slab_init(void) @@ -137,12 +153,12 @@ int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f, struct amd am_fence = kmem_cache_alloc(amdgpu_fence_slab, GFP_ATOMIC); if (am_fence == NULL) return -ENOMEM; + fence = &am_fence->base; + am_fence->ring = ring; } else { /* take use of job-embedded fence */ - am_fence = &job->hw_fence; + fence = &job->hw_fence; } - fence = &am_fence->base; - am_fence->ring = ring; seq = ++ring->fence_drv.sync_seq; if (job && job->job_run_counter) { @@ -703,7 +719,7 @@ void amdgpu_fence_driver_clear_job_fences(struct amdgpu_ring *ring) * it right here or we won't be able to track them in fence_drv * and they will remain unsignaled during sa_bo free. */ - job = container_of(old, struct amdgpu_job, hw_fence.base); + job = container_of(old, struct amdgpu_job, hw_fence); if (!job->base.s_fence && !dma_fence_is_signaled(old)) dma_fence_signal(old); RCU_INIT_POINTER(*ptr, NULL); @@ -765,7 +781,7 @@ static const char *amdgpu_fence_get_timeline_name(struct dma_fence *f) static const char *amdgpu_job_fence_get_timeline_name(struct dma_fence *f) { - struct amdgpu_job *job = container_of(f, struct amdgpu_job, hw_fence.base); + struct amdgpu_job *job = container_of(f, struct amdgpu_job, hw_fence); return (const char *)to_amdgpu_ring(job->base.sched)->name; } @@ -795,7 +811,7 @@ static bool amdgpu_fence_enable_signaling(struct dma_fence *f) */ static bool amdgpu_job_fence_enable_signaling(struct dma_fence *f) { - struct amdgpu_job *job = container_of(f, struct amdgpu_job, hw_fence.base); + struct amdgpu_job *job = container_of(f, struct amdgpu_job, hw_fence); if (!timer_pending(&to_amdgpu_ring(job->base.sched)->fence_drv.fallback_timer)) amdgpu_fence_schedule_fallback(to_amdgpu_ring(job->base.sched)); @@ -830,7 +846,7 @@ static void amdgpu_job_fence_free(struct rcu_head *rcu) struct dma_fence *f = container_of(rcu, struct dma_fence, rcu); /* free job if fence has a parent job */ - kfree(container_of(f, struct amdgpu_job, hw_fence.base)); + kfree(container_of(f, struct amdgpu_job, hw_fence)); } /** diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index e9adfc88a54a..49a6b6b88843 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c @@ -165,8 +165,8 @@ void amdgpu_job_free_resources(struct amdgpu_job *job) /* Check if any fences where initialized */ if (job->base.s_fence && job->base.s_fence->finished.ops) f = &job->base.s_fence->finished; - else if (job->hw_fence.base.ops) - f = &job->hw_fence.base; + else if (job->hw_fence.ops) + f = &job->hw_fence; else f = NULL; @@ -183,10 +183,10 @@ static void amdgpu_job_free_cb(struct drm_sched_job *s_job) amdgpu_sync_free(&job->explicit_sync); /* only put the hw fence if has embedded fence */ - if (!job->hw_fence.base.ops) + if (!job->hw_fence.ops) kfree(job); else - dma_fence_put(&job->hw_fence.base); + dma_fence_put(&job->hw_fence); } void amdgpu_job_set_gang_leader(struct amdgpu_job *job, @@ -215,10 +215,10 @@ void amdgpu_job_free(struct amdgpu_job *job) if (job->gang_submit != &job->base.s_fence->scheduled) dma_fence_put(job->gang_submit); - if (!job->hw_fence.base.ops) + if (!job->hw_fence.ops) kfree(job); else - dma_fence_put(&job->hw_fence.base); + dma_fence_put(&job->hw_fence); } struct dma_fence *amdgpu_job_submit(struct amdgpu_job *job) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h index 65b6fbab544e..a963a25ddd62 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h @@ -48,7 +48,7 @@ struct amdgpu_job { struct drm_sched_job base; struct amdgpu_vm *vm; struct amdgpu_sync explicit_sync; - struct amdgpu_fence hw_fence; + struct dma_fence hw_fence; struct dma_fence *gang_submit; uint32_t preamble_status; uint32_t preemption_status; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h index 60f770b99c2c..e2ab303ad270 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h @@ -123,22 +123,6 @@ struct amdgpu_fence_driver { struct dma_fence **fences; }; -/* - * Fences mark an event in the GPUs pipeline and are used - * for GPU/CPU synchronization. When the fence is written, - * it is expected that all buffers associated with that fence - * are no longer in use by the associated ring on the GPU and - * that the relevant GPU caches have been flushed. - */ - -struct amdgpu_fence { - struct dma_fence base; - - /* RB, DMA, etc. */ - struct amdgpu_ring *ring; - ktime_t start_timestamp; -}; - extern const struct drm_sched_backend_ops amdgpu_sched_ops; void amdgpu_fence_driver_clear_job_fences(struct amdgpu_ring *ring); -- Gitee From 31e04356207cff08a65f526ca86e589a7079aac7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:40 +0800 Subject: [PATCH 0449/1421] Revert "drm/amdgpu: Add kicker device detection" This reverts commit ee255aceadefa8dac82d24996e3a386e443943d7. --- drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 17 ----------------- drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 6 ------ 2 files changed, 23 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c index e9d2fcdde0e1..bef754177064 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c @@ -28,10 +28,6 @@ #include "amdgpu.h" #include "amdgpu_ucode.h" -static const struct kicker_device kicker_device_list[] = { - {0x744B, 0x00}, -}; - static void amdgpu_ucode_print_common_hdr(const struct common_firmware_header *hdr) { DRM_DEBUG("size_bytes: %u\n", le32_to_cpu(hdr->size_bytes)); @@ -1272,19 +1268,6 @@ static const char *amdgpu_ucode_legacy_naming(struct amdgpu_device *adev, int bl return NULL; } -bool amdgpu_is_kicker_fw(struct amdgpu_device *adev) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(kicker_device_list); i++) { - if (adev->pdev->device == kicker_device_list[i].device && - adev->pdev->revision == kicker_device_list[i].revision) - return true; - } - - return false; -} - void amdgpu_ucode_ip_version_decode(struct amdgpu_device *adev, int block_type, char *ucode_prefix, int len) { int maj, min, rev; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h index 4760092aafd7..b03321e7d2d8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h @@ -536,11 +536,6 @@ struct amdgpu_firmware { uint64_t fw_buf_mc; }; -struct kicker_device{ - unsigned short device; - u8 revision; -}; - void amdgpu_ucode_print_mc_hdr(const struct common_firmware_header *hdr); void amdgpu_ucode_print_smc_hdr(const struct common_firmware_header *hdr); void amdgpu_ucode_print_imu_hdr(const struct common_firmware_header *hdr); @@ -567,6 +562,5 @@ amdgpu_ucode_get_load_type(struct amdgpu_device *adev, int load_type); const char *amdgpu_ucode_name(enum AMDGPU_UCODE_ID ucode_id); void amdgpu_ucode_ip_version_decode(struct amdgpu_device *adev, int block_type, char *ucode_prefix, int len); -bool amdgpu_is_kicker_fw(struct amdgpu_device *adev); #endif -- Gitee From c1bd291b9ec44728da383e1ecdd23e2e83388462 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:40 +0800 Subject: [PATCH 0450/1421] Revert "drm/i915/gem: Allow EXEC_CAPTURE on recoverable contexts on DG1" This reverts commit 232a52db135771679d4babf08cba8f1492f93048. --- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 023b2ea74c36..5a687a3686bd 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -2013,7 +2013,7 @@ static int eb_capture_stage(struct i915_execbuffer *eb) continue; if (i915_gem_context_is_recoverable(eb->gem_context) && - GRAPHICS_VER_FULL(eb->i915) > IP_VER(12, 10)) + (IS_DGFX(eb->i915) || GRAPHICS_VER_FULL(eb->i915) > IP_VER(12, 0))) return -EINVAL; for_each_batch_create_order(eb, j) { -- Gitee From 402200580ca5acc87e63880fe651b179091612b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:40 +0800 Subject: [PATCH 0451/1421] Revert "drm/amdgpu: amdgpu_vram_mgr_new(): Clamp lpfn to total vram" This reverts commit fdf4aeffeedbe55d5581f2299ca4c37b6e590b71. --- drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c index 451c37d04e45..c7085a747b03 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c @@ -435,7 +435,7 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager *man, int r; lpfn = (u64)place->lpfn << PAGE_SHIFT; - if (!lpfn || lpfn > man->size) + if (!lpfn) lpfn = man->size; fpfn = (u64)place->fpfn << PAGE_SHIFT; -- Gitee From cec2b2ae8ac4a361b4cb6c5907d06152579d1076 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:40 +0800 Subject: [PATCH 0452/1421] Revert "drm/amd/display: Add null pointer check for get_first_active_display()" This reverts commit f3fa57d49dd0e30bb665f48310256591dcefdbf6. --- drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c index 7f8f127e7722..ff930a71e496 100644 --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c @@ -368,9 +368,6 @@ enum mod_hdcp_status mod_hdcp_hdcp1_enable_encryption(struct mod_hdcp *hdcp) struct mod_hdcp_display *display = get_first_active_display(hdcp); enum mod_hdcp_status status = MOD_HDCP_STATUS_SUCCESS; - if (!display) - return MOD_HDCP_STATUS_DISPLAY_NOT_FOUND; - mutex_lock(&psp->hdcp_context.mutex); hdcp_cmd = (struct ta_hdcp_shared_memory *)psp->hdcp_context.context.mem_context.shared_buf; memset(hdcp_cmd, 0, sizeof(struct ta_hdcp_shared_memory)); -- Gitee From 4ee138478fb0b38e32b29c6ab310c2905d1d9985 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:41 +0800 Subject: [PATCH 0453/1421] Revert "drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready" This reverts commit 03b3498fa1e8bcda765927677d5abfd6f954527e. --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c index 89eed0668bfb..738fb24991d9 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -769,7 +769,7 @@ static void cdns_dsi_bridge_enable(struct drm_bridge *bridge) struct phy_configure_opts_mipi_dphy *phy_cfg = &output->phy_opts.mipi_dphy; unsigned long tx_byte_period; struct cdns_dsi_cfg dsi_cfg; - u32 tmp, reg_wakeup, div, status; + u32 tmp, reg_wakeup, div; int nlanes; if (WARN_ON(pm_runtime_get_sync(dsi->base.dev) < 0)) @@ -786,19 +786,6 @@ static void cdns_dsi_bridge_enable(struct drm_bridge *bridge) cdns_dsi_hs_init(dsi); cdns_dsi_init_link(dsi); - /* - * Now that the DSI Link and DSI Phy are initialized, - * wait for the CLK and Data Lanes to be ready. - */ - tmp = CLK_LANE_RDY; - for (int i = 0; i < nlanes; i++) - tmp |= DATA_LANE_RDY(i); - - if (readl_poll_timeout(dsi->regs + MCTL_MAIN_STS, status, - (tmp == (status & tmp)), 100, 500000)) - dev_err(dsi->base.dev, - "Timed Out: DSI-DPhy Clock and Data Lanes not ready.\n"); - writel(HBP_LEN(dsi_cfg.hbp) | HSA_LEN(dsi_cfg.hsa), dsi->regs + VID_HSIZE1); writel(HFP_LEN(dsi_cfg.hfp) | HACT_LEN(dsi_cfg.hact), -- Gitee From afff4fd321d35fd0e7512c28d4bd014565115524 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:41 +0800 Subject: [PATCH 0454/1421] Revert "drm/bridge: cdns-dsi: Check return value when getting default PHY config" This reverts commit 5d71a9123a5eb5bb044ab25b6f3ab7845d35fa72. --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c index 738fb24991d9..19c21daa84e9 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -575,11 +575,9 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; - ret = phy_mipi_dphy_get_default_config(mode_clock * 1000, - mipi_dsi_pixel_format_to_bpp(output->dev->format), - nlanes, phy_cfg); - if (ret) - return ret; + phy_mipi_dphy_get_default_config(mode_clock * 1000, + mipi_dsi_pixel_format_to_bpp(output->dev->format), + nlanes, phy_cfg); ret = cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode, mode_valid_check); if (ret) -- Gitee From 58af980571a6730830e8c64afeaabf5f1a3adcf3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:41 +0800 Subject: [PATCH 0455/1421] Revert "drm/bridge: cdns-dsi: Fix connecting to next bridge" This reverts commit 73913b49c595c44b798395b8735c370f10aa8e61. --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c index 19c21daa84e9..f8f48a57e837 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -958,7 +958,7 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, bridge = drm_panel_bridge_add_typed(panel, DRM_MODE_CONNECTOR_DSI); } else { - bridge = of_drm_find_bridge(np); + bridge = of_drm_find_bridge(dev->dev.of_node); if (!bridge) bridge = ERR_PTR(-EINVAL); } -- Gitee From aaf19363ca79ef48c8b6010fc3730008c702e27f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:41 +0800 Subject: [PATCH 0456/1421] Revert "drm/bridge: cdns-dsi: Fix phy de-init and flag it so" This reverts commit 6c67a732cca9b1befd58d13f081e3fc7a842e40f. --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c index f8f48a57e837..1e93da035afb 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -681,11 +681,6 @@ static void cdns_dsi_bridge_post_disable(struct drm_bridge *bridge) struct cdns_dsi_input *input = bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi = input_to_dsi(input); - dsi->phy_initialized = false; - dsi->link_initialized = false; - phy_power_off(dsi->dphy); - phy_exit(dsi->dphy); - pm_runtime_put(dsi->base.dev); } @@ -1158,6 +1153,7 @@ static int __maybe_unused cdns_dsi_suspend(struct device *dev) clk_disable_unprepare(dsi->dsi_sys_clk); clk_disable_unprepare(dsi->dsi_p_clk); reset_control_assert(dsi->dsi_p_rst); + dsi->link_initialized = false; return 0; } -- Gitee From 7d8792223c26f422fb49bf525f5f60133beeb9d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:41 +0800 Subject: [PATCH 0457/1421] Revert "drm/bridge: cdns-dsi: Fix the clock variable for mode_valid()" This reverts commit e08036112575be341086e459f7899df70976443e. --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c index 1e93da035afb..7457d38622b0 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -568,14 +568,13 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, struct phy_configure_opts_mipi_dphy *phy_cfg = &output->phy_opts.mipi_dphy; unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes = output->dev->lanes; - int mode_clock = (mode_valid_check ? mode->clock : mode->crtc_clock); int ret; ret = cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); if (ret) return ret; - phy_mipi_dphy_get_default_config(mode_clock * 1000, + phy_mipi_dphy_get_default_config(mode->crtc_clock * 1000, mipi_dsi_pixel_format_to_bpp(output->dev->format), nlanes, phy_cfg); -- Gitee From eb418e362ea0b6a19ea82e91961ca487d68ea0bd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:42 +0800 Subject: [PATCH 0458/1421] Revert "drm/amdkfd: Fix race in GWS queue scheduling" This reverts commit 08b9fc2f6f8ecc55ab16232672ad0021105ff8b5. --- drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c index 18e82d0da75b..1a03173e2313 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c @@ -225,7 +225,7 @@ static int pm_map_queues_v9(struct packet_manager *pm, uint32_t *buffer, packet->bitfields2.engine_sel = engine_sel__mes_map_queues__compute_vi; - packet->bitfields2.gws_control_queue = q->properties.is_gws ? 1 : 0; + packet->bitfields2.gws_control_queue = q->gws ? 1 : 0; packet->bitfields2.extended_engine_sel = extended_engine_sel__mes_map_queues__legacy_engine_sel; packet->bitfields2.queue_type = -- Gitee From 2236959785781a9ab41919fde757aad06bd0fac9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:42 +0800 Subject: [PATCH 0459/1421] Revert "drm/msm/gpu: Fix crash when throttling GPU immediately during boot" This reverts commit 4327df5600a7651aafa394879b058ae785dc3085. --- drivers/gpu/drm/msm/msm_gpu_devfreq.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/msm/msm_gpu_devfreq.c b/drivers/gpu/drm/msm/msm_gpu_devfreq.c index 2e1d5c343272..6970b0f7f457 100644 --- a/drivers/gpu/drm/msm/msm_gpu_devfreq.c +++ b/drivers/gpu/drm/msm/msm_gpu_devfreq.c @@ -156,7 +156,6 @@ void msm_devfreq_init(struct msm_gpu *gpu) priv->gpu_devfreq_config.downdifferential = 10; mutex_init(&df->lock); - df->suspended = true; ret = dev_pm_qos_add_request(&gpu->pdev->dev, &df->boost_freq, DEV_PM_QOS_MIN_FREQUENCY, 0); -- Gitee From 3eaee20260bd9bf36c9710deb478bbf3fe5c54d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:42 +0800 Subject: [PATCH 0460/1421] Revert "drm/udl: Unregister device before cleaning up on disconnect" This reverts commit 9a7116841a5abc5c47f666f92b14e63e76ceec19. --- drivers/gpu/drm/udl/udl_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c index ac357ab1aee5..1506094a8009 100644 --- a/drivers/gpu/drm/udl/udl_drv.c +++ b/drivers/gpu/drm/udl/udl_drv.c @@ -126,9 +126,9 @@ static void udl_usb_disconnect(struct usb_interface *interface) { struct drm_device *dev = usb_get_intfdata(interface); - drm_dev_unplug(dev); drm_kms_helper_poll_fini(dev); udl_drop_usb(dev); + drm_dev_unplug(dev); } /* -- Gitee From 4ef1097d77c09dc708a40ee5f54d5dd829ebd893 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:42 +0800 Subject: [PATCH 0461/1421] Revert "drm/tegra: Fix a possible null pointer dereference" This reverts commit f25c2b2f3ff2540aba2ae40104cc77a8394549d6. --- drivers/gpu/drm/tegra/dc.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 980d85bc7f37..b016c3c95a84 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1392,10 +1392,7 @@ static void tegra_crtc_reset(struct drm_crtc *crtc) if (crtc->state) tegra_crtc_atomic_destroy_state(crtc, crtc->state); - if (state) - __drm_atomic_helper_crtc_reset(crtc, &state->base); - else - __drm_atomic_helper_crtc_reset(crtc, NULL); + __drm_atomic_helper_crtc_reset(crtc, &state->base); } static struct drm_crtc_state * -- Gitee From ffc9450521e331a5d254dbd7432f601e24888505 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:42 +0800 Subject: [PATCH 0462/1421] Revert "drm/tegra: Assign plane type before registration" This reverts commit 6f8e6df909ea94c8db3f86840ba9a3a69efb9ee3. --- drivers/gpu/drm/tegra/dc.c | 12 ++++-------- drivers/gpu/drm/tegra/hub.c | 4 ++-- drivers/gpu/drm/tegra/hub.h | 3 +-- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index b016c3c95a84..13b182ab905f 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1320,16 +1320,10 @@ static struct drm_plane *tegra_dc_add_shared_planes(struct drm_device *drm, if (wgrp->dc == dc->pipe) { for (j = 0; j < wgrp->num_windows; j++) { unsigned int index = wgrp->windows[j]; - enum drm_plane_type type; - - if (primary) - type = DRM_PLANE_TYPE_OVERLAY; - else - type = DRM_PLANE_TYPE_PRIMARY; plane = tegra_shared_plane_create(drm, dc, wgrp->index, - index, type); + index); if (IS_ERR(plane)) return plane; @@ -1337,8 +1331,10 @@ static struct drm_plane *tegra_dc_add_shared_planes(struct drm_device *drm, * Choose the first shared plane owned by this * head as the primary plane. */ - if (!primary) + if (!primary) { + plane->type = DRM_PLANE_TYPE_PRIMARY; primary = plane; + } } } } diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c index 0f88cbb33317..1af5f8318d91 100644 --- a/drivers/gpu/drm/tegra/hub.c +++ b/drivers/gpu/drm/tegra/hub.c @@ -756,9 +756,9 @@ static const struct drm_plane_helper_funcs tegra_shared_plane_helper_funcs = { struct drm_plane *tegra_shared_plane_create(struct drm_device *drm, struct tegra_dc *dc, unsigned int wgrp, - unsigned int index, - enum drm_plane_type type) + unsigned int index) { + enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; struct tegra_drm *tegra = drm->dev_private; struct tegra_display_hub *hub = tegra->hub; struct tegra_shared_plane *plane; diff --git a/drivers/gpu/drm/tegra/hub.h b/drivers/gpu/drm/tegra/hub.h index a66f18c4facc..23c4b2115ed1 100644 --- a/drivers/gpu/drm/tegra/hub.h +++ b/drivers/gpu/drm/tegra/hub.h @@ -80,8 +80,7 @@ void tegra_display_hub_cleanup(struct tegra_display_hub *hub); struct drm_plane *tegra_shared_plane_create(struct drm_device *drm, struct tegra_dc *dc, unsigned int wgrp, - unsigned int index, - enum drm_plane_type type); + unsigned int index); int tegra_display_hub_atomic_check(struct drm_device *drm, struct drm_atomic_state *state); -- Gitee From 0b8fd8abaf7720d143742da6cddd9a18e1ed2723 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:43 +0800 Subject: [PATCH 0463/1421] Revert "drm/etnaviv: Protect the scheduler's pending list with its lock" This reverts commit 27dd19775ab46c25634d9b7899ce72cdff99e7ef. --- drivers/gpu/drm/etnaviv/etnaviv_sched.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c index a3bd396c9d82..97e406d9ac06 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c @@ -34,7 +34,6 @@ static enum drm_gpu_sched_stat etnaviv_sched_timedout_job(struct drm_sched_job *sched_job) { struct etnaviv_gem_submit *submit = to_etnaviv_submit(sched_job); - struct drm_gpu_scheduler *sched = sched_job->sched; struct etnaviv_gpu *gpu = submit->gpu; u32 dma_addr; int change; @@ -77,9 +76,7 @@ static enum drm_gpu_sched_stat etnaviv_sched_timedout_job(struct drm_sched_job return DRM_GPU_SCHED_STAT_NOMINAL; out_no_timeout: - spin_lock(&sched->job_list_lock); - list_add(&sched_job->list, &sched->pending_list); - spin_unlock(&sched->job_list_lock); + list_add(&sched_job->list, &sched_job->sched->pending_list); return DRM_GPU_SCHED_STAT_NOMINAL; } -- Gitee From b7bb442c12b3063bd7b8e9cf7aaf8d87583ec5fa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:43 +0800 Subject: [PATCH 0464/1421] Revert "drm/cirrus-qemu: Fix pitch programming" This reverts commit 514db24044a2022974398dc3b13bf22a3f00d868. --- drivers/gpu/drm/tiny/cirrus.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c index b0361ef53c46..594bc472862f 100644 --- a/drivers/gpu/drm/tiny/cirrus.c +++ b/drivers/gpu/drm/tiny/cirrus.c @@ -318,6 +318,7 @@ static void cirrus_pitch_set(struct cirrus_device *cirrus, unsigned int pitch) /* Enable extended blanking and pitch bits, and enable full memory */ cr1b = 0x22; cr1b |= (pitch >> 7) & 0x10; + cr1b |= (pitch >> 6) & 0x40; wreg_crt(cirrus, 0x1b, cr1b); cirrus_set_start_address(cirrus, 0); -- Gitee From 5887b263eab697a73d9ca117431b163de862ce9b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:43 +0800 Subject: [PATCH 0465/1421] Revert "drm/ast: Fix comment on modeset lock" This reverts commit 5afa90db1ca67b4f9afc4f20a3368d3b59caadfb. --- drivers/gpu/drm/ast/ast_mode.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index 27e660e92489..5f58da6ebaad 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -1868,9 +1868,9 @@ static void ast_mode_config_helper_atomic_commit_tail(struct drm_atomic_state *s /* * Concurrent operations could possibly trigger a call to - * drm_connector_helper_funcs.get_modes by reading the display - * modes. Protect access to registers by acquiring the modeset - * lock. + * drm_connector_helper_funcs.get_modes by trying to read the + * display modes. Protect access to I/O registers by acquiring + * the I/O-register lock. Released in atomic_flush(). */ mutex_lock(&ast->ioregs_lock); drm_atomic_helper_commit_tail_rpm(state); -- Gitee From 98dbe361631da091d6619cdf6c4b53244a9bfaf4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:43 +0800 Subject: [PATCH 0466/1421] Revert "scsi: megaraid_sas: Fix invalid node index" This reverts commit b9eb73ece080b4b9001efafc248eeb8c68f5f3b0. --- drivers/scsi/megaraid/megaraid_sas_base.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 54f66142e14a..dd3630b09aa2 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -5908,11 +5908,7 @@ megasas_set_high_iops_queue_affinity_and_hint(struct megasas_instance *instance) const struct cpumask *mask; if (instance->perf_mode == MR_BALANCED_PERF_MODE) { - int nid = dev_to_node(&instance->pdev->dev); - - if (nid == NUMA_NO_NODE) - nid = 0; - mask = cpumask_of_node(nid); + mask = cpumask_of_node(dev_to_node(&instance->pdev->dev)); for (i = 0; i < instance->low_latency_index_start; i++) { irq = pci_irq_vector(instance->pdev, i); -- Gitee From e9c49b4ee6e04311bafc6b22d46a322e57a5af08 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:43 +0800 Subject: [PATCH 0467/1421] Revert "HID: wacom: fix kobject reference count leak" This reverts commit 8e217c6c1a51f8c54277fb65d99d0e22073b4418. --- drivers/hid/wacom_sys.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 52011503ff3b..1269a756ea9c 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -2023,7 +2023,6 @@ static int wacom_initialize_remotes(struct wacom *wacom) hid_err(wacom->hdev, "cannot create sysfs group err: %d\n", error); kfifo_free(&remote->remote_fifo); - kobject_put(remote->remote_dir); return error; } -- Gitee From 6617c7dbb1c3a89f62c03e699a5e52a4c504a3a6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:44 +0800 Subject: [PATCH 0468/1421] Revert "HID: wacom: fix memory leak on sysfs attribute creation failure" This reverts commit 904b4afb399f9a78228021e7f096ffa3f0ba8dfc. --- drivers/hid/wacom_sys.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 1269a756ea9c..925298b6f869 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -2022,7 +2022,6 @@ static int wacom_initialize_remotes(struct wacom *wacom) if (error) { hid_err(wacom->hdev, "cannot create sysfs group err: %d\n", error); - kfifo_free(&remote->remote_fifo); return error; } -- Gitee From 08e1b78d5a61047a7e0531a552ef86233183f2d1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:44 +0800 Subject: [PATCH 0469/1421] Revert "HID: wacom: fix memory leak on kobject creation failure" This reverts commit a8feb42c2d18d08c5b61fef2f9994ce2f46098a4. --- drivers/hid/wacom_sys.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 925298b6f869..5a72cf8d6944 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -2012,10 +2012,8 @@ static int wacom_initialize_remotes(struct wacom *wacom) remote->remote_dir = kobject_create_and_add("wacom_remote", &wacom->hdev->dev.kobj); - if (!remote->remote_dir) { - kfifo_free(&remote->remote_fifo); + if (!remote->remote_dir) return -ENOMEM; - } error = sysfs_create_files(remote->remote_dir, remote_unpair_attrs); -- Gitee From 0667352d8ed3c53530399a8aacfa83a1e3ff512f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:44 +0800 Subject: [PATCH 0470/1421] Revert "HID: lenovo: Restrict F7/9/11 mode to compact keyboards only" This reverts commit 215a4fabe99d62fa9b9ec404ff8fe91f63f2abef. --- drivers/hid/hid-lenovo.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c index ee65da98c7d5..a4062f617ba2 100644 --- a/drivers/hid/hid-lenovo.c +++ b/drivers/hid/hid-lenovo.c @@ -529,14 +529,11 @@ static void lenovo_features_set_cptkbd(struct hid_device *hdev) /* * Tell the keyboard a driver understands it, and turn F7, F9, F11 into - * regular keys (Compact only) + * regular keys */ - if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD || - hdev->product == USB_DEVICE_ID_LENOVO_CBTKBD) { - ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03); - if (ret) - hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret); - } + ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03); + if (ret) + hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret); /* Switch middle button to native mode */ ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01); -- Gitee From f708a42bf28d8ce2f6b8336f73c1260f2b8e0214 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:44 +0800 Subject: [PATCH 0471/1421] Revert "net: libwx: fix the creation of page_pool" This reverts commit 40058a320c12e452a2bd6b952ff3204fff806522. --- drivers/net/ethernet/wangxun/libwx/wx_lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_lib.c index 97c6b4d27634..c019fe964ece 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -2368,7 +2368,7 @@ static int wx_alloc_page_pool(struct wx_ring *rx_ring) struct page_pool_params pp_params = { .flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV, .order = 0, - .pool_size = rx_ring->count, + .pool_size = rx_ring->size, .nid = dev_to_node(rx_ring->dev), .dev = rx_ring->dev, .dma_dir = DMA_FROM_DEVICE, -- Gitee From 8ee97cf567c89ad2f4aea7f751d122443c532da8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:45 +0800 Subject: [PATCH 0472/1421] Revert "btrfs: update superblock's device bytes_used when dropping chunk" This reverts commit 8f33d48b52fef0885f6e602c4c36ddd2e7f92645. --- fs/btrfs/volumes.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 1eb543602ff1..b9a0b26d08e1 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -3174,12 +3174,6 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) device->bytes_used - dev_extent_len); atomic64_add(dev_extent_len, &fs_info->free_chunk_space); btrfs_clear_space_info_full(fs_info); - - if (list_empty(&device->post_commit_list)) { - list_add_tail(&device->post_commit_list, - &trans->transaction->dev_update_list); - } - mutex_unlock(&fs_info->chunk_mutex); } } -- Gitee From 626392fe8a4ba3653c1bf077377d0ff5bf76385f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:45 +0800 Subject: [PATCH 0473/1421] Revert "btrfs: fix a race between renames and directory logging" This reverts commit 8186c8f974db115e54abed414b3539bf3d7c28e9. --- fs/btrfs/inode.c | 81 ++++++++++-------------------------------------- 1 file changed, 17 insertions(+), 64 deletions(-) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index af1f22b3cff7..48d257923672 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -8754,7 +8754,6 @@ static int btrfs_rename_exchange(struct inode *old_dir, int ret; int ret2; bool need_abort = false; - bool logs_pinned = false; struct fscrypt_name old_fname, new_fname; struct fscrypt_str *old_name, *new_name; @@ -8878,31 +8877,6 @@ static int btrfs_rename_exchange(struct inode *old_dir, inode_inc_iversion(new_inode); simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); - if (old_ino != BTRFS_FIRST_FREE_OBJECTID && - new_ino != BTRFS_FIRST_FREE_OBJECTID) { - /* - * If we are renaming in the same directory (and it's not for - * root entries) pin the log early to prevent any concurrent - * task from logging the directory after we removed the old - * entries and before we add the new entries, otherwise that - * task can sync a log without any entry for the inodes we are - * renaming and therefore replaying that log, if a power failure - * happens after syncing the log, would result in deleting the - * inodes. - * - * If the rename affects two different directories, we want to - * make sure the that there's no log commit that contains - * updates for only one of the directories but not for the - * other. - * - * If we are renaming an entry for a root, we don't care about - * log updates since we called btrfs_set_log_full_commit(). - */ - btrfs_pin_log_trans(root); - btrfs_pin_log_trans(dest); - logs_pinned = true; - } - if (old_dentry->d_parent != new_dentry->d_parent) { btrfs_record_unlink_dir(trans, BTRFS_I(old_dir), BTRFS_I(old_inode), true); @@ -8960,23 +8934,30 @@ static int btrfs_rename_exchange(struct inode *old_dir, BTRFS_I(new_inode)->dir_index = new_idx; /* - * Do the log updates for all inodes. - * - * If either entry is for a root we don't need to update the logs since - * we've called btrfs_set_log_full_commit() before. + * Now pin the logs of the roots. We do it to ensure that no other task + * can sync the logs while we are in progress with the rename, because + * that could result in an inconsistency in case any of the inodes that + * are part of this rename operation were logged before. */ - if (logs_pinned) { + if (old_ino != BTRFS_FIRST_FREE_OBJECTID) + btrfs_pin_log_trans(root); + if (new_ino != BTRFS_FIRST_FREE_OBJECTID) + btrfs_pin_log_trans(dest); + + /* Do the log updates for all inodes. */ + if (old_ino != BTRFS_FIRST_FREE_OBJECTID) btrfs_log_new_name(trans, old_dentry, BTRFS_I(old_dir), old_rename_ctx.index, new_dentry->d_parent); + if (new_ino != BTRFS_FIRST_FREE_OBJECTID) btrfs_log_new_name(trans, new_dentry, BTRFS_I(new_dir), new_rename_ctx.index, old_dentry->d_parent); - } -out_fail: - if (logs_pinned) { + /* Now unpin the logs. */ + if (old_ino != BTRFS_FIRST_FREE_OBJECTID) btrfs_end_log_trans(root); + if (new_ino != BTRFS_FIRST_FREE_OBJECTID) btrfs_end_log_trans(dest); - } +out_fail: ret2 = btrfs_end_transaction(trans); ret = ret ? ret : ret2; out_notrans: @@ -9026,7 +9007,6 @@ static int btrfs_rename(struct mnt_idmap *idmap, int ret2; u64 old_ino = btrfs_ino(BTRFS_I(old_inode)); struct fscrypt_name old_fname, new_fname; - bool logs_pinned = false; if (btrfs_ino(BTRFS_I(new_dir)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID) return -EPERM; @@ -9161,29 +9141,6 @@ static int btrfs_rename(struct mnt_idmap *idmap, inode_inc_iversion(old_inode); simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); - if (old_ino != BTRFS_FIRST_FREE_OBJECTID) { - /* - * If we are renaming in the same directory (and it's not a - * root entry) pin the log to prevent any concurrent task from - * logging the directory after we removed the old entry and - * before we add the new entry, otherwise that task can sync - * a log without any entry for the inode we are renaming and - * therefore replaying that log, if a power failure happens - * after syncing the log, would result in deleting the inode. - * - * If the rename affects two different directories, we want to - * make sure the that there's no log commit that contains - * updates for only one of the directories but not for the - * other. - * - * If we are renaming an entry for a root, we don't care about - * log updates since we called btrfs_set_log_full_commit(). - */ - btrfs_pin_log_trans(root); - btrfs_pin_log_trans(dest); - logs_pinned = true; - } - if (old_dentry->d_parent != new_dentry->d_parent) btrfs_record_unlink_dir(trans, BTRFS_I(old_dir), BTRFS_I(old_inode), true); @@ -9232,7 +9189,7 @@ static int btrfs_rename(struct mnt_idmap *idmap, if (old_inode->i_nlink == 1) BTRFS_I(old_inode)->dir_index = index; - if (logs_pinned) + if (old_ino != BTRFS_FIRST_FREE_OBJECTID) btrfs_log_new_name(trans, old_dentry, BTRFS_I(old_dir), rename_ctx.index, new_dentry->d_parent); @@ -9248,10 +9205,6 @@ static int btrfs_rename(struct mnt_idmap *idmap, } } out_fail: - if (logs_pinned) { - btrfs_end_log_trans(root); - btrfs_end_log_trans(dest); - } ret2 = btrfs_end_transaction(trans); ret = ret ? ret : ret2; out_notrans: -- Gitee From 6815350cf6d56439503a139f4e803eab719e1b45 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:45 +0800 Subject: [PATCH 0474/1421] Revert "dm-raid: fix variable in journal device check" This reverts commit d123cac402bf2a5f378ff4493bb6930d9fbd6b6d. --- drivers/md/dm-raid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index f23edd79df45..385e24f55ec0 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -2378,7 +2378,7 @@ static int super_init_validation(struct raid_set *rs, struct md_rdev *rdev) */ sb_retrieve_failed_devices(sb, failed_devices); rdev_for_each(r, mddev) { - if (test_bit(Journal, &r->flags) || + if (test_bit(Journal, &rdev->flags) || !r->sb_page) continue; sb2 = page_address(r->sb_page); -- Gitee From f556b5bbe97e31827268175cc440d37583713268 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:45 +0800 Subject: [PATCH 0475/1421] Revert "Bluetooth: L2CAP: Fix L2CAP MTU negotiation" This reverts commit 551a35e70d58c9ad24b4d163bd603292753acf96. --- net/bluetooth/l2cap_core.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index f9995a405e35..2744ad11687c 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -3380,7 +3380,7 @@ static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data, size_t data struct l2cap_conf_rfc rfc = { .mode = L2CAP_MODE_BASIC }; struct l2cap_conf_efs efs; u8 remote_efs = 0; - u16 mtu = 0; + u16 mtu = L2CAP_DEFAULT_MTU; u16 result = L2CAP_CONF_SUCCESS; u16 size; @@ -3485,13 +3485,6 @@ static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data, size_t data /* Configure output options and let the other side know * which ones we don't like. */ - /* If MTU is not provided in configure request, use the most recently - * explicitly or implicitly accepted value for the other direction, - * or the default value. - */ - if (mtu == 0) - mtu = chan->imtu ? chan->imtu : L2CAP_DEFAULT_MTU; - if (mtu < L2CAP_DEFAULT_MIN_MTU) result = L2CAP_CONF_UNACCEPT; else { -- Gitee From 41d0b621534a2bf0f34b7ee5b31de4e25fed6f7f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:45 +0800 Subject: [PATCH 0476/1421] Revert "serial: imx: Restore original RXTL for console to fix data loss" This reverts commit b963803b65cb8d11586df143c0879db8800df063. --- drivers/tty/serial/imx.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 6e39ec553333..349d4849ba5e 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -234,7 +234,6 @@ struct imx_port { enum imx_tx_state tx_state; struct hrtimer trigger_start_tx; struct hrtimer trigger_stop_tx; - unsigned int rxtl; }; struct imx_port_ucrs { @@ -1338,7 +1337,6 @@ static void imx_uart_clear_rx_errors(struct imx_port *sport) #define TXTL_DEFAULT 8 #define RXTL_DEFAULT 8 /* 8 characters or aging timer */ -#define RXTL_CONSOLE_DEFAULT 1 #define TXTL_DMA 8 /* DMA burst setting */ #define RXTL_DMA 9 /* DMA burst setting */ @@ -1451,7 +1449,7 @@ static void imx_uart_disable_dma(struct imx_port *sport) ucr1 &= ~(UCR1_RXDMAEN | UCR1_TXDMAEN | UCR1_ATDMAEN); imx_uart_writel(sport, ucr1, UCR1); - imx_uart_setup_ufcr(sport, TXTL_DEFAULT, sport->rxtl); + imx_uart_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT); sport->dma_is_enabled = 0; } @@ -1476,12 +1474,7 @@ static int imx_uart_startup(struct uart_port *port) return retval; } - if (uart_console(&sport->port)) - sport->rxtl = RXTL_CONSOLE_DEFAULT; - else - sport->rxtl = RXTL_DEFAULT; - - imx_uart_setup_ufcr(sport, TXTL_DEFAULT, sport->rxtl); + imx_uart_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT); /* disable the DREN bit (Data Ready interrupt enable) before * requesting IRQs @@ -1894,7 +1887,7 @@ static int imx_uart_poll_init(struct uart_port *port) if (retval) clk_disable_unprepare(sport->clk_ipg); - imx_uart_setup_ufcr(sport, TXTL_DEFAULT, sport->rxtl); + imx_uart_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT); spin_lock_irqsave(&sport->port.lock, flags); @@ -1986,7 +1979,7 @@ static int imx_uart_rs485_config(struct uart_port *port, struct ktermios *termio /* If the receiver trigger is 0, set it to a default value */ ufcr = imx_uart_readl(sport, UFCR); if ((ufcr & UFCR_RXTL_MASK) == 0) - imx_uart_setup_ufcr(sport, TXTL_DEFAULT, sport->rxtl); + imx_uart_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT); imx_uart_start_rx(port); } @@ -2171,7 +2164,7 @@ imx_uart_console_setup(struct console *co, char *options) else imx_uart_console_get_options(sport, &baud, &parity, &bits); - imx_uart_setup_ufcr(sport, TXTL_DEFAULT, sport->rxtl); + imx_uart_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT); retval = uart_set_options(&sport->port, co, baud, parity, bits, flow); -- Gitee From 66274e871543ba6d8acb4e29c19bdc3e29172333 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:46 +0800 Subject: [PATCH 0477/1421] Revert "dt-bindings: serial: 8250: Make clocks and clock-frequency exclusive" This reverts commit f33f765a06831f0c4e7fe70ef6a09c80f957be7f. --- Documentation/devicetree/bindings/serial/8250.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/serial/8250.yaml b/Documentation/devicetree/bindings/serial/8250.yaml index 6ba0325039be..692aa05500fd 100644 --- a/Documentation/devicetree/bindings/serial/8250.yaml +++ b/Documentation/devicetree/bindings/serial/8250.yaml @@ -45,7 +45,7 @@ allOf: - ns16550 - ns16550a then: - oneOf: + anyOf: - required: [ clock-frequency ] - required: [ clocks ] -- Gitee From 85aded9acfeb71fa4f0231d316e9111ec74f2216 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:46 +0800 Subject: [PATCH 0478/1421] Revert "staging: rtl8723bs: Avoid memset() in aes_cipher() and aes_decipher()" This reverts commit 7a1e9247b0fcb6b8d9b67ae13ff49aa1d80a2fa9. --- drivers/staging/rtl8723bs/core/rtw_security.c | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c index 83fdee444c1c..7ecdaa2eeaf3 100644 --- a/drivers/staging/rtl8723bs/core/rtw_security.c +++ b/drivers/staging/rtl8723bs/core/rtw_security.c @@ -869,21 +869,29 @@ static signed int aes_cipher(u8 *key, uint hdrlen, num_blocks, payload_index; u8 pn_vector[6]; - u8 mic_iv[16] = {}; - u8 mic_header1[16] = {}; - u8 mic_header2[16] = {}; - u8 ctr_preload[16] = {}; + u8 mic_iv[16]; + u8 mic_header1[16]; + u8 mic_header2[16]; + u8 ctr_preload[16]; /* Intermediate Buffers */ - u8 chain_buffer[16] = {}; - u8 aes_out[16] = {}; - u8 padded_buffer[16] = {}; + u8 chain_buffer[16]; + u8 aes_out[16]; + u8 padded_buffer[16]; u8 mic[8]; uint frtype = GetFrameType(pframe); uint frsubtype = GetFrameSubType(pframe); frsubtype = frsubtype>>4; + memset((void *)mic_iv, 0, 16); + memset((void *)mic_header1, 0, 16); + memset((void *)mic_header2, 0, 16); + memset((void *)ctr_preload, 0, 16); + memset((void *)chain_buffer, 0, 16); + memset((void *)aes_out, 0, 16); + memset((void *)padded_buffer, 0, 16); + if ((hdrlen == WLAN_HDR_A3_LEN) || (hdrlen == WLAN_HDR_A3_QOS_LEN)) a4_exists = 0; else @@ -1073,15 +1081,15 @@ static signed int aes_decipher(u8 *key, uint hdrlen, num_blocks, payload_index; signed int res = _SUCCESS; u8 pn_vector[6]; - u8 mic_iv[16] = {}; - u8 mic_header1[16] = {}; - u8 mic_header2[16] = {}; - u8 ctr_preload[16] = {}; + u8 mic_iv[16]; + u8 mic_header1[16]; + u8 mic_header2[16]; + u8 ctr_preload[16]; /* Intermediate Buffers */ - u8 chain_buffer[16] = {}; - u8 aes_out[16] = {}; - u8 padded_buffer[16] = {}; + u8 chain_buffer[16]; + u8 aes_out[16]; + u8 padded_buffer[16]; u8 mic[8]; uint frtype = GetFrameType(pframe); @@ -1089,6 +1097,14 @@ static signed int aes_decipher(u8 *key, uint hdrlen, frsubtype = frsubtype>>4; + memset((void *)mic_iv, 0, 16); + memset((void *)mic_header1, 0, 16); + memset((void *)mic_header2, 0, 16); + memset((void *)ctr_preload, 0, 16); + memset((void *)chain_buffer, 0, 16); + memset((void *)aes_out, 0, 16); + memset((void *)padded_buffer, 0, 16); + /* start to decrypt the payload */ num_blocks = (plen-8) / 16; /* plen including LLC, payload_length and mic) */ -- Gitee From 7c130b95009cd76116c8076c4657c5c0937c4b4b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:46 +0800 Subject: [PATCH 0479/1421] Revert "EDAC/amd64: Fix size calculation for Non-Power-of-Two DIMMs" This reverts commit fd374236eb3d155ccba385d7d165c742a00aed8f. --- drivers/edac/amd64_edac.c | 57 +++++++++++++++------------------------ 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index a8db2bde6384..10119cf27ffd 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -1475,9 +1475,7 @@ static int umc_get_cs_mode(int dimm, u8 ctrl, struct amd64_pvt *pvt) if (csrow_enabled(2 * dimm + 1, ctrl, pvt)) cs_mode |= CS_ODD_PRIMARY; - if (csrow_sec_enabled(2 * dimm, ctrl, pvt)) - cs_mode |= CS_EVEN_SECONDARY; - + /* Asymmetric dual-rank DIMM support. */ if (csrow_sec_enabled(2 * dimm + 1, ctrl, pvt)) cs_mode |= CS_ODD_SECONDARY; @@ -1498,13 +1496,12 @@ static int umc_get_cs_mode(int dimm, u8 ctrl, struct amd64_pvt *pvt) return cs_mode; } -static int calculate_cs_size(u32 mask, unsigned int cs_mode) +static int __addr_mask_to_cs_size(u32 addr_mask_orig, unsigned int cs_mode, + int csrow_nr, int dimm) { - int msb, weight, num_zero_bits; - u32 deinterleaved_mask; - - if (!mask) - return 0; + u32 msb, weight, num_zero_bits; + u32 addr_mask_deinterleaved; + int size = 0; /* * The number of zero bits in the mask is equal to the number of bits @@ -1517,30 +1514,19 @@ static int calculate_cs_size(u32 mask, unsigned int cs_mode) * without swapping with the most significant bit. This can be handled * by keeping the MSB where it is and ignoring the single zero bit. */ - msb = fls(mask) - 1; - weight = hweight_long(mask); + msb = fls(addr_mask_orig) - 1; + weight = hweight_long(addr_mask_orig); num_zero_bits = msb - weight - !!(cs_mode & CS_3R_INTERLEAVE); /* Take the number of zero bits off from the top of the mask. */ - deinterleaved_mask = GENMASK(msb - num_zero_bits, 1); - edac_dbg(1, " Deinterleaved AddrMask: 0x%x\n", deinterleaved_mask); - - return (deinterleaved_mask >> 2) + 1; -} - -static int __addr_mask_to_cs_size(u32 addr_mask, u32 addr_mask_sec, - unsigned int cs_mode, int csrow_nr, int dimm) -{ - int size; + addr_mask_deinterleaved = GENMASK_ULL(msb - num_zero_bits, 1); edac_dbg(1, "CS%d DIMM%d AddrMasks:\n", csrow_nr, dimm); - edac_dbg(1, " Primary AddrMask: 0x%x\n", addr_mask); + edac_dbg(1, " Original AddrMask: 0x%x\n", addr_mask_orig); + edac_dbg(1, " Deinterleaved AddrMask: 0x%x\n", addr_mask_deinterleaved); /* Register [31:1] = Address [39:9]. Size is in kBs here. */ - size = calculate_cs_size(addr_mask, cs_mode); - - edac_dbg(1, " Secondary AddrMask: 0x%x\n", addr_mask_sec); - size += calculate_cs_size(addr_mask_sec, cs_mode); + size = (addr_mask_deinterleaved >> 2) + 1; /* Return size in MBs. */ return size >> 10; @@ -1549,8 +1535,8 @@ static int __addr_mask_to_cs_size(u32 addr_mask, u32 addr_mask_sec, static int umc_addr_mask_to_cs_size(struct amd64_pvt *pvt, u8 umc, unsigned int cs_mode, int csrow_nr) { - u32 addr_mask = 0, addr_mask_sec = 0; int cs_mask_nr = csrow_nr; + u32 addr_mask_orig; int dimm, size = 0; /* No Chip Selects are enabled. */ @@ -1588,13 +1574,13 @@ static int umc_addr_mask_to_cs_size(struct amd64_pvt *pvt, u8 umc, if (!pvt->flags.zn_regs_v2) cs_mask_nr >>= 1; - if (cs_mode & (CS_EVEN_PRIMARY | CS_ODD_PRIMARY)) - addr_mask = pvt->csels[umc].csmasks[cs_mask_nr]; - - if (cs_mode & (CS_EVEN_SECONDARY | CS_ODD_SECONDARY)) - addr_mask_sec = pvt->csels[umc].csmasks_sec[cs_mask_nr]; + /* Asymmetric dual-rank DIMM support. */ + if ((csrow_nr & 1) && (cs_mode & CS_ODD_SECONDARY)) + addr_mask_orig = pvt->csels[umc].csmasks_sec[cs_mask_nr]; + else + addr_mask_orig = pvt->csels[umc].csmasks[cs_mask_nr]; - return __addr_mask_to_cs_size(addr_mask, addr_mask_sec, cs_mode, csrow_nr, dimm); + return __addr_mask_to_cs_size(addr_mask_orig, cs_mode, csrow_nr, dimm); } static void umc_debug_display_dimm_sizes(struct amd64_pvt *pvt, u8 ctrl) @@ -3787,10 +3773,9 @@ static void gpu_get_err_info(struct mce *m, struct err_info *err) static int gpu_addr_mask_to_cs_size(struct amd64_pvt *pvt, u8 umc, unsigned int cs_mode, int csrow_nr) { - u32 addr_mask = pvt->csels[umc].csmasks[csrow_nr]; - u32 addr_mask_sec = pvt->csels[umc].csmasks_sec[csrow_nr]; + u32 addr_mask_orig = pvt->csels[umc].csmasks[csrow_nr]; - return __addr_mask_to_cs_size(addr_mask, addr_mask_sec, cs_mode, csrow_nr, csrow_nr >> 1); + return __addr_mask_to_cs_size(addr_mask_orig, cs_mode, csrow_nr, csrow_nr >> 1); } static void gpu_debug_display_dimm_sizes(struct amd64_pvt *pvt, u8 ctrl) -- Gitee From 3d72148796cba5aa44d6ecc803759ad34277aedf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:46 +0800 Subject: [PATCH 0480/1421] Revert "smb: client: fix potential deadlock when reconnecting channels" This reverts commit 2d7d7aac4b6d399fd85a3a5cb6eba84f892d3dc8. --- fs/smb/client/cifsglob.h | 1 - fs/smb/client/connect.c | 58 +++++++++++++++------------------------- 2 files changed, 22 insertions(+), 37 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index d776340ad91c..c7da6bf2f44b 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -677,7 +677,6 @@ inc_rfc1001_len(void *buf, int count) struct TCP_Server_Info { struct list_head tcp_ses_list; struct list_head smb_ses_list; - struct list_head rlist; /* reconnect list */ spinlock_t srv_lock; /* protect anything here that is not protected */ __u64 conn_id; /* connection identifier (useful for debugging) */ int srv_count; /* reference counter */ diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 454420aa0222..8fa5fe0a8c5c 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -140,14 +140,6 @@ static void smb2_query_server_interfaces(struct work_struct *work) (SMB_INTERFACE_POLL_INTERVAL * HZ)); } -#define set_need_reco(server) \ -do { \ - spin_lock(&server->srv_lock); \ - if (server->tcpStatus != CifsExiting) \ - server->tcpStatus = CifsNeedReconnect; \ - spin_unlock(&server->srv_lock); \ -} while (0) - /* * Update the tcpStatus for the server. * This is used to signal the cifsd thread to call cifs_reconnect @@ -161,45 +153,39 @@ void cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server, bool all_channels) { - struct TCP_Server_Info *nserver; + struct TCP_Server_Info *pserver; struct cifs_ses *ses; - LIST_HEAD(reco); int i; + /* If server is a channel, select the primary channel */ + pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; + /* if we need to signal just this channel */ if (!all_channels) { - set_need_reco(server); + spin_lock(&server->srv_lock); + if (server->tcpStatus != CifsExiting) + server->tcpStatus = CifsNeedReconnect; + spin_unlock(&server->srv_lock); return; } - if (SERVER_IS_CHAN(server)) - server = server->primary_server; - scoped_guard(spinlock, &cifs_tcp_ses_lock) { - set_need_reco(server); - list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) { - spin_lock(&ses->ses_lock); - if (ses->ses_status == SES_EXITING) { - spin_unlock(&ses->ses_lock); + spin_lock(&cifs_tcp_ses_lock); + list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) { + if (cifs_ses_exiting(ses)) + continue; + spin_lock(&ses->chan_lock); + for (i = 0; i < ses->chan_count; i++) { + if (!ses->chans[i].server) continue; - } - spin_lock(&ses->chan_lock); - for (i = 1; i < ses->chan_count; i++) { - nserver = ses->chans[i].server; - if (!nserver) - continue; - nserver->srv_count++; - list_add(&nserver->rlist, &reco); - } - spin_unlock(&ses->chan_lock); - spin_unlock(&ses->ses_lock); - } - } - list_for_each_entry_safe(server, nserver, &reco, rlist) { - list_del_init(&server->rlist); - set_need_reco(server); - cifs_put_tcp_session(server, 0); + spin_lock(&ses->chans[i].server->srv_lock); + if (ses->chans[i].server->tcpStatus != CifsExiting) + ses->chans[i].server->tcpStatus = CifsNeedReconnect; + spin_unlock(&ses->chans[i].server->srv_lock); + } + spin_unlock(&ses->chan_lock); } + spin_unlock(&cifs_tcp_ses_lock); } /* -- Gitee From 07bf9a0eface99e7dbe61077695cabd83d455711 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:47 +0800 Subject: [PATCH 0481/1421] Revert "drm/bridge: ti-sn65dsi86: Add HPD for DisplayPort connector type" This reverts commit 778056cb47ab4ac4a00b99679031a8abc700f267. --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 69 ++++----------------------- 1 file changed, 9 insertions(+), 60 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 002f8aaa509b..3e31a0c5a6d2 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -331,18 +331,12 @@ static void ti_sn65dsi86_enable_comms(struct ti_sn65dsi86 *pdata) * 200 ms. We'll assume that the panel driver will have the hardcoded * delay in its prepare and always disable HPD. * - * For DisplayPort bridge type, we need HPD. So we use the bridge type - * to conditionally disable HPD. - * NOTE: The bridge type is set in ti_sn_bridge_probe() but enable_comms() - * can be called before. So for DisplayPort, HPD will be enabled once - * bridge type is set. We are using bridge type instead of "no-hpd" - * property because it is not used properly in devicetree description - * and hence is unreliable. + * If HPD somehow makes sense on some future panel we'll have to + * change this to be conditional on someone specifying that HPD should + * be used. */ - - if (pdata->bridge.type != DRM_MODE_CONNECTOR_DisplayPort) - regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, HPD_DISABLE, - HPD_DISABLE); + regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, HPD_DISABLE, + HPD_DISABLE); pdata->comms_enabled = true; @@ -1179,14 +1173,9 @@ static enum drm_connector_status ti_sn_bridge_detect(struct drm_bridge *bridge) struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); int val = 0; - /* - * Runtime reference is grabbed in ti_sn_bridge_hpd_enable() - * as the chip won't report HPD just after being powered on. - * HPD_DEBOUNCED_STATE reflects correct state only after the - * debounce time (~100-400 ms). - */ - + pm_runtime_get_sync(pdata->dev); regmap_read(pdata->regmap, SN_HPD_DISABLE_REG, &val); + pm_runtime_put_autosuspend(pdata->dev); return val & HPD_DEBOUNCED_STATE ? connector_status_connected : connector_status_disconnected; @@ -1209,26 +1198,6 @@ static void ti_sn65dsi86_debugfs_init(struct drm_bridge *bridge, struct dentry * debugfs_create_file("status", 0600, debugfs, pdata, &status_fops); } -static void ti_sn_bridge_hpd_enable(struct drm_bridge *bridge) -{ - struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); - - /* - * Device needs to be powered on before reading the HPD state - * for reliable hpd detection in ti_sn_bridge_detect() due to - * the high debounce time. - */ - - pm_runtime_get_sync(pdata->dev); -} - -static void ti_sn_bridge_hpd_disable(struct drm_bridge *bridge) -{ - struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); - - pm_runtime_put_autosuspend(pdata->dev); -} - static const struct drm_bridge_funcs ti_sn_bridge_funcs = { .attach = ti_sn_bridge_attach, .detach = ti_sn_bridge_detach, @@ -1243,8 +1212,6 @@ static const struct drm_bridge_funcs ti_sn_bridge_funcs = { .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, .debugfs_init = ti_sn65dsi86_debugfs_init, - .hpd_enable = ti_sn_bridge_hpd_enable, - .hpd_disable = ti_sn_bridge_hpd_disable, }; static void ti_sn_bridge_parse_lanes(struct ti_sn65dsi86 *pdata, @@ -1333,26 +1300,8 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, pdata->bridge.type = pdata->next_bridge->type == DRM_MODE_CONNECTOR_DisplayPort ? DRM_MODE_CONNECTOR_DisplayPort : DRM_MODE_CONNECTOR_eDP; - if (pdata->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) { - pdata->bridge.ops = DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT | - DRM_BRIDGE_OP_HPD; - /* - * If comms were already enabled they would have been enabled - * with the wrong value of HPD_DISABLE. Update it now. Comms - * could be enabled if anyone is holding a pm_runtime reference - * (like if a GPIO is in use). Note that in most cases nobody - * is doing AUX channel xfers before the bridge is added so - * HPD doesn't _really_ matter then. The only exception is in - * the eDP case where the panel wants to read the EDID before - * the bridge is added. We always consistently have HPD disabled - * for eDP. - */ - mutex_lock(&pdata->comms_mutex); - if (pdata->comms_enabled) - regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, - HPD_DISABLE, 0); - mutex_unlock(&pdata->comms_mutex); - }; + if (pdata->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) + pdata->bridge.ops = DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT; drm_bridge_add(&pdata->bridge); -- Gitee From 2fa25b352c3f7f957540e62ab485742858c20cd6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:47 +0800 Subject: [PATCH 0482/1421] Revert "drm/bridge: ti-sn65dsi86: make use of debugfs_init callback" This reverts commit d26c631155af451a65523441d5c0cf7e863dd661. --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 40 ++++++++++++++++++++------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 3e31a0c5a6d2..bfbd3fee1256 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -424,8 +424,36 @@ static int status_show(struct seq_file *s, void *data) return 0; } + DEFINE_SHOW_ATTRIBUTE(status); +static void ti_sn65dsi86_debugfs_remove(void *data) +{ + debugfs_remove_recursive(data); +} + +static void ti_sn65dsi86_debugfs_init(struct ti_sn65dsi86 *pdata) +{ + struct device *dev = pdata->dev; + struct dentry *debugfs; + int ret; + + debugfs = debugfs_create_dir(dev_name(dev), NULL); + + /* + * We might get an error back if debugfs wasn't enabled in the kernel + * so let's just silently return upon failure. + */ + if (IS_ERR_OR_NULL(debugfs)) + return; + + ret = devm_add_action_or_reset(dev, ti_sn65dsi86_debugfs_remove, debugfs); + if (ret) + return; + + debugfs_create_file("status", 0600, debugfs, pdata, &status_fops); +} + /* ----------------------------------------------------------------------------- * Auxiliary Devices (*not* AUX) */ @@ -1189,15 +1217,6 @@ static struct edid *ti_sn_bridge_get_edid(struct drm_bridge *bridge, return drm_get_edid(connector, &pdata->aux.ddc); } -static void ti_sn65dsi86_debugfs_init(struct drm_bridge *bridge, struct dentry *root) -{ - struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge); - struct dentry *debugfs; - - debugfs = debugfs_create_dir(dev_name(pdata->dev), root); - debugfs_create_file("status", 0600, debugfs, pdata, &status_fops); -} - static const struct drm_bridge_funcs ti_sn_bridge_funcs = { .attach = ti_sn_bridge_attach, .detach = ti_sn_bridge_detach, @@ -1211,7 +1230,6 @@ static const struct drm_bridge_funcs ti_sn_bridge_funcs = { .atomic_reset = drm_atomic_helper_bridge_reset, .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, - .debugfs_init = ti_sn65dsi86_debugfs_init, }; static void ti_sn_bridge_parse_lanes(struct ti_sn65dsi86 *pdata, @@ -1917,6 +1935,8 @@ static int ti_sn65dsi86_probe(struct i2c_client *client) if (ret) return ret; + ti_sn65dsi86_debugfs_init(pdata); + /* * Break ourselves up into a collection of aux devices. The only real * motiviation here is to solve the chicken-and-egg problem of probe -- Gitee From 9c8010473954342a9bf7510f6585dcd9f3faad78 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:47 +0800 Subject: [PATCH 0483/1421] Revert "drm/i915: fix build error some more" This reverts commit dfe5a65c2c101fde40f7044d581f363c655f969b. --- drivers/gpu/drm/i915/i915_pmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i915_pmu.c index 461aafc2ae9a..33ab82c334a8 100644 --- a/drivers/gpu/drm/i915/i915_pmu.c +++ b/drivers/gpu/drm/i915/i915_pmu.c @@ -101,7 +101,7 @@ static unsigned int config_bit(const u64 config) return other_bit(config); } -static __always_inline u32 config_mask(const u64 config) +static u32 config_mask(const u64 config) { unsigned int bit = config_bit(config); -- Gitee From d502fce0f8d8fc2a064e76d593f02fb796d65445 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:47 +0800 Subject: [PATCH 0484/1421] Revert "net: selftests: fix TCP packet checksum" This reverts commit ffd5e14c8914544a30ff9753c7ccb92f2561db3e. --- net/core/selftests.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/core/selftests.c b/net/core/selftests.c index 946e92cca211..7af99d07762e 100644 --- a/net/core/selftests.c +++ b/net/core/selftests.c @@ -160,9 +160,8 @@ static struct sk_buff *net_test_get_skb(struct net_device *ndev, skb->csum = 0; skb->ip_summed = CHECKSUM_PARTIAL; if (attr->tcp) { - int l4len = skb->len - skb_transport_offset(skb); - - thdr->check = ~tcp_v4_check(l4len, ihdr->saddr, ihdr->daddr, 0); + thdr->check = ~tcp_v4_check(skb->len, ihdr->saddr, + ihdr->daddr, 0); skb->csum_start = skb_transport_header(skb) - skb->head; skb->csum_offset = offsetof(struct tcphdr, check); } else { -- Gitee From 05b84664deb213b93103c887f67b12b6555b0b6b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:47 +0800 Subject: [PATCH 0485/1421] Revert "ALSA: hda/realtek: Fix built-in mic on ASUS VivoBook X507UAR" This reverts commit 2a0e667dbdcb7687d65ede25874932385db2288d. --- sound/pci/hda/patch_realtek.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 0d367cec03ad..82210b1e3b97 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -10325,7 +10325,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1043, 0x1d4e, "ASUS TM420", ALC256_FIXUP_ASUS_HPE), SND_PCI_QUIRK(0x1043, 0x1da2, "ASUS UP6502ZA/ZD", ALC245_FIXUP_CS35L41_SPI_2), SND_PCI_QUIRK(0x1043, 0x1e02, "ASUS UX3402ZA", ALC245_FIXUP_CS35L41_SPI_2), - SND_PCI_QUIRK(0x1043, 0x1e10, "ASUS VivoBook X507UAR", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502), SND_PCI_QUIRK(0x1043, 0x1e12, "ASUS UM3402", ALC287_FIXUP_CS35L41_I2C_2), SND_PCI_QUIRK(0x1043, 0x1e51, "ASUS Zephyrus M15", ALC294_FIXUP_ASUS_GU502_PINS), -- Gitee From a340c6bff9e429aca4a2b507fdbed5d845eae9ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:48 +0800 Subject: [PATCH 0486/1421] Revert "atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister()." This reverts commit 6db9d61a9ab9a1b0525399ae822b82db6cebc84d. --- net/atm/resources.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/atm/resources.c b/net/atm/resources.c index b19d851e1f44..995d29e7fb13 100644 --- a/net/atm/resources.c +++ b/net/atm/resources.c @@ -146,10 +146,11 @@ void atm_dev_deregister(struct atm_dev *dev) */ mutex_lock(&atm_dev_mutex); list_del(&dev->dev_list); + mutex_unlock(&atm_dev_mutex); + atm_dev_release_vccs(dev); atm_unregister_sysfs(dev); atm_proc_dev_deregister(dev); - mutex_unlock(&atm_dev_mutex); atm_dev_put(dev); } -- Gitee From 3ff0c66a5e2330aa07c49764d9557b5b0ce9ce17 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:48 +0800 Subject: [PATCH 0487/1421] Revert "net: enetc: Correct endianness handling in _enetc_rd_reg64" This reverts commit 47a80c4e11c0b84a70dbd4e8e5a61ada90006c7e. --- drivers/net/ethernet/freescale/enetc/enetc_hw.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_hw.h b/drivers/net/ethernet/freescale/enetc/enetc_hw.h index 4e8881b479e4..1619943fb263 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_hw.h @@ -485,7 +485,7 @@ static inline u64 _enetc_rd_reg64(void __iomem *reg) tmp = ioread32(reg + 4); } while (high != tmp); - return (u64)high << 32 | low; + return le64_to_cpu((__le64)high << 32 | low); } #endif -- Gitee From 07a95c1769104eb61dbb3cc12ccfde230f19fd21 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:48 +0800 Subject: [PATCH 0488/1421] Revert "libbpf: Fix possible use-after-free for externs" This reverts commit 52d44a714b037afbc5bfb9fd21d23b0edffb3444. --- tools/lib/bpf/libbpf.c | 10 +++------- .../selftests/bpf/progs/test_global_map_resize.c | 16 ---------------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index aefbfa2df620..5dc2e5555335 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -554,7 +554,7 @@ struct extern_desc { int sym_idx; int btf_id; int sec_btf_id; - char *name; + const char *name; char *essent_name; bool is_set; bool is_weak; @@ -3822,9 +3822,7 @@ static int bpf_object__collect_externs(struct bpf_object *obj) return ext->btf_id; } t = btf__type_by_id(obj->btf, ext->btf_id); - ext->name = strdup(btf__name_by_offset(obj->btf, t->name_off)); - if (!ext->name) - return -ENOMEM; + ext->name = btf__name_by_offset(obj->btf, t->name_off); ext->sym_idx = i; ext->is_weak = ELF64_ST_BIND(sym->st_info) == STB_WEAK; @@ -8459,10 +8457,8 @@ void bpf_object__close(struct bpf_object *obj) zfree(&obj->btf_custom_path); zfree(&obj->kconfig); - for (i = 0; i < obj->nr_extern; i++) { - zfree(&obj->externs[i].name); + for (i = 0; i < obj->nr_extern; i++) zfree(&obj->externs[i].essent_name); - } zfree(&obj->externs); obj->nr_extern = 0; diff --git a/tools/testing/selftests/bpf/progs/test_global_map_resize.c b/tools/testing/selftests/bpf/progs/test_global_map_resize.c index 9be0e32cfeee..1fbb73d3e5d5 100644 --- a/tools/testing/selftests/bpf/progs/test_global_map_resize.c +++ b/tools/testing/selftests/bpf/progs/test_global_map_resize.c @@ -31,16 +31,6 @@ int my_int_last SEC(".data.array_not_last"); int percpu_arr[1] SEC(".data.percpu_arr"); -/* at least one extern is included, to ensure that a specific - * regression is tested whereby resizing resulted in a free-after-use - * bug after type information is invalidated by the resize operation. - * - * There isn't a particularly good API to test for this specific condition, - * but by having externs for the resizing tests it will cover this path. - */ -extern int LINUX_KERNEL_VERSION __kconfig; -long version_sink; - SEC("tp/syscalls/sys_enter_getpid") int bss_array_sum(void *ctx) { @@ -53,9 +43,6 @@ int bss_array_sum(void *ctx) for (size_t i = 0; i < bss_array_len; ++i) sum += array[i]; - /* see above; ensure this is not optimized out */ - version_sink = LINUX_KERNEL_VERSION; - return 0; } @@ -71,8 +58,5 @@ int data_array_sum(void *ctx) for (size_t i = 0; i < data_array_len; ++i) sum += my_array[i]; - /* see above; ensure this is not optimized out */ - version_sink = LINUX_KERNEL_VERSION; - return 0; } -- Gitee From 40050cf06b2f50db698ea49cb14a63b27b00c70f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:48 +0800 Subject: [PATCH 0489/1421] Revert "um: ubd: Add missing error check in start_io_thread()" This reverts commit ccd23da84fb0f6773e0b677cdcd1212779753fdb. --- arch/um/drivers/ubd_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/um/drivers/ubd_user.c b/arch/um/drivers/ubd_user.c index fb5b1e7c133d..a1afe414ce48 100644 --- a/arch/um/drivers/ubd_user.c +++ b/arch/um/drivers/ubd_user.c @@ -41,7 +41,7 @@ int start_io_thread(unsigned long sp, int *fd_out) *fd_out = fds[1]; err = os_set_fd_block(*fd_out, 0); - err |= os_set_fd_block(kernel_fd, 0); + err = os_set_fd_block(kernel_fd, 0); if (err) { printk("start_io_thread - failed to set nonblocking I/O.\n"); goto out_close; -- Gitee From b9ff61f3f08edee270020ea4a92133055c6b5155 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:48 +0800 Subject: [PATCH 0490/1421] Revert "vsock/uapi: fix linux/vm_sockets.h userspace compilation errors" This reverts commit 89fd210961369ba36796f3ab0db641598128b608. --- include/uapi/linux/vm_sockets.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/uapi/linux/vm_sockets.h b/include/uapi/linux/vm_sockets.h index e05280e41522..ed07181d4eff 100644 --- a/include/uapi/linux/vm_sockets.h +++ b/include/uapi/linux/vm_sockets.h @@ -17,10 +17,6 @@ #ifndef _UAPI_VM_SOCKETS_H #define _UAPI_VM_SOCKETS_H -#ifndef __KERNEL__ -#include /* for struct sockaddr and sa_family_t */ -#endif - #include #include -- Gitee From 0f306c7d26cdeac60c955fece11085c903cded8d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:49 +0800 Subject: [PATCH 0491/1421] Revert "af_unix: Don't set -ECONNRESET for consumed OOB skb." This reverts commit f9e6f7724992ffec216d70b78a0aca533ba90d46. --- net/unix/af_unix.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index f89cd01247f6..7604d399a778 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -630,11 +630,6 @@ static void unix_sock_destructor(struct sock *sk) #endif } -static unsigned int unix_skb_len(const struct sk_buff *skb) -{ - return skb->len - UNIXCB(skb).consumed; -} - static void unix_release_sock(struct sock *sk, int embrion) { struct unix_sock *u = unix_sk(sk); @@ -669,16 +664,10 @@ static void unix_release_sock(struct sock *sk, int embrion) if (skpair != NULL) { if (sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET) { - struct sk_buff *skb = skb_peek(&sk->sk_receive_queue); - -#if IS_ENABLED(CONFIG_AF_UNIX_OOB) - if (skb && !unix_skb_len(skb)) - skb = skb_peek_next(skb, &sk->sk_receive_queue); -#endif unix_state_lock(skpair); /* No more writes */ WRITE_ONCE(skpair->sk_shutdown, SHUTDOWN_MASK); - if (skb || embrion) + if (!skb_queue_empty_lockless(&sk->sk_receive_queue) || embrion) WRITE_ONCE(skpair->sk_err, ECONNRESET); unix_state_unlock(skpair); skpair->sk_state_change(skpair); @@ -2563,6 +2552,11 @@ static long unix_stream_data_wait(struct sock *sk, long timeo, return timeo; } +static unsigned int unix_skb_len(const struct sk_buff *skb) +{ + return skb->len - UNIXCB(skb).consumed; +} + struct unix_stream_read_state { int (*recv_actor)(struct sk_buff *, int, int, struct unix_stream_read_state *); -- Gitee From e2b27ff7a262637c7b6d7b35225445c8a4610975 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:49 +0800 Subject: [PATCH 0492/1421] Revert "wifi: mac80211: fix beacon interval calculation overflow" This reverts commit 1f9bcadfdda5bd18e25adb194cb316e464c8812d. --- net/mac80211/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 3a3cd09bdab6..154b41af4157 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -4753,7 +4753,7 @@ void ieee80211_recalc_dtim(struct ieee80211_local *local, { u64 tsf = drv_get_tsf(local, sdata); u64 dtim_count = 0; - u32 beacon_int = sdata->vif.bss_conf.beacon_int * 1024; + u16 beacon_int = sdata->vif.bss_conf.beacon_int * 1024; u8 dtim_period = sdata->vif.bss_conf.dtim_period; struct ps_data *ps; u8 bcns_from_dtim; -- Gitee From 1d7983de3145065f9077b1cd05a3cd09b822033b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:49 +0800 Subject: [PATCH 0493/1421] Revert "libbpf: Fix null pointer dereference in btf_dump__free on allocation failure" This reverts commit 8240aae5009178cdda713da799ef38ffc89ebbd5. --- tools/lib/bpf/btf_dump.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c index cf4db51b99eb..ebf56d21d08e 100644 --- a/tools/lib/bpf/btf_dump.c +++ b/tools/lib/bpf/btf_dump.c @@ -225,9 +225,6 @@ static void btf_dump_free_names(struct hashmap *map) size_t bkt; struct hashmap_entry *cur; - if (!map) - return; - hashmap__for_each_entry(map, cur, bkt) free((void *)cur->pkey); -- Gitee From 0e236f12d8460bb5493524f65967d8ed0924bdcb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:49 +0800 Subject: [PATCH 0494/1421] Revert "attach_recursive_mnt(): do not lock the covering tree when sliding something under it" This reverts commit d923d9c07457632f34c12c11a4cf529cc8b8e7d7. --- fs/namespace.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index cebcb9fa2acc..eab9185e2285 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2364,14 +2364,14 @@ static int attach_recursive_mnt(struct mount *source_mnt, hlist_for_each_entry_safe(child, n, &tree_list, mnt_hash) { struct mount *q; hlist_del_init(&child->mnt_hash); - /* Notice when we are propagating across user namespaces */ - if (child->mnt_parent->mnt_ns->user_ns != user_ns) - lock_mnt_tree(child); - child->mnt.mnt_flags &= ~MNT_LOCKED; q = __lookup_mnt(&child->mnt_parent->mnt, child->mnt_mountpoint); if (q) mnt_change_mountpoint(child, smp, q); + /* Notice when we are propagating across user namespaces */ + if (child->mnt_parent->mnt_ns->user_ns != user_ns) + lock_mnt_tree(child); + child->mnt.mnt_flags &= ~MNT_LOCKED; commit_tree(child); } put_mountpoint(smp); -- Gitee From 9a74d4c92653729223566274d525cbbd40c5581a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:50 +0800 Subject: [PATCH 0495/1421] Revert "ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3()" This reverts commit bed0fd06d4a2fa9028f1574f5024286596b85ef3. --- sound/usb/stream.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sound/usb/stream.c b/sound/usb/stream.c index 0f1558ef8555..e14c725acebf 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -982,8 +982,6 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip, * and request Cluster Descriptor */ wLength = le16_to_cpu(hc_header.wLength); - if (wLength < sizeof(cluster)) - return NULL; cluster = kzalloc(wLength, GFP_KERNEL); if (!cluster) return ERR_PTR(-ENOMEM); -- Gitee From fad2766454aab69eca3803c719882374fa9f30fc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:50 +0800 Subject: [PATCH 0496/1421] Revert "atm: clip: prevent NULL deref in clip_push()" This reverts commit b5fd63e77068e9995b9437736c2fdbd9b8cb2394. --- net/atm/clip.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/net/atm/clip.c b/net/atm/clip.c index 511467bb7fe4..294cb9efe3d3 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c @@ -193,6 +193,12 @@ static void clip_push(struct atm_vcc *vcc, struct sk_buff *skb) pr_debug("\n"); + if (!clip_devs) { + atm_return(vcc, skb->truesize); + kfree_skb(skb); + return; + } + if (!skb) { pr_debug("removing VCC %p\n", clip_vcc); if (clip_vcc->entry) @@ -202,11 +208,6 @@ static void clip_push(struct atm_vcc *vcc, struct sk_buff *skb) return; } atm_return(vcc, skb->truesize); - if (!clip_devs) { - kfree_skb(skb); - return; - } - skb->dev = clip_vcc->entry ? clip_vcc->entry->neigh->dev : clip_devs; /* clip_vcc->entry == NULL if we don't have an IP address yet */ if (!skb->dev) { -- Gitee From 07e553e46078658d89ef73bd8c41750d5bf7eab3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:50 +0800 Subject: [PATCH 0497/1421] Revert "lib/group_cpus: fix NULL pointer dereference from group_cpus_evenly()" This reverts commit f975b4e9de355a824c90a13b115dd844434a6cbb. --- lib/group_cpus.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/group_cpus.c b/lib/group_cpus.c index 18d43a406114..ee272c4cefcc 100644 --- a/lib/group_cpus.c +++ b/lib/group_cpus.c @@ -352,9 +352,6 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps) int ret = -ENOMEM; struct cpumask *masks = NULL; - if (numgrps == 0) - return NULL; - if (!zalloc_cpumask_var(&nmsk, GFP_KERNEL)) return NULL; @@ -429,12 +426,8 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps) #else /* CONFIG_SMP */ struct cpumask *group_cpus_evenly(unsigned int numgrps) { - struct cpumask *masks; + struct cpumask *masks = kcalloc(numgrps, sizeof(*masks), GFP_KERNEL); - if (numgrps == 0) - return NULL; - - masks = kcalloc(numgrps, sizeof(*masks), GFP_KERNEL); if (!masks) return NULL; -- Gitee From 9f88800481aec13de0e2aa08f9c0421a3325a28a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:50 +0800 Subject: [PATCH 0498/1421] Revert "s390/pkey: Prevent overflow in size calculation for memdup_user()" This reverts commit 89d331f6c10912f1629f2aac9a647f8ede676f2f. --- drivers/s390/crypto/pkey_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/s390/crypto/pkey_api.c b/drivers/s390/crypto/pkey_api.c index 21fc6151af79..70fcb5c40cfe 100644 --- a/drivers/s390/crypto/pkey_api.c +++ b/drivers/s390/crypto/pkey_api.c @@ -1333,7 +1333,7 @@ static void *_copy_apqns_from_user(void __user *uapqns, size_t nr_apqns) if (!uapqns || nr_apqns == 0) return NULL; - return memdup_array_user(uapqns, nr_apqns, sizeof(struct pkey_apqn)); + return memdup_user(uapqns, nr_apqns * sizeof(struct pkey_apqn)); } static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, -- Gitee From e86011e8b4eab0c3fe4f4580cb2707e578eabcc1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:50 +0800 Subject: [PATCH 0499/1421] Revert "ASoC: amd: yc: Add DMI quirk for Lenovo IdeaPad Slim 5 15" This reverts commit e58c9df429a95a165445b2a8f6cddc42d22b8f70. --- sound/soc/amd/yc/acp6x-mach.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 40e2b5a87916..9fdee74c28df 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -353,13 +353,6 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "83J2"), } }, - { - .driver_data = &acp6x_card, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "83J3"), - } - }, { .driver_data = &acp6x_card, .matches = { -- Gitee From 22e916c09c2f5f596de19d147436d9c216cbb4b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:51 +0800 Subject: [PATCH 0500/1421] Revert "mm/damon/sysfs-schemes: free old damon_sysfs_scheme_filter->memcg_path on write" This reverts commit 8d138510d4e7fc5fd5bbf8c4a36dff137627d1bd. --- mm/damon/sysfs-schemes.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 19d661889cf7..26c948f87489 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -376,7 +376,6 @@ static ssize_t memcg_path_store(struct kobject *kobj, return -ENOMEM; strscpy(path, buf, count + 1); - kfree(filter->memcg_path); filter->memcg_path = path; return count; } -- Gitee From 2ddb76964db70b6f36b7f0ccb7469bb90d6119a6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:51 +0800 Subject: [PATCH 0501/1421] Revert "i2c: robotfuzz-osif: disable zero-length read messages" This reverts commit 40fb77a52af94952d00eff4a7628865b1e52e4f1. --- drivers/i2c/busses/i2c-robotfuzz-osif.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/i2c/busses/i2c-robotfuzz-osif.c b/drivers/i2c/busses/i2c-robotfuzz-osif.c index 8e4cf9028b23..66dfa211e736 100644 --- a/drivers/i2c/busses/i2c-robotfuzz-osif.c +++ b/drivers/i2c/busses/i2c-robotfuzz-osif.c @@ -111,11 +111,6 @@ static u32 osif_func(struct i2c_adapter *adapter) return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL; } -/* prevent invalid 0-length usb_control_msg */ -static const struct i2c_adapter_quirks osif_quirks = { - .flags = I2C_AQ_NO_ZERO_LEN_READ, -}; - static const struct i2c_algorithm osif_algorithm = { .master_xfer = osif_xfer, .functionality = osif_func, @@ -148,7 +143,6 @@ static int osif_probe(struct usb_interface *interface, priv->adapter.owner = THIS_MODULE; priv->adapter.class = I2C_CLASS_HWMON; - priv->adapter.quirks = &osif_quirks; priv->adapter.algo = &osif_algorithm; priv->adapter.algo_data = priv; snprintf(priv->adapter.name, sizeof(priv->adapter.name), -- Gitee From 1495cfeb41d11a4d46656ed204bc9bec98a1b603 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:51 +0800 Subject: [PATCH 0502/1421] Revert "i2c: tiny-usb: disable zero-length read messages" This reverts commit 97ed3371a01f3d279d40d92c0b8c528281e96c67. --- drivers/i2c/busses/i2c-tiny-usb.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/i2c/busses/i2c-tiny-usb.c b/drivers/i2c/busses/i2c-tiny-usb.c index d984b90b3527..1bffe36c40ad 100644 --- a/drivers/i2c/busses/i2c-tiny-usb.c +++ b/drivers/i2c/busses/i2c-tiny-usb.c @@ -140,11 +140,6 @@ static u32 usb_func(struct i2c_adapter *adapter) return ret; } -/* prevent invalid 0-length usb_control_msg */ -static const struct i2c_adapter_quirks usb_quirks = { - .flags = I2C_AQ_NO_ZERO_LEN_READ, -}; - /* This is the actual algorithm we define */ static const struct i2c_algorithm usb_algorithm = { .master_xfer = usb_xfer, @@ -253,7 +248,6 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface, /* setup i2c adapter description */ dev->adapter.owner = THIS_MODULE; dev->adapter.class = I2C_CLASS_HWMON; - dev->adapter.quirks = &usb_quirks; dev->adapter.algo = &usb_algorithm; dev->adapter.algo_data = dev; snprintf(dev->adapter.name, sizeof(dev->adapter.name), -- Gitee From 5a783071a44020934c28fd9a8153a3df3e05bb41 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:51 +0800 Subject: [PATCH 0503/1421] Revert "af_unix: Don't leave consecutive consumed OOB skbs." This reverts commit 99e50a36fb69ad8a0d3c2804f67c170fb6cdae4c. --- net/unix/af_unix.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 7604d399a778..3cfc78121422 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2571,11 +2571,11 @@ struct unix_stream_read_state { #if IS_ENABLED(CONFIG_AF_UNIX_OOB) static int unix_stream_recv_urg(struct unix_stream_read_state *state) { - struct sk_buff *oob_skb, *read_skb = NULL; struct socket *sock = state->socket; struct sock *sk = sock->sk; struct unix_sock *u = unix_sk(sk); int chunk = 1; + struct sk_buff *oob_skb; mutex_lock(&u->iolock); unix_state_lock(sk); @@ -2590,16 +2590,9 @@ static int unix_stream_recv_urg(struct unix_stream_read_state *state) oob_skb = u->oob_skb; - if (!(state->flags & MSG_PEEK)) { + if (!(state->flags & MSG_PEEK)) WRITE_ONCE(u->oob_skb, NULL); - if (oob_skb->prev != (struct sk_buff *)&sk->sk_receive_queue && - !unix_skb_len(oob_skb->prev)) { - read_skb = oob_skb->prev; - __skb_unlink(read_skb, &sk->sk_receive_queue); - } - } - spin_unlock(&sk->sk_receive_queue.lock); unix_state_unlock(sk); @@ -2610,8 +2603,6 @@ static int unix_stream_recv_urg(struct unix_stream_read_state *state) mutex_unlock(&u->iolock); - consume_skb(read_skb); - if (chunk < 0) return -EFAULT; -- Gitee From c17f5c8354411d58511155567748c19e2922d7f8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:51 +0800 Subject: [PATCH 0504/1421] Revert "af_unix: Don't call skb_get() for OOB skb." This reverts commit 9f38497f13702fd58e327e95a7790e5e17b06c8c. --- net/unix/af_unix.c | 27 ++++++++++++++++++++++----- net/unix/garbage.c | 16 ++++++++++++++-- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 3cfc78121422..7546654f8273 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -657,7 +657,10 @@ static void unix_release_sock(struct sock *sk, int embrion) unix_state_unlock(sk); #if IS_ENABLED(CONFIG_AF_UNIX_OOB) - u->oob_skb = NULL; + if (u->oob_skb) { + kfree_skb(u->oob_skb); + u->oob_skb = NULL; + } #endif wake_up_interruptible_all(&u->peer_wait); @@ -2186,9 +2189,13 @@ static int queue_oob(struct socket *sock, struct msghdr *msg, struct sock *other } maybe_add_creds(skb, sock, other); + skb_get(skb); + scm_stat_add(other, skb); spin_lock(&other->sk_receive_queue.lock); + if (ousk->oob_skb) + consume_skb(ousk->oob_skb); WRITE_ONCE(ousk->oob_skb, skb); __skb_queue_tail(&other->sk_receive_queue, skb); spin_unlock(&other->sk_receive_queue.lock); @@ -2592,6 +2599,8 @@ static int unix_stream_recv_urg(struct unix_stream_read_state *state) if (!(state->flags & MSG_PEEK)) WRITE_ONCE(u->oob_skb, NULL); + else + skb_get(oob_skb); spin_unlock(&sk->sk_receive_queue.lock); unix_state_unlock(sk); @@ -2601,6 +2610,8 @@ static int unix_stream_recv_urg(struct unix_stream_read_state *state) if (!(state->flags & MSG_PEEK)) UNIXCB(oob_skb).consumed += 1; + consume_skb(oob_skb); + mutex_unlock(&u->iolock); if (chunk < 0) @@ -2628,10 +2639,12 @@ static struct sk_buff *manage_oob(struct sk_buff *skb, struct sock *sk, if (copied) { skb = NULL; } else if (!(flags & MSG_PEEK)) { - WRITE_ONCE(u->oob_skb, NULL); - - if (!sock_flag(sk, SOCK_URGINLINE)) { + if (sock_flag(sk, SOCK_URGINLINE)) { + WRITE_ONCE(u->oob_skb, NULL); + consume_skb(skb); + } else { __skb_unlink(skb, &sk->sk_receive_queue); + WRITE_ONCE(u->oob_skb, NULL); unlinked_skb = skb; skb = skb_peek(&sk->sk_receive_queue); } @@ -2642,7 +2655,10 @@ static struct sk_buff *manage_oob(struct sk_buff *skb, struct sock *sk, spin_unlock(&sk->sk_receive_queue.lock); - kfree_skb(unlinked_skb); + if (unlinked_skb) { + WARN_ON_ONCE(skb_unref(unlinked_skb)); + kfree_skb(unlinked_skb); + } } return skb; } @@ -2685,6 +2701,7 @@ static int unix_stream_read_skb(struct sock *sk, skb_read_actor_t recv_actor) unix_state_unlock(sk); if (drop) { + WARN_ON_ONCE(skb_unref(skb)); kfree_skb(skb); return -EAGAIN; } diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 0068e758be4d..06d94ad999e9 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -337,6 +337,18 @@ static bool unix_vertex_dead(struct unix_vertex *vertex) return true; } +static void unix_collect_queue(struct unix_sock *u, struct sk_buff_head *hitlist) +{ + skb_queue_splice_init(&u->sk.sk_receive_queue, hitlist); + +#if IS_ENABLED(CONFIG_AF_UNIX_OOB) + if (u->oob_skb) { + WARN_ON_ONCE(skb_unref(u->oob_skb)); + u->oob_skb = NULL; + } +#endif +} + static void unix_collect_skb(struct list_head *scc, struct sk_buff_head *hitlist) { struct unix_vertex *vertex; @@ -359,11 +371,11 @@ static void unix_collect_skb(struct list_head *scc, struct sk_buff_head *hitlist struct sk_buff_head *embryo_queue = &skb->sk->sk_receive_queue; spin_lock(&embryo_queue->lock); - skb_queue_splice_init(embryo_queue, hitlist); + unix_collect_queue(unix_sk(skb->sk), hitlist); spin_unlock(&embryo_queue->lock); } } else { - skb_queue_splice_init(queue, hitlist); + unix_collect_queue(u, hitlist); } spin_unlock(&queue->lock); -- Gitee From 03c3661abb8855a6c8d904b99a7838a65c38511e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:52 +0800 Subject: [PATCH 0505/1421] Revert "af_unix: Define locking order for U_RECVQ_LOCK_EMBRYO in unix_collect_skb()." This reverts commit 36ed66b800486d3b6b2e654d11d76e42d7cf0c39. --- net/unix/af_unix.c | 21 --------------------- net/unix/garbage.c | 8 +++++++- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 7546654f8273..a6f0cc635f4d 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -145,25 +145,6 @@ static int unix_state_lock_cmp_fn(const struct lockdep_map *_a, /* unix_state_double_lock(): ascending address order. */ return cmp_ptr(a, b); } - -static int unix_recvq_lock_cmp_fn(const struct lockdep_map *_a, - const struct lockdep_map *_b) -{ - const struct sock *a, *b; - - a = container_of(_a, struct sock, sk_receive_queue.lock.dep_map); - b = container_of(_b, struct sock, sk_receive_queue.lock.dep_map); - - /* unix_collect_skb(): listener -> embryo order. */ - if (a->sk_state == TCP_LISTEN && unix_sk(b)->listener == a) - return -1; - - /* Should never happen. Just to be symmetric. */ - if (b->sk_state == TCP_LISTEN && unix_sk(a)->listener == b) - return 1; - - return 0; -} #endif static unsigned int unix_unbound_hash(struct sock *sk) @@ -1017,8 +998,6 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern, sk->sk_write_space = unix_write_space; sk->sk_max_ack_backlog = READ_ONCE(net->unx.sysctl_max_dgram_qlen); sk->sk_destruct = unix_sock_destructor; - lock_set_cmp_fn(&sk->sk_receive_queue.lock, unix_recvq_lock_cmp_fn, NULL); - u = unix_sk(sk); u->listener = NULL; u->vertex = NULL; diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 06d94ad999e9..23efb78fe9ef 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -337,6 +337,11 @@ static bool unix_vertex_dead(struct unix_vertex *vertex) return true; } +enum unix_recv_queue_lock_class { + U_RECVQ_LOCK_NORMAL, + U_RECVQ_LOCK_EMBRYO, +}; + static void unix_collect_queue(struct unix_sock *u, struct sk_buff_head *hitlist) { skb_queue_splice_init(&u->sk.sk_receive_queue, hitlist); @@ -370,7 +375,8 @@ static void unix_collect_skb(struct list_head *scc, struct sk_buff_head *hitlist skb_queue_walk(queue, skb) { struct sk_buff_head *embryo_queue = &skb->sk->sk_receive_queue; - spin_lock(&embryo_queue->lock); + /* listener -> embryo order, the inversion never happens. */ + spin_lock_nested(&embryo_queue->lock, U_RECVQ_LOCK_EMBRYO); unix_collect_queue(unix_sk(skb->sk), hitlist); spin_unlock(&embryo_queue->lock); } -- Gitee From 64f5571baae278c24789a2293833fbcf7a8288ff Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:52 +0800 Subject: [PATCH 0506/1421] Revert "af_unix: Define locking order for U_LOCK_SECOND in unix_state_double_lock()." This reverts commit 9ff9283fa3e6127b71c0a63dd98df20caa96e36c. --- net/unix/af_unix.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index a6f0cc635f4d..4f839d687c1e 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -133,18 +133,6 @@ static int unix_table_lock_cmp_fn(const struct lockdep_map *a, { return cmp_ptr(a, b); } - -static int unix_state_lock_cmp_fn(const struct lockdep_map *_a, - const struct lockdep_map *_b) -{ - const struct unix_sock *a, *b; - - a = container_of(_a, struct unix_sock, lock.dep_map); - b = container_of(_b, struct unix_sock, lock.dep_map); - - /* unix_state_double_lock(): ascending address order. */ - return cmp_ptr(a, b); -} #endif static unsigned int unix_unbound_hash(struct sock *sk) @@ -1004,7 +992,6 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern, u->path.dentry = NULL; u->path.mnt = NULL; spin_lock_init(&u->lock); - lock_set_cmp_fn(&u->lock, unix_state_lock_cmp_fn, NULL); mutex_init(&u->iolock); /* single task reading lock */ mutex_init(&u->bindlock); /* single task binding lock */ init_waitqueue_head(&u->peer_wait); @@ -1353,12 +1340,11 @@ static void unix_state_double_lock(struct sock *sk1, struct sock *sk2) unix_state_lock(sk1); return; } - if (sk1 > sk2) swap(sk1, sk2); unix_state_lock(sk1); - unix_state_lock(sk2); + unix_state_lock_nested(sk2, U_LOCK_SECOND); } static void unix_state_double_unlock(struct sock *sk1, struct sock *sk2) -- Gitee From 3be59e7a7ba00ac03e7139957ec035038ec85853 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:52 +0800 Subject: [PATCH 0507/1421] Revert "af_unix: Define locking order for unix_table_double_lock()." This reverts commit b9651a7ceed7bbe7bf3e963025461926b40e85c1. --- net/unix/af_unix.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 4f839d687c1e..236a2cd2bc93 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -125,15 +125,6 @@ static spinlock_t bsd_socket_locks[UNIX_HASH_SIZE / 2]; * hash table is protected with spinlock. * each socket state is protected by separate spinlock. */ -#ifdef CONFIG_PROVE_LOCKING -#define cmp_ptr(l, r) (((l) > (r)) - ((l) < (r))) - -static int unix_table_lock_cmp_fn(const struct lockdep_map *a, - const struct lockdep_map *b) -{ - return cmp_ptr(a, b); -} -#endif static unsigned int unix_unbound_hash(struct sock *sk) { @@ -176,7 +167,7 @@ static void unix_table_double_lock(struct net *net, swap(hash1, hash2); spin_lock(&net->unx.table.locks[hash1]); - spin_lock(&net->unx.table.locks[hash2]); + spin_lock_nested(&net->unx.table.locks[hash2], SINGLE_DEPTH_NESTING); } static void unix_table_double_unlock(struct net *net, @@ -3607,7 +3598,6 @@ static int __net_init unix_net_init(struct net *net) for (i = 0; i < UNIX_HASH_SIZE; i++) { spin_lock_init(&net->unx.table.locks[i]); - lock_set_cmp_fn(&net->unx.table.locks[i], unix_table_lock_cmp_fn, NULL); INIT_HLIST_HEAD(&net->unx.table.buckets[i]); } -- Gitee From 97151ac416b26e296e3425cc903f94855c12d6b1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:52 +0800 Subject: [PATCH 0508/1421] Revert "platform/x86: ideapad-laptop: use usleep_range() for EC polling" This reverts commit 7ed9706d4a0bfdb0b0256f36de0af59ee540cd98. --- drivers/platform/x86/ideapad-laptop.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index e84fcb444d87..db8256cde34a 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -266,20 +265,6 @@ static void ideapad_shared_exit(struct ideapad_private *priv) */ #define IDEAPAD_EC_TIMEOUT 200 /* in ms */ -/* - * Some models (e.g., ThinkBook since 2024) have a low tolerance for being - * polled too frequently. Doing so may break the state machine in the EC, - * resulting in a hard shutdown. - * - * It is also observed that frequent polls may disturb the ongoing operation - * and notably delay the availability of EC response. - * - * These values are used as the delay before the first poll and the interval - * between subsequent polls to solve the above issues. - */ -#define IDEAPAD_EC_POLL_MIN_US 150 -#define IDEAPAD_EC_POLL_MAX_US 300 - static int eval_int(acpi_handle handle, const char *name, unsigned long *res) { unsigned long long result; @@ -396,7 +381,7 @@ static int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *da end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1; while (time_before(jiffies, end_jiffies)) { - usleep_range(IDEAPAD_EC_POLL_MIN_US, IDEAPAD_EC_POLL_MAX_US); + schedule(); err = eval_vpcr(handle, 1, &val); if (err) @@ -427,7 +412,7 @@ static int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long dat end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1; while (time_before(jiffies, end_jiffies)) { - usleep_range(IDEAPAD_EC_POLL_MIN_US, IDEAPAD_EC_POLL_MAX_US); + schedule(); err = eval_vpcr(handle, 1, &val); if (err) -- Gitee From 007d4143d13a3e0a031c211f095ded66a4027120 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:52 +0800 Subject: [PATCH 0509/1421] Revert "platform/x86: ideapad-laptop: move ACPI helpers from header to source file" This reverts commit 27977f6b68a445a5fddc003a8c6873d3f7879846. --- drivers/platform/x86/ideapad-laptop.c | 136 ------------------------- drivers/platform/x86/ideapad-laptop.h | 139 ++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 136 deletions(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index db8256cde34a..3d23c4f90842 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -87,34 +86,6 @@ enum { SALS_FNLOCK_OFF = 0xf, }; -enum { - VPCCMD_R_VPC1 = 0x10, - VPCCMD_R_BL_MAX, - VPCCMD_R_BL, - VPCCMD_W_BL, - VPCCMD_R_WIFI, - VPCCMD_W_WIFI, - VPCCMD_R_BT, - VPCCMD_W_BT, - VPCCMD_R_BL_POWER, - VPCCMD_R_NOVO, - VPCCMD_R_VPC2, - VPCCMD_R_TOUCHPAD, - VPCCMD_W_TOUCHPAD, - VPCCMD_R_CAMERA, - VPCCMD_W_CAMERA, - VPCCMD_R_3G, - VPCCMD_W_3G, - VPCCMD_R_ODD, /* 0x21 */ - VPCCMD_W_FAN, - VPCCMD_R_RF, - VPCCMD_W_RF, - VPCCMD_W_YMC = 0x2A, - VPCCMD_R_FAN = 0x2B, - VPCCMD_R_SPECIAL_BUTTONS = 0x31, - VPCCMD_W_BL_POWER = 0x33, -}; - /* * These correspond to the number of supported states - 1 * Future keyboard types may need a new system, if there's a collision @@ -263,7 +234,6 @@ static void ideapad_shared_exit(struct ideapad_private *priv) /* * ACPI Helpers */ -#define IDEAPAD_EC_TIMEOUT 200 /* in ms */ static int eval_int(acpi_handle handle, const char *name, unsigned long *res) { @@ -279,29 +249,6 @@ static int eval_int(acpi_handle handle, const char *name, unsigned long *res) return 0; } -static int eval_int_with_arg(acpi_handle handle, const char *name, unsigned long arg, - unsigned long *res) -{ - struct acpi_object_list params; - unsigned long long result; - union acpi_object in_obj; - acpi_status status; - - params.count = 1; - params.pointer = &in_obj; - in_obj.type = ACPI_TYPE_INTEGER; - in_obj.integer.value = arg; - - status = acpi_evaluate_integer(handle, (char *)name, ¶ms, &result); - if (ACPI_FAILURE(status)) - return -EIO; - - if (res) - *res = result; - - return 0; -} - static int exec_simple_method(acpi_handle handle, const char *name, unsigned long arg) { acpi_status status = acpi_execute_simple_method(handle, (char *)name, arg); @@ -344,89 +291,6 @@ static int eval_dytc(acpi_handle handle, unsigned long cmd, unsigned long *res) return eval_int_with_arg(handle, "DYTC", cmd, res); } -static int eval_vpcr(acpi_handle handle, unsigned long cmd, unsigned long *res) -{ - return eval_int_with_arg(handle, "VPCR", cmd, res); -} - -static int eval_vpcw(acpi_handle handle, unsigned long cmd, unsigned long data) -{ - struct acpi_object_list params; - union acpi_object in_obj[2]; - acpi_status status; - - params.count = 2; - params.pointer = in_obj; - in_obj[0].type = ACPI_TYPE_INTEGER; - in_obj[0].integer.value = cmd; - in_obj[1].type = ACPI_TYPE_INTEGER; - in_obj[1].integer.value = data; - - status = acpi_evaluate_object(handle, "VPCW", ¶ms, NULL); - if (ACPI_FAILURE(status)) - return -EIO; - - return 0; -} - -static int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *data) -{ - unsigned long end_jiffies, val; - int err; - - err = eval_vpcw(handle, 1, cmd); - if (err) - return err; - - end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1; - - while (time_before(jiffies, end_jiffies)) { - schedule(); - - err = eval_vpcr(handle, 1, &val); - if (err) - return err; - - if (val == 0) - return eval_vpcr(handle, 0, data); - } - - acpi_handle_err(handle, "timeout in %s\n", __func__); - - return -ETIMEDOUT; -} - -static int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long data) -{ - unsigned long end_jiffies, val; - int err; - - err = eval_vpcw(handle, 0, data); - if (err) - return err; - - err = eval_vpcw(handle, 1, cmd); - if (err) - return err; - - end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1; - - while (time_before(jiffies, end_jiffies)) { - schedule(); - - err = eval_vpcr(handle, 1, &val); - if (err) - return err; - - if (val == 0) - return 0; - } - - acpi_handle_err(handle, "timeout in %s\n", __func__); - - return -ETIMEDOUT; -} - /* * debugfs */ diff --git a/drivers/platform/x86/ideapad-laptop.h b/drivers/platform/x86/ideapad-laptop.h index 1e52f2aa0aac..948cc61800a9 100644 --- a/drivers/platform/x86/ideapad-laptop.h +++ b/drivers/platform/x86/ideapad-laptop.h @@ -9,6 +9,9 @@ #ifndef _IDEAPAD_LAPTOP_H_ #define _IDEAPAD_LAPTOP_H_ +#include +#include +#include #include enum ideapad_laptop_notifier_actions { @@ -19,4 +22,140 @@ int ideapad_laptop_register_notifier(struct notifier_block *nb); int ideapad_laptop_unregister_notifier(struct notifier_block *nb); void ideapad_laptop_call_notifier(unsigned long action, void *data); +enum { + VPCCMD_R_VPC1 = 0x10, + VPCCMD_R_BL_MAX, + VPCCMD_R_BL, + VPCCMD_W_BL, + VPCCMD_R_WIFI, + VPCCMD_W_WIFI, + VPCCMD_R_BT, + VPCCMD_W_BT, + VPCCMD_R_BL_POWER, + VPCCMD_R_NOVO, + VPCCMD_R_VPC2, + VPCCMD_R_TOUCHPAD, + VPCCMD_W_TOUCHPAD, + VPCCMD_R_CAMERA, + VPCCMD_W_CAMERA, + VPCCMD_R_3G, + VPCCMD_W_3G, + VPCCMD_R_ODD, /* 0x21 */ + VPCCMD_W_FAN, + VPCCMD_R_RF, + VPCCMD_W_RF, + VPCCMD_W_YMC = 0x2A, + VPCCMD_R_FAN = 0x2B, + VPCCMD_R_SPECIAL_BUTTONS = 0x31, + VPCCMD_W_BL_POWER = 0x33, +}; + +static inline int eval_int_with_arg(acpi_handle handle, const char *name, unsigned long arg, unsigned long *res) +{ + struct acpi_object_list params; + unsigned long long result; + union acpi_object in_obj; + acpi_status status; + + params.count = 1; + params.pointer = &in_obj; + in_obj.type = ACPI_TYPE_INTEGER; + in_obj.integer.value = arg; + + status = acpi_evaluate_integer(handle, (char *)name, ¶ms, &result); + if (ACPI_FAILURE(status)) + return -EIO; + + if (res) + *res = result; + + return 0; +} + +static inline int eval_vpcr(acpi_handle handle, unsigned long cmd, unsigned long *res) +{ + return eval_int_with_arg(handle, "VPCR", cmd, res); +} + +static inline int eval_vpcw(acpi_handle handle, unsigned long cmd, unsigned long data) +{ + struct acpi_object_list params; + union acpi_object in_obj[2]; + acpi_status status; + + params.count = 2; + params.pointer = in_obj; + in_obj[0].type = ACPI_TYPE_INTEGER; + in_obj[0].integer.value = cmd; + in_obj[1].type = ACPI_TYPE_INTEGER; + in_obj[1].integer.value = data; + + status = acpi_evaluate_object(handle, "VPCW", ¶ms, NULL); + if (ACPI_FAILURE(status)) + return -EIO; + + return 0; +} + +#define IDEAPAD_EC_TIMEOUT 200 /* in ms */ + +static inline int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *data) +{ + unsigned long end_jiffies, val; + int err; + + err = eval_vpcw(handle, 1, cmd); + if (err) + return err; + + end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1; + + while (time_before(jiffies, end_jiffies)) { + schedule(); + + err = eval_vpcr(handle, 1, &val); + if (err) + return err; + + if (val == 0) + return eval_vpcr(handle, 0, data); + } + + acpi_handle_err(handle, "timeout in %s\n", __func__); + + return -ETIMEDOUT; +} + +static inline int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long data) +{ + unsigned long end_jiffies, val; + int err; + + err = eval_vpcw(handle, 0, data); + if (err) + return err; + + err = eval_vpcw(handle, 1, cmd); + if (err) + return err; + + end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1; + + while (time_before(jiffies, end_jiffies)) { + schedule(); + + err = eval_vpcr(handle, 1, &val); + if (err) + return err; + + if (val == 0) + return 0; + } + + acpi_handle_err(handle, "timeout in %s\n", __func__); + + return -ETIMEDOUT; +} + +#undef IDEAPAD_EC_TIMEOUT #endif /* !_IDEAPAD_LAPTOP_H_ */ -- Gitee From c2f1dc543c3b7f5238ef0b7403a45c9a988eec6e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:53 +0800 Subject: [PATCH 0510/1421] Revert "platform/x86: ideapad-laptop: move ymc_trigger_ec from lenovo-ymc" This reverts commit 6813a94bc57beadb236bdf696df85a2afd13b1f0. --- drivers/platform/x86/Kconfig | 1 - drivers/platform/x86/ideapad-laptop.c | 49 ---------------------- drivers/platform/x86/ideapad-laptop.h | 4 -- drivers/platform/x86/lenovo-ymc.c | 60 ++++++++++++++++++++++++++- 4 files changed, 58 insertions(+), 56 deletions(-) diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index 1fd57eb86766..07eea525091b 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -466,7 +466,6 @@ config LENOVO_YMC tristate "Lenovo Yoga Tablet Mode Control" depends on ACPI_WMI depends on INPUT - depends on IDEAPAD_LAPTOP select INPUT_SPARSEKMAP help This driver maps the Tablet Mode Control switch to SW_TABLET_MODE input diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index 3d23c4f90842..e21b4dcfe1dd 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -145,7 +145,6 @@ struct ideapad_private { bool touchpad_ctrl_via_ec : 1; bool ctrl_ps2_aux_port : 1; bool usb_charging : 1; - bool ymc_ec_trigger : 1; } features; struct { bool initialized; @@ -189,12 +188,6 @@ MODULE_PARM_DESC(touchpad_ctrl_via_ec, "Enable registering a 'touchpad' sysfs-attribute which can be used to manually " "tell the EC to enable/disable the touchpad. This may not work on all models."); -static bool ymc_ec_trigger __read_mostly; -module_param(ymc_ec_trigger, bool, 0444); -MODULE_PARM_DESC(ymc_ec_trigger, - "Enable EC triggering work-around to force emitting tablet mode events. " - "If you need this please report this to: platform-driver-x86@vger.kernel.org"); - /* * shared data */ @@ -1508,50 +1501,10 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_ priv->r_touchpad_val = value; } -static const struct dmi_system_id ymc_ec_trigger_quirk_dmi_table[] = { - { - /* Lenovo Yoga 7 14ARB7 */ - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "82QF"), - }, - }, - { - /* Lenovo Yoga 7 14ACN6 */ - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "82N7"), - }, - }, - { } -}; - -static void ideapad_laptop_trigger_ec(void) -{ - struct ideapad_private *priv; - int ret; - - guard(mutex)(&ideapad_shared_mutex); - - priv = ideapad_shared; - if (!priv) - return; - - if (!priv->features.ymc_ec_trigger) - return; - - ret = write_ec_cmd(priv->adev->handle, VPCCMD_W_YMC, 1); - if (ret) - dev_warn(&priv->platform_device->dev, "Could not write YMC: %d\n", ret); -} - static int ideapad_laptop_nb_notify(struct notifier_block *nb, unsigned long action, void *data) { switch (action) { - case IDEAPAD_LAPTOP_YMC_EVENT: - ideapad_laptop_trigger_ec(); - break; } return 0; @@ -1717,8 +1670,6 @@ static void ideapad_check_features(struct ideapad_private *priv) priv->features.ctrl_ps2_aux_port = ctrl_ps2_aux_port || dmi_check_system(ctrl_ps2_aux_port_list); priv->features.touchpad_ctrl_via_ec = touchpad_ctrl_via_ec; - priv->features.ymc_ec_trigger = - ymc_ec_trigger || dmi_check_system(ymc_ec_trigger_quirk_dmi_table); if (!read_ec_data(handle, VPCCMD_R_FAN, &val)) priv->features.fan_mode = true; diff --git a/drivers/platform/x86/ideapad-laptop.h b/drivers/platform/x86/ideapad-laptop.h index 948cc61800a9..3eb0dcd6bf7b 100644 --- a/drivers/platform/x86/ideapad-laptop.h +++ b/drivers/platform/x86/ideapad-laptop.h @@ -14,10 +14,6 @@ #include #include -enum ideapad_laptop_notifier_actions { - IDEAPAD_LAPTOP_YMC_EVENT, -}; - int ideapad_laptop_register_notifier(struct notifier_block *nb); int ideapad_laptop_unregister_notifier(struct notifier_block *nb); void ideapad_laptop_call_notifier(unsigned long action, void *data); diff --git a/drivers/platform/x86/lenovo-ymc.c b/drivers/platform/x86/lenovo-ymc.c index bd9f95404c7c..ef2c267ab485 100644 --- a/drivers/platform/x86/lenovo-ymc.c +++ b/drivers/platform/x86/lenovo-ymc.c @@ -20,10 +20,32 @@ #define LENOVO_YMC_QUERY_INSTANCE 0 #define LENOVO_YMC_QUERY_METHOD 0x01 +static bool ec_trigger __read_mostly; +module_param(ec_trigger, bool, 0444); +MODULE_PARM_DESC(ec_trigger, "Enable EC triggering work-around to force emitting tablet mode events"); + static bool force; module_param(force, bool, 0444); MODULE_PARM_DESC(force, "Force loading on boards without a convertible DMI chassis-type"); +static const struct dmi_system_id ec_trigger_quirk_dmi_table[] = { + { + /* Lenovo Yoga 7 14ARB7 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "82QF"), + }, + }, + { + /* Lenovo Yoga 7 14ACN6 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "82N7"), + }, + }, + { } +}; + static const struct dmi_system_id allowed_chasis_types_dmi_table[] = { { .matches = { @@ -40,8 +62,21 @@ static const struct dmi_system_id allowed_chasis_types_dmi_table[] = { struct lenovo_ymc_private { struct input_dev *input_dev; + struct acpi_device *ec_acpi_dev; }; +static void lenovo_ymc_trigger_ec(struct wmi_device *wdev, struct lenovo_ymc_private *priv) +{ + int err; + + if (!priv->ec_acpi_dev) + return; + + err = write_ec_cmd(priv->ec_acpi_dev->handle, VPCCMD_W_YMC, 1); + if (err) + dev_warn(&wdev->dev, "Could not write YMC: %d\n", err); +} + static const struct key_entry lenovo_ymc_keymap[] = { /* Ignore the uninitialized state */ { KE_IGNORE, 0x00 }, @@ -92,9 +127,11 @@ static void lenovo_ymc_notify(struct wmi_device *wdev, union acpi_object *data) free_obj: kfree(obj); - ideapad_laptop_call_notifier(IDEAPAD_LAPTOP_YMC_EVENT, &code); + lenovo_ymc_trigger_ec(wdev, priv); } +static void acpi_dev_put_helper(void *p) { acpi_dev_put(p); } + static int lenovo_ymc_probe(struct wmi_device *wdev, const void *ctx) { struct lenovo_ymc_private *priv; @@ -108,10 +145,29 @@ static int lenovo_ymc_probe(struct wmi_device *wdev, const void *ctx) return -ENODEV; } + ec_trigger |= dmi_check_system(ec_trigger_quirk_dmi_table); + priv = devm_kzalloc(&wdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; + if (ec_trigger) { + pr_debug("Lenovo YMC enable EC triggering.\n"); + priv->ec_acpi_dev = acpi_dev_get_first_match_dev("VPC2004", NULL, -1); + + if (!priv->ec_acpi_dev) { + dev_err(&wdev->dev, "Could not find EC ACPI device.\n"); + return -ENODEV; + } + err = devm_add_action_or_reset(&wdev->dev, + acpi_dev_put_helper, priv->ec_acpi_dev); + if (err) { + dev_err(&wdev->dev, + "Could not clean up EC ACPI device: %d\n", err); + return err; + } + } + input_dev = devm_input_allocate_device(&wdev->dev); if (!input_dev) return -ENOMEM; @@ -138,6 +194,7 @@ static int lenovo_ymc_probe(struct wmi_device *wdev, const void *ctx) dev_set_drvdata(&wdev->dev, priv); /* Report the state for the first time on probe */ + lenovo_ymc_trigger_ec(wdev, priv); lenovo_ymc_notify(wdev, NULL); return 0; } @@ -162,4 +219,3 @@ module_wmi_driver(lenovo_ymc_driver); MODULE_AUTHOR("Gergo Koteles "); MODULE_DESCRIPTION("Lenovo Yoga Mode Control driver"); MODULE_LICENSE("GPL"); -MODULE_IMPORT_NS(IDEAPAD_LAPTOP); -- Gitee From 770a61c8b9b8891f456ae2cdde992213404e5db8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:53 +0800 Subject: [PATCH 0511/1421] Revert "platform/x86: ideapad-laptop: introduce a generic notification chain" This reverts commit 004942161332e84a4f5fa60af72a3500b3d9c6f2. --- drivers/platform/x86/ideapad-laptop.c | 37 --------------------------- drivers/platform/x86/ideapad-laptop.h | 5 ---- 2 files changed, 42 deletions(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index e21b4dcfe1dd..50013af0537c 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -1501,39 +1501,6 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_ priv->r_touchpad_val = value; } -static int ideapad_laptop_nb_notify(struct notifier_block *nb, - unsigned long action, void *data) -{ - switch (action) { - } - - return 0; -} - -static struct notifier_block ideapad_laptop_notifier = { - .notifier_call = ideapad_laptop_nb_notify, -}; - -static BLOCKING_NOTIFIER_HEAD(ideapad_laptop_chain_head); - -int ideapad_laptop_register_notifier(struct notifier_block *nb) -{ - return blocking_notifier_chain_register(&ideapad_laptop_chain_head, nb); -} -EXPORT_SYMBOL_NS_GPL(ideapad_laptop_register_notifier, IDEAPAD_LAPTOP); - -int ideapad_laptop_unregister_notifier(struct notifier_block *nb) -{ - return blocking_notifier_chain_unregister(&ideapad_laptop_chain_head, nb); -} -EXPORT_SYMBOL_NS_GPL(ideapad_laptop_unregister_notifier, IDEAPAD_LAPTOP); - -void ideapad_laptop_call_notifier(unsigned long action, void *data) -{ - blocking_notifier_call_chain(&ideapad_laptop_chain_head, action, data); -} -EXPORT_SYMBOL_NS_GPL(ideapad_laptop_call_notifier, IDEAPAD_LAPTOP); - static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data) { struct ideapad_private *priv = data; @@ -1905,8 +1872,6 @@ static int ideapad_acpi_add(struct platform_device *pdev) if (err) goto shared_init_failed; - ideapad_laptop_register_notifier(&ideapad_laptop_notifier); - return 0; shared_init_failed: @@ -1938,8 +1903,6 @@ static void ideapad_acpi_remove(struct platform_device *pdev) struct ideapad_private *priv = dev_get_drvdata(&pdev->dev); int i; - ideapad_laptop_unregister_notifier(&ideapad_laptop_notifier); - ideapad_shared_exit(priv); acpi_remove_notify_handler(priv->adev->handle, diff --git a/drivers/platform/x86/ideapad-laptop.h b/drivers/platform/x86/ideapad-laptop.h index 3eb0dcd6bf7b..4498a96de597 100644 --- a/drivers/platform/x86/ideapad-laptop.h +++ b/drivers/platform/x86/ideapad-laptop.h @@ -12,11 +12,6 @@ #include #include #include -#include - -int ideapad_laptop_register_notifier(struct notifier_block *nb); -int ideapad_laptop_unregister_notifier(struct notifier_block *nb); -void ideapad_laptop_call_notifier(unsigned long action, void *data); enum { VPCCMD_R_VPC1 = 0x10, -- Gitee From 9e8af5e2975fa1a0041537c4fc1970eacb2505ff Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:53 +0800 Subject: [PATCH 0512/1421] Revert "dummycon: Trigger redraw when switching consoles with deferred takeover" This reverts commit 57af3b2bef61b007809c3adf5a05dda837218ef0. --- drivers/video/console/dummycon.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c index d99e1b3e4e5c..d701f2b51f5b 100644 --- a/drivers/video/console/dummycon.c +++ b/drivers/video/console/dummycon.c @@ -82,15 +82,6 @@ static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch) /* Redraw, so that we get putc(s) for output done while blanked */ return 1; } - -static bool dummycon_switch(struct vc_data *vc) -{ - /* - * Redraw, so that we get putc(s) for output done while switched - * away. Informs deferred consoles to take over the display. - */ - return true; -} #else static void dummycon_putc(struct vc_data *vc, int c, int ypos, int xpos) { } static void dummycon_putcs(struct vc_data *vc, const unsigned short *s, @@ -99,10 +90,6 @@ static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch) { return 0; } -static bool dummycon_switch(struct vc_data *vc) -{ - return false; -} #endif static const char *dummycon_startup(void) @@ -132,6 +119,11 @@ static bool dummycon_scroll(struct vc_data *vc, unsigned int top, return false; } +static bool dummycon_switch(struct vc_data *vc) +{ + return false; +} + /* * The console `switch' structure for the dummy console * -- Gitee From 1b6e38883ac2fb3584f15dd2cd0df239ecc69fcb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:53 +0800 Subject: [PATCH 0513/1421] Revert "tty: vt: make consw::con_switch() return a bool" This reverts commit e609ccbe91b529981c897748101c717cff745771. --- drivers/tty/vt/vt.c | 2 +- drivers/video/console/dummycon.c | 4 ++-- drivers/video/console/mdacon.c | 4 ++-- drivers/video/console/newport_con.c | 4 ++-- drivers/video/console/sticon.c | 4 ++-- drivers/video/console/vgacon.c | 4 ++-- drivers/video/fbdev/core/fbcon.c | 6 +++--- include/linux/console.h | 4 +--- 8 files changed, 15 insertions(+), 17 deletions(-) diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index c5ec7306aa71..a368c98c92be 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -962,7 +962,7 @@ void redraw_screen(struct vc_data *vc, int is_switch) } if (redraw) { - bool update; + int update; int old_was_color = vc->vc_can_do_color; set_origin(vc); diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c index d701f2b51f5b..6918014b0240 100644 --- a/drivers/video/console/dummycon.c +++ b/drivers/video/console/dummycon.c @@ -119,9 +119,9 @@ static bool dummycon_scroll(struct vc_data *vc, unsigned int top, return false; } -static bool dummycon_switch(struct vc_data *vc) +static int dummycon_switch(struct vc_data *vc) { - return false; + return 0; } /* diff --git a/drivers/video/console/mdacon.c b/drivers/video/console/mdacon.c index 26b41a8f36c8..1ddbb6cd5b0c 100644 --- a/drivers/video/console/mdacon.c +++ b/drivers/video/console/mdacon.c @@ -454,9 +454,9 @@ static void mdacon_clear(struct vc_data *c, unsigned int y, unsigned int x, scr_memsetw(dest, eattr, width * 2); } -static bool mdacon_switch(struct vc_data *c) +static int mdacon_switch(struct vc_data *c) { - return true; /* redrawing needed */ + return 1; /* redrawing needed */ } static int mdacon_blank(struct vc_data *c, int blank, int mode_switch) diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c index 63d96c4bbdcc..55c6106b3507 100644 --- a/drivers/video/console/newport_con.c +++ b/drivers/video/console/newport_con.c @@ -462,7 +462,7 @@ static void newport_cursor(struct vc_data *vc, int mode) } } -static bool newport_switch(struct vc_data *vc) +static int newport_switch(struct vc_data *vc) { static int logo_drawn = 0; @@ -476,7 +476,7 @@ static bool newport_switch(struct vc_data *vc) } } - return true; + return 1; } static int newport_blank(struct vc_data *c, int blank, int mode_switch) diff --git a/drivers/video/console/sticon.c b/drivers/video/console/sticon.c index 87900600eff1..d99c2a659bfd 100644 --- a/drivers/video/console/sticon.c +++ b/drivers/video/console/sticon.c @@ -310,9 +310,9 @@ static void sticon_clear(struct vc_data *conp, unsigned int sy, unsigned int sx, conp->vc_video_erase_char, font_data[conp->vc_num]); } -static bool sticon_switch(struct vc_data *conp) +static int sticon_switch(struct vc_data *conp) { - return true; /* needs refreshing */ + return 1; /* needs refreshing */ } static int sticon_blank(struct vc_data *c, int blank, int mode_switch) diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index bbc362db40c5..5b5d1c9ef488 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -585,7 +585,7 @@ static void vgacon_doresize(struct vc_data *c, raw_spin_unlock_irqrestore(&vga_lock, flags); } -static bool vgacon_switch(struct vc_data *c) +static int vgacon_switch(struct vc_data *c) { int x = c->vc_cols * VGA_FONTWIDTH; int y = c->vc_rows * c->vc_cell_height; @@ -614,7 +614,7 @@ static bool vgacon_switch(struct vc_data *c) vgacon_doresize(c, c->vc_cols, c->vc_rows); } - return false; /* Redrawing not needed */ + return 0; /* Redrawing not needed */ } static void vga_set_palette(struct vc_data *vc, const unsigned char *table) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 9d095fe03e18..c14dbb09341f 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -2072,7 +2072,7 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width, return 0; } -static bool fbcon_switch(struct vc_data *vc) +static int fbcon_switch(struct vc_data *vc) { struct fb_info *info, *old_info = NULL; struct fbcon_ops *ops; @@ -2194,9 +2194,9 @@ static bool fbcon_switch(struct vc_data *vc) vc->vc_origin + vc->vc_size_row * vc->vc_top, vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2); - return false; + return 0; } - return true; + return 1; } static void fbcon_generic_blank(struct vc_data *vc, struct fb_info *info, diff --git a/include/linux/console.h b/include/linux/console.h index 38571607065d..e06cee4923fe 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -42,8 +42,6 @@ enum vc_intensity; * @con_scroll: move lines from @top to @bottom in direction @dir by @lines. * Return true if no generic handling should be done. * Invoked by csi_M and printing to the console. - * @con_switch: notifier about the console switch; it is supposed to return - * true if a redraw is needed. * @con_set_palette: sets the palette of the console to @table (optional) * @con_scrolldelta: the contents of the console should be scrolled by @lines. * Invoked by user. (optional) @@ -62,7 +60,7 @@ struct consw { bool (*con_scroll)(struct vc_data *vc, unsigned int top, unsigned int bottom, enum con_scroll dir, unsigned int lines); - bool (*con_switch)(struct vc_data *vc); + int (*con_switch)(struct vc_data *vc); int (*con_blank)(struct vc_data *vc, int blank, int mode_switch); int (*con_font_set)(struct vc_data *vc, struct console_font *font, unsigned int vpitch, unsigned int flags); -- Gitee From 930a89a8ad6b023c07ad64a63a8ff0c63c759834 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:54 +0800 Subject: [PATCH 0514/1421] Revert "tty: vt: sanitize arguments of consw::con_clear()" This reverts commit 11c0872ed967f9798725fc620c9524cd160d9979. --- drivers/tty/vt/vt.c | 2 +- drivers/video/console/dummycon.c | 4 ++-- drivers/video/console/mdacon.c | 15 +++++++++----- drivers/video/console/newport_con.c | 6 +++--- drivers/video/console/sticon.c | 8 ++++---- drivers/video/console/vgacon.c | 4 ++-- drivers/video/fbdev/core/fbcon.c | 32 ++++++++++++----------------- include/linux/console.h | 5 ++--- 8 files changed, 37 insertions(+), 39 deletions(-) diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index a368c98c92be..83028ccf6e52 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -1582,7 +1582,7 @@ static void csi_X(struct vc_data *vc, unsigned int vpar) vc_uniscr_clear_line(vc, vc->state.x, count); scr_memsetw((unsigned short *)vc->vc_pos, vc->vc_video_erase_char, 2 * count); if (con_should_update(vc)) - vc->vc_sw->con_clear(vc, vc->state.y, vc->state.x, count); + vc->vc_sw->con_clear(vc, vc->state.y, vc->state.x, 1, count); vc->vc_need_wrap = 0; } diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c index 6918014b0240..9a19eb72a18b 100644 --- a/drivers/video/console/dummycon.c +++ b/drivers/video/console/dummycon.c @@ -108,8 +108,8 @@ static void dummycon_init(struct vc_data *vc, bool init) } static void dummycon_deinit(struct vc_data *vc) { } -static void dummycon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx, - unsigned int width) { } +static void dummycon_clear(struct vc_data *vc, int sy, int sx, int height, + int width) { } static void dummycon_cursor(struct vc_data *vc, int mode) { } static bool dummycon_scroll(struct vc_data *vc, unsigned int top, diff --git a/drivers/video/console/mdacon.c b/drivers/video/console/mdacon.c index 1ddbb6cd5b0c..c5b255c96879 100644 --- a/drivers/video/console/mdacon.c +++ b/drivers/video/console/mdacon.c @@ -442,18 +442,23 @@ static void mdacon_putcs(struct vc_data *c, const unsigned short *s, } } -static void mdacon_clear(struct vc_data *c, unsigned int y, unsigned int x, - unsigned int width) +static void mdacon_clear(struct vc_data *c, int y, int x, + int height, int width) { u16 *dest = mda_addr(x, y); u16 eattr = mda_convert_attr(c->vc_video_erase_char); - if (width <= 0) + if (width <= 0 || height <= 0) return; - scr_memsetw(dest, eattr, width * 2); + if (x==0 && width==mda_num_columns) { + scr_memsetw(dest, eattr, height*width*2); + } else { + for (; height > 0; height--, dest+=mda_num_columns) + scr_memsetw(dest, eattr, width*2); + } } - + static int mdacon_switch(struct vc_data *c) { return 1; /* redrawing needed */ diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c index 55c6106b3507..12c64ef47087 100644 --- a/drivers/video/console/newport_con.c +++ b/drivers/video/console/newport_con.c @@ -346,12 +346,12 @@ static void newport_deinit(struct vc_data *c) } } -static void newport_clear(struct vc_data *vc, unsigned int sy, unsigned int sx, - unsigned int width) +static void newport_clear(struct vc_data *vc, int sy, int sx, int height, + int width) { int xend = ((sx + width) << 3) - 1; int ystart = ((sy << 4) + topscan) & 0x3ff; - int yend = (((sy + 1) << 4) + topscan - 1) & 0x3ff; + int yend = (((sy + height) << 4) + topscan - 1) & 0x3ff; if (logo_active) return; diff --git a/drivers/video/console/sticon.c b/drivers/video/console/sticon.c index d99c2a659bfd..0bfeabc3f7c7 100644 --- a/drivers/video/console/sticon.c +++ b/drivers/video/console/sticon.c @@ -300,13 +300,13 @@ static void sticon_deinit(struct vc_data *c) sticon_set_def_font(i); } -static void sticon_clear(struct vc_data *conp, unsigned int sy, unsigned int sx, - unsigned int width) +static void sticon_clear(struct vc_data *conp, int sy, int sx, int height, + int width) { - if (!width) + if (!height || !width) return; - sti_clear(sticon_sti, sy, sx, 1, width, + sti_clear(sticon_sti, sy, sx, height, width, conp->vc_video_erase_char, font_data[conp->vc_num]); } diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 5b5d1c9ef488..490e157aebdd 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -1156,8 +1156,8 @@ static bool vgacon_scroll(struct vc_data *c, unsigned int t, unsigned int b, * The console `switch' structure for the VGA based console */ -static void vgacon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx, - unsigned int width) { } +static void vgacon_clear(struct vc_data *vc, int sy, int sx, int height, + int width) { } static void vgacon_putc(struct vc_data *vc, int c, int ypos, int xpos) { } static void vgacon_putcs(struct vc_data *vc, const unsigned short *s, int count, int ypos, int xpos) { } diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index c14dbb09341f..9f10a6e92e50 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -1240,8 +1240,8 @@ static void fbcon_deinit(struct vc_data *vc) * restriction is simplicity & efficiency at the moment. */ -static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx, - unsigned int height, unsigned int width) +static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height, + int width) { struct fb_info *info = fbcon_info_from_console(vc->vc_num); struct fbcon_ops *ops = info->fbcon_par; @@ -1280,12 +1280,6 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx, ops->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg); } -static void fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx, - unsigned int width) -{ - __fbcon_clear(vc, sy, sx, 1, width); -} - static void fbcon_putcs(struct vc_data *vc, const unsigned short *s, int count, int ypos, int xpos) { @@ -1773,7 +1767,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, case SCROLL_MOVE: fbcon_redraw_blit(vc, info, p, t, b - t - count, count); - __fbcon_clear(vc, b - count, 0, count, vc->vc_cols); + fbcon_clear(vc, b - count, 0, count, vc->vc_cols); scr_memsetw((unsigned short *) (vc->vc_origin + vc->vc_size_row * (b - count)), @@ -1796,7 +1790,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, b - t - count, vc->vc_cols); else goto redraw_up; - __fbcon_clear(vc, b - count, 0, count, vc->vc_cols); + fbcon_clear(vc, b - count, 0, count, vc->vc_cols); break; case SCROLL_PAN_REDRAW: @@ -1814,7 +1808,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, vc->vc_rows - b, b); } else fbcon_redraw_move(vc, p, t + count, b - t - count, t); - __fbcon_clear(vc, b - count, 0, count, vc->vc_cols); + fbcon_clear(vc, b - count, 0, count, vc->vc_cols); break; case SCROLL_PAN_MOVE: @@ -1837,14 +1831,14 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, b - t - count, vc->vc_cols); else goto redraw_up; - __fbcon_clear(vc, b - count, 0, count, vc->vc_cols); + fbcon_clear(vc, b - count, 0, count, vc->vc_cols); break; case SCROLL_REDRAW: redraw_up: fbcon_redraw(vc, t, b - t - count, count * vc->vc_cols); - __fbcon_clear(vc, b - count, 0, count, vc->vc_cols); + fbcon_clear(vc, b - count, 0, count, vc->vc_cols); scr_memsetw((unsigned short *) (vc->vc_origin + vc->vc_size_row * (b - count)), @@ -1861,7 +1855,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, case SCROLL_MOVE: fbcon_redraw_blit(vc, info, p, b - 1, b - t - count, -count); - __fbcon_clear(vc, t, 0, count, vc->vc_cols); + fbcon_clear(vc, t, 0, count, vc->vc_cols); scr_memsetw((unsigned short *) (vc->vc_origin + vc->vc_size_row * t), @@ -1884,7 +1878,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, b - t - count, vc->vc_cols); else goto redraw_down; - __fbcon_clear(vc, t, 0, count, vc->vc_cols); + fbcon_clear(vc, t, 0, count, vc->vc_cols); break; case SCROLL_PAN_MOVE: @@ -1906,7 +1900,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, b - t - count, vc->vc_cols); else goto redraw_down; - __fbcon_clear(vc, t, 0, count, vc->vc_cols); + fbcon_clear(vc, t, 0, count, vc->vc_cols); break; case SCROLL_PAN_REDRAW: @@ -1923,14 +1917,14 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, fbcon_redraw_move(vc, p, count, t, 0); } else fbcon_redraw_move(vc, p, t, b - t - count, t + count); - __fbcon_clear(vc, t, 0, count, vc->vc_cols); + fbcon_clear(vc, t, 0, count, vc->vc_cols); break; case SCROLL_REDRAW: redraw_down: fbcon_redraw(vc, b - 1, b - t - count, -count * vc->vc_cols); - __fbcon_clear(vc, t, 0, count, vc->vc_cols); + fbcon_clear(vc, t, 0, count, vc->vc_cols); scr_memsetw((unsigned short *) (vc->vc_origin + vc->vc_size_row * t), @@ -2209,7 +2203,7 @@ static void fbcon_generic_blank(struct vc_data *vc, struct fb_info *info, oldc = vc->vc_video_erase_char; vc->vc_video_erase_char &= charmask; - __fbcon_clear(vc, 0, 0, vc->vc_rows, vc->vc_cols); + fbcon_clear(vc, 0, 0, vc->vc_rows, vc->vc_cols); vc->vc_video_erase_char = oldc; } } diff --git a/include/linux/console.h b/include/linux/console.h index e06cee4923fe..4efe76ac56d7 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -38,7 +38,6 @@ enum vc_intensity; * * @con_init: initialize the console on @vc. @init is true for the very first * call on this @vc. - * @con_clear: erase @count characters at [@x, @y] on @vc. @count >= 1. * @con_scroll: move lines from @top to @bottom in direction @dir by @lines. * Return true if no generic handling should be done. * Invoked by csi_M and printing to the console. @@ -51,8 +50,8 @@ struct consw { const char *(*con_startup)(void); void (*con_init)(struct vc_data *vc, bool init); void (*con_deinit)(struct vc_data *vc); - void (*con_clear)(struct vc_data *vc, unsigned int y, - unsigned int x, unsigned int count); + void (*con_clear)(struct vc_data *vc, int sy, int sx, int height, + int width); void (*con_putc)(struct vc_data *vc, int c, int ypos, int xpos); void (*con_putcs)(struct vc_data *vc, const unsigned short *s, int count, int ypos, int xpos); -- Gitee From 4fa20e16a80e16378620b5d4e6dad256e47e2973 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:54 +0800 Subject: [PATCH 0515/1421] Revert "tty: vt: make init parameter of consw::con_init() a bool" This reverts commit c169fcaa80551a73ba9a73891d8a3a8b5e00d5a8. --- drivers/tty/vt/vt.c | 8 ++++---- drivers/video/console/dummycon.c | 2 +- drivers/video/console/mdacon.c | 2 +- drivers/video/console/newport_con.c | 2 +- drivers/video/console/sticon.c | 2 +- drivers/video/console/vgacon.c | 4 ++-- drivers/video/fbdev/core/fbcon.c | 2 +- include/linux/console.h | 4 +--- 8 files changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 83028ccf6e52..6bd1a7785e88 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -999,7 +999,7 @@ int vc_cons_allocated(unsigned int i) return (i < MAX_NR_CONSOLES && vc_cons[i].d); } -static void visual_init(struct vc_data *vc, int num, bool init) +static void visual_init(struct vc_data *vc, int num, int init) { /* ++Geert: vc->vc_sw->con_init determines console size */ if (vc->vc_sw) @@ -1083,7 +1083,7 @@ int vc_allocate(unsigned int currcons) /* return 0 on success */ vc->port.ops = &vc_port_ops; INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); - visual_init(vc, currcons, true); + visual_init(vc, currcons, 1); if (!*vc->uni_pagedict_loc) con_set_default_unimap(vc); @@ -3474,7 +3474,7 @@ static int __init con_init(void) vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); tty_port_init(&vc->port); - visual_init(vc, currcons, true); + visual_init(vc, currcons, 1); /* Assuming vc->vc_{cols,rows,screenbuf_size} are sane here. */ vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); vc_init(vc, currcons || !vc->vc_sw->con_save_screen); @@ -3642,7 +3642,7 @@ static int do_bind_con_driver(const struct consw *csw, int first, int last, old_was_color = vc->vc_can_do_color; vc->vc_sw->con_deinit(vc); vc->vc_origin = (unsigned long)vc->vc_screenbuf; - visual_init(vc, i, false); + visual_init(vc, i, 0); set_origin(vc); update_attr(vc); diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c index 9a19eb72a18b..f1711b2f9ff0 100644 --- a/drivers/video/console/dummycon.c +++ b/drivers/video/console/dummycon.c @@ -97,7 +97,7 @@ static const char *dummycon_startup(void) return "dummy device"; } -static void dummycon_init(struct vc_data *vc, bool init) +static void dummycon_init(struct vc_data *vc, int init) { vc->vc_can_do_color = 1; if (init) { diff --git a/drivers/video/console/mdacon.c b/drivers/video/console/mdacon.c index c5b255c96879..ef29b321967f 100644 --- a/drivers/video/console/mdacon.c +++ b/drivers/video/console/mdacon.c @@ -352,7 +352,7 @@ static const char *mdacon_startup(void) return "MDA-2"; } -static void mdacon_init(struct vc_data *c, bool init) +static void mdacon_init(struct vc_data *c, int init) { c->vc_complement_mask = 0x0800; /* reverse video */ c->vc_display_fg = &mda_display_fg; diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c index 12c64ef47087..e8e4f82cd4a1 100644 --- a/drivers/video/console/newport_con.c +++ b/drivers/video/console/newport_con.c @@ -324,7 +324,7 @@ static const char *newport_startup(void) return NULL; } -static void newport_init(struct vc_data *vc, bool init) +static void newport_init(struct vc_data *vc, int init) { int cols, rows; diff --git a/drivers/video/console/sticon.c b/drivers/video/console/sticon.c index 0bfeabc3f7c7..992a4fa431aa 100644 --- a/drivers/video/console/sticon.c +++ b/drivers/video/console/sticon.c @@ -273,7 +273,7 @@ static int sticon_font_set(struct vc_data *vc, struct console_font *font, return sticon_set_font(vc, font, vpitch); } -static void sticon_init(struct vc_data *c, bool init) +static void sticon_init(struct vc_data *c, int init) { struct sti_struct *sti = sticon_sti; int vc_cols, vc_rows; diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 490e157aebdd..c9ec89649b05 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -332,7 +332,7 @@ static const char *vgacon_startup(void) return display_desc; } -static void vgacon_init(struct vc_data *c, bool init) +static void vgacon_init(struct vc_data *c, int init) { struct uni_pagedict *p; @@ -349,7 +349,7 @@ static void vgacon_init(struct vc_data *c, bool init) c->vc_scan_lines = vga_scan_lines; c->vc_font.height = c->vc_cell_height = vga_video_font_height; - /* set dimensions manually if init is true since vc_resize() will fail */ + /* set dimensions manually if init != 0 since vc_resize() will fail */ if (init) { c->vc_cols = vga_video_num_columns; c->vc_rows = vga_video_num_lines; diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 9f10a6e92e50..75996ef9992e 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -993,7 +993,7 @@ static const char *fbcon_startup(void) return display_desc; } -static void fbcon_init(struct vc_data *vc, bool init) +static void fbcon_init(struct vc_data *vc, int init) { struct fb_info *info; struct fbcon_ops *ops; diff --git a/include/linux/console.h b/include/linux/console.h index 4efe76ac56d7..7de11c763eb3 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -36,8 +36,6 @@ enum vc_intensity; /** * struct consw - callbacks for consoles * - * @con_init: initialize the console on @vc. @init is true for the very first - * call on this @vc. * @con_scroll: move lines from @top to @bottom in direction @dir by @lines. * Return true if no generic handling should be done. * Invoked by csi_M and printing to the console. @@ -48,7 +46,7 @@ enum vc_intensity; struct consw { struct module *owner; const char *(*con_startup)(void); - void (*con_init)(struct vc_data *vc, bool init); + void (*con_init)(struct vc_data *vc, int init); void (*con_deinit)(struct vc_data *vc); void (*con_clear)(struct vc_data *vc, int sy, int sx, int height, int width); -- Gitee From 3e21f04907ff7f2c3db95ccccf02a5ccb1712566 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:54 +0800 Subject: [PATCH 0516/1421] Revert "PCI: apple: Set only available ports up" This reverts commit 8a08609874088fb8ffdc9d253c67277dea061f87. --- drivers/pci/controller/pcie-apple.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c index 8dfea64a51e0..66f8854fc341 100644 --- a/drivers/pci/controller/pcie-apple.c +++ b/drivers/pci/controller/pcie-apple.c @@ -789,7 +789,7 @@ static int apple_pcie_init(struct pci_config_window *cfg) if (ret) return ret; - for_each_available_child_of_node_scoped(dev->of_node, of_port) { + for_each_child_of_node_scoped(dev->of_node, of_port) { ret = apple_pcie_setup_port(pcie, of_port); if (ret) { dev_err(pcie->dev, "Port %pOF setup fail: %d\n", of_port, ret); -- Gitee From 06a301af2e181f1f876b8a5e67c40e2dc950f954 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:54 +0800 Subject: [PATCH 0517/1421] Revert "PCI: apple: Use helper function for_each_child_of_node_scoped()" This reverts commit 54df1c20af41de584a94b9f9cbfb8dd27308025e. --- drivers/pci/controller/pcie-apple.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c index 66f8854fc341..08b7070f05d8 100644 --- a/drivers/pci/controller/pcie-apple.c +++ b/drivers/pci/controller/pcie-apple.c @@ -767,6 +767,7 @@ static int apple_pcie_init(struct pci_config_window *cfg) { struct device *dev = cfg->parent; struct platform_device *platform = to_platform_device(dev); + struct device_node *of_port; struct apple_pcie *pcie; int ret; @@ -789,10 +790,11 @@ static int apple_pcie_init(struct pci_config_window *cfg) if (ret) return ret; - for_each_child_of_node_scoped(dev->of_node, of_port) { + for_each_child_of_node(dev->of_node, of_port) { ret = apple_pcie_setup_port(pcie, of_port); if (ret) { dev_err(pcie->dev, "Port %pOF setup fail: %d\n", of_port, ret); + of_node_put(of_port); return ret; } } -- Gitee From b9dc48bdce884b739513bee41286e68e94e48cfa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:55 +0800 Subject: [PATCH 0518/1421] Revert "uio_hv_generic: Align ring size to system page" This reverts commit 53163902668dba39a974a61f4c05d9df27273050. --- drivers/uio/uio_hv_generic.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c index 17c1f85f2b7b..031f6a8f1ebb 100644 --- a/drivers/uio/uio_hv_generic.c +++ b/drivers/uio/uio_hv_generic.c @@ -260,9 +260,6 @@ hv_uio_probe(struct hv_device *dev, if (!ring_size) ring_size = HV_RING_SIZE * PAGE_SIZE; - /* Adjust ring size if necessary to have it page aligned */ - ring_size = VMBUS_RING_SIZE(ring_size); - pdata = devm_kzalloc(&dev->device, sizeof(*pdata), GFP_KERNEL); if (!pdata) return -ENOMEM; -- Gitee From 2460ba7d83252d26fec8072aae65400ad48195d8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:55 +0800 Subject: [PATCH 0519/1421] Revert "uio_hv_generic: Query the ringbuffer size for device" This reverts commit 9b14a19fb6c4da2fa4555e9393146e1ec0bfd745. --- drivers/uio/uio_hv_generic.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c index 031f6a8f1ebb..2804a4f74975 100644 --- a/drivers/uio/uio_hv_generic.c +++ b/drivers/uio/uio_hv_generic.c @@ -249,7 +249,6 @@ hv_uio_probe(struct hv_device *dev, struct hv_uio_private_data *pdata; void *ring_buffer; int ret; - size_t ring_size = hv_dev_ring_size(channel); /* Communicating with host has to be via shared memory not hypercall */ if (!channel->offermsg.monitor_allocated) { @@ -257,14 +256,12 @@ hv_uio_probe(struct hv_device *dev, return -ENOTSUPP; } - if (!ring_size) - ring_size = HV_RING_SIZE * PAGE_SIZE; - pdata = devm_kzalloc(&dev->device, sizeof(*pdata), GFP_KERNEL); if (!pdata) return -ENOMEM; - ret = vmbus_alloc_ring(channel, ring_size, ring_size); + ret = vmbus_alloc_ring(channel, HV_RING_SIZE * PAGE_SIZE, + HV_RING_SIZE * PAGE_SIZE); if (ret) return ret; -- Gitee From 23f0320d8d4e922d39fdfb8567b950295ef14b17 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:55 +0800 Subject: [PATCH 0520/1421] Revert "Drivers: hv: vmbus: Add utility function for querying ring size" This reverts commit 5af54d99cd74cdefa051c0e244ab59b6b3a69843. --- drivers/hv/channel_mgmt.c | 15 +++------------ drivers/hv/hyperv_vmbus.h | 5 ----- include/linux/hyperv.h | 2 -- 3 files changed, 3 insertions(+), 19 deletions(-) diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 3c6011a48dab..2f4d09ce027a 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -120,9 +120,7 @@ const struct vmbus_device vmbus_devs[] = { }, /* File copy */ - /* fcopy always uses 16KB ring buffer size and is working well for last many years */ - { .pref_ring_size = 0x4000, - .dev_type = HV_FCOPY, + { .dev_type = HV_FCOPY, HV_FCOPY_GUID, .perf_device = false, .allowed_in_isolated = false, @@ -142,19 +140,12 @@ const struct vmbus_device vmbus_devs[] = { .allowed_in_isolated = false, }, - /* - * Unknown GUID - * 64 KB ring buffer + 4 KB header should be sufficient size for any Hyper-V device apart - * from HV_NIC and HV_SCSI. This case avoid the fallback for unknown devices to allocate - * much bigger (2 MB) of ring size. - */ - { .pref_ring_size = 0x11000, - .dev_type = HV_UNKNOWN, + /* Unknown GUID */ + { .dev_type = HV_UNKNOWN, .perf_device = false, .allowed_in_isolated = false, }, }; -EXPORT_SYMBOL_GPL(vmbus_devs); static const struct { guid_t guid; diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index 34b60009114a..787b15068641 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -419,11 +419,6 @@ static inline bool hv_is_perf_channel(struct vmbus_channel *channel) return vmbus_devs[channel->device_id].perf_device; } -static inline size_t hv_dev_ring_size(struct vmbus_channel *channel) -{ - return vmbus_devs[channel->device_id].pref_ring_size; -} - static inline bool hv_is_allocated_cpu(unsigned int cpu) { struct vmbus_channel *channel, *sc; diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index e4ad9760774e..b5bf5315ca8c 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -820,8 +820,6 @@ struct vmbus_requestor { #define VMBUS_RQST_RESET (U64_MAX - 3) struct vmbus_device { - /* preferred ring buffer size in KB, 0 means no preferred size for this device */ - size_t pref_ring_size; u16 dev_type; guid_t guid; bool perf_device; -- Gitee From fd879c16c57f699f8e411e756540e5ca6dd16fa5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:55 +0800 Subject: [PATCH 0521/1421] Revert "f2fs: don't over-report free space or inodes in statvfs" This reverts commit 18b97a4113c2db028916a03486b41687d12ec554. --- fs/f2fs/super.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index b9913ab526fd..702137eafaa6 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1774,32 +1774,26 @@ static int f2fs_statfs_project(struct super_block *sb, limit = min_not_zero(dquot->dq_dqb.dqb_bsoftlimit, dquot->dq_dqb.dqb_bhardlimit); - limit >>= sb->s_blocksize_bits; - - if (limit) { - uint64_t remaining = 0; + if (limit) + limit >>= sb->s_blocksize_bits; + if (limit && buf->f_blocks > limit) { curblock = (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits; - if (limit > curblock) - remaining = limit - curblock; - - buf->f_blocks = min(buf->f_blocks, limit); - buf->f_bfree = min(buf->f_bfree, remaining); - buf->f_bavail = min(buf->f_bavail, remaining); + buf->f_blocks = limit; + buf->f_bfree = buf->f_bavail = + (buf->f_blocks > curblock) ? + (buf->f_blocks - curblock) : 0; } limit = min_not_zero(dquot->dq_dqb.dqb_isoftlimit, dquot->dq_dqb.dqb_ihardlimit); - if (limit) { - uint64_t remaining = 0; - - if (limit > dquot->dq_dqb.dqb_curinodes) - remaining = limit - dquot->dq_dqb.dqb_curinodes; - - buf->f_files = min(buf->f_files, limit); - buf->f_ffree = min(buf->f_ffree, remaining); + if (limit && buf->f_files > limit) { + buf->f_files = limit; + buf->f_ffree = + (buf->f_files > dquot->dq_dqb.dqb_curinodes) ? + (buf->f_files - dquot->dq_dqb.dqb_curinodes) : 0; } spin_unlock(&dquot->dq_dqb_lock); -- Gitee From 4a16d36a0060536844d45b771710537a796f3f21 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:55 +0800 Subject: [PATCH 0522/1421] Revert "ASoC: codecs: wcd9335: Fix missing free of regulator supplies" This reverts commit 9e25e54b9d270ff54de71e71f098e4e4a13a0e89. --- sound/soc/codecs/wcd9335.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c index 8d5d186fd580..15f263087bb8 100644 --- a/sound/soc/codecs/wcd9335.c +++ b/sound/soc/codecs/wcd9335.c @@ -330,6 +330,7 @@ struct wcd9335_codec { int intr1; struct gpio_desc *reset_gpio; + struct regulator_bulk_data supplies[WCD9335_MAX_SUPPLY]; unsigned int rx_port_value[WCD9335_RX_MAX]; unsigned int tx_port_value[WCD9335_TX_MAX]; @@ -356,10 +357,6 @@ struct wcd9335_irq { char *name; }; -static const char * const wcd9335_supplies[] = { - "vdd-buck", "vdd-buck-sido", "vdd-tx", "vdd-rx", "vdd-io", -}; - static const struct wcd9335_slim_ch wcd9335_tx_chs[WCD9335_TX_MAX] = { WCD9335_SLIM_TX_CH(0), WCD9335_SLIM_TX_CH(1), @@ -5049,16 +5046,30 @@ static int wcd9335_parse_dt(struct wcd9335_codec *wcd) if (IS_ERR(wcd->native_clk)) return dev_err_probe(dev, PTR_ERR(wcd->native_clk), "slimbus clock not found\n"); - ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(wcd9335_supplies), - wcd9335_supplies); + wcd->supplies[0].supply = "vdd-buck"; + wcd->supplies[1].supply = "vdd-buck-sido"; + wcd->supplies[2].supply = "vdd-tx"; + wcd->supplies[3].supply = "vdd-rx"; + wcd->supplies[4].supply = "vdd-io"; + + ret = regulator_bulk_get(dev, WCD9335_MAX_SUPPLY, wcd->supplies); if (ret) - return dev_err_probe(dev, ret, "Failed to get and enable supplies\n"); + return dev_err_probe(dev, ret, "Failed to get supplies\n"); return 0; } static int wcd9335_power_on_reset(struct wcd9335_codec *wcd) { + struct device *dev = wcd->dev; + int ret; + + ret = regulator_bulk_enable(WCD9335_MAX_SUPPLY, wcd->supplies); + if (ret) { + dev_err(dev, "Failed to get supplies: err = %d\n", ret); + return ret; + } + /* * For WCD9335, it takes about 600us for the Vout_A and * Vout_D to be ready after BUCK_SIDO is powered up. -- Gitee From ee473f72a27142d9831b3b11ea6a6e26d76e6132 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:56 +0800 Subject: [PATCH 0523/1421] Revert "ASoC: codec: wcd9335: Convert to GPIO descriptors" This reverts commit 9201bf340fa0ff3f37a0fe64a83c7aa75e0a2205. --- sound/soc/codecs/wcd9335.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c index 15f263087bb8..6e172be34ac9 100644 --- a/sound/soc/codecs/wcd9335.c +++ b/sound/soc/codecs/wcd9335.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include @@ -329,7 +329,7 @@ struct wcd9335_codec { int comp_enabled[COMPANDER_MAX]; int intr1; - struct gpio_desc *reset_gpio; + int reset_gpio; struct regulator_bulk_data supplies[WCD9335_MAX_SUPPLY]; unsigned int rx_port_value[WCD9335_RX_MAX]; @@ -5032,11 +5032,12 @@ static const struct regmap_irq_chip wcd9335_regmap_irq1_chip = { static int wcd9335_parse_dt(struct wcd9335_codec *wcd) { struct device *dev = wcd->dev; + struct device_node *np = dev->of_node; int ret; - wcd->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); - if (IS_ERR(wcd->reset_gpio)) - return dev_err_probe(dev, PTR_ERR(wcd->reset_gpio), "Reset GPIO missing from DT\n"); + wcd->reset_gpio = of_get_named_gpio(np, "reset-gpios", 0); + if (wcd->reset_gpio < 0) + return dev_err_probe(dev, wcd->reset_gpio, "Reset GPIO missing from DT\n"); wcd->mclk = devm_clk_get(dev, "mclk"); if (IS_ERR(wcd->mclk)) @@ -5079,9 +5080,9 @@ static int wcd9335_power_on_reset(struct wcd9335_codec *wcd) */ usleep_range(600, 650); - gpiod_set_value(wcd->reset_gpio, 1); + gpio_direction_output(wcd->reset_gpio, 0); msleep(20); - gpiod_set_value(wcd->reset_gpio, 0); + gpio_set_value(wcd->reset_gpio, 1); msleep(20); return 0; -- Gitee From 72d50945635e3755cafd6f8684261af09e8c6ce0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:56 +0800 Subject: [PATCH 0524/1421] Revert "ASoC: codecs: wcd9335: Handle nicer probe deferral and simplify with dev_err_probe()" This reverts commit ea06b2cd59dca2c20e0cce1e4762212b941d20f4. --- sound/soc/codecs/wcd9335.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c index 6e172be34ac9..a05b553e6472 100644 --- a/sound/soc/codecs/wcd9335.c +++ b/sound/soc/codecs/wcd9335.c @@ -5036,16 +5036,22 @@ static int wcd9335_parse_dt(struct wcd9335_codec *wcd) int ret; wcd->reset_gpio = of_get_named_gpio(np, "reset-gpios", 0); - if (wcd->reset_gpio < 0) - return dev_err_probe(dev, wcd->reset_gpio, "Reset GPIO missing from DT\n"); + if (wcd->reset_gpio < 0) { + dev_err(dev, "Reset GPIO missing from DT\n"); + return wcd->reset_gpio; + } wcd->mclk = devm_clk_get(dev, "mclk"); - if (IS_ERR(wcd->mclk)) - return dev_err_probe(dev, PTR_ERR(wcd->mclk), "mclk not found\n"); + if (IS_ERR(wcd->mclk)) { + dev_err(dev, "mclk not found\n"); + return PTR_ERR(wcd->mclk); + } wcd->native_clk = devm_clk_get(dev, "slimbus"); - if (IS_ERR(wcd->native_clk)) - return dev_err_probe(dev, PTR_ERR(wcd->native_clk), "slimbus clock not found\n"); + if (IS_ERR(wcd->native_clk)) { + dev_err(dev, "slimbus clock not found\n"); + return PTR_ERR(wcd->native_clk); + } wcd->supplies[0].supply = "vdd-buck"; wcd->supplies[1].supply = "vdd-buck-sido"; @@ -5054,8 +5060,10 @@ static int wcd9335_parse_dt(struct wcd9335_codec *wcd) wcd->supplies[4].supply = "vdd-io"; ret = regulator_bulk_get(dev, WCD9335_MAX_SUPPLY, wcd->supplies); - if (ret) - return dev_err_probe(dev, ret, "Failed to get supplies\n"); + if (ret) { + dev_err(dev, "Failed to get supplies: err = %d\n", ret); + return ret; + } return 0; } @@ -5155,8 +5163,10 @@ static int wcd9335_slim_probe(struct slim_device *slim) wcd->dev = dev; ret = wcd9335_parse_dt(wcd); - if (ret) + if (ret) { + dev_err(dev, "Error parsing DT: %d\n", ret); return ret; + } ret = wcd9335_power_on_reset(wcd); if (ret) -- Gitee From 8b2f1fab280c8b2f7b698a3f9384c833210289cb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:56 +0800 Subject: [PATCH 0525/1421] Revert "jfs: validate AG parameters in dbMount() to prevent crashes" This reverts commit cb7ca0a2d5c2055310047f24b814a7e4bf407e2c. --- fs/jfs/jfs_dmap.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index 35e063c9f3a4..26e89d0c69b6 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c @@ -194,11 +194,7 @@ int dbMount(struct inode *ipbmap) !bmp->db_numag || (bmp->db_numag > MAXAG) || (bmp->db_maxag >= MAXAG) || (bmp->db_maxag < 0) || (bmp->db_agpref >= MAXAG) || (bmp->db_agpref < 0) || - (bmp->db_agheight < 0) || (bmp->db_agheight > (L2LPERCTL >> 1)) || - (bmp->db_agwidth < 1) || (bmp->db_agwidth > (LPERCTL / MAXAG)) || - (bmp->db_agwidth > (1 << (L2LPERCTL - (bmp->db_agheight << 1)))) || - (bmp->db_agstart < 0) || - (bmp->db_agstart > (CTLTREESIZE - 1 - bmp->db_agwidth * (MAXAG - 1))) || + !bmp->db_agwidth || (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG) || (bmp->db_agl2size < 0) || ((bmp->db_mapsize - 1) >> bmp->db_agl2size) > MAXAG) { -- Gitee From 06ad18f54f684e638826272bad39b63eecde07b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:56 +0800 Subject: [PATCH 0526/1421] Revert "fs/jfs: consolidate sanity checking in dbMount" This reverts commit bfa084aa8706765a0228d7b13bfc2cf856bbc706. --- fs/jfs/jfs_dmap.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index 26e89d0c69b6..0e1019382cf5 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c @@ -178,26 +178,45 @@ int dbMount(struct inode *ipbmap) dbmp_le = (struct dbmap_disk *) mp->data; bmp->db_mapsize = le64_to_cpu(dbmp_le->dn_mapsize); bmp->db_nfree = le64_to_cpu(dbmp_le->dn_nfree); + bmp->db_l2nbperpage = le32_to_cpu(dbmp_le->dn_l2nbperpage); + if (bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE || + bmp->db_l2nbperpage < 0) { + err = -EINVAL; + goto err_release_metapage; + } + bmp->db_numag = le32_to_cpu(dbmp_le->dn_numag); + if (!bmp->db_numag || bmp->db_numag > MAXAG) { + err = -EINVAL; + goto err_release_metapage; + } + bmp->db_maxlevel = le32_to_cpu(dbmp_le->dn_maxlevel); bmp->db_maxag = le32_to_cpu(dbmp_le->dn_maxag); bmp->db_agpref = le32_to_cpu(dbmp_le->dn_agpref); + if (bmp->db_maxag >= MAXAG || bmp->db_maxag < 0 || + bmp->db_agpref >= MAXAG || bmp->db_agpref < 0) { + err = -EINVAL; + goto err_release_metapage; + } + bmp->db_aglevel = le32_to_cpu(dbmp_le->dn_aglevel); bmp->db_agheight = le32_to_cpu(dbmp_le->dn_agheight); bmp->db_agwidth = le32_to_cpu(dbmp_le->dn_agwidth); + if (!bmp->db_agwidth) { + err = -EINVAL; + goto err_release_metapage; + } bmp->db_agstart = le32_to_cpu(dbmp_le->dn_agstart); bmp->db_agl2size = le32_to_cpu(dbmp_le->dn_agl2size); + if (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG || + bmp->db_agl2size < 0) { + err = -EINVAL; + goto err_release_metapage; + } - if ((bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE) || - (bmp->db_l2nbperpage < 0) || - !bmp->db_numag || (bmp->db_numag > MAXAG) || - (bmp->db_maxag >= MAXAG) || (bmp->db_maxag < 0) || - (bmp->db_agpref >= MAXAG) || (bmp->db_agpref < 0) || - !bmp->db_agwidth || - (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG) || - (bmp->db_agl2size < 0) || - ((bmp->db_mapsize - 1) >> bmp->db_agl2size) > MAXAG) { + if (((bmp->db_mapsize - 1) >> bmp->db_agl2size) > MAXAG) { err = -EINVAL; goto err_release_metapage; } -- Gitee From 5569bb3a0f519df18ab687af1e3aae1c573dc261 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:56 +0800 Subject: [PATCH 0527/1421] Revert "btrfs: handle csum tree error with rescue=ibadroots correctly" This reverts commit b55f9b32479b9438c0c4f6e904507f65589a5db1. --- fs/btrfs/disk-io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index bb5f7911d473..34a30d61b470 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -2148,7 +2148,8 @@ static int load_global_roots_objectid(struct btrfs_root *tree_root, found = true; root = read_tree_root_path(tree_root, path, &key); if (IS_ERR(root)) { - ret = PTR_ERR(root); + if (!btrfs_test_opt(fs_info, IGNOREBADROOTS)) + ret = PTR_ERR(root); break; } set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); -- Gitee From ddb49890b1d16358ea44fd16a9739355b0949975 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:57 +0800 Subject: [PATCH 0528/1421] Revert "ovl: Check for NULL d_inode() in ovl_dentry_upper()" This reverts commit 2c3e3f6d0aec9c0e5a4573358dc60081b5de3c84. --- fs/overlayfs/util.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 0da1cd01d01c..0bf3ffcd072f 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -274,9 +274,7 @@ enum ovl_path_type ovl_path_realdata(struct dentry *dentry, struct path *path) struct dentry *ovl_dentry_upper(struct dentry *dentry) { - struct inode *inode = d_inode(dentry); - - return inode ? ovl_upperdentry_dereference(OVL_I(inode)) : NULL; + return ovl_upperdentry_dereference(OVL_I(d_inode(dentry))); } struct dentry *ovl_dentry_lower(struct dentry *dentry) -- Gitee From 52597b68eb9e5defb159c657dcbe188c237da694 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:57 +0800 Subject: [PATCH 0529/1421] Revert "scsi: ufs: core: Don't perform UFS clkscaling during host async scan" This reverts commit d6739b824112c24444f8c25a10ff177697ca5372. --- drivers/ufs/core/ufshcd.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 412931cf240f..9dabc03675b0 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -1284,7 +1284,6 @@ static int ufshcd_clock_scaling_prepare(struct ufs_hba *hba, u64 timeout_us) * make sure that there are no outstanding requests when * clock scaling is in progress */ - mutex_lock(&hba->host->scan_mutex); blk_mq_quiesce_tagset(&hba->host->tag_set); mutex_lock(&hba->wb_mutex); down_write(&hba->clk_scaling_lock); @@ -1295,7 +1294,6 @@ static int ufshcd_clock_scaling_prepare(struct ufs_hba *hba, u64 timeout_us) up_write(&hba->clk_scaling_lock); mutex_unlock(&hba->wb_mutex); blk_mq_unquiesce_tagset(&hba->host->tag_set); - mutex_unlock(&hba->host->scan_mutex); goto out; } @@ -1317,7 +1315,6 @@ static void ufshcd_clock_scaling_unprepare(struct ufs_hba *hba, int err, bool sc mutex_unlock(&hba->wb_mutex); blk_mq_unquiesce_tagset(&hba->host->tag_set); - mutex_unlock(&hba->host->scan_mutex); ufshcd_release(hba); } -- Gitee From 2af9e46831f5e5bae581c94e790f8924b9eae0c5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:57 +0800 Subject: [PATCH 0530/1421] Revert "ceph: fix possible integer overflow in ceph_zero_objects()" This reverts commit d2fb5765e833222878058d3a3d3da1c486d878f4. --- fs/ceph/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ceph/file.c b/fs/ceph/file.c index e12657b4c3e0..a03b11cf7887 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -2513,7 +2513,7 @@ static int ceph_zero_objects(struct inode *inode, loff_t offset, loff_t length) s32 stripe_unit = ci->i_layout.stripe_unit; s32 stripe_count = ci->i_layout.stripe_count; s32 object_size = ci->i_layout.object_size; - u64 object_set_size = (u64) object_size * stripe_count; + u64 object_set_size = object_size * stripe_count; u64 nearly, t; /* round offset up to next period boundary */ -- Gitee From bd9091b87566e9b85ecf2019f2f4eb91946fcc9f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:57 +0800 Subject: [PATCH 0531/1421] Revert "ALSA: usb-audio: Add a quirk for Lenovo Thinkpad Thunderbolt 3 dock" This reverts commit 378f5ca3d5753ab54b69dbfadebde5eae84719fd. --- sound/usb/quirks.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index f19c808444c9..0b8b20550ab3 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -2182,8 +2182,6 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_DISABLE_AUTOSUSPEND), DEVICE_FLG(0x17aa, 0x104d, /* Lenovo ThinkStation P620 Internal Speaker + Front Headset */ QUIRK_FLAG_DISABLE_AUTOSUSPEND), - DEVICE_FLG(0x17ef, 0x3083, /* Lenovo TBT3 dock */ - QUIRK_FLAG_GET_SAMPLE_RATE), DEVICE_FLG(0x1852, 0x5062, /* Luxman D-08u */ QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY), DEVICE_FLG(0x1852, 0x5065, /* Luxman DA-06 */ -- Gitee From ec11615e6167a41de38de9492402e8bcff0a9f4b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:58 +0800 Subject: [PATCH 0532/1421] Revert "ALSA: hda: Add new pci id for AMD GPU display HD audio controller" This reverts commit d47cf58469f1f7514925eb761ba946ee195493ed. --- sound/pci/hda/hda_intel.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 059693e03fd9..3cd5b7da8e15 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2727,9 +2727,6 @@ static const struct pci_device_id azx_ids[] = { { PCI_VDEVICE(ATI, 0xab38), .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | AZX_DCAPS_PM_RUNTIME }, - { PCI_VDEVICE(ATI, 0xab40), - .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | - AZX_DCAPS_PM_RUNTIME }, /* GLENFLY */ { PCI_DEVICE(PCI_VENDOR_ID_GLENFLY, PCI_ANY_ID), .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, -- Gitee From db8aa096a3e4d341df9489c9def749908a7e198f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:58 +0800 Subject: [PATCH 0533/1421] Revert "ALSA: hda: Ignore unsol events for cards being shut down" This reverts commit 2734fa11be00137cfaee79518e08d5ab9ad37213. --- sound/pci/hda/hda_bind.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/pci/hda/hda_bind.c b/sound/pci/hda/hda_bind.c index 95786bdadfe6..b7ca2a83fbb0 100644 --- a/sound/pci/hda/hda_bind.c +++ b/sound/pci/hda/hda_bind.c @@ -44,7 +44,7 @@ static void hda_codec_unsol_event(struct hdac_device *dev, unsigned int ev) struct hda_codec *codec = container_of(dev, struct hda_codec, core); /* ignore unsol events during shutdown */ - if (codec->card->shutdown || codec->bus->shutdown) + if (codec->bus->shutdown) return; /* ignore unsol events during system suspend/resume */ -- Gitee From 49a498c26a831256357eb5d102b97f403d8e3589 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:58 +0800 Subject: [PATCH 0534/1421] Revert "usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set" This reverts commit 548b9d5972061ed858b7b4eb35615270238412ad. --- drivers/usb/typec/mux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/typec/mux.c b/drivers/usb/typec/mux.c index a5b2a6f9c579..80dd91938d96 100644 --- a/drivers/usb/typec/mux.c +++ b/drivers/usb/typec/mux.c @@ -214,7 +214,7 @@ int typec_switch_set(struct typec_switch *sw, sw_dev = sw->sw_devs[i]; ret = sw_dev->set(sw_dev, orientation); - if (ret && ret != -EOPNOTSUPP) + if (ret) return ret; } @@ -378,7 +378,7 @@ int typec_mux_set(struct typec_mux *mux, struct typec_mux_state *state) mux_dev = mux->mux_devs[i]; ret = mux_dev->set(mux_dev, state); - if (ret && ret != -EOPNOTSUPP) + if (ret) return ret; } -- Gitee From ef60b7105753cfd101aa3c4ebdc8fc01fceecaf1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:58 +0800 Subject: [PATCH 0535/1421] Revert "usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode" This reverts commit 66af2aceff58608a0affdb68174d7f739bb93dcc. --- drivers/usb/typec/altmodes/displayport.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index 5f6fc5b79212..ccff838ab89e 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -323,10 +323,6 @@ static int dp_altmode_vdm(struct typec_altmode *alt, break; case CMDT_RSP_NAK: switch (cmd) { - case DP_CMD_STATUS_UPDATE: - if (typec_altmode_exit(alt)) - dev_err(&dp->alt->dev, "Exit Mode Failed!\n"); - break; case DP_CMD_CONFIGURE: dp->data.conf = 0; ret = dp_altmode_configured(dp); -- Gitee From 63b6021832b576f2291b0a0185f98c7acc5df0c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:58 +0800 Subject: [PATCH 0536/1421] Revert "usb: cdc-wdm: avoid setting WDM_READ for ZLP-s" This reverts commit cbe5e8aa99f2f56c985d4272367660a1d8e08524. --- drivers/usb/class/cdc-wdm.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index 600ad9412c14..559c121f0923 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c @@ -92,6 +92,7 @@ struct wdm_device { u16 wMaxCommand; u16 wMaxPacketSize; __le16 inum; + int reslength; int length; int read; int count; @@ -213,11 +214,6 @@ static void wdm_in_callback(struct urb *urb) if (desc->rerr == 0 && status != -EPIPE) desc->rerr = status; - if (length == 0) { - dev_dbg(&desc->intf->dev, "received ZLP\n"); - goto skip_zlp; - } - if (length + desc->length > desc->wMaxCommand) { /* The buffer would overflow */ set_bit(WDM_OVERFLOW, &desc->flags); @@ -226,18 +222,18 @@ static void wdm_in_callback(struct urb *urb) if (!test_bit(WDM_OVERFLOW, &desc->flags)) { memmove(desc->ubuf + desc->length, desc->inbuf, length); desc->length += length; + desc->reslength = length; } } skip_error: if (desc->rerr) { /* - * If there was a ZLP or an error, userspace may decide to not - * read any data after poll'ing. + * Since there was an error, userspace may decide to not read + * any data after poll'ing. * We should respond to further attempts from the device to send * data, so that we can get unstuck. */ -skip_zlp: schedule_work(&desc->service_outs_intr); } else { set_bit(WDM_READ, &desc->flags); @@ -589,6 +585,15 @@ static ssize_t wdm_read goto retry; } + if (!desc->reslength) { /* zero length read */ + dev_dbg(&desc->intf->dev, "zero length - clearing WDM_READ\n"); + clear_bit(WDM_READ, &desc->flags); + rv = service_outstanding_interrupt(desc); + spin_unlock_irq(&desc->iuspin); + if (rv < 0) + goto err; + goto retry; + } cntr = desc->length; spin_unlock_irq(&desc->iuspin); } @@ -1011,7 +1016,7 @@ static void service_interrupt_work(struct work_struct *work) spin_lock_irq(&desc->iuspin); service_outstanding_interrupt(desc); - if (!desc->resp_count && (desc->length || desc->rerr)) { + if (!desc->resp_count) { set_bit(WDM_READ, &desc->flags); wake_up(&desc->wait); } -- Gitee From 4d6d283f032c12dc9df31034c74e7826c54db86e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:59 +0800 Subject: [PATCH 0537/1421] Revert "usb: Add checks for snprintf() calls in usb_alloc_dev()" This reverts commit 3482ca88ee1564a9ff1f3f54ad623b2cf2ccaf5a. --- drivers/usb/core/usb.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index da6d5e5f79e7..2a938cf47ccd 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -695,16 +695,15 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, device_set_of_node_from_dev(&dev->dev, bus->sysdev); dev_set_name(&dev->dev, "usb%d", bus->busnum); } else { - int n; - /* match any labeling on the hubs; it's one-based */ if (parent->devpath[0] == '0') { - n = snprintf(dev->devpath, sizeof(dev->devpath), "%d", port1); + snprintf(dev->devpath, sizeof dev->devpath, + "%d", port1); /* Root ports are not counted in route string */ dev->route = 0; } else { - n = snprintf(dev->devpath, sizeof(dev->devpath), "%s.%d", - parent->devpath, port1); + snprintf(dev->devpath, sizeof dev->devpath, + "%s.%d", parent->devpath, port1); /* Route string assumes hubs have less than 16 ports */ if (port1 < 15) dev->route = parent->route + @@ -713,11 +712,6 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, dev->route = parent->route + (15 << ((parent->level - 1)*4)); } - if (n >= sizeof(dev->devpath)) { - usb_put_hcd(bus_to_hcd(bus)); - usb_put_dev(dev); - return NULL; - } dev->dev.parent = &parent->dev; dev_set_name(&dev->dev, "%d-%s", bus->busnum, dev->devpath); -- Gitee From 199859058471af6df13663def1d6390876e927b5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:59 +0800 Subject: [PATCH 0538/1421] Revert "usb: common: usb-conn-gpio: use a unique name for usb connector device" This reverts commit d54e37b310729a2aecf7e4342217c5c9b97bb2d6. --- drivers/usb/common/usb-conn-gpio.c | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/drivers/usb/common/usb-conn-gpio.c b/drivers/usb/common/usb-conn-gpio.c index 1096a884c8d7..501e8bc9738e 100644 --- a/drivers/usb/common/usb-conn-gpio.c +++ b/drivers/usb/common/usb-conn-gpio.c @@ -20,9 +20,6 @@ #include #include #include -#include - -static DEFINE_IDA(usb_conn_ida); #define USB_GPIO_DEB_MS 20 /* ms */ #define USB_GPIO_DEB_US ((USB_GPIO_DEB_MS) * 1000) /* us */ @@ -32,7 +29,6 @@ static DEFINE_IDA(usb_conn_ida); struct usb_conn_info { struct device *dev; - int conn_id; /* store the IDA-allocated ID */ struct usb_role_switch *role_sw; enum usb_role last_role; struct regulator *vbus; @@ -164,17 +160,7 @@ static int usb_conn_psy_register(struct usb_conn_info *info) .of_node = dev->of_node, }; - info->conn_id = ida_alloc(&usb_conn_ida, GFP_KERNEL); - if (info->conn_id < 0) - return info->conn_id; - - desc->name = devm_kasprintf(dev, GFP_KERNEL, "usb-charger-%d", - info->conn_id); - if (!desc->name) { - ida_free(&usb_conn_ida, info->conn_id); - return -ENOMEM; - } - + desc->name = "usb-charger"; desc->properties = usb_charger_properties; desc->num_properties = ARRAY_SIZE(usb_charger_properties); desc->get_property = usb_charger_get_property; @@ -182,10 +168,8 @@ static int usb_conn_psy_register(struct usb_conn_info *info) cfg.drv_data = info; info->charger = devm_power_supply_register(dev, desc, &cfg); - if (IS_ERR(info->charger)) { - dev_err(dev, "Unable to register charger %d\n", info->conn_id); - ida_free(&usb_conn_ida, info->conn_id); - } + if (IS_ERR(info->charger)) + dev_err(dev, "Unable to register charger\n"); return PTR_ERR_OR_ZERO(info->charger); } @@ -293,9 +277,6 @@ static void usb_conn_remove(struct platform_device *pdev) cancel_delayed_work_sync(&info->dw_det); - if (info->charger) - ida_free(&usb_conn_ida, info->conn_id); - if (info->last_role == USB_ROLE_HOST && info->vbus) regulator_disable(info->vbus); -- Gitee From 09acdd48b99589b1d8c9453a20aac171bbc8ed79 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:59 +0800 Subject: [PATCH 0539/1421] Revert "tty: serial: uartlite: register uart driver in init" This reverts commit 5e066e2149a8dd4a426072b29ce3cfc24bb8200d. --- drivers/tty/serial/uartlite.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c index 9f39bafa7fa9..b225a78f6175 100644 --- a/drivers/tty/serial/uartlite.c +++ b/drivers/tty/serial/uartlite.c @@ -872,6 +872,16 @@ static int ulite_probe(struct platform_device *pdev) pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); + if (!ulite_uart_driver.state) { + dev_dbg(&pdev->dev, "uartlite: calling uart_register_driver()\n"); + ret = uart_register_driver(&ulite_uart_driver); + if (ret < 0) { + dev_err(&pdev->dev, "Failed to register driver\n"); + clk_disable_unprepare(pdata->clk); + return ret; + } + } + ret = ulite_assign(&pdev->dev, id, res->start, irq, pdata); pm_runtime_mark_last_busy(&pdev->dev); @@ -912,25 +922,16 @@ static struct platform_driver ulite_platform_driver = { static int __init ulite_init(void) { - int ret; - - pr_debug("uartlite: calling uart_register_driver()\n"); - ret = uart_register_driver(&ulite_uart_driver); - if (ret) - return ret; pr_debug("uartlite: calling platform_driver_register()\n"); - ret = platform_driver_register(&ulite_platform_driver); - if (ret) - uart_unregister_driver(&ulite_uart_driver); - - return ret; + return platform_driver_register(&ulite_platform_driver); } static void __exit ulite_exit(void) { platform_driver_unregister(&ulite_platform_driver); - uart_unregister_driver(&ulite_uart_driver); + if (ulite_uart_driver.state) + uart_unregister_driver(&ulite_uart_driver); } module_init(ulite_init); -- Gitee From 7da4f88bcf3a925df551e28c8d2b0ac987d0abb3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:59 +0800 Subject: [PATCH 0540/1421] Revert "usb: potential integer overflow in usbg_make_tpg()" This reverts commit fa7ebbde59a236838cea2d40798e30ba6e9c91c3. --- drivers/usb/gadget/function/f_tcm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/function/f_tcm.c b/drivers/usb/gadget/function/f_tcm.c index 5d0d89495395..a7cd0a06879e 100644 --- a/drivers/usb/gadget/function/f_tcm.c +++ b/drivers/usb/gadget/function/f_tcm.c @@ -1297,14 +1297,14 @@ static struct se_portal_group *usbg_make_tpg(struct se_wwn *wwn, struct usbg_tport *tport = container_of(wwn, struct usbg_tport, tport_wwn); struct usbg_tpg *tpg; - u16 tpgt; + unsigned long tpgt; int ret; struct f_tcm_opts *opts; unsigned i; if (strstr(name, "tpgt_") != name) return ERR_PTR(-EINVAL); - if (kstrtou16(name + 5, 0, &tpgt)) + if (kstrtoul(name + 5, 0, &tpgt) || tpgt > UINT_MAX) return ERR_PTR(-EINVAL); ret = -ENODEV; mutex_lock(&tpg_instances_lock); -- Gitee From ba3c9cc02c8aaee5097f0dc4d03ba717358cbf37 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:36:59 +0800 Subject: [PATCH 0541/1421] Revert "misc: tps6594-pfsm: Add NULL pointer check in tps6594_pfsm_probe()" This reverts commit 1b2c2c35c93c369929decdebb141e67880751932. --- drivers/misc/tps6594-pfsm.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/misc/tps6594-pfsm.c b/drivers/misc/tps6594-pfsm.c index 71fbe31542e5..88dcac814892 100644 --- a/drivers/misc/tps6594-pfsm.c +++ b/drivers/misc/tps6594-pfsm.c @@ -260,9 +260,6 @@ static int tps6594_pfsm_probe(struct platform_device *pdev) pfsm->miscdev.minor = MISC_DYNAMIC_MINOR; pfsm->miscdev.name = devm_kasprintf(dev, GFP_KERNEL, "pfsm-%ld-0x%02x", tps->chip_id, tps->reg); - if (!pfsm->miscdev.name) - return -ENOMEM; - pfsm->miscdev.fops = &tps6594_pfsm_fops; pfsm->miscdev.parent = dev->parent; -- Gitee From 8db35f8056956f2a1754ce44890270be401dd0ce Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:00 +0800 Subject: [PATCH 0542/1421] Revert "iio: adc: ad_sigma_delta: Fix use of uninitialized status_pos" This reverts commit 9783d1096ac966c1a08d80d6f5abc52805499eca. --- drivers/iio/adc/ad_sigma_delta.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c index 533667eefe41..7e2192870743 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -476,10 +476,6 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void *p) * byte set to zero. */ ad_sd_read_reg_raw(sigma_delta, data_reg, transfer_size, &data[1]); break; - - default: - dev_err_ratelimited(&indio_dev->dev, "Unsupported reg_size: %u\n", reg_size); - goto irq_handled; } /* -- Gitee From a07b595b874f1cab8c681080af63359023ce5b2d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:00 +0800 Subject: [PATCH 0543/1421] Revert "usb: dwc2: also exit clock_gating when stopping udc while suspended" This reverts commit 4f792540c3fdd2540a321a2116cbfa9b5f0f7386. --- drivers/usb/dwc2/gadget.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index c0db3c52831a..ce20c06a9025 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -4601,12 +4601,6 @@ static int dwc2_hsotg_udc_stop(struct usb_gadget *gadget) if (!hsotg) return -ENODEV; - /* Exit clock gating when driver is stopped. */ - if (hsotg->params.power_down == DWC2_POWER_DOWN_PARAM_NONE && - hsotg->bus_suspended && !hsotg->params.no_clock_gating) { - dwc2_gadget_exit_clock_gating(hsotg, 0); - } - /* all endpoints should be shutdown */ for (ep = 1; ep < hsotg->num_of_eps; ep++) { if (hsotg->eps_in[ep]) -- Gitee From d562dd1a4a838b4b927e1bb1158e359d1edec7c9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:00 +0800 Subject: [PATCH 0544/1421] Revert "coresight: Only check bottom two claim bits" This reverts commit 7a5cf7e855a8989ee645a72e1b89d6621ec6b859. --- drivers/hwtracing/coresight/coresight-core.c | 3 +-- drivers/hwtracing/coresight/coresight-priv.h | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c index 3b57851869ea..783e259c3761 100644 --- a/drivers/hwtracing/coresight/coresight-core.c +++ b/drivers/hwtracing/coresight/coresight-core.c @@ -135,8 +135,7 @@ coresight_find_out_connection(struct coresight_device *src_dev, static inline u32 coresight_read_claim_tags(struct coresight_device *csdev) { - return FIELD_GET(CORESIGHT_CLAIM_MASK, - csdev_access_relaxed_read32(&csdev->access, CORESIGHT_CLAIMCLR)); + return csdev_access_relaxed_read32(&csdev->access, CORESIGHT_CLAIMCLR); } static inline bool coresight_is_claimed_self_hosted(struct coresight_device *csdev) diff --git a/drivers/hwtracing/coresight/coresight-priv.h b/drivers/hwtracing/coresight/coresight-priv.h index b758a42ed8c7..30c051055e54 100644 --- a/drivers/hwtracing/coresight/coresight-priv.h +++ b/drivers/hwtracing/coresight/coresight-priv.h @@ -32,7 +32,6 @@ * Coresight device CLAIM protocol. * See PSCI - ARM DEN 0022D, Section: 6.8.1 Debug and Trace save and restore. */ -#define CORESIGHT_CLAIM_MASK GENMASK(1, 0) #define CORESIGHT_CLAIM_SELF_HOSTED BIT(1) #define TIMEOUT_US 100 -- Gitee From a42effad64c32d89da5a3ded1dcb3fe8ee218057 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:00 +0800 Subject: [PATCH 0545/1421] Revert "um: use proper care when taking mmap lock during segfault" This reverts commit cea53df5ed4aa21b8f8776138ab31c462036a937. --- arch/um/kernel/trap.c | 129 ++++-------------------------------------- 1 file changed, 12 insertions(+), 117 deletions(-) diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index c16b80011ada..6d8ae86ae978 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c @@ -17,122 +17,6 @@ #include #include -/* - * NOTE: UML does not have exception tables. As such, this is almost a copy - * of the code in mm/memory.c, only adjusting the logic to simply check whether - * we are coming from the kernel instead of doing an additional lookup in the - * exception table. - * We can do this simplification because we never get here if the exception was - * fixable. - */ -static inline bool get_mmap_lock_carefully(struct mm_struct *mm, bool is_user) -{ - if (likely(mmap_read_trylock(mm))) - return true; - - if (!is_user) - return false; - - return !mmap_read_lock_killable(mm); -} - -static inline bool mmap_upgrade_trylock(struct mm_struct *mm) -{ - /* - * We don't have this operation yet. - * - * It should be easy enough to do: it's basically a - * atomic_long_try_cmpxchg_acquire() - * from RWSEM_READER_BIAS -> RWSEM_WRITER_LOCKED, but - * it also needs the proper lockdep magic etc. - */ - return false; -} - -static inline bool upgrade_mmap_lock_carefully(struct mm_struct *mm, bool is_user) -{ - mmap_read_unlock(mm); - if (!is_user) - return false; - - return !mmap_write_lock_killable(mm); -} - -/* - * Helper for page fault handling. - * - * This is kind of equivalend to "mmap_read_lock()" followed - * by "find_extend_vma()", except it's a lot more careful about - * the locking (and will drop the lock on failure). - * - * For example, if we have a kernel bug that causes a page - * fault, we don't want to just use mmap_read_lock() to get - * the mm lock, because that would deadlock if the bug were - * to happen while we're holding the mm lock for writing. - * - * So this checks the exception tables on kernel faults in - * order to only do this all for instructions that are actually - * expected to fault. - * - * We can also actually take the mm lock for writing if we - * need to extend the vma, which helps the VM layer a lot. - */ -static struct vm_area_struct * -um_lock_mm_and_find_vma(struct mm_struct *mm, - unsigned long addr, bool is_user) -{ - struct vm_area_struct *vma; - - if (!get_mmap_lock_carefully(mm, is_user)) - return NULL; - - vma = find_vma(mm, addr); - if (likely(vma && (vma->vm_start <= addr))) - return vma; - - /* - * Well, dang. We might still be successful, but only - * if we can extend a vma to do so. - */ - if (!vma || !(vma->vm_flags & VM_GROWSDOWN)) { - mmap_read_unlock(mm); - return NULL; - } - - /* - * We can try to upgrade the mmap lock atomically, - * in which case we can continue to use the vma - * we already looked up. - * - * Otherwise we'll have to drop the mmap lock and - * re-take it, and also look up the vma again, - * re-checking it. - */ - if (!mmap_upgrade_trylock(mm)) { - if (!upgrade_mmap_lock_carefully(mm, is_user)) - return NULL; - - vma = find_vma(mm, addr); - if (!vma) - goto fail; - if (vma->vm_start <= addr) - goto success; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto fail; - } - - if (expand_stack_locked(vma, addr)) - goto fail; - -success: - mmap_write_downgrade(mm); - return vma; - -fail: - mmap_write_unlock(mm); - return NULL; -} - /* * Note this is constrained to return 0, -EFAULT, -EACCES, -ENOMEM by * segv(). @@ -159,10 +43,21 @@ int handle_page_fault(unsigned long address, unsigned long ip, if (is_user) flags |= FAULT_FLAG_USER; retry: - vma = um_lock_mm_and_find_vma(mm, address, is_user); + mmap_read_lock(mm); + vma = find_vma(mm, address); + if (!vma) + goto out; + if (vma->vm_start <= address) + goto good_area; + if (!(vma->vm_flags & VM_GROWSDOWN)) + goto out; + if (is_user && !ARCH_IS_STACKGROW(address)) + goto out; + vma = expand_stack(mm, address); if (!vma) goto out_nosemaphore; +good_area: *code_out = SEGV_ACCERR; if (is_write) { if (!(vma->vm_flags & VM_WRITE)) -- Gitee From e825f08d8fc0fad82ece407704111f18549857b8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:00 +0800 Subject: [PATCH 0546/1421] Revert "um: Add cmpxchg8b_emu and checksum functions to asm-prototypes.h" This reverts commit b8cbd5799a2f0902f5947129ef40494621ac3d71. --- arch/um/include/asm/asm-prototypes.h | 5 ----- arch/x86/um/asm/checksum.h | 3 --- 2 files changed, 8 deletions(-) diff --git a/arch/um/include/asm/asm-prototypes.h b/arch/um/include/asm/asm-prototypes.h index 408b31d59127..5898a26daa0d 100644 --- a/arch/um/include/asm/asm-prototypes.h +++ b/arch/um/include/asm/asm-prototypes.h @@ -1,6 +1 @@ #include -#include - -#ifdef CONFIG_UML_X86 -extern void cmpxchg8b_emu(void); -#endif diff --git a/arch/x86/um/asm/checksum.h b/arch/x86/um/asm/checksum.h index ddc144657efa..b07824500363 100644 --- a/arch/x86/um/asm/checksum.h +++ b/arch/x86/um/asm/checksum.h @@ -20,9 +20,6 @@ */ extern __wsum csum_partial(const void *buff, int len, __wsum sum); -/* Do not call this directly. Declared for export type visibility. */ -extern __visible __wsum csum_partial_copy_generic(const void *src, void *dst, int len); - /** * csum_fold - Fold and invert a 32bit checksum. * sum: 32bit unfolded sum -- Gitee From 450cdb3df63c89a739660ea1e41e101c4dea6225 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:01 +0800 Subject: [PATCH 0547/1421] Revert "iio: pressure: zpa2326: Use aligned_s64 for the timestamp" This reverts commit 5dde8385931df99f39b9dc27f2d2ce1f8d5f9dfd. --- drivers/iio/pressure/zpa2326.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/pressure/zpa2326.c b/drivers/iio/pressure/zpa2326.c index a1c694199c98..ef1d0349f424 100644 --- a/drivers/iio/pressure/zpa2326.c +++ b/drivers/iio/pressure/zpa2326.c @@ -582,7 +582,7 @@ static int zpa2326_fill_sample_buffer(struct iio_dev *indio_dev, struct { u32 pressure; u16 temperature; - aligned_s64 timestamp; + u64 timestamp; } sample; int err; -- Gitee From f419f4b5e74cab17783988160deda92d4e006197 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:01 +0800 Subject: [PATCH 0548/1421] Revert "drm/scheduler: signal scheduled fence when kill job" This reverts commit 24b519b4b3e71889a901af4a55f7fd24d7f5ce18. --- drivers/gpu/drm/scheduler/sched_entity.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c index eed3b8bed9e4..53130a50584c 100644 --- a/drivers/gpu/drm/scheduler/sched_entity.c +++ b/drivers/gpu/drm/scheduler/sched_entity.c @@ -167,7 +167,6 @@ static void drm_sched_entity_kill_jobs_work(struct work_struct *wrk) { struct drm_sched_job *job = container_of(wrk, typeof(*job), work); - drm_sched_fence_scheduled(job->s_fence, NULL); drm_sched_fence_finished(job->s_fence, -ESRCH); WARN_ON(job->s_fence->parent); job->sched->ops->free_job(job); -- Gitee From 93ee568beba58bc50fbbbd17b25c7cf75974c8fe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:01 +0800 Subject: [PATCH 0549/1421] Revert "bcache: fix NULL pointer in cache_set_flush()" This reverts commit 3355fb4254a31c55af21abdd947671e2c5311b3a. --- drivers/md/bcache/super.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c index b9dfebaa9eae..8440b56e385d 100644 --- a/drivers/md/bcache/super.c +++ b/drivers/md/bcache/super.c @@ -1739,12 +1739,7 @@ static void cache_set_flush(struct closure *cl) mutex_unlock(&b->write_lock); } - /* - * If the register_cache_set() call to bch_cache_set_alloc() failed, - * ca has not been assigned a value and return error. - * So we need check ca is not NULL during bch_cache_set_unregister(). - */ - if (ca && ca->alloc_thread) + if (ca->alloc_thread) kthread_stop(ca->alloc_thread); if (c->journal.cur) { -- Gitee From d0619cf0935245443765314e81cfc9ed95f7db25 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:01 +0800 Subject: [PATCH 0550/1421] Revert "amd/amdkfd: fix a kfd_process ref leak" This reverts commit 709ff3b8e9583a155cd56468cb916c781c617bd5. --- drivers/gpu/drm/amd/amdkfd/kfd_events.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c index 2b07c0000df6..0f58be65132f 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c @@ -1287,7 +1287,6 @@ void kfd_signal_poison_consumed_event(struct kfd_node *dev, u32 pasid) user_gpu_id = kfd_process_get_user_gpu_id(p, dev->id); if (unlikely(user_gpu_id == -EINVAL)) { WARN_ONCE(1, "Could not get user_gpu_id from dev->id:%x\n", dev->id); - kfd_unref_process(p); return; } -- Gitee From c4de7d8216b4fb15560bbb82aa5e8fca1286242e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:02 +0800 Subject: [PATCH 0551/1421] Revert "md/md-bitmap: fix dm-raid max_write_behind setting" This reverts commit b1c9bf81012cdf6d0a1d08128ed620208d827e58. --- drivers/md/md-bitmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index 21decb97bc05..8317e07b326d 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -589,7 +589,7 @@ static int md_bitmap_new_disk_sb(struct bitmap *bitmap) * is a good choice? We choose COUNTER_MAX / 2 arbitrarily. */ write_behind = bitmap->mddev->bitmap_info.max_write_behind; - if (write_behind > COUNTER_MAX / 2) + if (write_behind > COUNTER_MAX) write_behind = COUNTER_MAX / 2; sb->write_behind = cpu_to_le32(write_behind); bitmap->mddev->bitmap_info.max_write_behind = write_behind; -- Gitee From 0ac671de41bea8ee858fdf682c7bda928b698ec5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:02 +0800 Subject: [PATCH 0552/1421] Revert "PCI: apple: Fix missing OF node reference in apple_pcie_setup_port" This reverts commit eef1525d2d8c034520ac1140f48d8f3e032bf2d6. --- drivers/pci/controller/pcie-apple.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c index 08b7070f05d8..7e6bd63a6425 100644 --- a/drivers/pci/controller/pcie-apple.c +++ b/drivers/pci/controller/pcie-apple.c @@ -585,9 +585,6 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie, list_add_tail(&port->entry, &pcie->ports); init_completion(&pcie->event); - /* In the success path, we keep a reference to np around */ - of_node_get(np); - ret = apple_pcie_port_register_irqs(port); WARN_ON(ret); -- Gitee From f9285390a43b69d5c7f146872e5b23c8d3a2301d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:02 +0800 Subject: [PATCH 0553/1421] Revert "PCI: dwc: Make link training more robust by setting PORT_LOGIC_LINK_WIDTH to one lane" This reverts commit c882d1ed9dcef394dc2e5146e5ce44736630a380. --- drivers/pci/controller/dwc/pcie-designware.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 717af1b757f0..2b60d20dfdf5 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -748,19 +748,22 @@ static void dw_pcie_link_set_max_link_width(struct dw_pcie *pci, u32 num_lanes) /* Set link width speed control register */ lwsc = dw_pcie_readl_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL); lwsc &= ~PORT_LOGIC_LINK_WIDTH_MASK; - lwsc |= PORT_LOGIC_LINK_WIDTH_1_LANES; switch (num_lanes) { case 1: plc |= PORT_LINK_MODE_1_LANES; + lwsc |= PORT_LOGIC_LINK_WIDTH_1_LANES; break; case 2: plc |= PORT_LINK_MODE_2_LANES; + lwsc |= PORT_LOGIC_LINK_WIDTH_2_LANES; break; case 4: plc |= PORT_LINK_MODE_4_LANES; + lwsc |= PORT_LOGIC_LINK_WIDTH_4_LANES; break; case 8: plc |= PORT_LINK_MODE_8_LANES; + lwsc |= PORT_LOGIC_LINK_WIDTH_8_LANES; break; default: dev_err(pci->dev, "num-lanes %u: invalid value\n", num_lanes); -- Gitee From 526806e7f6472836044e3a5048c53462d060f6ef Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:02 +0800 Subject: [PATCH 0554/1421] Revert "dmaengine: xilinx_dma: Set dma_device directions" This reverts commit e077ca4e3699bff7d7a9e7971decdd6c42e0d5a3. --- drivers/dma/xilinx/xilinx_dma.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c index 14c4c5031b55..0a3b2e22f23d 100644 --- a/drivers/dma/xilinx/xilinx_dma.c +++ b/drivers/dma/xilinx/xilinx_dma.c @@ -2900,8 +2900,6 @@ static int xilinx_dma_chan_probe(struct xilinx_dma_device *xdev, return -EINVAL; } - xdev->common.directions |= chan->direction; - /* Request the interrupt */ chan->irq = of_irq_get(node, chan->tdest); if (chan->irq < 0) -- Gitee From be039077ef621424e1a644cbe1a7a4896fca1b3a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:02 +0800 Subject: [PATCH 0555/1421] Revert "dmaengine: idxd: Check availability of workqueue allocated by idxd wq driver before using" This reverts commit 423c055f0b2e579448b1b36c57814205b4930399. --- drivers/dma/idxd/cdev.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index aa39fcd389a9..7e3a67f9f0a6 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -354,9 +354,7 @@ static void idxd_cdev_evl_drain_pasid(struct idxd_wq *wq, u32 pasid) set_bit(h, evl->bmap); h = (h + 1) % size; } - if (wq->wq) - drain_workqueue(wq->wq); - + drain_workqueue(wq->wq); mutex_unlock(&evl->lock); } -- Gitee From 8a54c3c4d6119f7f81445afb07c8b441841caa0d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:03 +0800 Subject: [PATCH 0556/1421] Revert "rust: module: place cleanup_module() in .exit.text section" This reverts commit 4326c984febf6f808b7e0532a0cc0dd1d60285ba. --- rust/macros/module.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/macros/module.rs b/rust/macros/module.rs index 7614a7198ce2..7dee348ef0cc 100644 --- a/rust/macros/module.rs +++ b/rust/macros/module.rs @@ -249,7 +249,6 @@ mod __module_init {{ #[cfg(MODULE)] #[doc(hidden)] #[no_mangle] - #[link_section = \".exit.text\"] pub extern \"C\" fn cleanup_module() {{ // SAFETY: // - This function is inaccessible to the outside due to the double -- Gitee From 6a036cb1c7fa829e6af43b44daf3a11885f5c959 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:03 +0800 Subject: [PATCH 0557/1421] Revert "ksmbd: provide zero as a unique ID to the Mac client" This reverts commit fda12b0cd22cdd7289ca75a793731c69807181b4. --- fs/smb/server/connection.h | 1 - fs/smb/server/smb2pdu.c | 19 ++----------------- fs/smb/server/smb2pdu.h | 3 --- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/fs/smb/server/connection.h b/fs/smb/server/connection.h index dc07c6eb8c19..4fdd76ce53b9 100644 --- a/fs/smb/server/connection.h +++ b/fs/smb/server/connection.h @@ -107,7 +107,6 @@ struct ksmbd_conn { __le16 signing_algorithm; bool binding; atomic_t refcnt; - bool is_aapl; }; struct ksmbd_conn_ops { diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 185f7e0744f8..b851cd7d19b4 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -3527,15 +3527,6 @@ int smb2_open(struct ksmbd_work *work) ksmbd_debug(SMB, "get query on disk id context\n"); query_disk_id = 1; } - - if (conn->is_aapl == false) { - context = smb2_find_context_vals(req, SMB2_CREATE_AAPL, 4); - if (IS_ERR(context)) { - rc = PTR_ERR(context); - goto err_out1; - } else if (context) - conn->is_aapl = true; - } } rc = ksmbd_vfs_getattr(&path, &stat); @@ -3974,10 +3965,7 @@ static int smb2_populate_readdir_entry(struct ksmbd_conn *conn, int info_level, if (dinfo->EaSize) dinfo->ExtFileAttributes = FILE_ATTRIBUTE_REPARSE_POINT_LE; dinfo->Reserved = 0; - if (conn->is_aapl) - dinfo->UniqueId = 0; - else - dinfo->UniqueId = cpu_to_le64(ksmbd_kstat->kstat->ino); + dinfo->UniqueId = cpu_to_le64(ksmbd_kstat->kstat->ino); if (d_info->hide_dot_file && d_info->name[0] == '.') dinfo->ExtFileAttributes |= FILE_ATTRIBUTE_HIDDEN_LE; memcpy(dinfo->FileName, conv_name, conv_len); @@ -3994,10 +3982,7 @@ static int smb2_populate_readdir_entry(struct ksmbd_conn *conn, int info_level, smb2_get_reparse_tag_special_file(ksmbd_kstat->kstat->mode); if (fibdinfo->EaSize) fibdinfo->ExtFileAttributes = FILE_ATTRIBUTE_REPARSE_POINT_LE; - if (conn->is_aapl) - fibdinfo->UniqueId = 0; - else - fibdinfo->UniqueId = cpu_to_le64(ksmbd_kstat->kstat->ino); + fibdinfo->UniqueId = cpu_to_le64(ksmbd_kstat->kstat->ino); fibdinfo->ShortNameLength = 0; fibdinfo->Reserved = 0; fibdinfo->Reserved2 = cpu_to_le16(0); diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index 2821e6c8298f..25cc81aac350 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -63,9 +63,6 @@ struct preauth_integrity_info { #define SMB2_SESSION_TIMEOUT (10 * HZ) -/* Apple Defined Contexts */ -#define SMB2_CREATE_AAPL "AAPL" - struct create_durable_req_v2 { struct create_context_hdr ccontext; __u8 Name[8]; -- Gitee From cc387be31ead2ab5863d0c2888e49c0e260493b9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:03 +0800 Subject: [PATCH 0558/1421] Revert "ksmbd: allow a filename to contain special characters on SMB3.1.1 posix extension" This reverts commit 74ea73d35c182bd71001dc52fcb87f9a78d671d4. --- fs/smb/server/smb2pdu.c | 53 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index b851cd7d19b4..d8325504a162 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -2862,7 +2862,7 @@ int smb2_open(struct ksmbd_work *work) int req_op_level = 0, open_flags = 0, may_flags = 0, file_info = 0; int rc = 0; int contxt_cnt = 0, query_disk_id = 0; - bool maximal_access_ctxt = false, posix_ctxt = false; + int maximal_access_ctxt = 0, posix_ctxt = 0; int s_type = 0; int next_off = 0; char *name = NULL; @@ -2889,27 +2889,6 @@ int smb2_open(struct ksmbd_work *work) return create_smb2_pipe(work); } - if (req->CreateContextsOffset && tcon->posix_extensions) { - context = smb2_find_context_vals(req, SMB2_CREATE_TAG_POSIX, 16); - if (IS_ERR(context)) { - rc = PTR_ERR(context); - goto err_out2; - } else if (context) { - struct create_posix *posix = (struct create_posix *)context; - - if (le16_to_cpu(context->DataOffset) + - le32_to_cpu(context->DataLength) < - sizeof(struct create_posix) - 4) { - rc = -EINVAL; - goto err_out2; - } - ksmbd_debug(SMB, "get posix context\n"); - - posix_mode = le32_to_cpu(posix->Mode); - posix_ctxt = true; - } - } - if (req->NameLength) { name = smb2_get_name((char *)req + le16_to_cpu(req->NameOffset), le16_to_cpu(req->NameLength), @@ -2932,11 +2911,9 @@ int smb2_open(struct ksmbd_work *work) goto err_out2; } - if (posix_ctxt == false) { - rc = ksmbd_validate_filename(name); - if (rc < 0) - goto err_out2; - } + rc = ksmbd_validate_filename(name); + if (rc < 0) + goto err_out2; if (ksmbd_share_veto_filename(share, name)) { rc = -ENOENT; @@ -3094,6 +3071,28 @@ int smb2_open(struct ksmbd_work *work) rc = -EBADF; goto err_out2; } + + if (tcon->posix_extensions) { + context = smb2_find_context_vals(req, + SMB2_CREATE_TAG_POSIX, 16); + if (IS_ERR(context)) { + rc = PTR_ERR(context); + goto err_out2; + } else if (context) { + struct create_posix *posix = + (struct create_posix *)context; + if (le16_to_cpu(context->DataOffset) + + le32_to_cpu(context->DataLength) < + sizeof(struct create_posix) - 4) { + rc = -EINVAL; + goto err_out2; + } + ksmbd_debug(SMB, "get posix context\n"); + + posix_mode = le32_to_cpu(posix->Mode); + posix_ctxt = 1; + } + } } if (ksmbd_override_fsids(work)) { -- Gitee From 133259c66640c075ea0bc366ec60e4ad40f841c8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:03 +0800 Subject: [PATCH 0559/1421] Revert "hwmon: (pmbus/max34440) Fix support for max34451" This reverts commit b6cd0ced0113b625cc036deb1dab10d4074d6b9f. --- drivers/hwmon/pmbus/max34440.c | 48 +++------------------------------- 1 file changed, 4 insertions(+), 44 deletions(-) diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c index e14be8ebaad3..fe7f6b1b0985 100644 --- a/drivers/hwmon/pmbus/max34440.c +++ b/drivers/hwmon/pmbus/max34440.c @@ -34,21 +34,16 @@ enum chips { max34440, max34441, max34446, max34451, max34460, max34461 }; /* * The whole max344* family have IOUT_OC_WARN_LIMIT and IOUT_OC_FAULT_LIMIT * swapped from the standard pmbus spec addresses. - * For max34451, version MAX34451ETNA6+ and later has this issue fixed. */ #define MAX34440_IOUT_OC_WARN_LIMIT 0x46 #define MAX34440_IOUT_OC_FAULT_LIMIT 0x4A -#define MAX34451ETNA6_MFR_REV 0x0012 - #define MAX34451_MFR_CHANNEL_CONFIG 0xe4 #define MAX34451_MFR_CHANNEL_CONFIG_SEL_MASK 0x3f struct max34440_data { int id; struct pmbus_driver_info info; - u8 iout_oc_warn_limit; - u8 iout_oc_fault_limit; }; #define to_max34440_data(x) container_of(x, struct max34440_data, info) @@ -65,11 +60,11 @@ static int max34440_read_word_data(struct i2c_client *client, int page, switch (reg) { case PMBUS_IOUT_OC_FAULT_LIMIT: ret = pmbus_read_word_data(client, page, phase, - data->iout_oc_fault_limit); + MAX34440_IOUT_OC_FAULT_LIMIT); break; case PMBUS_IOUT_OC_WARN_LIMIT: ret = pmbus_read_word_data(client, page, phase, - data->iout_oc_warn_limit); + MAX34440_IOUT_OC_WARN_LIMIT); break; case PMBUS_VIRT_READ_VOUT_MIN: ret = pmbus_read_word_data(client, page, phase, @@ -138,11 +133,11 @@ static int max34440_write_word_data(struct i2c_client *client, int page, switch (reg) { case PMBUS_IOUT_OC_FAULT_LIMIT: - ret = pmbus_write_word_data(client, page, data->iout_oc_fault_limit, + ret = pmbus_write_word_data(client, page, MAX34440_IOUT_OC_FAULT_LIMIT, word); break; case PMBUS_IOUT_OC_WARN_LIMIT: - ret = pmbus_write_word_data(client, page, data->iout_oc_warn_limit, + ret = pmbus_write_word_data(client, page, MAX34440_IOUT_OC_WARN_LIMIT, word); break; case PMBUS_VIRT_RESET_POUT_HISTORY: @@ -240,25 +235,6 @@ static int max34451_set_supported_funcs(struct i2c_client *client, */ int page, rv; - bool max34451_na6 = false; - - rv = i2c_smbus_read_word_data(client, PMBUS_MFR_REVISION); - if (rv < 0) - return rv; - - if (rv >= MAX34451ETNA6_MFR_REV) { - max34451_na6 = true; - data->info.format[PSC_VOLTAGE_IN] = direct; - data->info.format[PSC_CURRENT_IN] = direct; - data->info.m[PSC_VOLTAGE_IN] = 1; - data->info.b[PSC_VOLTAGE_IN] = 0; - data->info.R[PSC_VOLTAGE_IN] = 3; - data->info.m[PSC_CURRENT_IN] = 1; - data->info.b[PSC_CURRENT_IN] = 0; - data->info.R[PSC_CURRENT_IN] = 2; - data->iout_oc_fault_limit = PMBUS_IOUT_OC_FAULT_LIMIT; - data->iout_oc_warn_limit = PMBUS_IOUT_OC_WARN_LIMIT; - } for (page = 0; page < 16; page++) { rv = i2c_smbus_write_byte_data(client, PMBUS_PAGE, page); @@ -275,30 +251,16 @@ static int max34451_set_supported_funcs(struct i2c_client *client, case 0x20: data->info.func[page] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; - - if (max34451_na6) - data->info.func[page] |= PMBUS_HAVE_VIN | - PMBUS_HAVE_STATUS_INPUT; break; case 0x21: data->info.func[page] = PMBUS_HAVE_VOUT; - - if (max34451_na6) - data->info.func[page] |= PMBUS_HAVE_VIN; break; case 0x22: data->info.func[page] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT; - - if (max34451_na6) - data->info.func[page] |= PMBUS_HAVE_IIN | - PMBUS_HAVE_STATUS_INPUT; break; case 0x23: data->info.func[page] = PMBUS_HAVE_IOUT; - - if (max34451_na6) - data->info.func[page] |= PMBUS_HAVE_IIN; break; default: break; @@ -532,8 +494,6 @@ static int max34440_probe(struct i2c_client *client) return -ENOMEM; data->id = i2c_match_id(max34440_id, client)->driver_data; data->info = max34440_info[data->id]; - data->iout_oc_fault_limit = MAX34440_IOUT_OC_FAULT_LIMIT; - data->iout_oc_warn_limit = MAX34440_IOUT_OC_WARN_LIMIT; if (data->id == max34451) { rv = max34451_set_supported_funcs(client, data); -- Gitee From 2a3685e401165bdc9d7bef4738569aa41e051df5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:03 +0800 Subject: [PATCH 0560/1421] Revert "NFSv4: xattr handlers should check for absent nfs filehandles" This reverts commit 0db5179179abe2c2184e8f557dfcc27d7d64dbbf. --- fs/nfs/nfs4proc.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 3085a2faab2d..97a009e007f9 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -6059,8 +6059,6 @@ static ssize_t nfs4_proc_get_acl(struct inode *inode, void *buf, size_t buflen, struct nfs_server *server = NFS_SERVER(inode); int ret; - if (unlikely(NFS_FH(inode)->size == 0)) - return -ENODATA; if (!nfs4_server_supports_acls(server, type)) return -EOPNOTSUPP; ret = nfs_revalidate_inode(inode, NFS_INO_INVALID_CHANGE); @@ -6135,9 +6133,6 @@ static int nfs4_proc_set_acl(struct inode *inode, const void *buf, { struct nfs4_exception exception = { }; int err; - - if (unlikely(NFS_FH(inode)->size == 0)) - return -ENODATA; do { err = __nfs4_proc_set_acl(inode, buf, buflen, type); trace_nfs4_set_acl(inode, err); -- Gitee From 2ef723b07d68f75823a78fdeadcd0b993031b7e4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:04 +0800 Subject: [PATCH 0561/1421] Revert "cxl/region: Add a dev_err() on missing target list entries" This reverts commit 67adf7447f2d1ea76b2d01e40aac44fdd992ff7a. --- drivers/cxl/core/region.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 1728cae1e840..d7f7f88009d7 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -1653,13 +1653,6 @@ static int find_pos_and_ways(struct cxl_port *port, struct range *range, } put_device(dev); - if (rc) - dev_err(port->uport_dev, - "failed to find %s:%s in target list of %s\n", - dev_name(&port->dev), - dev_name(port->parent_dport->dport_dev), - dev_name(&cxlsd->cxld.dev)); - return rc; } -- Gitee From c5537a94385be4e10d8d897a04ad4b7c5221c950 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:04 +0800 Subject: [PATCH 0562/1421] Revert "fuse: fix race between concurrent setattrs from multiple nodes" This reverts commit afbabd45e2adfb0e45545f87e189086f22c000a2. --- fs/fuse/dir.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 0b84284ece98..82951a535d2d 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1860,7 +1860,6 @@ int fuse_do_setattr(struct dentry *dentry, struct iattr *attr, int err; bool trust_local_cmtime = is_wb; bool fault_blocked = false; - u64 attr_version; if (!fc->default_permissions) attr->ia_valid |= ATTR_FORCE; @@ -1945,8 +1944,6 @@ int fuse_do_setattr(struct dentry *dentry, struct iattr *attr, if (fc->handle_killpriv_v2 && !capable(CAP_FSETID)) inarg.valid |= FATTR_KILL_SUIDGID; } - - attr_version = fuse_get_attr_version(fm->fc); fuse_setattr_fill(fc, &args, inode, &inarg, &outarg); err = fuse_simple_request(fm, &args); if (err) { @@ -1972,14 +1969,6 @@ int fuse_do_setattr(struct dentry *dentry, struct iattr *attr, /* FIXME: clear I_DIRTY_SYNC? */ } - if (fi->attr_version > attr_version) { - /* - * Apply attributes, for example for fsnotify_change(), but set - * attribute timeout to zero. - */ - outarg.attr_valid = outarg.attr_valid_nsec = 0; - } - fuse_change_attributes_common(inode, &outarg.attr, NULL, ATTR_TIMEOUT(&outarg), fuse_get_cache_mask(inode)); -- Gitee From 6dc4b338fe75eb88711f307631bc25ba1790091f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:04 +0800 Subject: [PATCH 0563/1421] Revert "leds: multicolor: Fix intensity setting while SW blinking" This reverts commit 953726c7ab81ba0ccc80768b9ef4f185eb60c2df. --- drivers/leds/led-class-multicolor.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/leds/led-class-multicolor.c b/drivers/leds/led-class-multicolor.c index e0785935f4ba..ec62a4811613 100644 --- a/drivers/leds/led-class-multicolor.c +++ b/drivers/leds/led-class-multicolor.c @@ -61,8 +61,7 @@ static ssize_t multi_intensity_store(struct device *dev, for (i = 0; i < mcled_cdev->num_colors; i++) mcled_cdev->subled_info[i].intensity = intensity_value[i]; - if (!test_bit(LED_BLINK_SW, &led_cdev->work_flags)) - led_set_brightness(led_cdev, led_cdev->brightness); + led_set_brightness(led_cdev, led_cdev->brightness); ret = size; err_out: mutex_unlock(&led_cdev->led_access); -- Gitee From 5bf4469d959c41535ed9c9eb73db9403068a372c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:04 +0800 Subject: [PATCH 0564/1421] Revert "sunrpc: don't immediately retransmit on seqno miss" This reverts commit 24c529f4e7c2cd32a65151144c48dd7edc150775. --- net/sunrpc/clnt.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 63756607f632..4ffb2bcaf364 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -2733,13 +2733,8 @@ rpc_decode_header(struct rpc_task *task, struct xdr_stream *xdr) case -EPROTONOSUPPORT: goto out_err; case -EACCES: - /* possible RPCSEC_GSS out-of-sequence event (RFC2203), - * reset recv state and keep waiting, don't retransmit - */ - task->tk_rqstp->rq_reply_bytes_recvd = 0; - task->tk_status = xprt_request_enqueue_receive(task); - task->tk_action = call_transmit_status; - return -EBADMSG; + /* Re-encode with a fresh cred */ + fallthrough; default: goto out_garbage; } -- Gitee From 62fa49c60655d3ca91f5070bf6c5cff4aedfb7bc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:05 +0800 Subject: [PATCH 0565/1421] Revert "mfd: max14577: Fix wakeup source leaks on device unbind" This reverts commit 3b675d9b168c97c36b6d88fa3885578685fb870b. --- drivers/mfd/max14577.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/mfd/max14577.c b/drivers/mfd/max14577.c index 17672eeb1732..1f4f5002595c 100644 --- a/drivers/mfd/max14577.c +++ b/drivers/mfd/max14577.c @@ -463,7 +463,6 @@ static void max14577_i2c_remove(struct i2c_client *i2c) { struct max14577 *max14577 = i2c_get_clientdata(i2c); - device_init_wakeup(max14577->dev, false); mfd_remove_devices(max14577->dev); regmap_del_irq_chip(max14577->irq, max14577->irq_data); if (max14577->dev_type == MAXIM_DEVICE_TYPE_MAX77836) -- Gitee From feeb8d0ac4feba32a6ba7234c4c81969c7f83876 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:05 +0800 Subject: [PATCH 0566/1421] Revert "mailbox: Not protect module_put with spin_lock_irqsave" This reverts commit b44c0bde331bb5f3aeff44dc65262130f2d5359d. --- drivers/mailbox/mailbox.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c index cb59b4dbad62..f13d705f7861 100644 --- a/drivers/mailbox/mailbox.c +++ b/drivers/mailbox/mailbox.c @@ -500,8 +500,8 @@ void mbox_free_channel(struct mbox_chan *chan) if (chan->txdone_method == TXDONE_BY_ACK) chan->txdone_method = TXDONE_BY_POLL; - spin_unlock_irqrestore(&chan->lock, flags); module_put(chan->mbox->dev->driver->owner); + spin_unlock_irqrestore(&chan->lock, flags); } EXPORT_SYMBOL_GPL(mbox_free_channel); -- Gitee From 5cadf82e9fac37898a989c772d4d19b920a1882e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:05 +0800 Subject: [PATCH 0567/1421] Revert "NFSv4.2: fix listxattr to return selinux security label" This reverts commit eded7d1295333cbc7263b1ba62ab49e6695666bc. --- fs/nfs/nfs4proc.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 97a009e007f9..1b94a55215e7 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -10625,7 +10625,7 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = { static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size) { - ssize_t error, error2, error3, error4; + ssize_t error, error2, error3; size_t left = size; error = generic_listxattr(dentry, list, left); @@ -10648,16 +10648,8 @@ static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size) error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, left); if (error3 < 0) return error3; - if (list) { - list += error3; - left -= error3; - } - - error4 = security_inode_listsecurity(d_inode(dentry), list, left); - if (error4 < 0) - return error4; - error += error2 + error3 + error4; + error += error2 + error3; if (size && error > size) return -ERANGE; return error; -- Gitee From e1557ccfb50f2fb1b7b0f156e914d8afc7a0d126 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:05 +0800 Subject: [PATCH 0568/1421] Revert "NFSv4: Always set NLINK even if the server doesn't support it" This reverts commit acea85d96f65f936b7460ec8930f4c897cfcabb0. --- fs/nfs/inode.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 419d98cf9e29..06230baaa554 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -555,8 +555,6 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr) set_nlink(inode, fattr->nlink); else if (fattr_supported & NFS_ATTR_FATTR_NLINK) nfs_set_cache_invalid(inode, NFS_INO_INVALID_NLINK); - else - set_nlink(inode, 1); if (fattr->valid & NFS_ATTR_FATTR_OWNER) inode->i_uid = fattr->uid; else if (fattr_supported & NFS_ATTR_FATTR_OWNER) -- Gitee From 13b4c08e07aaec1863fd117d375ac556d236042a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:05 +0800 Subject: [PATCH 0569/1421] Revert "cifs: Fix encoding of SMB1 Session Setup NTLMSSP Request in non-UNICODE mode" This reverts commit 084e5fda3425fe5195324df9e163a57853a88602. --- fs/smb/client/sess.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/fs/smb/client/sess.c b/fs/smb/client/sess.c index c351da8c3e2e..81ac4196bb74 100644 --- a/fs/smb/client/sess.c +++ b/fs/smb/client/sess.c @@ -1740,22 +1740,22 @@ _sess_auth_rawntlmssp_assemble_req(struct sess_data *sess_data) pSMB = (SESSION_SETUP_ANDX *)sess_data->iov[0].iov_base; capabilities = cifs_ssetup_hdr(ses, server, pSMB); + if ((pSMB->req.hdr.Flags2 & SMBFLG2_UNICODE) == 0) { + cifs_dbg(VFS, "NTLMSSP requires Unicode support\n"); + return -ENOSYS; + } + pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC; capabilities |= CAP_EXTENDED_SECURITY; pSMB->req.Capabilities |= cpu_to_le32(capabilities); bcc_ptr = sess_data->iov[2].iov_base; - - if (pSMB->req.hdr.Flags2 & SMBFLG2_UNICODE) { - /* unicode strings must be word aligned */ - if (!IS_ALIGNED(sess_data->iov[0].iov_len + sess_data->iov[1].iov_len, 2)) { - *bcc_ptr = 0; - bcc_ptr++; - } - unicode_oslm_strings(&bcc_ptr, sess_data->nls_cp); - } else { - ascii_oslm_strings(&bcc_ptr, sess_data->nls_cp); + /* unicode strings must be word aligned */ + if (!IS_ALIGNED(sess_data->iov[0].iov_len + sess_data->iov[1].iov_len, 2)) { + *bcc_ptr = 0; + bcc_ptr++; } + unicode_oslm_strings(&bcc_ptr, sess_data->nls_cp); sess_data->iov[2].iov_len = (long) bcc_ptr - (long) sess_data->iov[2].iov_base; -- Gitee From 4b7cbc9ad18b132f45a4230e493f25d9cd6336e0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:06 +0800 Subject: [PATCH 0570/1421] Revert "cifs: Fix cifs_query_path_info() for Windows NT servers" This reverts commit b1d9ff5851b804ba580e006500029df8bf4237d3. --- fs/smb/client/misc.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c index 9e8e0a01ae8e..65d4b72b4d51 100644 --- a/fs/smb/client/misc.c +++ b/fs/smb/client/misc.c @@ -320,14 +320,6 @@ check_smb_hdr(struct smb_hdr *smb) if (smb->Command == SMB_COM_LOCKING_ANDX) return 0; - /* - * Windows NT server returns error resposne (e.g. STATUS_DELETE_PENDING - * or STATUS_OBJECT_NAME_NOT_FOUND or ERRDOS/ERRbadfile or any other) - * for some TRANS2 requests without the RESPONSE flag set in header. - */ - if (smb->Command == SMB_COM_TRANSACTION2 && smb->Status.CifsError != 0) - return 0; - cifs_dbg(VFS, "Server sent request, not response. mid=%u\n", get_mid(smb)); return 1; -- Gitee From 39efc1b8140e8eb69769abdcf3a0a0c45cd0cfd7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:06 +0800 Subject: [PATCH 0571/1421] Revert "cifs: Correctly set SMB1 SessionKey field in Session Setup Request" This reverts commit f5191ff7656bec62085e92102243ba69c9be5694. --- fs/smb/client/cifsglob.h | 1 - fs/smb/client/cifspdu.h | 6 +++--- fs/smb/client/cifssmb.c | 1 - fs/smb/client/sess.c | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index c7da6bf2f44b..6a4ed99e162c 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -739,7 +739,6 @@ struct TCP_Server_Info { char workstation_RFC1001_name[RFC1001_NAME_LEN_WITH_NULL]; __u32 sequence_number; /* for signing, protected by srv_mutex */ __u32 reconnect_instance; /* incremented on each reconnect */ - __le32 session_key_id; /* retrieved from negotiate response and send in session setup request */ struct session_key session_key; unsigned long lstrp; /* when we got last response from this server */ struct cifs_secmech secmech; /* crypto sec mech functs, descriptors */ diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 763178b77454..ca33f6cd6a80 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -557,7 +557,7 @@ typedef union smb_com_session_setup_andx { __le16 MaxBufferSize; __le16 MaxMpxCount; __le16 VcNumber; - __le32 SessionKey; + __u32 SessionKey; __le16 SecurityBlobLength; __u32 Reserved; __le32 Capabilities; /* see below */ @@ -576,7 +576,7 @@ typedef union smb_com_session_setup_andx { __le16 MaxBufferSize; __le16 MaxMpxCount; __le16 VcNumber; - __le32 SessionKey; + __u32 SessionKey; __le16 CaseInsensitivePasswordLength; /* ASCII password len */ __le16 CaseSensitivePasswordLength; /* Unicode password length*/ __u32 Reserved; /* see below */ @@ -614,7 +614,7 @@ typedef union smb_com_session_setup_andx { __le16 MaxBufferSize; __le16 MaxMpxCount; __le16 VcNumber; - __le32 SessionKey; + __u32 SessionKey; __le16 PasswordLength; __u32 Reserved; /* encrypt key len and offset */ __le16 ByteCount; diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c index db35e68e8a58..c36ab20050c1 100644 --- a/fs/smb/client/cifssmb.c +++ b/fs/smb/client/cifssmb.c @@ -479,7 +479,6 @@ CIFSSMBNegotiate(const unsigned int xid, server->max_rw = le32_to_cpu(pSMBr->MaxRawSize); cifs_dbg(NOISY, "Max buf = %d\n", ses->server->maxBuf); server->capabilities = le32_to_cpu(pSMBr->Capabilities); - server->session_key_id = pSMBr->SessionKey; server->timeAdj = (int)(__s16)le16_to_cpu(pSMBr->ServerTimeZone); server->timeAdj *= 60; diff --git a/fs/smb/client/sess.c b/fs/smb/client/sess.c index 81ac4196bb74..8959206a0353 100644 --- a/fs/smb/client/sess.c +++ b/fs/smb/client/sess.c @@ -683,7 +683,6 @@ static __u32 cifs_ssetup_hdr(struct cifs_ses *ses, USHRT_MAX)); pSMB->req.MaxMpxCount = cpu_to_le16(server->maxReq); pSMB->req.VcNumber = cpu_to_le16(1); - pSMB->req.SessionKey = server->session_key_id; /* Now no need to set SMBFLG_CASELESS or obsolete CANONICAL PATH */ -- Gitee From 2396ddee69267885b71baea78806ba85e9b2fd25 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:06 +0800 Subject: [PATCH 0572/1421] Revert "Linux 6.6.95" This reverts commit e19feb31dd9f70836e4277c6b376df7efd88104c. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 679dff5e165c..9625d9072c77 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 95 +SUBLEVEL = 94 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From b2925aaac1fe848e9c68d433890b59709ebbd6bd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:06 +0800 Subject: [PATCH 0573/1421] Revert "cifs: Remove duplicate fattr->cf_dtype assignment from wsl_to_fattr() function" This reverts commit 43bd03652f1a85259f1a1a59b522e9513e3a011a. --- fs/smb/client/reparse.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/smb/client/reparse.c b/fs/smb/client/reparse.c index 4d45c31336df..b6556fe3dfa1 100644 --- a/fs/smb/client/reparse.c +++ b/fs/smb/client/reparse.c @@ -738,6 +738,7 @@ static bool wsl_to_fattr(struct cifs_open_info_data *data, if (!have_xattr_dev && (tag == IO_REPARSE_TAG_LX_CHR || tag == IO_REPARSE_TAG_LX_BLK)) return false; + fattr->cf_dtype = S_DT(fattr->cf_mode); return true; } -- Gitee From 616a5117cc0fcd6a2aafb7eb5a78b0b2ec908544 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:07 +0800 Subject: [PATCH 0574/1421] Revert "gpio: mlxbf3: only get IRQ for device instance 0" This reverts commit 8797b91ed2c549fa7841e840e2b26769bd4e57e2. --- drivers/gpio/gpio-mlxbf3.c | 54 ++++++++++++++------------------------ 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/drivers/gpio/gpio-mlxbf3.c b/drivers/gpio/gpio-mlxbf3.c index 9875e34bde72..10ea71273c89 100644 --- a/drivers/gpio/gpio-mlxbf3.c +++ b/drivers/gpio/gpio-mlxbf3.c @@ -190,9 +190,7 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev) struct mlxbf3_gpio_context *gs; struct gpio_irq_chip *girq; struct gpio_chip *gc; - char *colon_ptr; int ret, irq; - long num; gs = devm_kzalloc(dev, sizeof(*gs), GFP_KERNEL); if (!gs) @@ -229,39 +227,25 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev) gc->owner = THIS_MODULE; gc->add_pin_ranges = mlxbf3_gpio_add_pin_ranges; - colon_ptr = strchr(dev_name(dev), ':'); - if (!colon_ptr) { - dev_err(dev, "invalid device name format\n"); - return -EINVAL; - } - - ret = kstrtol(++colon_ptr, 16, &num); - if (ret) { - dev_err(dev, "invalid device instance\n"); - return ret; - } - - if (!num) { - irq = platform_get_irq(pdev, 0); - if (irq >= 0) { - girq = &gs->gc.irq; - gpio_irq_chip_set_chip(girq, &gpio_mlxbf3_irqchip); - girq->default_type = IRQ_TYPE_NONE; - /* This will let us handle the parent IRQ in the driver */ - girq->num_parents = 0; - girq->parents = NULL; - girq->parent_handler = NULL; - girq->handler = handle_bad_irq; - - /* - * Directly request the irq here instead of passing - * a flow-handler because the irq is shared. - */ - ret = devm_request_irq(dev, irq, mlxbf3_gpio_irq_handler, - IRQF_SHARED, dev_name(dev), gs); - if (ret) - return dev_err_probe(dev, ret, "failed to request IRQ"); - } + irq = platform_get_irq(pdev, 0); + if (irq >= 0) { + girq = &gs->gc.irq; + gpio_irq_chip_set_chip(girq, &gpio_mlxbf3_irqchip); + girq->default_type = IRQ_TYPE_NONE; + /* This will let us handle the parent IRQ in the driver */ + girq->num_parents = 0; + girq->parents = NULL; + girq->parent_handler = NULL; + girq->handler = handle_bad_irq; + + /* + * Directly request the irq here instead of passing + * a flow-handler because the irq is shared. + */ + ret = devm_request_irq(dev, irq, mlxbf3_gpio_irq_handler, + IRQF_SHARED, dev_name(dev), gs); + if (ret) + return dev_err_probe(dev, ret, "failed to request IRQ"); } platform_set_drvdata(pdev, gs); -- Gitee From 8b545e0008bf883cef54fa8197ad6e38fff92b96 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:07 +0800 Subject: [PATCH 0575/1421] Revert "perf evsel: Missed close() when probing hybrid core PMUs" This reverts commit 9b267dda7d76e4ac3d307f9d1dbfa411fbc5412a. --- tools/perf/util/print-events.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/perf/util/print-events.c b/tools/perf/util/print-events.c index fb11a967c450..9bee082194d5 100644 --- a/tools/perf/util/print-events.c +++ b/tools/perf/util/print-events.c @@ -271,7 +271,6 @@ bool is_event_supported(u8 type, u64 config) ret = evsel__open(evsel, NULL, tmap) >= 0; } - evsel__close(evsel); evsel__delete(evsel); } -- Gitee From 4890025055ad593c4815c51e06cefbad6e501498 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:07 +0800 Subject: [PATCH 0576/1421] Revert "RISC-V: KVM: Don't treat SBI HFENCE calls as NOPs" This reverts commit b2b7a7eb920074b795803089b21969616923f2f6. --- arch/riscv/kvm/vcpu_sbi_replace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kvm/vcpu_sbi_replace.c b/arch/riscv/kvm/vcpu_sbi_replace.c index 36f5386c60db..960836e0cac7 100644 --- a/arch/riscv/kvm/vcpu_sbi_replace.c +++ b/arch/riscv/kvm/vcpu_sbi_replace.c @@ -127,9 +127,9 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *run case SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID: /* * Until nested virtualization is implemented, the - * SBI HFENCE calls should return not supported - * hence fallthrough. + * SBI HFENCE calls should be treated as NOPs */ + break; default: retdata->err_val = SBI_ERR_NOT_SUPPORTED; } -- Gitee From 04f4a93f82273fea9326b31c48d2f990576d68d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:07 +0800 Subject: [PATCH 0577/1421] Revert "RISC-V: KVM: Fix the size parameter check in SBI SFENCE calls" This reverts commit 0a65f6ac6b5b53c781640df85c006764230130d2. --- arch/riscv/kvm/vcpu_sbi_replace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kvm/vcpu_sbi_replace.c b/arch/riscv/kvm/vcpu_sbi_replace.c index 960836e0cac7..87ec68ed52d7 100644 --- a/arch/riscv/kvm/vcpu_sbi_replace.c +++ b/arch/riscv/kvm/vcpu_sbi_replace.c @@ -103,7 +103,7 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *run kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_FENCE_I_SENT); break; case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA: - if ((cp->a2 == 0 && cp->a3 == 0) || cp->a3 == -1UL) + if (cp->a2 == 0 && cp->a3 == 0) kvm_riscv_hfence_vvma_all(vcpu->kvm, hbase, hmask); else kvm_riscv_hfence_vvma_gva(vcpu->kvm, hbase, hmask, @@ -111,7 +111,7 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *run kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_HFENCE_VVMA_SENT); break; case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID: - if ((cp->a2 == 0 && cp->a3 == 0) || cp->a3 == -1UL) + if (cp->a2 == 0 && cp->a3 == 0) kvm_riscv_hfence_vvma_asid_all(vcpu->kvm, hbase, hmask, cp->a4); else -- Gitee From d68252442ba923699ee28bcaad40958723e14aca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:07 +0800 Subject: [PATCH 0578/1421] Revert "scsi: elx: efct: Fix memory leak in efct_hw_parse_filter()" This reverts commit 41d4fe5bde0ad42c4d3da63bd09d9f7af3a22371. --- drivers/scsi/elx/efct/efct_hw.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/elx/efct/efct_hw.c b/drivers/scsi/elx/efct/efct_hw.c index 5b079b8b7a08..5a5525054d71 100644 --- a/drivers/scsi/elx/efct/efct_hw.c +++ b/drivers/scsi/elx/efct/efct_hw.c @@ -1120,7 +1120,7 @@ int efct_hw_parse_filter(struct efct_hw *hw, void *value) { int rc = 0; - char *p = NULL, *pp = NULL; + char *p = NULL; char *token; u32 idx = 0; @@ -1132,7 +1132,6 @@ efct_hw_parse_filter(struct efct_hw *hw, void *value) efc_log_err(hw->os, "p is NULL\n"); return -ENOMEM; } - pp = p; idx = 0; while ((token = strsep(&p, ",")) && *token) { @@ -1145,7 +1144,7 @@ efct_hw_parse_filter(struct efct_hw *hw, void *value) if (idx == ARRAY_SIZE(hw->config.filter_def)) break; } - kfree(pp); + kfree(p); return rc; } -- Gitee From 33f5ddbd8669d45eeca76a16caf7e5c25c33ada0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:08 +0800 Subject: [PATCH 0579/1421] Revert "arm64/ptrace: Fix stack-out-of-bounds read in regs_get_kernel_stack_nth()" This reverts commit 64bb4772b4d8f893f63cd13ded6a79b825b1dcaa. --- arch/arm64/kernel/ptrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index c30f5a70bd18..a26293e0cc55 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -139,7 +139,7 @@ unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n) addr += n; if (regs_within_kernel_stack(regs, (unsigned long)addr)) - return READ_ONCE_NOCHECK(*addr); + return *addr; else return 0; } -- Gitee From 3f1cbf80cb12727e358196bda19035c5b307928c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:08 +0800 Subject: [PATCH 0580/1421] Revert "perf/core: Fix WARN in perf_cgroup_switch()" This reverts commit 2b40e16f34dbc00a1715a4ad9fc2d4484cc56cbb. --- kernel/events/core.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 873b17545717..e9e785542b9f 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -171,19 +171,6 @@ static void perf_ctx_unlock(struct perf_cpu_context *cpuctx, raw_spin_unlock(&cpuctx->ctx.lock); } -typedef struct { - struct perf_cpu_context *cpuctx; - struct perf_event_context *ctx; -} class_perf_ctx_lock_t; - -static inline void class_perf_ctx_lock_destructor(class_perf_ctx_lock_t *_T) -{ perf_ctx_unlock(_T->cpuctx, _T->ctx); } - -static inline class_perf_ctx_lock_t -class_perf_ctx_lock_constructor(struct perf_cpu_context *cpuctx, - struct perf_event_context *ctx) -{ perf_ctx_lock(cpuctx, ctx); return (class_perf_ctx_lock_t){ cpuctx, ctx }; } - #define TASK_TOMBSTONE ((void *)-1L) static bool is_kernel_event(struct perf_event *event) @@ -879,13 +866,7 @@ static void perf_cgroup_switch(struct task_struct *task) if (READ_ONCE(cpuctx->cgrp) == cgrp) return; - guard(perf_ctx_lock)(cpuctx, cpuctx->task_ctx); - /* - * Re-check, could've raced vs perf_remove_from_context(). - */ - if (READ_ONCE(cpuctx->cgrp) == NULL) - return; - + perf_ctx_lock(cpuctx, cpuctx->task_ctx); perf_ctx_disable(&cpuctx->ctx, true); ctx_sched_out(&cpuctx->ctx, EVENT_ALL|EVENT_CGROUP); @@ -903,6 +884,7 @@ static void perf_cgroup_switch(struct task_struct *task) ctx_sched_in(&cpuctx->ctx, EVENT_ALL|EVENT_CGROUP); perf_ctx_enable(&cpuctx->ctx, true); + perf_ctx_unlock(cpuctx, cpuctx->task_ctx); } static int perf_cgroup_ensure_storage(struct perf_event *event, -- Gitee From a210c2edeaa7fc5cc02388f019a948f7431359e9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:08 +0800 Subject: [PATCH 0581/1421] Revert "perf: Fix cgroup state vs ERROR" This reverts commit 0e4d2b024cc43d4af24c4a67bb6200e933ad8d6c. --- kernel/events/core.c | 51 ++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index e9e785542b9f..90577a7a3a51 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -2067,9 +2067,8 @@ perf_aux_output_match(struct perf_event *event, struct perf_event *aux_event) } static void put_event(struct perf_event *event); -static void __event_disable(struct perf_event *event, - struct perf_event_context *ctx, - enum perf_event_state state); +static void event_sched_out(struct perf_event *event, + struct perf_event_context *ctx); static void perf_put_aux_event(struct perf_event *event) { @@ -2102,7 +2101,8 @@ static void perf_put_aux_event(struct perf_event *event) * state so that we don't try to schedule it again. Note * that perf_event_enable() will clear the ERROR status. */ - __event_disable(iter, ctx, PERF_EVENT_STATE_ERROR); + event_sched_out(iter, ctx); + perf_event_set_state(event, PERF_EVENT_STATE_ERROR); } } @@ -2156,6 +2156,18 @@ static inline struct list_head *get_event_list(struct perf_event *event) &event->pmu_ctx->flexible_active; } +/* + * Events that have PERF_EV_CAP_SIBLING require being part of a group and + * cannot exist on their own, schedule them out and move them into the ERROR + * state. Also see _perf_event_enable(), it will not be able to recover + * this ERROR state. + */ +static inline void perf_remove_sibling_event(struct perf_event *event) +{ + event_sched_out(event, event->ctx); + perf_event_set_state(event, PERF_EVENT_STATE_ERROR); +} + static void perf_group_detach(struct perf_event *event) { struct perf_event *leader = event->group_leader; @@ -2191,15 +2203,8 @@ static void perf_group_detach(struct perf_event *event) */ list_for_each_entry_safe(sibling, tmp, &event->sibling_list, sibling_list) { - /* - * Events that have PERF_EV_CAP_SIBLING require being part of - * a group and cannot exist on their own, schedule them out - * and move them into the ERROR state. Also see - * _perf_event_enable(), it will not be able to recover this - * ERROR state. - */ if (sibling->event_caps & PERF_EV_CAP_SIBLING) - __event_disable(sibling, ctx, PERF_EVENT_STATE_ERROR); + perf_remove_sibling_event(sibling); sibling->group_leader = sibling; list_del_init(&sibling->sibling_list); @@ -2432,15 +2437,6 @@ static void perf_remove_from_context(struct perf_event *event, unsigned long fla event_function_call(event, __perf_remove_from_context, (void *)flags); } -static void __event_disable(struct perf_event *event, - struct perf_event_context *ctx, - enum perf_event_state state) -{ - event_sched_out(event, ctx); - perf_cgroup_event_disable(event, ctx); - perf_event_set_state(event, state); -} - /* * Cross CPU call to disable a performance event */ @@ -2459,18 +2455,13 @@ static void __perf_event_disable(struct perf_event *event, perf_pmu_disable(event->pmu_ctx->pmu); - /* - * When disabling a group leader, the whole group becomes ineligible - * to run, so schedule out the full group. - */ if (event == event->group_leader) group_sched_out(event, ctx); + else + event_sched_out(event, ctx); - /* - * But only mark the leader OFF; the siblings will remain - * INACTIVE. - */ - __event_disable(event, ctx, PERF_EVENT_STATE_OFF); + perf_event_set_state(event, PERF_EVENT_STATE_OFF); + perf_cgroup_event_disable(event, ctx); perf_pmu_enable(event->pmu_ctx->pmu); } -- Gitee From 8861b9e65b85b84630c6f93c8951ea9a2b539234 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:08 +0800 Subject: [PATCH 0582/1421] Revert "perf: Fix sample vs do_exit()" This reverts commit 4e26c328c65a10d176d8f6389f2295780c53f4f4. --- kernel/events/core.c | 7 ------- kernel/exit.c | 17 ++++++++--------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 90577a7a3a51..563f39518f7f 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -6987,10 +6987,6 @@ perf_sample_ustack_size(u16 stack_size, u16 header_size, if (!regs) return 0; - /* No mm, no stack, no dump. */ - if (!current->mm) - return 0; - /* * Check if we fit in with the requested stack size into the: * - TASK_SIZE @@ -7689,9 +7685,6 @@ perf_callchain(struct perf_event *event, struct pt_regs *regs) const u32 max_stack = event->attr.sample_max_stack; struct perf_callchain_entry *callchain; - if (!current->mm) - user = false; - if (!kernel && !user) return &__empty_callchain; diff --git a/kernel/exit.c b/kernel/exit.c index 8505bc7cdc3e..513ad92c84f2 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -872,15 +872,6 @@ void __noreturn do_exit(long code) tsk->exit_code = code; taskstats_exit(tsk, group_dead); - /* - * Since sampling can touch ->mm, make sure to stop everything before we - * tear it down. - * - * Also flushes inherited counters to the parent - before the parent - * gets woken up by child-exit notifications. - */ - perf_event_exit_task(tsk); - exit_mm(); if (group_dead) @@ -897,6 +888,14 @@ void __noreturn do_exit(long code) exit_task_work(tsk); exit_thread(tsk); + /* + * Flush inherited counters to the parent - before the parent + * gets woken up by child-exit notifications. + * + * because of cgroup mode, must be called before cgroup_exit() + */ + perf_event_exit_task(tsk); + sched_autogroup_exit_task(tsk); cgroup_exit(tsk); -- Gitee From 8707e15e3fc691b1c4646e3e4019898754ab023b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:08 +0800 Subject: [PATCH 0583/1421] Revert "s390/pci: Fix __pcilg_mio_inuser() inline assembly" This reverts commit 8f39b209050d495cb0c8b938b0623a5f19a250d6. --- arch/s390/pci/pci_mmio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/s390/pci/pci_mmio.c b/arch/s390/pci/pci_mmio.c index 2ee7b5a5016c..a90499c087f0 100644 --- a/arch/s390/pci/pci_mmio.c +++ b/arch/s390/pci/pci_mmio.c @@ -223,7 +223,7 @@ static inline int __pcilg_mio_inuser( [ioaddr_len] "+&d" (ioaddr_len.pair), [cc] "+d" (cc), [val] "=d" (val), [dst] "+a" (dst), [cnt] "+d" (cnt), [tmp] "=d" (tmp), - [shift] "+a" (shift) + [shift] "+d" (shift) :: "cc", "memory"); /* did we write everything to the user space buffer? */ -- Gitee From 705aec80d5bed7b4b0539557290f16ee15e7f2ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:09 +0800 Subject: [PATCH 0584/1421] Revert "platform/loongarch: laptop: Add backlight power control support" This reverts commit 4f1fd9e01ed91e1e88aa3f0745686ba6d3e686ec. --- drivers/platform/loongarch/loongson-laptop.c | 73 ++++++++++---------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/drivers/platform/loongarch/loongson-laptop.c b/drivers/platform/loongarch/loongson-laptop.c index 5fcfa3a7970b..fe4fec2d4f94 100644 --- a/drivers/platform/loongarch/loongson-laptop.c +++ b/drivers/platform/loongarch/loongson-laptop.c @@ -56,7 +56,8 @@ static struct input_dev *generic_inputdev; static acpi_handle hotkey_handle; static struct key_entry hotkey_keycode_map[GENERIC_HOTKEY_MAP_MAX]; -static bool bl_powered; +int loongson_laptop_turn_on_backlight(void); +int loongson_laptop_turn_off_backlight(void); static int loongson_laptop_backlight_update(struct backlight_device *bd); /* 2. ACPI Helpers and device model */ @@ -353,42 +354,16 @@ static int ec_backlight_level(u8 level) return level; } -static int ec_backlight_set_power(bool state) -{ - int status; - union acpi_object arg0 = { ACPI_TYPE_INTEGER }; - struct acpi_object_list args = { 1, &arg0 }; - - arg0.integer.value = state; - status = acpi_evaluate_object(NULL, "\\BLSW", &args, NULL); - if (ACPI_FAILURE(status)) { - pr_info("Loongson lvds error: 0x%x\n", status); - return -EIO; - } - - return 0; -} - static int loongson_laptop_backlight_update(struct backlight_device *bd) { - bool target_powered = !backlight_is_blank(bd); - int ret = 0, lvl = ec_backlight_level(bd->props.brightness); + int lvl = ec_backlight_level(bd->props.brightness); if (lvl < 0) return -EIO; - if (ec_set_brightness(lvl)) return -EIO; - if (target_powered != bl_powered) { - ret = ec_backlight_set_power(target_powered); - if (ret < 0) - return ret; - - bl_powered = target_powered; - } - - return ret; + return 0; } static int loongson_laptop_get_brightness(struct backlight_device *bd) @@ -409,7 +384,7 @@ static const struct backlight_ops backlight_laptop_ops = { static int laptop_backlight_register(void) { - int status = 0, ret; + int status = 0; struct backlight_properties props; memset(&props, 0, sizeof(props)); @@ -417,20 +392,44 @@ static int laptop_backlight_register(void) if (!acpi_evalf(hotkey_handle, &status, "ECLL", "d")) return -EIO; - ret = ec_backlight_set_power(true); - if (ret) - return ret; - - bl_powered = true; - props.max_brightness = status; props.brightness = ec_get_brightness(); - props.power = FB_BLANK_UNBLANK; props.type = BACKLIGHT_PLATFORM; backlight_device_register("loongson_laptop", NULL, NULL, &backlight_laptop_ops, &props); + return 0; +} + +int loongson_laptop_turn_on_backlight(void) +{ + int status; + union acpi_object arg0 = { ACPI_TYPE_INTEGER }; + struct acpi_object_list args = { 1, &arg0 }; + + arg0.integer.value = 1; + status = acpi_evaluate_object(NULL, "\\BLSW", &args, NULL); + if (ACPI_FAILURE(status)) { + pr_info("Loongson lvds error: 0x%x\n", status); + return -ENODEV; + } + + return 0; +} + +int loongson_laptop_turn_off_backlight(void) +{ + int status; + union acpi_object arg0 = { ACPI_TYPE_INTEGER }; + struct acpi_object_list args = { 1, &arg0 }; + + arg0.integer.value = 0; + status = acpi_evaluate_object(NULL, "\\BLSW", &args, NULL); + if (ACPI_FAILURE(status)) { + pr_info("Loongson lvds error: 0x%x\n", status); + return -ENODEV; + } return 0; } -- Gitee From 1e62ee9c695d13dc636367bd80d1f9cffb8bd28e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:09 +0800 Subject: [PATCH 0585/1421] Revert "smb: client: fix first command failure during re-negotiation" This reverts commit 1f328c3034a51243245e8ffae33f518ad10d2968. --- fs/smb/client/connect.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 8fa5fe0a8c5c..ed88ec0f2533 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -3982,7 +3982,6 @@ cifs_negotiate_protocol(const unsigned int xid, struct cifs_ses *ses, return 0; } - server->lstrp = jiffies; server->tcpStatus = CifsInNegotiate; spin_unlock(&server->srv_lock); -- Gitee From bc5f4b711b18e2007f42f679ff9a3bbeaf3a63c2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:09 +0800 Subject: [PATCH 0586/1421] Revert "Revert "cpufreq: tegra186: Share policy per cluster"" This reverts commit 91148917c7e3c42457275c411f62b6c46d25ac34. --- drivers/cpufreq/tegra186-cpufreq.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/cpufreq/tegra186-cpufreq.c b/drivers/cpufreq/tegra186-cpufreq.c index 7b8fcfa55038..4e5b6f9a56d1 100644 --- a/drivers/cpufreq/tegra186-cpufreq.c +++ b/drivers/cpufreq/tegra186-cpufreq.c @@ -73,11 +73,18 @@ static int tegra186_cpufreq_init(struct cpufreq_policy *policy) { struct tegra186_cpufreq_data *data = cpufreq_get_driver_data(); unsigned int cluster = data->cpus[policy->cpu].bpmp_cluster_id; + u32 cpu; policy->freq_table = data->clusters[cluster].table; policy->cpuinfo.transition_latency = 300 * 1000; policy->driver_data = NULL; + /* set same policy for all cpus in a cluster */ + for (cpu = 0; cpu < ARRAY_SIZE(tegra186_cpus); cpu++) { + if (data->cpus[cpu].bpmp_cluster_id == cluster) + cpumask_set_cpu(cpu, policy->cpus); + } + return 0; } -- Gitee From e6c9230afd9f271623f6deed05aa99ca88c9712f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:09 +0800 Subject: [PATCH 0587/1421] Revert "ARM: dts: am335x-bone-common: Increase MDIO reset deassert delay to 50ms" This reverts commit eb382a8f11c9053874cb2003dc066afb23ee45fb. --- arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi b/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi index 27e73e745e25..4867ff28c97e 100644 --- a/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi @@ -385,7 +385,7 @@ ethphy0: ethernet-phy@0 { /* Support GPIO reset on revision C3 boards */ reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; reset-assert-us = <300>; - reset-deassert-us = <50000>; + reset-deassert-us = <13000>; }; }; -- Gitee From e72206f4de3a43a01b55e0389d837a71aad3edc4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:09 +0800 Subject: [PATCH 0588/1421] Revert "ARM: dts: am335x-bone-common: Increase MDIO reset deassert time" This reverts commit bc6a0203059758b64d2e43a1eb939bc804c9ea71. --- arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi b/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi index 4867ff28c97e..96451c8a815c 100644 --- a/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi @@ -385,7 +385,7 @@ ethphy0: ethernet-phy@0 { /* Support GPIO reset on revision C3 boards */ reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; reset-assert-us = <300>; - reset-deassert-us = <13000>; + reset-deassert-us = <6500>; }; }; -- Gitee From 77b6b4e4757dba6e5d5075466e370baf7de8d888 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:10 +0800 Subject: [PATCH 0589/1421] Revert "platform/x86: ideapad-laptop: add missing Ideapad Pro 5 fn keys" This reverts commit f31493d9f74ca7d9995a7345a01fe34d1c45f623. --- drivers/platform/x86/ideapad-laptop.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index 50013af0537c..88eefccb6ed2 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -1101,9 +1101,6 @@ static const struct key_entry ideapad_keymap[] = { { KE_KEY, 0x27 | IDEAPAD_WMI_KEY, { KEY_HELP } }, /* Refresh Rate Toggle */ { KE_KEY, 0x0a | IDEAPAD_WMI_KEY, { KEY_DISPLAYTOGGLE } }, - /* Specific to some newer models */ - { KE_KEY, 0x3e | IDEAPAD_WMI_KEY, { KEY_MICMUTE } }, - { KE_KEY, 0x3f | IDEAPAD_WMI_KEY, { KEY_RFKILL } }, { KE_END }, }; -- Gitee From 7341bc354dc5c32d7e79015b5feb03c023a65e62 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:10 +0800 Subject: [PATCH 0590/1421] Revert "serial: sh-sci: Increment the runtime usage counter for the earlycon device" This reverts commit 95fdc38537f26eb92801e0f661c5b154dbc9d7b4. --- drivers/tty/serial/sh-sci.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 247ef6bd66a0..0ea347ccd644 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -3424,22 +3424,6 @@ static int sci_probe_single(struct platform_device *dev, } if (sci_uart_earlycon && sci_ports[0].port.mapbase == sci_res->start) { - /* - * In case: - * - this is the earlycon port (mapped on index 0 in sci_ports[]) and - * - it now maps to an alias other than zero and - * - the earlycon is still alive (e.g., "earlycon keep_bootcon" is - * available in bootargs) - * - * we need to avoid disabling clocks and PM domains through the runtime - * PM APIs called in __device_attach(). For this, increment the runtime - * PM reference counter (the clocks and PM domains were already enabled - * by the bootloader). Otherwise the earlycon may access the HW when it - * has no clocks enabled leading to failures (infinite loop in - * sci_poll_put_char()). - */ - pm_runtime_get_noresume(&dev->dev); - /* * Skip cleanup the sci_port[0] in early_console_exit(), this * port is the same as the earlycon one. -- Gitee From c16837c5f4aac686df63ba0f6783efa38e5fb3c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:10 +0800 Subject: [PATCH 0591/1421] Revert "net: make for_each_netdev_dump() a little more bug-proof" This reverts commit 72e9d39ad5355b71c12f2e2f709f1b73d3415dd2. --- include/linux/netdevice.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index b9fd1486c199..6f90f46e9216 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -3036,8 +3036,7 @@ extern rwlock_t dev_base_lock; /* Device list lock */ #define net_device_entry(lh) list_entry(lh, struct net_device, dev_list) #define for_each_netdev_dump(net, d, ifindex) \ - for (; (d = xa_find(&(net)->dev_by_index, &ifindex, \ - ULONG_MAX, XA_PRESENT)); ifindex++) + xa_for_each_start(&(net)->dev_by_index, (ifindex), (d), (ifindex)) static inline struct net_device *next_net_device(struct net_device *dev) { -- Gitee From fa06be6b23887e9e5700725d8567fecd0d1260f6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:10 +0800 Subject: [PATCH 0592/1421] Revert "smb: Log an error when close_all_cached_dirs fails" This reverts commit b2c746404ec2a081eedbe47982e2dda3b97aa7f9. --- fs/smb/client/cached_dir.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c index d64742ba371a..749794667295 100644 --- a/fs/smb/client/cached_dir.c +++ b/fs/smb/client/cached_dir.c @@ -484,17 +484,8 @@ void close_all_cached_dirs(struct cifs_sb_info *cifs_sb) spin_lock(&cfids->cfid_list_lock); list_for_each_entry(cfid, &cfids->entries, entry) { tmp_list = kmalloc(sizeof(*tmp_list), GFP_ATOMIC); - if (tmp_list == NULL) { - /* - * If the malloc() fails, we won't drop all - * dentries, and unmounting is likely to trigger - * a 'Dentry still in use' error. - */ - cifs_tcon_dbg(VFS, "Out of memory while dropping dentries\n"); - spin_unlock(&cfids->cfid_list_lock); - spin_unlock(&cifs_sb->tlink_tree_lock); - goto done; - } + if (tmp_list == NULL) + break; spin_lock(&cfid->fid_lock); tmp_list->dentry = cfid->dentry; cfid->dentry = NULL; @@ -506,7 +497,6 @@ void close_all_cached_dirs(struct cifs_sb_info *cifs_sb) } spin_unlock(&cifs_sb->tlink_tree_lock); -done: list_for_each_entry_safe(tmp_list, q, &entry, entry) { list_del(&tmp_list->entry); dput(tmp_list->dentry); -- Gitee From 4267c089d761d98aa9f7349e6f9e87cda00dce20 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:10 +0800 Subject: [PATCH 0593/1421] Revert "dt-bindings: i2c: nvidia,tegra20-i2c: Specify the required properties" This reverts commit be3843cf1e6b2258ae142a287f0f7855acea2451. --- .../bindings/i2c/nvidia,tegra20-i2c.yaml | 24 +------------------ 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml index 2cb311ddd912..424a4fc218b6 100644 --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml @@ -103,10 +103,7 @@ properties: resets: items: - - description: - Module reset. This property is optional for controllers in Tegra194, - Tegra234 etc where an internal software reset is available as an - alternative. + - description: module reset reset-names: items: @@ -122,13 +119,6 @@ properties: - const: rx - const: tx -required: - - compatible - - reg - - interrupts - - clocks - - clock-names - allOf: - $ref: /schemas/i2c/i2c-controller.yaml - if: @@ -182,18 +172,6 @@ allOf: items: - description: phandle to the VENC power domain - - if: - not: - properties: - compatible: - contains: - enum: - - nvidia,tegra194-i2c - then: - required: - - resets - - reset-names - unevaluatedProperties: false examples: -- Gitee From 84e2ba9967c9902582f22634c218f4bde757fcd7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:11 +0800 Subject: [PATCH 0594/1421] Revert "EDAC/amd64: Correct number of UMCs for family 19h models 70h-7fh" This reverts commit 4f1fa9094edc8cbe21eefb960480cba0bed27ccf. --- drivers/edac/amd64_edac.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 10119cf27ffd..9cd86390a167 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -4130,7 +4130,6 @@ static int per_family_init(struct amd64_pvt *pvt) break; case 0x70 ... 0x7f: pvt->ctl_name = "F19h_M70h"; - pvt->max_mcs = 4; pvt->flags.zn_regs_v2 = 1; break; case 0xa0 ... 0xaf: -- Gitee From df55b6a8f733a948cdb6f4c92be520d23a8fcf10 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:11 +0800 Subject: [PATCH 0595/1421] Revert "net: atm: fix /proc/net/atm/lec handling" This reverts commit bb05059c7227ff1b168796064952dcdf28f5beb9. --- net/atm/lec.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/atm/lec.c b/net/atm/lec.c index b7fa48a9b720..d4ac1488eca6 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c @@ -909,6 +909,7 @@ static void *lec_itf_walk(struct lec_state *state, loff_t *l) v = (dev && netdev_priv(dev)) ? lec_priv_walk(state, l, netdev_priv(dev)) : NULL; if (!v && dev) { + dev_put(dev); /* Partial state reset for the next time we get called */ dev = NULL; } @@ -932,7 +933,6 @@ static void *lec_seq_start(struct seq_file *seq, loff_t *pos) { struct lec_state *state = seq->private; - mutex_lock(&lec_mutex); state->itf = 0; state->dev = NULL; state->locked = NULL; @@ -950,9 +950,8 @@ static void lec_seq_stop(struct seq_file *seq, void *v) if (state->dev) { spin_unlock_irqrestore(&state->locked->lec_arp_lock, state->flags); - state->dev = NULL; + dev_put(state->dev); } - mutex_unlock(&lec_mutex); } static void *lec_seq_next(struct seq_file *seq, void *v, loff_t *pos) -- Gitee From d0b815a557e5905dbe085301c9938de06133ec25 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:11 +0800 Subject: [PATCH 0596/1421] Revert "net: atm: add lec_mutex" This reverts commit 10175d053a6e8e8c6d217ba98676e3b48703c012. --- net/atm/lec.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/net/atm/lec.c b/net/atm/lec.c index d4ac1488eca6..ac3cfc1ae510 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c @@ -124,7 +124,6 @@ static unsigned char bus_mac[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; /* Device structures */ static struct net_device *dev_lec[MAX_LEC_ITF]; -static DEFINE_MUTEX(lec_mutex); #if IS_ENABLED(CONFIG_BRIDGE) static void lec_handle_bridge(struct sk_buff *skb, struct net_device *dev) @@ -686,7 +685,6 @@ static int lec_vcc_attach(struct atm_vcc *vcc, void __user *arg) int bytes_left; struct atmlec_ioc ioc_data; - lockdep_assert_held(&lec_mutex); /* Lecd must be up in this case */ bytes_left = copy_from_user(&ioc_data, arg, sizeof(struct atmlec_ioc)); if (bytes_left != 0) @@ -712,7 +710,6 @@ static int lec_vcc_attach(struct atm_vcc *vcc, void __user *arg) static int lec_mcast_attach(struct atm_vcc *vcc, int arg) { - lockdep_assert_held(&lec_mutex); if (arg < 0 || arg >= MAX_LEC_ITF) return -EINVAL; arg = array_index_nospec(arg, MAX_LEC_ITF); @@ -728,7 +725,6 @@ static int lecd_attach(struct atm_vcc *vcc, int arg) int i; struct lec_priv *priv; - lockdep_assert_held(&lec_mutex); if (arg < 0) arg = 0; if (arg >= MAX_LEC_ITF) @@ -746,7 +742,6 @@ static int lecd_attach(struct atm_vcc *vcc, int arg) snprintf(dev_lec[i]->name, IFNAMSIZ, "lec%d", i); if (register_netdev(dev_lec[i])) { free_netdev(dev_lec[i]); - dev_lec[i] = NULL; return -EINVAL; } @@ -1008,7 +1003,6 @@ static int lane_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) return -ENOIOCTLCMD; } - mutex_lock(&lec_mutex); switch (cmd) { case ATMLEC_CTRL: err = lecd_attach(vcc, (int)arg); @@ -1023,7 +1017,6 @@ static int lane_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) break; } - mutex_unlock(&lec_mutex); return err; } -- Gitee From b5566882923f76dd498918cef92c5346d76b6a90 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:11 +0800 Subject: [PATCH 0597/1421] Revert "calipso: Fix null-ptr-deref in calipso_req_{set,del}attr()." This reverts commit cf0cc67e297ae1b6a77e4e46eb332b35b3d4c93b. --- net/ipv6/calipso.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/net/ipv6/calipso.c b/net/ipv6/calipso.c index 24666291c54a..c07e3da08d2a 100644 --- a/net/ipv6/calipso.c +++ b/net/ipv6/calipso.c @@ -1210,10 +1210,6 @@ static int calipso_req_setattr(struct request_sock *req, struct ipv6_opt_hdr *old, *new; struct sock *sk = sk_to_full_sk(req_to_sk(req)); - /* sk is NULL for SYN+ACK w/ SYN Cookie */ - if (!sk) - return -ENOMEM; - if (req_inet->ipv6_opt && req_inet->ipv6_opt->hopopt) old = req_inet->ipv6_opt->hopopt; else @@ -1254,10 +1250,6 @@ static void calipso_req_delattr(struct request_sock *req) struct ipv6_txoptions *txopts; struct sock *sk = sk_to_full_sk(req_to_sk(req)); - /* sk is NULL for SYN+ACK w/ SYN Cookie */ - if (!sk) - return; - if (!req_inet->ipv6_opt || !req_inet->ipv6_opt->hopopt) return; -- Gitee From 1dc81b0ae1514d157469e5002022b169f7e01b00 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:11 +0800 Subject: [PATCH 0598/1421] Revert "ublk: santizize the arguments from userspace when adding a device" This reverts commit a2f86ebf58fd9c36c5436c6163ab85d0831b877c. --- drivers/block/ublk_drv.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index df3e5aab4b5a..95095500f93a 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -2323,9 +2323,6 @@ static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd) if (copy_from_user(&info, argp, sizeof(info))) return -EFAULT; - if (info.queue_depth > UBLK_MAX_QUEUE_DEPTH || info.nr_hw_queues > UBLK_MAX_NR_QUEUES) - return -EINVAL; - if (capable(CAP_SYS_ADMIN)) info.flags &= ~UBLK_F_UNPRIVILEGED_DEV; else if (!(info.flags & UBLK_F_UNPRIVILEGED_DEV)) -- Gitee From 448fcbfad63fe17ee5366b90fa8c3836f3f41405 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:12 +0800 Subject: [PATCH 0599/1421] Revert "net: lan743x: fix potential out-of-bounds write in lan743x_ptp_io_event_clock_get()" This reverts commit 7534bb994881cf6e63b0ed39d322e42170a4e0f3. --- drivers/net/ethernet/microchip/lan743x_ptp.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan743x_ptp.h b/drivers/net/ethernet/microchip/lan743x_ptp.h index 225e8232474d..0d29914cd460 100644 --- a/drivers/net/ethernet/microchip/lan743x_ptp.h +++ b/drivers/net/ethernet/microchip/lan743x_ptp.h @@ -18,9 +18,9 @@ */ #define LAN743X_PTP_N_EVENT_CHAN 2 #define LAN743X_PTP_N_PEROUT LAN743X_PTP_N_EVENT_CHAN -#define PCI11X1X_PTP_IO_MAX_CHANNELS 8 -#define LAN743X_PTP_N_EXTTS PCI11X1X_PTP_IO_MAX_CHANNELS +#define LAN743X_PTP_N_EXTTS 4 #define LAN743X_PTP_N_PPS 0 +#define PCI11X1X_PTP_IO_MAX_CHANNELS 8 #define PTP_CMD_CTL_TIMEOUT_CNT 50 struct lan743x_adapter; -- Gitee From 410537b568f7bf6a1502c8d43782f07a469edad1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:12 +0800 Subject: [PATCH 0600/1421] Revert "net: microchip: lan743x: Reduce PTP timeout on HW failure" This reverts commit 4e5870dc03ff3b48114d63b64ade5805ff4a0d69. --- drivers/net/ethernet/microchip/lan743x_ptp.c | 2 +- drivers/net/ethernet/microchip/lan743x_ptp.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan743x_ptp.c b/drivers/net/ethernet/microchip/lan743x_ptp.c index 47f2531198f6..39e1066ecd5f 100644 --- a/drivers/net/ethernet/microchip/lan743x_ptp.c +++ b/drivers/net/ethernet/microchip/lan743x_ptp.c @@ -58,7 +58,7 @@ int lan743x_gpio_init(struct lan743x_adapter *adapter) static void lan743x_ptp_wait_till_cmd_done(struct lan743x_adapter *adapter, u32 bit_mask) { - int timeout = PTP_CMD_CTL_TIMEOUT_CNT; + int timeout = 1000; u32 data = 0; while (timeout && diff --git a/drivers/net/ethernet/microchip/lan743x_ptp.h b/drivers/net/ethernet/microchip/lan743x_ptp.h index 0d29914cd460..e26d4eff7133 100644 --- a/drivers/net/ethernet/microchip/lan743x_ptp.h +++ b/drivers/net/ethernet/microchip/lan743x_ptp.h @@ -21,7 +21,6 @@ #define LAN743X_PTP_N_EXTTS 4 #define LAN743X_PTP_N_PPS 0 #define PCI11X1X_PTP_IO_MAX_CHANNELS 8 -#define PTP_CMD_CTL_TIMEOUT_CNT 50 struct lan743x_adapter; -- Gitee From cca44b91c00a5be04a58f827764b7037d74d57e7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:12 +0800 Subject: [PATCH 0601/1421] Revert "tcp: fix passive TFO socket having invalid NAPI ID" This reverts commit 92bc239fd863d253fe8f39b696b87bc187450e93. --- net/ipv4/tcp_fastopen.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c index 408985eb74ee..32b28fc21b63 100644 --- a/net/ipv4/tcp_fastopen.c +++ b/net/ipv4/tcp_fastopen.c @@ -3,7 +3,6 @@ #include #include #include -#include void tcp_fastopen_init_key_once(struct net *net) { @@ -280,8 +279,6 @@ static struct sock *tcp_fastopen_create_child(struct sock *sk, refcount_set(&req->rsk_refcnt, 2); - sk_mark_napi_id_set(child, skb); - /* Now finish processing the fastopen child socket. */ tcp_init_transfer(child, BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB, skb); -- Gitee From 9171a4ea2a4681c0c90180fb2d2a3e44ea349f6f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:12 +0800 Subject: [PATCH 0602/1421] Revert "tipc: fix null-ptr-deref when acquiring remote ip of ethernet bearer" This reverts commit 7d78a8f62c79a269464bc59e925be1447b2566dd. --- net/tipc/udp_media.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c index e993bd6ed7c2..b16ca400ff55 100644 --- a/net/tipc/udp_media.c +++ b/net/tipc/udp_media.c @@ -489,7 +489,7 @@ int tipc_udp_nl_dump_remoteip(struct sk_buff *skb, struct netlink_callback *cb) rtnl_lock(); b = tipc_bearer_find(net, bname); - if (!b || b->bcast_addr.media_id != TIPC_MEDIA_TYPE_UDP) { + if (!b) { rtnl_unlock(); return -EINVAL; } @@ -500,7 +500,7 @@ int tipc_udp_nl_dump_remoteip(struct sk_buff *skb, struct netlink_callback *cb) rtnl_lock(); b = rtnl_dereference(tn->bearer_list[bid]); - if (!b || b->bcast_addr.media_id != TIPC_MEDIA_TYPE_UDP) { + if (!b) { rtnl_unlock(); return -EINVAL; } -- Gitee From 61b5e554c0103986d5634242edcca485095238bf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:13 +0800 Subject: [PATCH 0603/1421] Revert "tcp: fix tcp_packet_delayed() for tcp_is_non_sack_preventing_reopen() behavior" This reverts commit a96301c7359d0ff28a9dd459323edb76b4a1504e. --- net/ipv4/tcp_input.c | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index f7b95bc8ad60..66d6ad6d633c 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2463,33 +2463,20 @@ static inline bool tcp_packet_delayed(const struct tcp_sock *tp) { const struct sock *sk = (const struct sock *)tp; - /* Received an echoed timestamp before the first retransmission? */ - if (tp->retrans_stamp) - return tcp_tsopt_ecr_before(tp, tp->retrans_stamp); - - /* We set tp->retrans_stamp upon the first retransmission of a loss - * recovery episode, so normally if tp->retrans_stamp is 0 then no - * retransmission has happened yet (likely due to TSQ, which can cause - * fast retransmits to be delayed). So if snd_una advanced while - * (tp->retrans_stamp is 0 then apparently a packet was merely delayed, - * not lost. But there are exceptions where we retransmit but then - * clear tp->retrans_stamp, so we check for those exceptions. + if (tp->retrans_stamp && + tcp_tsopt_ecr_before(tp, tp->retrans_stamp)) + return true; /* got echoed TS before first retransmission */ + + /* Check if nothing was retransmitted (retrans_stamp==0), which may + * happen in fast recovery due to TSQ. But we ignore zero retrans_stamp + * in TCP_SYN_SENT, since when we set FLAG_SYN_ACKED we also clear + * retrans_stamp even if we had retransmitted the SYN. */ + if (!tp->retrans_stamp && /* no record of a retransmit/SYN? */ + sk->sk_state != TCP_SYN_SENT) /* not the FLAG_SYN_ACKED case? */ + return true; /* nothing was retransmitted */ - /* (1) For non-SACK connections, tcp_is_non_sack_preventing_reopen() - * clears tp->retrans_stamp when snd_una == high_seq. - */ - if (!tcp_is_sack(tp) && !before(tp->snd_una, tp->high_seq)) - return false; - - /* (2) In TCP_SYN_SENT tcp_clean_rtx_queue() clears tp->retrans_stamp - * when setting FLAG_SYN_ACKED is set, even if the SYN was - * retransmitted. - */ - if (sk->sk_state == TCP_SYN_SENT) - return false; - - return true; /* tp->retrans_stamp is zero; no retransmit yet */ + return false; } /* Undo procedures. */ -- Gitee From 5c507f36434e3849ae18c77741dbbdab06ba7b5a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:13 +0800 Subject: [PATCH 0604/1421] Revert "atm: atmtcp: Free invalid length skb in atmtcp_c_send()." This reverts commit 2bf56dab15a3c36e435d1f0b60215977b96331e2. --- drivers/atm/atmtcp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/atm/atmtcp.c b/drivers/atm/atmtcp.c index ff558908897f..96bea1ab1ecc 100644 --- a/drivers/atm/atmtcp.c +++ b/drivers/atm/atmtcp.c @@ -288,9 +288,7 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb) struct sk_buff *new_skb; int result = 0; - if (skb->len < sizeof(struct atmtcp_hdr)) - goto done; - + if (!skb->len) return 0; dev = vcc->dev_data; hdr = (struct atmtcp_hdr *) skb->data; if (hdr->length == ATMTCP_HDR_MAGIC) { -- Gitee From 22430723499ce534e1018779af1f6ce4966cd69d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:13 +0800 Subject: [PATCH 0605/1421] Revert "mpls: Use rcu_dereference_rtnl() in mpls_route_input_rcu()." This reverts commit d294f78e9327ca9c8e857514e1590e7c87dbcbca. --- net/mpls/af_mpls.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c index 5a4b175b78c8..43e8343df0db 100644 --- a/net/mpls/af_mpls.c +++ b/net/mpls/af_mpls.c @@ -81,8 +81,8 @@ static struct mpls_route *mpls_route_input_rcu(struct net *net, unsigned index) if (index < net->mpls.platform_labels) { struct mpls_route __rcu **platform_label = - rcu_dereference_rtnl(net->mpls.platform_label); - rt = rcu_dereference_rtnl(platform_label[index]); + rcu_dereference(net->mpls.platform_label); + rt = rcu_dereference(platform_label[index]); } return rt; } -- Gitee From 1bbbfaa830ae0d4d45813f9f7527ad3fb57d1c38 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:13 +0800 Subject: [PATCH 0606/1421] Revert "wifi: carl9170: do not ping device which has failed to load firmware" This reverts commit 41aee8a48f4d3b5ef4fc127db3c0897b380ffc20. --- drivers/net/wireless/ath/carl9170/usb.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c index debac4699687..a5265997b576 100644 --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c @@ -438,21 +438,14 @@ static void carl9170_usb_rx_complete(struct urb *urb) if (atomic_read(&ar->rx_anch_urbs) == 0) { /* - * At this point, either the system is too slow to - * cope with the enormous workload (so we have simply - * run out of active rx urbs and this unfortunately - * leads to an unpredictable device), or the device - * is not fully functional after an unsuccessful - * firmware loading attempts (so it doesn't pass - * ieee80211_register_hw() and there is no internal - * workqueue at all). + * The system is too slow to cope with + * the enormous workload. We have simply + * run out of active rx urbs and this + * unfortunately leads to an unpredictable + * device. */ - if (ar->registered) - ieee80211_queue_work(ar->hw, &ar->ping_work); - else - pr_warn_once("device %s is not registered\n", - dev_name(&ar->udev->dev)); + ieee80211_queue_work(ar->hw, &ar->ping_work); } } else { /* -- Gitee From b88fd73c353dc6c6921cfa62fe3197f4dc6d216d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:13 +0800 Subject: [PATCH 0607/1421] Revert "ptp: allow reading of currently dialed frequency to succeed on free-running clocks" This reverts commit a1f449e33a4f549871c915eeb38e3f64b9dfe741. --- drivers/ptp/ptp_clock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index b7fc260ed43b..6b7e8b7ebcef 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -104,8 +104,7 @@ static int ptp_clock_adjtime(struct posix_clock *pc, struct __kernel_timex *tx) struct ptp_clock_info *ops; int err = -EOPNOTSUPP; - if (tx->modes & (ADJ_SETOFFSET | ADJ_FREQUENCY | ADJ_OFFSET) && - ptp_clock_freerun(ptp)) { + if (ptp_clock_freerun(ptp)) { pr_err("ptp: physical clock is free running\n"); return -EBUSY; } -- Gitee From f9b8092da3ead345b4eea0fc29a4aee2e68e4459 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:14 +0800 Subject: [PATCH 0608/1421] Revert "ptp: fix breakage after ptp_vclock_in_use() rework" This reverts commit 0172c2fb4e78e8cc4a58cca97e9a7e9d0bb210da. --- drivers/ptp/ptp_private.h | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h index a54124269c2f..d0eb4555720e 100644 --- a/drivers/ptp/ptp_private.h +++ b/drivers/ptp/ptp_private.h @@ -89,27 +89,7 @@ static inline int queue_cnt(const struct timestamp_event_queue *q) /* Check if ptp virtual clock is in use */ static inline bool ptp_vclock_in_use(struct ptp_clock *ptp) { - bool in_use = false; - - /* Virtual clocks can't be stacked on top of virtual clocks. - * Avoid acquiring the n_vclocks_mux on virtual clocks, to allow this - * function to be called from code paths where the n_vclocks_mux of the - * parent physical clock is already held. Functionally that's not an - * issue, but lockdep would complain, because they have the same lock - * class. - */ - if (ptp->is_virtual_clock) - return false; - - if (mutex_lock_interruptible(&ptp->n_vclocks_mux)) - return true; - - if (ptp->n_vclocks) - in_use = true; - - mutex_unlock(&ptp->n_vclocks_mux); - - return in_use; + return !ptp->is_virtual_clock; } /* Check if ptp clock shall be free running */ -- Gitee From 73ce6155166efb25e11b5e3fa7ecf43a4fe09fa4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:14 +0800 Subject: [PATCH 0609/1421] Revert "e1000e: set fixed clock frequency indication for Nahum 11 and Nahum 13" This reverts commit 4a44132b838fb3bdc33a3211f96912092c3454c1. --- drivers/net/ethernet/intel/e1000e/netdev.c | 14 +++----------- drivers/net/ethernet/intel/e1000e/ptp.c | 8 +++----- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 7e4fea0e186b..721c098f2bb1 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -3540,6 +3540,9 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca) case e1000_pch_cnp: case e1000_pch_tgp: case e1000_pch_adp: + case e1000_pch_mtp: + case e1000_pch_lnp: + case e1000_pch_ptp: case e1000_pch_nvp: if (er32(TSYNCRXCTL) & E1000_TSYNCRXCTL_SYSCFI) { /* Stable 24MHz frequency */ @@ -3555,17 +3558,6 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca) adapter->cc.shift = shift; } break; - case e1000_pch_mtp: - case e1000_pch_lnp: - case e1000_pch_ptp: - /* System firmware can misreport this value, so set it to a - * stable 38400KHz frequency. - */ - incperiod = INCPERIOD_38400KHZ; - incvalue = INCVALUE_38400KHZ; - shift = INCVALUE_SHIFT_38400KHZ; - adapter->cc.shift = shift; - break; case e1000_82574: case e1000_82583: /* Stable 25MHz frequency */ diff --git a/drivers/net/ethernet/intel/e1000e/ptp.c b/drivers/net/ethernet/intel/e1000e/ptp.c index d039dea48ca3..bbcfd529399b 100644 --- a/drivers/net/ethernet/intel/e1000e/ptp.c +++ b/drivers/net/ethernet/intel/e1000e/ptp.c @@ -294,17 +294,15 @@ void e1000e_ptp_init(struct e1000_adapter *adapter) case e1000_pch_cnp: case e1000_pch_tgp: case e1000_pch_adp: + case e1000_pch_mtp: + case e1000_pch_lnp: + case e1000_pch_ptp: case e1000_pch_nvp: if (er32(TSYNCRXCTL) & E1000_TSYNCRXCTL_SYSCFI) adapter->ptp_clock_info.max_adj = MAX_PPB_24MHZ; else adapter->ptp_clock_info.max_adj = MAX_PPB_38400KHZ; break; - case e1000_pch_mtp: - case e1000_pch_lnp: - case e1000_pch_ptp: - adapter->ptp_clock_info.max_adj = MAX_PPB_38400KHZ; - break; case e1000_82574: case e1000_82583: adapter->ptp_clock_info.max_adj = MAX_PPB_25MHZ; -- Gitee From d07a1cf290d5e19bda82341c6a7f4ee318d74e58 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:14 +0800 Subject: [PATCH 0610/1421] Revert "net: ice: Perform accurate aRFS flow match" This reverts commit f6de876a4d51f5c5575d8c8be6099c73151a1731. --- drivers/net/ethernet/intel/ice/ice_arfs.c | 48 ----------------------- 1 file changed, 48 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_arfs.c b/drivers/net/ethernet/intel/ice/ice_arfs.c index 7036070bc020..d7e0116f6773 100644 --- a/drivers/net/ethernet/intel/ice/ice_arfs.c +++ b/drivers/net/ethernet/intel/ice/ice_arfs.c @@ -376,50 +376,6 @@ ice_arfs_is_perfect_flow_set(struct ice_hw *hw, __be16 l3_proto, u8 l4_proto) return false; } -/** - * ice_arfs_cmp - Check if aRFS filter matches this flow. - * @fltr_info: filter info of the saved ARFS entry. - * @fk: flow dissector keys. - * @n_proto: One of htons(ETH_P_IP) or htons(ETH_P_IPV6). - * @ip_proto: One of IPPROTO_TCP or IPPROTO_UDP. - * - * Since this function assumes limited values for n_proto and ip_proto, it - * is meant to be called only from ice_rx_flow_steer(). - * - * Return: - * * true - fltr_info refers to the same flow as fk. - * * false - fltr_info and fk refer to different flows. - */ -static bool -ice_arfs_cmp(const struct ice_fdir_fltr *fltr_info, const struct flow_keys *fk, - __be16 n_proto, u8 ip_proto) -{ - /* Determine if the filter is for IPv4 or IPv6 based on flow_type, - * which is one of ICE_FLTR_PTYPE_NONF_IPV{4,6}_{TCP,UDP}. - */ - bool is_v4 = fltr_info->flow_type == ICE_FLTR_PTYPE_NONF_IPV4_TCP || - fltr_info->flow_type == ICE_FLTR_PTYPE_NONF_IPV4_UDP; - - /* Following checks are arranged in the quickest and most discriminative - * fields first for early failure. - */ - if (is_v4) - return n_proto == htons(ETH_P_IP) && - fltr_info->ip.v4.src_port == fk->ports.src && - fltr_info->ip.v4.dst_port == fk->ports.dst && - fltr_info->ip.v4.src_ip == fk->addrs.v4addrs.src && - fltr_info->ip.v4.dst_ip == fk->addrs.v4addrs.dst && - fltr_info->ip.v4.proto == ip_proto; - - return fltr_info->ip.v6.src_port == fk->ports.src && - fltr_info->ip.v6.dst_port == fk->ports.dst && - fltr_info->ip.v6.proto == ip_proto && - !memcmp(&fltr_info->ip.v6.src_ip, &fk->addrs.v6addrs.src, - sizeof(struct in6_addr)) && - !memcmp(&fltr_info->ip.v6.dst_ip, &fk->addrs.v6addrs.dst, - sizeof(struct in6_addr)); -} - /** * ice_rx_flow_steer - steer the Rx flow to where application is being run * @netdev: ptr to the netdev being adjusted @@ -491,10 +447,6 @@ ice_rx_flow_steer(struct net_device *netdev, const struct sk_buff *skb, continue; fltr_info = &arfs_entry->fltr_info; - - if (!ice_arfs_cmp(fltr_info, &fk, n_proto, ip_proto)) - continue; - ret = fltr_info->fltr_id; if (fltr_info->q_index == rxq_idx || -- Gitee From 171dd536cbf91053729e91d53007886e0a5482e2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:14 +0800 Subject: [PATCH 0611/1421] Revert "aoe: clean device rq_list in aoedev_downdev()" This reverts commit b2b4daf8d46b60f4b3245fb818835d7a9b44eb99. --- drivers/block/aoe/aoedev.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/block/aoe/aoedev.c b/drivers/block/aoe/aoedev.c index 280679bde3a5..3523dd82d7a0 100644 --- a/drivers/block/aoe/aoedev.c +++ b/drivers/block/aoe/aoedev.c @@ -198,7 +198,6 @@ aoedev_downdev(struct aoedev *d) { struct aoetgt *t, **tt, **te; struct list_head *head, *pos, *nx; - struct request *rq, *rqnext; int i; d->flags &= ~DEVFL_UP; @@ -224,13 +223,6 @@ aoedev_downdev(struct aoedev *d) /* clean out the in-process request (if any) */ aoe_failip(d); - /* clean out any queued block requests */ - list_for_each_entry_safe(rq, rqnext, &d->rq_list, queuelist) { - list_del_init(&rq->queuelist); - blk_mq_start_request(rq); - blk_mq_end_request(rq, BLK_STS_IOERR); - } - /* fast fail all pending I/O */ if (d->blkq) { /* UP is cleared, freeze+quiesce to insure all are errored */ -- Gitee From 7c5e12adb28be38795c2d4e17d4e63f7503ab7d9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:14 +0800 Subject: [PATCH 0612/1421] Revert "pldmfw: Select CRC32 when PLDMFW is selected" This reverts commit 84dc024642c640f51d50671ea0364e2bebe6edce. --- lib/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/Kconfig b/lib/Kconfig index 43d69669465a..ee365b7402f1 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -751,7 +751,6 @@ config GENERIC_LIB_DEVMEM_IS_ALLOWED config PLDMFW bool - select CRC32 default n config ASN1_ENCODER -- Gitee From 0ab3943c9b590a4362e200c71f1d62a11bf2e506 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:15 +0800 Subject: [PATCH 0613/1421] Revert "hwmon: (occ) fix unaligned accesses" This reverts commit 13fea297a3477140bfca521f9912c9d3e6b4e164. --- drivers/hwmon/occ/common.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c index 483f79b39429..256cda99fdc9 100644 --- a/drivers/hwmon/occ/common.c +++ b/drivers/hwmon/occ/common.c @@ -459,10 +459,12 @@ static ssize_t occ_show_power_1(struct device *dev, return sysfs_emit(buf, "%llu\n", val); } -static u64 occ_get_powr_avg(u64 accum, u32 samples) +static u64 occ_get_powr_avg(u64 *accum, u32 *samples) { - return (samples == 0) ? 0 : - mul_u64_u32_div(accum, 1000000UL, samples); + u64 divisor = get_unaligned_be32(samples); + + return (divisor == 0) ? 0 : + div64_u64(get_unaligned_be64(accum) * 1000000ULL, divisor); } static ssize_t occ_show_power_2(struct device *dev, @@ -487,8 +489,8 @@ static ssize_t occ_show_power_2(struct device *dev, get_unaligned_be32(&power->sensor_id), power->function_id, power->apss_channel); case 1: - val = occ_get_powr_avg(get_unaligned_be64(&power->accumulator), - get_unaligned_be32(&power->update_tag)); + val = occ_get_powr_avg(&power->accumulator, + &power->update_tag); break; case 2: val = (u64)get_unaligned_be32(&power->update_tag) * @@ -525,8 +527,8 @@ static ssize_t occ_show_power_a0(struct device *dev, return sysfs_emit(buf, "%u_system\n", get_unaligned_be32(&power->sensor_id)); case 1: - val = occ_get_powr_avg(get_unaligned_be64(&power->system.accumulator), - get_unaligned_be32(&power->system.update_tag)); + val = occ_get_powr_avg(&power->system.accumulator, + &power->system.update_tag); break; case 2: val = (u64)get_unaligned_be32(&power->system.update_tag) * @@ -539,8 +541,8 @@ static ssize_t occ_show_power_a0(struct device *dev, return sysfs_emit(buf, "%u_proc\n", get_unaligned_be32(&power->sensor_id)); case 5: - val = occ_get_powr_avg(get_unaligned_be64(&power->proc.accumulator), - get_unaligned_be32(&power->proc.update_tag)); + val = occ_get_powr_avg(&power->proc.accumulator, + &power->proc.update_tag); break; case 6: val = (u64)get_unaligned_be32(&power->proc.update_tag) * @@ -553,8 +555,8 @@ static ssize_t occ_show_power_a0(struct device *dev, return sysfs_emit(buf, "%u_vdd\n", get_unaligned_be32(&power->sensor_id)); case 9: - val = occ_get_powr_avg(get_unaligned_be64(&power->vdd.accumulator), - get_unaligned_be32(&power->vdd.update_tag)); + val = occ_get_powr_avg(&power->vdd.accumulator, + &power->vdd.update_tag); break; case 10: val = (u64)get_unaligned_be32(&power->vdd.update_tag) * @@ -567,8 +569,8 @@ static ssize_t occ_show_power_a0(struct device *dev, return sysfs_emit(buf, "%u_vdn\n", get_unaligned_be32(&power->sensor_id)); case 13: - val = occ_get_powr_avg(get_unaligned_be64(&power->vdn.accumulator), - get_unaligned_be32(&power->vdn.update_tag)); + val = occ_get_powr_avg(&power->vdn.accumulator, + &power->vdn.update_tag); break; case 14: val = (u64)get_unaligned_be32(&power->vdn.update_tag) * -- Gitee From 9b3855dcab9dd3ad779edb88e959865f66c8e8a4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:15 +0800 Subject: [PATCH 0614/1421] Revert "hwmon: (occ) Rework attribute registration for stack usage" This reverts commit f76d173d20272a56896d3d97ef49ae2779c81a5f. --- drivers/hwmon/occ/common.c | 212 ++++++++++++++++++++++--------------- 1 file changed, 127 insertions(+), 85 deletions(-) diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c index 256cda99fdc9..dd690f700d49 100644 --- a/drivers/hwmon/occ/common.c +++ b/drivers/hwmon/occ/common.c @@ -747,30 +747,29 @@ static ssize_t occ_show_extended(struct device *dev, } /* - * A helper to make it easier to define an occ_attribute. Since these - * are dynamically allocated, we cannot use the existing kernel macros which + * Some helper macros to make it easier to define an occ_attribute. Since these + * are dynamically allocated, we shouldn't use the existing kernel macros which * stringify the name argument. */ -static void occ_init_attribute(struct occ_attribute *attr, int mode, - ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf), - ssize_t (*store)(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count), - int nr, int index, const char *fmt, ...) -{ - va_list args; - - va_start(args, fmt); - vsnprintf(attr->name, sizeof(attr->name), fmt, args); - va_end(args); - - attr->sensor.dev_attr.attr.name = attr->name; - attr->sensor.dev_attr.attr.mode = mode; - attr->sensor.dev_attr.show = show; - attr->sensor.dev_attr.store = store; - attr->sensor.index = index; - attr->sensor.nr = nr; +#define ATTR_OCC(_name, _mode, _show, _store) { \ + .attr = { \ + .name = _name, \ + .mode = VERIFY_OCTAL_PERMISSIONS(_mode), \ + }, \ + .show = _show, \ + .store = _store, \ +} + +#define SENSOR_ATTR_OCC(_name, _mode, _show, _store, _nr, _index) { \ + .dev_attr = ATTR_OCC(_name, _mode, _show, _store), \ + .index = _index, \ + .nr = _nr, \ } +#define OCC_INIT_ATTR(_name, _mode, _show, _store, _nr, _index) \ + ((struct sensor_device_attribute_2) \ + SENSOR_ATTR_OCC(_name, _mode, _show, _store, _nr, _index)) + /* * Allocate and instatiate sensor_device_attribute_2s. It's most efficient to * use our own instead of the built-in hwmon attribute types. @@ -856,15 +855,14 @@ static int occ_setup_sensor_attrs(struct occ *occ) sensors->extended.num_sensors = 0; } - occ->attrs = devm_kcalloc(dev, num_attrs, sizeof(*occ->attrs), + occ->attrs = devm_kzalloc(dev, sizeof(*occ->attrs) * num_attrs, GFP_KERNEL); if (!occ->attrs) return -ENOMEM; /* null-terminated list */ - occ->group.attrs = devm_kcalloc(dev, num_attrs + 1, - sizeof(*occ->group.attrs), - GFP_KERNEL); + occ->group.attrs = devm_kzalloc(dev, sizeof(*occ->group.attrs) * + num_attrs + 1, GFP_KERNEL); if (!occ->group.attrs) return -ENOMEM; @@ -874,33 +872,43 @@ static int occ_setup_sensor_attrs(struct occ *occ) s = i + 1; temp = ((struct temp_sensor_2 *)sensors->temp.data) + i; - occ_init_attribute(attr, 0444, show_temp, NULL, - 0, i, "temp%d_label", s); + snprintf(attr->name, sizeof(attr->name), "temp%d_label", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_temp, NULL, + 0, i); attr++; if (sensors->temp.version == 2 && temp->fru_type == OCC_FRU_TYPE_VRM) { - occ_init_attribute(attr, 0444, show_temp, NULL, - 1, i, "temp%d_alarm", s); + snprintf(attr->name, sizeof(attr->name), + "temp%d_alarm", s); } else { - occ_init_attribute(attr, 0444, show_temp, NULL, - 1, i, "temp%d_input", s); + snprintf(attr->name, sizeof(attr->name), + "temp%d_input", s); } + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_temp, NULL, + 1, i); attr++; if (sensors->temp.version > 1) { - occ_init_attribute(attr, 0444, show_temp, NULL, - 2, i, "temp%d_fru_type", s); + snprintf(attr->name, sizeof(attr->name), + "temp%d_fru_type", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_temp, NULL, 2, i); attr++; - occ_init_attribute(attr, 0444, show_temp, NULL, - 3, i, "temp%d_fault", s); + snprintf(attr->name, sizeof(attr->name), + "temp%d_fault", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_temp, NULL, 3, i); attr++; if (sensors->temp.version == 0x10) { - occ_init_attribute(attr, 0444, show_temp, NULL, - 4, i, "temp%d_max", s); + snprintf(attr->name, sizeof(attr->name), + "temp%d_max", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_temp, NULL, + 4, i); attr++; } } @@ -909,12 +917,14 @@ static int occ_setup_sensor_attrs(struct occ *occ) for (i = 0; i < sensors->freq.num_sensors; ++i) { s = i + 1; - occ_init_attribute(attr, 0444, show_freq, NULL, - 0, i, "freq%d_label", s); + snprintf(attr->name, sizeof(attr->name), "freq%d_label", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_freq, NULL, + 0, i); attr++; - occ_init_attribute(attr, 0444, show_freq, NULL, - 1, i, "freq%d_input", s); + snprintf(attr->name, sizeof(attr->name), "freq%d_input", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_freq, NULL, + 1, i); attr++; } @@ -930,24 +940,32 @@ static int occ_setup_sensor_attrs(struct occ *occ) s = (i * 4) + 1; for (j = 0; j < 4; ++j) { - occ_init_attribute(attr, 0444, show_power, - NULL, nr++, i, - "power%d_label", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_label", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, + nr++, i); attr++; - occ_init_attribute(attr, 0444, show_power, - NULL, nr++, i, - "power%d_average", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_average", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, + nr++, i); attr++; - occ_init_attribute(attr, 0444, show_power, - NULL, nr++, i, - "power%d_average_interval", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_average_interval", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, + nr++, i); attr++; - occ_init_attribute(attr, 0444, show_power, - NULL, nr++, i, - "power%d_input", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_input", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, + nr++, i); attr++; s++; @@ -959,20 +977,28 @@ static int occ_setup_sensor_attrs(struct occ *occ) for (i = 0; i < sensors->power.num_sensors; ++i) { s = i + 1; - occ_init_attribute(attr, 0444, show_power, NULL, - 0, i, "power%d_label", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_label", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, 0, i); attr++; - occ_init_attribute(attr, 0444, show_power, NULL, - 1, i, "power%d_average", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_average", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, 1, i); attr++; - occ_init_attribute(attr, 0444, show_power, NULL, - 2, i, "power%d_average_interval", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_average_interval", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, 2, i); attr++; - occ_init_attribute(attr, 0444, show_power, NULL, - 3, i, "power%d_input", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_input", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_power, NULL, 3, i); attr++; } @@ -980,43 +1006,56 @@ static int occ_setup_sensor_attrs(struct occ *occ) } if (sensors->caps.num_sensors >= 1) { - occ_init_attribute(attr, 0444, show_caps, NULL, - 0, 0, "power%d_label", s); + snprintf(attr->name, sizeof(attr->name), "power%d_label", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_caps, NULL, + 0, 0); attr++; - occ_init_attribute(attr, 0444, show_caps, NULL, - 1, 0, "power%d_cap", s); + snprintf(attr->name, sizeof(attr->name), "power%d_cap", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_caps, NULL, + 1, 0); attr++; - occ_init_attribute(attr, 0444, show_caps, NULL, - 2, 0, "power%d_input", s); + snprintf(attr->name, sizeof(attr->name), "power%d_input", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_caps, NULL, + 2, 0); attr++; - occ_init_attribute(attr, 0444, show_caps, NULL, - 3, 0, "power%d_cap_not_redundant", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_cap_not_redundant", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_caps, NULL, + 3, 0); attr++; - occ_init_attribute(attr, 0444, show_caps, NULL, - 4, 0, "power%d_cap_max", s); + snprintf(attr->name, sizeof(attr->name), "power%d_cap_max", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_caps, NULL, + 4, 0); attr++; - occ_init_attribute(attr, 0444, show_caps, NULL, - 5, 0, "power%d_cap_min", s); + snprintf(attr->name, sizeof(attr->name), "power%d_cap_min", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, show_caps, NULL, + 5, 0); attr++; - occ_init_attribute(attr, 0644, show_caps, occ_store_caps_user, - 6, 0, "power%d_cap_user", s); + snprintf(attr->name, sizeof(attr->name), "power%d_cap_user", + s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0644, show_caps, + occ_store_caps_user, 6, 0); attr++; if (sensors->caps.version > 1) { - occ_init_attribute(attr, 0444, show_caps, NULL, - 7, 0, "power%d_cap_user_source", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_cap_user_source", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_caps, NULL, 7, 0); attr++; if (sensors->caps.version > 2) { - occ_init_attribute(attr, 0444, show_caps, NULL, - 8, 0, - "power%d_cap_min_soft", s); + snprintf(attr->name, sizeof(attr->name), + "power%d_cap_min_soft", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + show_caps, NULL, + 8, 0); attr++; } } @@ -1025,16 +1064,19 @@ static int occ_setup_sensor_attrs(struct occ *occ) for (i = 0; i < sensors->extended.num_sensors; ++i) { s = i + 1; - occ_init_attribute(attr, 0444, occ_show_extended, NULL, - 0, i, "extn%d_label", s); + snprintf(attr->name, sizeof(attr->name), "extn%d_label", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + occ_show_extended, NULL, 0, i); attr++; - occ_init_attribute(attr, 0444, occ_show_extended, NULL, - 1, i, "extn%d_flags", s); + snprintf(attr->name, sizeof(attr->name), "extn%d_flags", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + occ_show_extended, NULL, 1, i); attr++; - occ_init_attribute(attr, 0444, occ_show_extended, NULL, - 2, i, "extn%d_input", s); + snprintf(attr->name, sizeof(attr->name), "extn%d_input", s); + attr->sensor = OCC_INIT_ATTR(attr->name, 0444, + occ_show_extended, NULL, 2, i); attr++; } -- Gitee From 49d4befb86666f95ed266ff787a0f9b59cc3b81b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:15 +0800 Subject: [PATCH 0615/1421] Revert "drm/i915/pmu: Fix build error with GCOV and AutoFDO enabled" This reverts commit 1449e55ea285b448e4e6204893079fc00e08b221. --- drivers/gpu/drm/i915/i915_pmu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i915_pmu.c index 33ab82c334a8..7b1076b5e748 100644 --- a/drivers/gpu/drm/i915/i915_pmu.c +++ b/drivers/gpu/drm/i915/i915_pmu.c @@ -105,7 +105,7 @@ static u32 config_mask(const u64 config) { unsigned int bit = config_bit(config); - if (__builtin_constant_p(bit)) + if (__builtin_constant_p(config)) BUILD_BUG_ON(bit > BITS_PER_TYPE(typeof_member(struct i915_pmu, enable)) - 1); @@ -114,7 +114,7 @@ static u32 config_mask(const u64 config) BITS_PER_TYPE(typeof_member(struct i915_pmu, enable)) - 1); - return BIT(bit); + return BIT(config_bit(config)); } static bool is_engine_event(struct perf_event *event) -- Gitee From 291888eb77828d8dac2c29bfc047fe207784cc17 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:15 +0800 Subject: [PATCH 0616/1421] Revert "drm/nouveau/bl: increase buffer size to avoid truncate warning" This reverts commit 291a0d6712c04cfc3ecf27e8ab667036121d78ad. --- drivers/gpu/drm/nouveau/nouveau_backlight.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_backlight.c b/drivers/gpu/drm/nouveau/nouveau_backlight.c index 4e6f305c9e50..91b5ecc57538 100644 --- a/drivers/gpu/drm/nouveau/nouveau_backlight.c +++ b/drivers/gpu/drm/nouveau/nouveau_backlight.c @@ -42,7 +42,7 @@ #include "nouveau_acpi.h" static struct ida bl_ida; -#define BL_NAME_SIZE 24 // 12 for name + 11 for digits + 1 for '\0' +#define BL_NAME_SIZE 15 // 12 for name + 2 for digits + 1 for '\0' static bool nouveau_get_backlight_name(char backlight_name[BL_NAME_SIZE], -- Gitee From 50db1243af63ea3d1dae5f2214db157486b006dd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:15 +0800 Subject: [PATCH 0617/1421] Revert "ionic: Prevent driver/fw getting out of sync on devcmd(s)" This reverts commit d0e247b30e30b02dedccba0dc42f67551a627c0f. --- drivers/net/ethernet/pensando/ionic/ionic_main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_main.c b/drivers/net/ethernet/pensando/ionic/ionic_main.c index 2869922cffe2..3ca6893d1bf2 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_main.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_main.c @@ -464,9 +464,9 @@ static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds, unsigned long start_time; unsigned long max_wait; unsigned long duration; + int done = 0; bool fw_up; int opcode; - bool done; int err; /* Wait for dev cmd to complete, retrying if we get EAGAIN, @@ -474,7 +474,6 @@ static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds, */ max_wait = jiffies + (max_seconds * HZ); try_again: - done = false; opcode = idev->opcode; start_time = jiffies; for (fw_up = ionic_is_fw_running(idev); -- Gitee From 7bd077c0174a14af9ea9619f860788ba44fcd023 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:16 +0800 Subject: [PATCH 0618/1421] Revert "drm/msm/dsi/dsi_phy_10nm: Fix missing initial VCO rate" This reverts commit 87c7a9b7fadaf8ea1d6baf4819e82b694cc9809d. --- drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c index 1c111969342a..27b592c776a3 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c @@ -716,13 +716,6 @@ static int dsi_pll_10nm_init(struct msm_dsi_phy *phy) /* TODO: Remove this when we have proper display handover support */ msm_dsi_phy_pll_save_state(phy); - /* - * Store also proper vco_current_rate, because its value will be used in - * dsi_10nm_pll_restore_state(). - */ - if (!dsi_pll_10nm_vco_recalc_rate(&pll_10nm->clk_hw, VCO_REF_CLK_RATE)) - pll_10nm->vco_current_rate = pll_10nm->phy->cfg->min_pll_rate; - return 0; } -- Gitee From 67de3e0749f08aebcf412bd9b3c2d35c9696b697 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:16 +0800 Subject: [PATCH 0619/1421] Revert "drm/msm/disp: Correct porch timing for SDM845" This reverts commit 136e261f3f83618ba1d9e05b1817b75e7ad4561a. --- .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c index 2cda9bbf68f9..20c8b9af7a21 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c @@ -93,21 +93,17 @@ static void drm_mode_to_intf_timing_params( timing->vsync_polarity = 0; } - timing->wide_bus_en = dpu_encoder_is_widebus_enabled(phys_enc->parent); - timing->compression_en = dpu_encoder_is_dsc_enabled(phys_enc->parent); - - /* - * For DP/EDP, Shift timings to align it to bottom right. - * wide_bus_en is set for everything excluding SDM845 & - * porch changes cause DisplayPort failure and HDMI tearing. - */ - if (phys_enc->hw_intf->cap->type == INTF_DP && timing->wide_bus_en) { + /* for DP/EDP, Shift timings to align it to bottom right */ + if (phys_enc->hw_intf->cap->type == INTF_DP) { timing->h_back_porch += timing->h_front_porch; timing->h_front_porch = 0; timing->v_back_porch += timing->v_front_porch; timing->v_front_porch = 0; } + timing->wide_bus_en = dpu_encoder_is_widebus_enabled(phys_enc->parent); + timing->compression_en = dpu_encoder_is_dsc_enabled(phys_enc->parent); + /* * for DP, divide the horizonal parameters by 2 when * widebus is enabled -- Gitee From 3dfb3620efb4afcfe1282247eea32269c525f7c4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:16 +0800 Subject: [PATCH 0620/1421] Revert "smb: fix secondary channel creation issue with kerberos by populating hostname when adding channels" This reverts commit b9601aeda6a4b397c79e2e02dce7203c421e84e8. --- fs/smb/client/sess.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/smb/client/sess.c b/fs/smb/client/sess.c index 8959206a0353..c9e6de42eedb 100644 --- a/fs/smb/client/sess.c +++ b/fs/smb/client/sess.c @@ -558,7 +558,8 @@ cifs_ses_add_channel(struct cifs_ses *ses, ctx->domainauto = ses->domainAuto; ctx->domainname = ses->domainName; - ctx->server_hostname = ses->server->hostname; + /* no hostname for extra channels */ + ctx->server_hostname = ""; ctx->username = ses->user_name; ctx->password = ses->password; -- Gitee From 75a49c77e3d1e20c2109b73d5e5230bbc460a04d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:16 +0800 Subject: [PATCH 0621/1421] Revert "erofs: remove unused trace event erofs_destroy_inode" This reverts commit 29cf4bd5e19db7b1a61410bf4740dba985ab254c. --- include/trace/events/erofs.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/trace/events/erofs.h b/include/trace/events/erofs.h index 0179af103d0f..e18684b02c3d 100644 --- a/include/trace/events/erofs.h +++ b/include/trace/events/erofs.h @@ -237,6 +237,24 @@ DEFINE_EVENT(erofs__map_blocks_exit, z_erofs_map_blocks_iter_exit, TP_ARGS(inode, map, flags, ret) ); +TRACE_EVENT(erofs_destroy_inode, + TP_PROTO(struct inode *inode), + + TP_ARGS(inode), + + TP_STRUCT__entry( + __field( dev_t, dev ) + __field( erofs_nid_t, nid ) + ), + + TP_fast_assign( + __entry->dev = inode->i_sb->s_dev; + __entry->nid = EROFS_I(inode)->nid; + ), + + TP_printk("dev = (%d,%d), nid = %llu", show_dev_nid(__entry)) +); + #endif /* _TRACE_EROFS_H */ /* This part must be outside protection */ -- Gitee From 4ddbcd165cd2c4bdb0bd1243c1ff6b46021c296c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:17 +0800 Subject: [PATCH 0622/1421] Revert "bpf: Fix L4 csum update on IPv6 in CHECKSUM_COMPLETE" This reverts commit 0d556949bc061c72eefac97d5b735bb17606c170. --- include/uapi/linux/bpf.h | 2 -- net/core/filter.c | 5 ++--- tools/include/uapi/linux/bpf.h | 2 -- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 08a0494736e6..c7f904a72af2 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -1913,7 +1913,6 @@ union bpf_attr { * for updates resulting in a null checksum the value is set to * **CSUM_MANGLED_0** instead. Flag **BPF_F_PSEUDO_HDR** indicates * the checksum is to be computed against a pseudo-header. - * Flag **BPF_F_IPV6** should be set for IPv6 packets. * * This helper works in combination with **bpf_csum_diff**\ (), * which does not update the checksum in-place, but offers more @@ -5921,7 +5920,6 @@ enum { BPF_F_PSEUDO_HDR = (1ULL << 4), BPF_F_MARK_MANGLED_0 = (1ULL << 5), BPF_F_MARK_ENFORCE = (1ULL << 6), - BPF_F_IPV6 = (1ULL << 7), }; /* BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags. */ diff --git a/net/core/filter.c b/net/core/filter.c index 3e10b4c8338f..11ce36fd8392 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -1968,11 +1968,10 @@ BPF_CALL_5(bpf_l4_csum_replace, struct sk_buff *, skb, u32, offset, bool is_pseudo = flags & BPF_F_PSEUDO_HDR; bool is_mmzero = flags & BPF_F_MARK_MANGLED_0; bool do_mforce = flags & BPF_F_MARK_ENFORCE; - bool is_ipv6 = flags & BPF_F_IPV6; __sum16 *ptr; if (unlikely(flags & ~(BPF_F_MARK_MANGLED_0 | BPF_F_MARK_ENFORCE | - BPF_F_PSEUDO_HDR | BPF_F_HDR_FIELD_MASK | BPF_F_IPV6))) + BPF_F_PSEUDO_HDR | BPF_F_HDR_FIELD_MASK))) return -EINVAL; if (unlikely(offset > 0xffff || offset & 1)) return -EFAULT; @@ -1988,7 +1987,7 @@ BPF_CALL_5(bpf_l4_csum_replace, struct sk_buff *, skb, u32, offset, if (unlikely(from != 0)) return -EINVAL; - inet_proto_csum_replace_by_diff(ptr, skb, to, is_pseudo, is_ipv6); + inet_proto_csum_replace_by_diff(ptr, skb, to, is_pseudo, false); break; case 2: inet_proto_csum_replace2(ptr, skb, from, to, is_pseudo); diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 2e064a1032a0..2a90f04a4160 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -1913,7 +1913,6 @@ union bpf_attr { * for updates resulting in a null checksum the value is set to * **CSUM_MANGLED_0** instead. Flag **BPF_F_PSEUDO_HDR** indicates * the checksum is to be computed against a pseudo-header. - * Flag **BPF_F_IPV6** should be set for IPv6 packets. * * This helper works in combination with **bpf_csum_diff**\ (), * which does not update the checksum in-place, but offers more @@ -5921,7 +5920,6 @@ enum { BPF_F_PSEUDO_HDR = (1ULL << 4), BPF_F_MARK_MANGLED_0 = (1ULL << 5), BPF_F_MARK_ENFORCE = (1ULL << 6), - BPF_F_IPV6 = (1ULL << 7), }; /* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */ -- Gitee From cd8e10e12a84f0351d94a2903d1fb027b42c2f15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:17 +0800 Subject: [PATCH 0623/1421] Revert "net: Fix checksum update for ILA adj-transport" This reverts commit aeb1586d2f343ee5817727b14dc0f5c4c3d94270. --- include/net/checksum.h | 2 +- net/core/filter.c | 2 +- net/core/utils.c | 4 ++-- net/ipv6/ila/ila_common.c | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/net/checksum.h b/include/net/checksum.h index 28b101f26636..1338cb92c8e7 100644 --- a/include/net/checksum.h +++ b/include/net/checksum.h @@ -158,7 +158,7 @@ void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb, const __be32 *from, const __be32 *to, bool pseudohdr); void inet_proto_csum_replace_by_diff(__sum16 *sum, struct sk_buff *skb, - __wsum diff, bool pseudohdr, bool ipv6); + __wsum diff, bool pseudohdr); static __always_inline void inet_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb, diff --git a/net/core/filter.c b/net/core/filter.c index 11ce36fd8392..b020cbddb2b3 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -1987,7 +1987,7 @@ BPF_CALL_5(bpf_l4_csum_replace, struct sk_buff *, skb, u32, offset, if (unlikely(from != 0)) return -EINVAL; - inet_proto_csum_replace_by_diff(ptr, skb, to, is_pseudo, false); + inet_proto_csum_replace_by_diff(ptr, skb, to, is_pseudo); break; case 2: inet_proto_csum_replace2(ptr, skb, from, to, is_pseudo); diff --git a/net/core/utils.c b/net/core/utils.c index 5895d034bf27..c994e95172ac 100644 --- a/net/core/utils.c +++ b/net/core/utils.c @@ -473,11 +473,11 @@ void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb, EXPORT_SYMBOL(inet_proto_csum_replace16); void inet_proto_csum_replace_by_diff(__sum16 *sum, struct sk_buff *skb, - __wsum diff, bool pseudohdr, bool ipv6) + __wsum diff, bool pseudohdr) { if (skb->ip_summed != CHECKSUM_PARTIAL) { csum_replace_by_diff(sum, diff); - if (skb->ip_summed == CHECKSUM_COMPLETE && pseudohdr && !ipv6) + if (skb->ip_summed == CHECKSUM_COMPLETE && pseudohdr) skb->csum = ~csum_sub(diff, skb->csum); } else if (pseudohdr) { *sum = ~csum_fold(csum_add(diff, csum_unfold(*sum))); diff --git a/net/ipv6/ila/ila_common.c b/net/ipv6/ila/ila_common.c index b8d43ed4689d..95e9146918cc 100644 --- a/net/ipv6/ila/ila_common.c +++ b/net/ipv6/ila/ila_common.c @@ -86,7 +86,7 @@ static void ila_csum_adjust_transport(struct sk_buff *skb, diff = get_csum_diff(ip6h, p); inet_proto_csum_replace_by_diff(&th->check, skb, - diff, true, true); + diff, true); } break; case NEXTHDR_UDP: @@ -97,7 +97,7 @@ static void ila_csum_adjust_transport(struct sk_buff *skb, if (uh->check || skb->ip_summed == CHECKSUM_PARTIAL) { diff = get_csum_diff(ip6h, p); inet_proto_csum_replace_by_diff(&uh->check, skb, - diff, true, true); + diff, true); if (!uh->check) uh->check = CSUM_MANGLED_0; } @@ -111,7 +111,7 @@ static void ila_csum_adjust_transport(struct sk_buff *skb, diff = get_csum_diff(ip6h, p); inet_proto_csum_replace_by_diff(&ih->icmp6_cksum, skb, - diff, true, true); + diff, true); } break; } -- Gitee From c916e754958d4d8478b9630232621fa3f71be5b0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:17 +0800 Subject: [PATCH 0624/1421] Revert "mm/huge_memory: fix dereferencing invalid pmd migration entry" This reverts commit fc085f90fa41ff99278b8828d45bf92daaad9500. --- mm/huge_memory.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 78f5df12b8eb..635f0f0f6860 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2260,14 +2260,12 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, { spinlock_t *ptl; struct mmu_notifier_range range; - bool pmd_migration; mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma->vm_mm, address & HPAGE_PMD_MASK, (address & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE); mmu_notifier_invalidate_range_start(&range); ptl = pmd_lock(vma->vm_mm, pmd); - pmd_migration = is_pmd_migration_entry(*pmd); /* * If caller asks to setup a migration entry, we need a folio to check @@ -2276,12 +2274,13 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, VM_BUG_ON(freeze && !folio); VM_WARN_ON_ONCE(folio && !folio_test_locked(folio)); - if (pmd_trans_huge(*pmd) || pmd_devmap(*pmd) || pmd_migration) { + if (pmd_trans_huge(*pmd) || pmd_devmap(*pmd) || + is_pmd_migration_entry(*pmd)) { /* - * Do not apply pmd_folio() to a migration entry; and folio lock - * guarantees that it must be of the wrong folio anyway. + * It's safe to call pmd_page when folio is set because it's + * guaranteed that pmd is present. */ - if (folio && (pmd_migration || folio != page_folio(pmd_page(*pmd)))) + if (folio && folio != page_folio(pmd_page(*pmd))) goto out; __split_huge_pmd_locked(vma, pmd, range.start, freeze); } -- Gitee From ec267ae679b25fddb99053078c35286f46d03b11 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:17 +0800 Subject: [PATCH 0625/1421] Revert "mm/hugetlb: unshare page tables during VMA split, not before" This reverts commit c30f75f189f36de923a12a87a832986e4001fe26. --- include/linux/hugetlb.h | 3 --- mm/hugetlb.c | 60 +++++++++++------------------------------ mm/mmap.c | 6 ----- 3 files changed, 16 insertions(+), 53 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 8b051b8c4034..fc2023d07f69 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -281,7 +281,6 @@ long hugetlb_change_protection(struct vm_area_struct *vma, bool is_hugetlb_entry_migration(pte_t pte); void hugetlb_unshare_all_pmds(struct vm_area_struct *vma); -void hugetlb_split(struct vm_area_struct *vma, unsigned long addr); #else /* !CONFIG_HUGETLB_PAGE */ @@ -492,8 +491,6 @@ static inline vm_fault_t hugetlb_fault(struct mm_struct *mm, static inline void hugetlb_unshare_all_pmds(struct vm_area_struct *vma) { } -static inline void hugetlb_split(struct vm_area_struct *vma, unsigned long addr) {} - #endif /* !CONFIG_HUGETLB_PAGE */ /* * hugepages at page global directory. If arch support diff --git a/mm/hugetlb.c b/mm/hugetlb.c index d57d8f1c2dfe..b731f8e0e9d8 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -96,7 +96,7 @@ static void hugetlb_vma_lock_free(struct vm_area_struct *vma); static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma); static void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma); static void hugetlb_unshare_pmds(struct vm_area_struct *vma, - unsigned long start, unsigned long end, bool take_locks); + unsigned long start, unsigned long end); static struct resv_map *vma_resv_map(struct vm_area_struct *vma); static inline bool subpool_is_free(struct hugepage_subpool *spool) @@ -4903,40 +4903,26 @@ static int hugetlb_vm_op_split(struct vm_area_struct *vma, unsigned long addr) { if (addr & ~(huge_page_mask(hstate_vma(vma)))) return -EINVAL; - return 0; -} -void hugetlb_split(struct vm_area_struct *vma, unsigned long addr) -{ /* * PMD sharing is only possible for PUD_SIZE-aligned address ranges * in HugeTLB VMAs. If we will lose PUD_SIZE alignment due to this * split, unshare PMDs in the PUD_SIZE interval surrounding addr now. - * This function is called in the middle of a VMA split operation, with - * MM, VMA and rmap all write-locked to prevent concurrent page table - * walks (except hardware and gup_fast()). */ - vma_assert_write_locked(vma); - i_mmap_assert_write_locked(vma->vm_file->f_mapping); - if (addr & ~PUD_MASK) { + /* + * hugetlb_vm_op_split is called right before we attempt to + * split the VMA. We will need to unshare PMDs in the old and + * new VMAs, so let's unshare before we split. + */ unsigned long floor = addr & PUD_MASK; unsigned long ceil = floor + PUD_SIZE; - if (floor >= vma->vm_start && ceil <= vma->vm_end) { - /* - * Locking: - * Use take_locks=false here. - * The file rmap lock is already held. - * The hugetlb VMA lock can't be taken when we already - * hold the file rmap lock, and we don't need it because - * its purpose is to synchronize against concurrent page - * table walks, which are not possible thanks to the - * locks held by our caller. - */ - hugetlb_unshare_pmds(vma, floor, ceil, /* take_locks = */ false); - } + if (floor >= vma->vm_start && ceil <= vma->vm_end) + hugetlb_unshare_pmds(vma, floor, ceil); } + + return 0; } static unsigned long hugetlb_vm_op_pagesize(struct vm_area_struct *vma) @@ -7319,16 +7305,9 @@ void move_hugetlb_state(struct folio *old_folio, struct folio *new_folio, int re } } -/* - * If @take_locks is false, the caller must ensure that no concurrent page table - * access can happen (except for gup_fast() and hardware page walks). - * If @take_locks is true, we take the hugetlb VMA lock (to lock out things like - * concurrent page fault handling) and the file rmap lock. - */ static void hugetlb_unshare_pmds(struct vm_area_struct *vma, unsigned long start, - unsigned long end, - bool take_locks) + unsigned long end) { struct hstate *h = hstate_vma(vma); unsigned long sz = huge_page_size(h); @@ -7352,12 +7331,8 @@ static void hugetlb_unshare_pmds(struct vm_area_struct *vma, mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, mm, start, end); mmu_notifier_invalidate_range_start(&range); - if (take_locks) { - hugetlb_vma_lock_write(vma); - i_mmap_lock_write(vma->vm_file->f_mapping); - } else { - i_mmap_assert_write_locked(vma->vm_file->f_mapping); - } + hugetlb_vma_lock_write(vma); + i_mmap_lock_write(vma->vm_file->f_mapping); for (address = start; address < end; address += PUD_SIZE) { ptep = hugetlb_walk(vma, address, sz); if (!ptep) @@ -7367,10 +7342,8 @@ static void hugetlb_unshare_pmds(struct vm_area_struct *vma, spin_unlock(ptl); } flush_hugetlb_tlb_range(vma, start, end); - if (take_locks) { - i_mmap_unlock_write(vma->vm_file->f_mapping); - hugetlb_vma_unlock_write(vma); - } + i_mmap_unlock_write(vma->vm_file->f_mapping); + hugetlb_vma_unlock_write(vma); /* * No need to call mmu_notifier_arch_invalidate_secondary_tlbs(), see * Documentation/mm/mmu_notifier.rst. @@ -7385,8 +7358,7 @@ static void hugetlb_unshare_pmds(struct vm_area_struct *vma, void hugetlb_unshare_all_pmds(struct vm_area_struct *vma) { hugetlb_unshare_pmds(vma, ALIGN(vma->vm_start, PUD_SIZE), - ALIGN_DOWN(vma->vm_end, PUD_SIZE), - /* take_locks = */ true); + ALIGN_DOWN(vma->vm_end, PUD_SIZE)); } #ifdef CONFIG_CMA diff --git a/mm/mmap.c b/mm/mmap.c index 32502a813f28..4b9f1b246d42 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2422,13 +2422,7 @@ int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma, init_vma_prep(&vp, vma); vp.insert = new; vma_prepare(&vp); - /* - * Get rid of huge pages and shared page tables straddling the split - * boundary. - */ vma_adjust_trans_huge(vma, vma->vm_start, addr, 0); - if (is_vm_hugetlb_page(vma)) - hugetlb_split(vma, addr); if (new_below) { vma->vm_start = addr; -- Gitee From d62824a79cf9df8d0697fc8a4f390f1d1611ed72 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:17 +0800 Subject: [PATCH 0626/1421] Revert "iio: accel: fxls8962af: Fix temperature calculation" This reverts commit cc3ed20941886b502196182b5c54e934bfa64636. --- drivers/iio/accel/fxls8962af-core.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index 17820b2c3a1d..9dc8b4530e86 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -435,16 +434,8 @@ static int fxls8962af_read_raw(struct iio_dev *indio_dev, *val = FXLS8962AF_TEMP_CENTER_VAL; return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: - switch (chan->type) { - case IIO_TEMP: - *val = MILLIDEGREE_PER_DEGREE; - return IIO_VAL_INT; - case IIO_ACCEL: - *val = 0; - return fxls8962af_read_full_scale(data, val2); - default: - return -EINVAL; - } + *val = 0; + return fxls8962af_read_full_scale(data, val2); case IIO_CHAN_INFO_SAMP_FREQ: return fxls8962af_read_samp_freq(data, val, val2); default: @@ -743,7 +734,6 @@ static const struct iio_event_spec fxls8962af_event[] = { .type = IIO_TEMP, \ .address = FXLS8962AF_TEMP_OUT, \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ - BIT(IIO_CHAN_INFO_SCALE) | \ BIT(IIO_CHAN_INFO_OFFSET),\ .scan_index = -1, \ .scan_type = { \ -- Gitee From ea4680f8cae008ae7d9447b172dd0fc31faba53a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:18 +0800 Subject: [PATCH 0627/1421] Revert "ALSA: hda/realtek: enable headset mic on Latitude 5420 Rugged" This reverts commit 4fed32eea35e396e735d7103c49fee9499b31178. --- sound/pci/hda/patch_realtek.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 82210b1e3b97..440b934cdc28 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -9952,7 +9952,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1028, 0x0871, "Dell Precision 3630", ALC255_FIXUP_DELL_HEADSET_MIC), SND_PCI_QUIRK(0x1028, 0x0872, "Dell Precision 3630", ALC255_FIXUP_DELL_HEADSET_MIC), SND_PCI_QUIRK(0x1028, 0x0873, "Dell Precision 3930", ALC255_FIXUP_DUMMY_LINEOUT_VERB), - SND_PCI_QUIRK(0x1028, 0x0879, "Dell Latitude 5420 Rugged", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x08ad, "Dell WYSE AIO", ALC225_FIXUP_DELL_WYSE_AIO_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x08ae, "Dell WYSE NB", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0935, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB), -- Gitee From bad04556a1952f49137824f619c4b311f17d267d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:18 +0800 Subject: [PATCH 0628/1421] Revert "ALSA: hda/intel: Add Thinkpad E15 to PM deny list" This reverts commit 022d6290903ac768be1ba8a5f51de325ff2567e8. --- sound/pci/hda/hda_intel.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 3cd5b7da8e15..3a0df631d25d 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2266,8 +2266,6 @@ static const struct snd_pci_quirk power_save_denylist[] = { SND_PCI_QUIRK(0x1734, 0x1232, "KONTRON SinglePC", 0), /* Dell ALC3271 */ SND_PCI_QUIRK(0x1028, 0x0962, "Dell ALC3271", 0), - /* https://bugzilla.kernel.org/show_bug.cgi?id=220210 */ - SND_PCI_QUIRK(0x17aa, 0x5079, "Lenovo Thinkpad E15", 0), {} }; #endif /* CONFIG_PM */ -- Gitee From 1aa6730558e2edc3dcc6fb5be5af6234e7fa6d9e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:18 +0800 Subject: [PATCH 0629/1421] Revert "ALSA: usb-audio: Rename ALSA kcontrol PCM and PCM1 for the KTMicro sound card" This reverts commit c50d3efc7bd026bbd4a77ca036afcfd6493bf7a2. --- sound/usb/mixer_maps.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c index faac7df1fbcf..0e9b5431a47f 100644 --- a/sound/usb/mixer_maps.c +++ b/sound/usb/mixer_maps.c @@ -383,13 +383,6 @@ static const struct usbmix_name_map ms_usb_link_map[] = { { 0 } /* terminator */ }; -/* KTMicro USB */ -static struct usbmix_name_map s31b2_0022_map[] = { - { 23, "Speaker Playback" }, - { 18, "Headphone Playback" }, - { 0 } -}; - /* ASUS ROG Zenith II with Realtek ALC1220-VB */ static const struct usbmix_name_map asus_zenith_ii_map[] = { { 19, NULL, 12 }, /* FU, Input Gain Pad - broken response, disabled */ @@ -699,11 +692,6 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = { .id = USB_ID(0x045e, 0x083c), .map = ms_usb_link_map, }, - { - /* KTMicro USB */ - .id = USB_ID(0X31b2, 0x0022), - .map = s31b2_0022_map, - }, { 0 } /* terminator */ }; -- Gitee From 64a7e61f5e019edc2aa751b7d59b8047c2fa58f9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:18 +0800 Subject: [PATCH 0630/1421] Revert "arm64: Restrict pagetable teardown to avoid false warning" This reverts commit fc1d4857bb546258772b1ca0b0a8df0fcb3b72d6. --- arch/arm64/mm/mmu.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index c8e83fe1cd5a..bc97916a035a 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1253,8 +1253,7 @@ int pud_free_pmd_page(pud_t *pudp, unsigned long addr) next = addr; end = addr + PUD_SIZE; do { - if (pmd_present(pmdp_get(pmdp))) - pmd_free_pte_page(pmdp, next); + pmd_free_pte_page(pmdp, next); } while (pmdp++, next += PMD_SIZE, next != end); pud_clear(pudp); -- Gitee From 4de8fec22e3271c5795db559fd4fd6d5b6861059 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:19 +0800 Subject: [PATCH 0631/1421] Revert "wifi: rtw89: pci: use DBI function for 8852AE/8852BE/8851BE" This reverts commit 3bec832137dac3ceb447f8f238e090ceb611cffe. --- drivers/net/wireless/realtek/rtw89/pci.c | 69 +----------------------- drivers/net/wireless/realtek/rtw89/pci.h | 1 - 2 files changed, 2 insertions(+), 68 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c index 33b2543ee4d2..30cc6e03c355 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.c +++ b/drivers/net/wireless/realtek/rtw89/pci.c @@ -1822,87 +1822,22 @@ static int rtw89_write16_mdio_clr(struct rtw89_dev *rtwdev, u8 addr, u16 mask, u return 0; } -static int rtw89_dbi_write8(struct rtw89_dev *rtwdev, u16 addr, u8 data) -{ - u16 addr_2lsb = addr & B_AX_DBI_2LSB; - u16 write_addr; - u8 flag; - int ret; - - write_addr = addr & B_AX_DBI_ADDR_MSK; - write_addr |= u16_encode_bits(BIT(addr_2lsb), B_AX_DBI_WREN_MSK); - rtw89_write8(rtwdev, R_AX_DBI_WDATA + addr_2lsb, data); - rtw89_write16(rtwdev, R_AX_DBI_FLAG, write_addr); - rtw89_write8(rtwdev, R_AX_DBI_FLAG + 2, B_AX_DBI_WFLAG >> 16); - - ret = read_poll_timeout_atomic(rtw89_read8, flag, !flag, 10, - 10 * RTW89_PCI_WR_RETRY_CNT, false, - rtwdev, R_AX_DBI_FLAG + 2); - if (ret) - rtw89_err(rtwdev, "failed to write DBI register, addr=0x%X\n", - addr); - - return ret; -} - -static int rtw89_dbi_read8(struct rtw89_dev *rtwdev, u16 addr, u8 *value) -{ - u16 read_addr = addr & B_AX_DBI_ADDR_MSK; - u8 flag; - int ret; - - rtw89_write16(rtwdev, R_AX_DBI_FLAG, read_addr); - rtw89_write8(rtwdev, R_AX_DBI_FLAG + 2, B_AX_DBI_RFLAG >> 16); - - ret = read_poll_timeout_atomic(rtw89_read8, flag, !flag, 10, - 10 * RTW89_PCI_WR_RETRY_CNT, false, - rtwdev, R_AX_DBI_FLAG + 2); - if (ret) { - rtw89_err(rtwdev, "failed to read DBI register, addr=0x%X\n", - addr); - return ret; - } - - read_addr = R_AX_DBI_RDATA + (addr & 3); - *value = rtw89_read8(rtwdev, read_addr); - - return 0; -} - static int rtw89_pci_write_config_byte(struct rtw89_dev *rtwdev, u16 addr, u8 data) { struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv; - enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id; struct pci_dev *pdev = rtwpci->pdev; - int ret; - - ret = pci_write_config_byte(pdev, addr, data); - if (!ret) - return 0; - if (chip_id == RTL8852A || chip_id == RTL8852B || chip_id == RTL8851B) - ret = rtw89_dbi_write8(rtwdev, addr, data); - - return ret; + return pci_write_config_byte(pdev, addr, data); } static int rtw89_pci_read_config_byte(struct rtw89_dev *rtwdev, u16 addr, u8 *value) { struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv; - enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id; struct pci_dev *pdev = rtwpci->pdev; - int ret; - ret = pci_read_config_byte(pdev, addr, value); - if (!ret) - return 0; - - if (chip_id == RTL8852A || chip_id == RTL8852B || chip_id == RTL8851B) - ret = rtw89_dbi_read8(rtwdev, addr, value); - - return ret; + return pci_read_config_byte(pdev, addr, value); } static int rtw89_pci_config_byte_set(struct rtw89_dev *rtwdev, u16 addr, diff --git a/drivers/net/wireless/realtek/rtw89/pci.h b/drivers/net/wireless/realtek/rtw89/pci.h index 119c0608b91a..4259b79b138f 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.h +++ b/drivers/net/wireless/realtek/rtw89/pci.h @@ -42,7 +42,6 @@ #define B_AX_DBI_WFLAG BIT(16) #define B_AX_DBI_WREN_MSK GENMASK(15, 12) #define B_AX_DBI_ADDR_MSK GENMASK(11, 2) -#define B_AX_DBI_2LSB GENMASK(1, 0) #define R_AX_DBI_WDATA 0x1094 #define R_AX_DBI_RDATA 0x1098 -- Gitee From 05b6dc8260b8cb434228390d22c8aeec12eb2cda Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:19 +0800 Subject: [PATCH 0632/1421] Revert "wifi: cfg80211: init wiphy_work before allocating rfkill fails" This reverts commit dc5f122eef546240ba570bc26cd05299d68b289f. --- net/wireless/core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/wireless/core.c b/net/wireless/core.c index f6693983b5e9..a2b15349324b 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -550,9 +550,6 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, INIT_WORK(&rdev->mgmt_registrations_update_wk, cfg80211_mgmt_registrations_update_wk); spin_lock_init(&rdev->mgmt_registrations_lock); - INIT_WORK(&rdev->wiphy_work, cfg80211_wiphy_work); - INIT_LIST_HEAD(&rdev->wiphy_work_list); - spin_lock_init(&rdev->wiphy_work_lock); #ifdef CONFIG_CFG80211_DEFAULT_PS rdev->wiphy.flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT; @@ -570,6 +567,9 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, return NULL; } + INIT_WORK(&rdev->wiphy_work, cfg80211_wiphy_work); + INIT_LIST_HEAD(&rdev->wiphy_work_list); + spin_lock_init(&rdev->wiphy_work_lock); INIT_WORK(&rdev->rfkill_block, cfg80211_rfkill_block_work); INIT_WORK(&rdev->conn_work, cfg80211_conn_work); INIT_WORK(&rdev->event_work, cfg80211_event_work); -- Gitee From a7f4b9b49143d9ad20024104dd48f21a496d9ca8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:19 +0800 Subject: [PATCH 0633/1421] Revert "Input: sparcspkr - avoid unannotated fall-through" This reverts commit 1fcd0ff9fc7aeb675cae074795d1dc0892867067. --- drivers/input/misc/sparcspkr.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/drivers/input/misc/sparcspkr.c b/drivers/input/misc/sparcspkr.c index d715fd736426..e5dd84725c6e 100644 --- a/drivers/input/misc/sparcspkr.c +++ b/drivers/input/misc/sparcspkr.c @@ -75,14 +75,9 @@ static int bbc_spkr_event(struct input_dev *dev, unsigned int type, unsigned int return -1; switch (code) { - case SND_BELL: - if (value) - value = 1000; - break; - case SND_TONE: - break; - default: - return -1; + case SND_BELL: if (value) value = 1000; + case SND_TONE: break; + default: return -1; } if (value > 20 && value < 32767) @@ -118,14 +113,9 @@ static int grover_spkr_event(struct input_dev *dev, unsigned int type, unsigned return -1; switch (code) { - case SND_BELL: - if (value) - value = 1000; - break; - case SND_TONE: - break; - default: - return -1; + case SND_BELL: if (value) value = 1000; + case SND_TONE: break; + default: return -1; } if (value > 20 && value < 32767) -- Gitee From 2c83f5f7ba394c0a13b2ec4fbe1b674e5fa2f1b9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:19 +0800 Subject: [PATCH 0634/1421] Revert "atm: Revert atm_account_tx() if copy_from_iter_full() fails." This reverts commit c4125d549cfcd69c3faa96a1f19406f7566eecef. --- include/linux/atmdev.h | 6 ------ net/atm/common.c | 1 - net/atm/raw.c | 2 +- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h index 45f2f278b50a..9b02961d65ee 100644 --- a/include/linux/atmdev.h +++ b/include/linux/atmdev.h @@ -249,12 +249,6 @@ static inline void atm_account_tx(struct atm_vcc *vcc, struct sk_buff *skb) ATM_SKB(skb)->atm_options = vcc->atm_options; } -static inline void atm_return_tx(struct atm_vcc *vcc, struct sk_buff *skb) -{ - WARN_ON_ONCE(refcount_sub_and_test(ATM_SKB(skb)->acct_truesize, - &sk_atm(vcc)->sk_wmem_alloc)); -} - static inline void atm_force_charge(struct atm_vcc *vcc,int truesize) { atomic_add(truesize, &sk_atm(vcc)->sk_rmem_alloc); diff --git a/net/atm/common.c b/net/atm/common.c index 9cc82acbc735..f7019df41c3e 100644 --- a/net/atm/common.c +++ b/net/atm/common.c @@ -635,7 +635,6 @@ int vcc_sendmsg(struct socket *sock, struct msghdr *m, size_t size) skb->dev = NULL; /* for paths shared with net_device interfaces */ if (!copy_from_iter_full(skb_put(skb, size), size, &m->msg_iter)) { - atm_return_tx(vcc, skb); kfree_skb(skb); error = -EFAULT; goto out; diff --git a/net/atm/raw.c b/net/atm/raw.c index 1e6511ec842c..2b5f78a7ec3e 100644 --- a/net/atm/raw.c +++ b/net/atm/raw.c @@ -36,7 +36,7 @@ static void atm_pop_raw(struct atm_vcc *vcc, struct sk_buff *skb) pr_debug("(%d) %d -= %d\n", vcc->vci, sk_wmem_alloc_get(sk), ATM_SKB(skb)->acct_truesize); - atm_return_tx(vcc, skb); + WARN_ON(refcount_sub_and_test(ATM_SKB(skb)->acct_truesize, &sk->sk_wmem_alloc)); dev_kfree_skb_any(skb); sk->sk_write_space(sk); } -- Gitee From f5233033b8708c8b0201806ae1e8d484970b3021 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:19 +0800 Subject: [PATCH 0635/1421] Revert "platform/x86/intel-uncore-freq: Fail module load when plat_info is NULL" This reverts commit d300a372153a2bcee8a8a688702aef4c7653589d. --- .../x86/intel/uncore-frequency/uncore-frequency-tpmi.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c index 5be3b2687615..105022164548 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c @@ -269,13 +269,10 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_ /* Get the package ID from the TPMI core */ plat_info = tpmi_get_platform_data(auxdev); - if (unlikely(!plat_info)) { + if (plat_info) + pkg = plat_info->package_id; + else dev_info(&auxdev->dev, "Platform information is NULL\n"); - ret = -ENODEV; - goto err_rem_common; - } - - pkg = plat_info->package_id; for (i = 0; i < num_resources; ++i) { struct tpmi_uncore_power_domain_info *pd_info; -- Gitee From 95fcf0b19276088e5b217c985e4cf8f52592b10b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:20 +0800 Subject: [PATCH 0636/1421] Revert "selinux: fix selinux_xfrm_alloc_user() to set correct ctx_len" This reverts commit 1be277f7cd6cdc2b31ff80fc3e35c1644bba4a3a. --- security/selinux/xfrm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/selinux/xfrm.c b/security/selinux/xfrm.c index 0fbbc62ed3ed..95fcd2d3433e 100644 --- a/security/selinux/xfrm.c +++ b/security/selinux/xfrm.c @@ -95,7 +95,7 @@ static int selinux_xfrm_alloc_user(struct xfrm_sec_ctx **ctxp, ctx->ctx_doi = XFRM_SC_DOI_LSM; ctx->ctx_alg = XFRM_SC_ALG_SELINUX; - ctx->ctx_len = str_len + 1; + ctx->ctx_len = str_len; memcpy(ctx->ctx_str, &uctx[1], str_len); ctx->ctx_str[str_len] = '\0'; rc = security_context_to_sid(ctx->ctx_str, str_len, -- Gitee From 74fa9fc642f44a6f7dcbd224769059bfedfcdd28 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:20 +0800 Subject: [PATCH 0637/1421] Revert "ksmbd: fix null pointer dereference in destroy_previous_session" This reverts commit ea05cc774e356feebe453528932e8eac80043898. --- fs/smb/server/smb2pdu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index d8325504a162..9bd817427a34 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -1599,18 +1599,17 @@ static int krb5_authenticate(struct ksmbd_work *work, out_len = work->response_sz - (le16_to_cpu(rsp->SecurityBufferOffset) + 4); + /* Check previous session */ + prev_sess_id = le64_to_cpu(req->PreviousSessionId); + if (prev_sess_id && prev_sess_id != sess->id) + destroy_previous_session(conn, sess->user, prev_sess_id); + retval = ksmbd_krb5_authenticate(sess, in_blob, in_len, out_blob, &out_len); if (retval) { ksmbd_debug(SMB, "krb5 authentication failed\n"); return -EINVAL; } - - /* Check previous session */ - prev_sess_id = le64_to_cpu(req->PreviousSessionId); - if (prev_sess_id && prev_sess_id != sess->id) - destroy_previous_session(conn, sess->user, prev_sess_id); - rsp->SecurityBufferLength = cpu_to_le16(out_len); if ((conn->sign || server_conf.enforced_signing) || -- Gitee From 1adc36f4e185d1db9b937c73cdc29cc66f05aa5f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:20 +0800 Subject: [PATCH 0638/1421] Revert "selftests/x86: Add a test to detect infinite SIGTRAP handler loop" This reverts commit 8e7891c6aaecae8ff988c854dbbc83ceeef48cea. --- tools/testing/selftests/x86/Makefile | 2 +- tools/testing/selftests/x86/sigtrap_loop.c | 101 --------------------- 2 files changed, 1 insertion(+), 102 deletions(-) delete mode 100644 tools/testing/selftests/x86/sigtrap_loop.c diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile index 13ce9a53d5de..7e8c937627dd 100644 --- a/tools/testing/selftests/x86/Makefile +++ b/tools/testing/selftests/x86/Makefile @@ -12,7 +12,7 @@ CAN_BUILD_WITH_NOPIE := $(shell ./check_cc.sh "$(CC)" trivial_program.c -no-pie) TARGETS_C_BOTHBITS := single_step_syscall sysret_ss_attrs syscall_nt test_mremap_vdso \ check_initial_reg_state sigreturn iopl ioperm \ - test_vsyscall mov_ss_trap sigtrap_loop \ + test_vsyscall mov_ss_trap \ syscall_arg_fault fsgsbase_restore sigaltstack TARGETS_C_32BIT_ONLY := entry_from_vm86 test_syscall_vdso unwind_vdso \ test_FCMOV test_FCOMI test_FISTTP \ diff --git a/tools/testing/selftests/x86/sigtrap_loop.c b/tools/testing/selftests/x86/sigtrap_loop.c deleted file mode 100644 index 9d065479e89f..000000000000 --- a/tools/testing/selftests/x86/sigtrap_loop.c +++ /dev/null @@ -1,101 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2025 Intel Corporation - */ -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include - -#ifdef __x86_64__ -# define REG_IP REG_RIP -#else -# define REG_IP REG_EIP -#endif - -static void sethandler(int sig, void (*handler)(int, siginfo_t *, void *), int flags) -{ - struct sigaction sa; - - memset(&sa, 0, sizeof(sa)); - sa.sa_sigaction = handler; - sa.sa_flags = SA_SIGINFO | flags; - sigemptyset(&sa.sa_mask); - - if (sigaction(sig, &sa, 0)) - err(1, "sigaction"); - - return; -} - -static void sigtrap(int sig, siginfo_t *info, void *ctx_void) -{ - ucontext_t *ctx = (ucontext_t *)ctx_void; - static unsigned int loop_count_on_same_ip; - static unsigned long last_trap_ip; - - if (last_trap_ip == ctx->uc_mcontext.gregs[REG_IP]) { - printf("\tTrapped at %016lx\n", last_trap_ip); - - /* - * If the same IP is hit more than 10 times in a row, it is - * _considered_ an infinite loop. - */ - if (++loop_count_on_same_ip > 10) { - printf("[FAIL]\tDetected SIGTRAP infinite loop\n"); - exit(1); - } - - return; - } - - loop_count_on_same_ip = 0; - last_trap_ip = ctx->uc_mcontext.gregs[REG_IP]; - printf("\tTrapped at %016lx\n", last_trap_ip); -} - -int main(int argc, char *argv[]) -{ - sethandler(SIGTRAP, sigtrap, 0); - - /* - * Set the Trap Flag (TF) to single-step the test code, therefore to - * trigger a SIGTRAP signal after each instruction until the TF is - * cleared. - * - * Because the arithmetic flags are not significant here, the TF is - * set by pushing 0x302 onto the stack and then popping it into the - * flags register. - * - * Four instructions in the following asm code are executed with the - * TF set, thus the SIGTRAP handler is expected to run four times. - */ - printf("[RUN]\tSIGTRAP infinite loop detection\n"); - asm volatile( -#ifdef __x86_64__ - /* - * Avoid clobbering the redzone - * - * Equivalent to "sub $128, %rsp", however -128 can be encoded - * in a single byte immediate while 128 uses 4 bytes. - */ - "add $-128, %rsp\n\t" -#endif - "push $0x302\n\t" - "popf\n\t" - "nop\n\t" - "nop\n\t" - "push $0x202\n\t" - "popf\n\t" -#ifdef __x86_64__ - "sub $-128, %rsp\n\t" -#endif - ); - - printf("[OK]\tNo SIGTRAP infinite loop detected\n"); - return 0; -} -- Gitee From 5e7b468e7045116a403e5d4ef0662eac0c4abd88 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:20 +0800 Subject: [PATCH 0639/1421] Revert "udmabuf: use sgtable-based scatterlist wrappers" This reverts commit 6cb77c05c559d2abacaef75460d7144d09c95306. --- drivers/dma-buf/udmabuf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c index 980975ffc55d..373282beeb60 100644 --- a/drivers/dma-buf/udmabuf.c +++ b/drivers/dma-buf/udmabuf.c @@ -161,7 +161,8 @@ static int begin_cpu_udmabuf(struct dma_buf *buf, ubuf->sg = NULL; } } else { - dma_sync_sgtable_for_cpu(dev, ubuf->sg, direction); + dma_sync_sg_for_cpu(dev, ubuf->sg->sgl, ubuf->sg->nents, + direction); } return ret; @@ -176,7 +177,7 @@ static int end_cpu_udmabuf(struct dma_buf *buf, if (!ubuf->sg) return -EINVAL; - dma_sync_sgtable_for_device(dev, ubuf->sg, direction); + dma_sync_sg_for_device(dev, ubuf->sg->sgl, ubuf->sg->nents, direction); return 0; } -- Gitee From 052562a2ddd60c8dc8fb9dd48bb247774ff6a263 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:21 +0800 Subject: [PATCH 0640/1421] Revert "net: clear the dst when changing skb protocol" This reverts commit a5cd4086242e26a3cca28460a7dae5cc79e82f4b. --- net/core/filter.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/net/core/filter.c b/net/core/filter.c index b020cbddb2b3..5143c8a9e52c 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -3229,13 +3229,6 @@ static const struct bpf_func_proto bpf_skb_vlan_pop_proto = { .arg1_type = ARG_PTR_TO_CTX, }; -static void bpf_skb_change_protocol(struct sk_buff *skb, u16 proto) -{ - skb->protocol = htons(proto); - if (skb_valid_dst(skb)) - skb_dst_drop(skb); -} - static int bpf_skb_generic_push(struct sk_buff *skb, u32 off, u32 len) { /* Caller already did skb_cow() with len as headroom, @@ -3332,7 +3325,7 @@ static int bpf_skb_proto_4_to_6(struct sk_buff *skb) } } - bpf_skb_change_protocol(skb, ETH_P_IPV6); + skb->protocol = htons(ETH_P_IPV6); skb_clear_hash(skb); return 0; @@ -3362,7 +3355,7 @@ static int bpf_skb_proto_6_to_4(struct sk_buff *skb) } } - bpf_skb_change_protocol(skb, ETH_P_IP); + skb->protocol = htons(ETH_P_IP); skb_clear_hash(skb); return 0; @@ -3553,10 +3546,10 @@ static int bpf_skb_net_grow(struct sk_buff *skb, u32 off, u32 len_diff, /* Match skb->protocol to new outer l3 protocol */ if (skb->protocol == htons(ETH_P_IP) && flags & BPF_F_ADJ_ROOM_ENCAP_L3_IPV6) - bpf_skb_change_protocol(skb, ETH_P_IPV6); + skb->protocol = htons(ETH_P_IPV6); else if (skb->protocol == htons(ETH_P_IPV6) && flags & BPF_F_ADJ_ROOM_ENCAP_L3_IPV4) - bpf_skb_change_protocol(skb, ETH_P_IP); + skb->protocol = htons(ETH_P_IP); } if (skb_is_gso(skb)) { @@ -3609,10 +3602,10 @@ static int bpf_skb_net_shrink(struct sk_buff *skb, u32 off, u32 len_diff, /* Match skb->protocol to new outer l3 protocol */ if (skb->protocol == htons(ETH_P_IP) && flags & BPF_F_ADJ_ROOM_DECAP_L3_IPV6) - bpf_skb_change_protocol(skb, ETH_P_IPV6); + skb->protocol = htons(ETH_P_IPV6); else if (skb->protocol == htons(ETH_P_IPV6) && flags & BPF_F_ADJ_ROOM_DECAP_L3_IPV4) - bpf_skb_change_protocol(skb, ETH_P_IP); + skb->protocol = htons(ETH_P_IP); if (skb_is_gso(skb)) { struct skb_shared_info *shinfo = skb_shinfo(skb); -- Gitee From 528a034a62b51c399f6328ea098241e59d46db0d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:21 +0800 Subject: [PATCH 0641/1421] Revert "net_sched: sch_sfq: reject invalid perturb period" This reverts commit bc9b439e5dbf8f16a9cba23a0d2a938bdf9305f4. --- net/sched/sch_sfq.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c index e871cb53946a..d564675a8be4 100644 --- a/net/sched/sch_sfq.c +++ b/net/sched/sch_sfq.c @@ -656,14 +656,6 @@ static int sfq_change(struct Qdisc *sch, struct nlattr *opt, NL_SET_ERR_MSG_MOD(extack, "invalid quantum"); return -EINVAL; } - - if (ctl->perturb_period < 0 || - ctl->perturb_period > INT_MAX / HZ) { - NL_SET_ERR_MSG_MOD(extack, "invalid perturb period"); - return -EINVAL; - } - perturb_period = ctl->perturb_period * HZ; - if (ctl_v1 && !red_check_params(ctl_v1->qth_min, ctl_v1->qth_max, ctl_v1->Wlog, ctl_v1->Scell_log, NULL)) return -EINVAL; @@ -680,12 +672,14 @@ static int sfq_change(struct Qdisc *sch, struct nlattr *opt, headdrop = q->headdrop; maxdepth = q->maxdepth; maxflows = q->maxflows; + perturb_period = q->perturb_period; quantum = q->quantum; flags = q->flags; /* update and validate configuration */ if (ctl->quantum) quantum = ctl->quantum; + perturb_period = ctl->perturb_period * HZ; if (ctl->flows) maxflows = min_t(u32, ctl->flows, SFQ_MAX_FLOWS); if (ctl->divisor) { -- Gitee From 0b8f016a3c0f803c475d353975060fddd420ba15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:21 +0800 Subject: [PATCH 0642/1421] Revert "scsi: s390: zfcp: Ensure synchronous unit_add" This reverts commit 9f69fd5c75d361a0c99ea76fe2c43fcfaad92d6a. --- drivers/s390/scsi/zfcp_sysfs.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c index a95da6768f66..cb67fa80fb12 100644 --- a/drivers/s390/scsi/zfcp_sysfs.c +++ b/drivers/s390/scsi/zfcp_sysfs.c @@ -450,8 +450,6 @@ static ssize_t zfcp_sysfs_unit_add_store(struct device *dev, if (kstrtoull(buf, 0, (unsigned long long *) &fcp_lun)) return -EINVAL; - flush_work(&port->rport_work); - retval = zfcp_unit_add(port, fcp_lun); if (retval) return retval; -- Gitee From ca9e0d8f727eefbba335c29c041d77fbd76cdb8f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:21 +0800 Subject: [PATCH 0643/1421] Revert "scsi: storvsc: Increase the timeouts to storvsc_timeout" This reverts commit f6b5cf9e075790d18a67cc98bb3b556b7df7a34a. --- drivers/scsi/storvsc_drv.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index 954a1cc50ba7..48b0ca92b44f 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c @@ -362,7 +362,7 @@ MODULE_PARM_DESC(ring_avail_percent_lowater, /* * Timeout in seconds for all devices managed by this driver. */ -static const int storvsc_timeout = 180; +static int storvsc_timeout = 180; #if IS_ENABLED(CONFIG_SCSI_FC_ATTRS) static struct scsi_transport_template *fc_transport_template; @@ -768,7 +768,7 @@ static void handle_multichannel_storage(struct hv_device *device, int max_chns) return; } - t = wait_for_completion_timeout(&request->wait_event, storvsc_timeout * HZ); + t = wait_for_completion_timeout(&request->wait_event, 10*HZ); if (t == 0) { dev_err(dev, "Failed to create sub-channel: timed out\n"); return; @@ -833,7 +833,7 @@ static int storvsc_execute_vstor_op(struct hv_device *device, if (ret != 0) return ret; - t = wait_for_completion_timeout(&request->wait_event, storvsc_timeout * HZ); + t = wait_for_completion_timeout(&request->wait_event, 5*HZ); if (t == 0) return -ETIMEDOUT; @@ -1351,8 +1351,6 @@ static int storvsc_connect_to_vsp(struct hv_device *device, u32 ring_size, return ret; ret = storvsc_channel_init(device, is_fc); - if (ret) - vmbus_close(device->channel); return ret; } @@ -1670,7 +1668,7 @@ static int storvsc_host_reset_handler(struct scsi_cmnd *scmnd) if (ret != 0) return FAILED; - t = wait_for_completion_timeout(&request->wait_event, storvsc_timeout * HZ); + t = wait_for_completion_timeout(&request->wait_event, 5*HZ); if (t == 0) return TIMEOUT_ERROR; -- Gitee From bc37d6f61f8dfad9cad4d901f9e69514c908afd7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:21 +0800 Subject: [PATCH 0644/1421] Revert "smb: improve directory cache reuse for readdir operations" This reverts commit bb757c454cf2387803ce3ef8fd51a461f8784762. --- fs/smb/client/cached_dir.h | 8 ++++---- fs/smb/client/readdir.c | 28 +++++++++++++--------------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/fs/smb/client/cached_dir.h b/fs/smb/client/cached_dir.h index bc8a812ff95f..1dfe79d947a6 100644 --- a/fs/smb/client/cached_dir.h +++ b/fs/smb/client/cached_dir.h @@ -21,10 +21,10 @@ struct cached_dirent { struct cached_dirents { bool is_valid:1; bool is_failed:1; - struct file *file; /* - * Used to associate the cache with a single - * open file instance. - */ + struct dir_context *ctx; /* + * Only used to make sure we only take entries + * from a single context. Never dereferenced. + */ struct mutex de_mutex; int pos; /* Expected ctx->pos */ struct list_head entries; diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c index 222348ae6258..e616be8196de 100644 --- a/fs/smb/client/readdir.c +++ b/fs/smb/client/readdir.c @@ -850,9 +850,9 @@ static bool emit_cached_dirents(struct cached_dirents *cde, } static void update_cached_dirents_count(struct cached_dirents *cde, - struct file *file) + struct dir_context *ctx) { - if (cde->file != file) + if (cde->ctx != ctx) return; if (cde->is_valid || cde->is_failed) return; @@ -861,9 +861,9 @@ static void update_cached_dirents_count(struct cached_dirents *cde, } static void finished_cached_dirents_count(struct cached_dirents *cde, - struct dir_context *ctx, struct file *file) + struct dir_context *ctx) { - if (cde->file != file) + if (cde->ctx != ctx) return; if (cde->is_valid || cde->is_failed) return; @@ -876,12 +876,11 @@ static void finished_cached_dirents_count(struct cached_dirents *cde, static void add_cached_dirent(struct cached_dirents *cde, struct dir_context *ctx, const char *name, int namelen, - struct cifs_fattr *fattr, - struct file *file) + struct cifs_fattr *fattr) { struct cached_dirent *de; - if (cde->file != file) + if (cde->ctx != ctx) return; if (cde->is_valid || cde->is_failed) return; @@ -911,8 +910,7 @@ static void add_cached_dirent(struct cached_dirents *cde, static bool cifs_dir_emit(struct dir_context *ctx, const char *name, int namelen, struct cifs_fattr *fattr, - struct cached_fid *cfid, - struct file *file) + struct cached_fid *cfid) { bool rc; ino_t ino = cifs_uniqueid_to_ino_t(fattr->cf_uniqueid); @@ -924,7 +922,7 @@ static bool cifs_dir_emit(struct dir_context *ctx, if (cfid) { mutex_lock(&cfid->dirents.de_mutex); add_cached_dirent(&cfid->dirents, ctx, name, namelen, - fattr, file); + fattr); mutex_unlock(&cfid->dirents.de_mutex); } @@ -1024,7 +1022,7 @@ static int cifs_filldir(char *find_entry, struct file *file, cifs_prime_dcache(file_dentry(file), &name, &fattr); return !cifs_dir_emit(ctx, name.name, name.len, - &fattr, cfid, file); + &fattr, cfid); } @@ -1075,8 +1073,8 @@ int cifs_readdir(struct file *file, struct dir_context *ctx) * we need to initialize scanning and storing the * directory content. */ - if (ctx->pos == 0 && cfid->dirents.file == NULL) { - cfid->dirents.file = file; + if (ctx->pos == 0 && cfid->dirents.ctx == NULL) { + cfid->dirents.ctx = ctx; cfid->dirents.pos = 2; } /* @@ -1144,7 +1142,7 @@ int cifs_readdir(struct file *file, struct dir_context *ctx) } else { if (cfid) { mutex_lock(&cfid->dirents.de_mutex); - finished_cached_dirents_count(&cfid->dirents, ctx, file); + finished_cached_dirents_count(&cfid->dirents, ctx); mutex_unlock(&cfid->dirents.de_mutex); } cifs_dbg(FYI, "Could not find entry\n"); @@ -1185,7 +1183,7 @@ int cifs_readdir(struct file *file, struct dir_context *ctx) ctx->pos++; if (cfid) { mutex_lock(&cfid->dirents.de_mutex); - update_cached_dirents_count(&cfid->dirents, file); + update_cached_dirents_count(&cfid->dirents, ctx); mutex_unlock(&cfid->dirents.de_mutex); } -- Gitee From e0c7fc2397e15534dffdf6b8856efb5fd3951220 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:22 +0800 Subject: [PATCH 0645/1421] Revert "cifs: do not disable interface polling on failure" This reverts commit f9b2e6054b37120da0e3069560dd3a6d91656341. --- fs/smb/client/connect.c | 6 +++++- fs/smb/client/smb2pdu.c | 9 ++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index ed88ec0f2533..ccf0a2c67479 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -132,9 +132,13 @@ static void smb2_query_server_interfaces(struct work_struct *work) rc = server->ops->query_server_interfaces(xid, tcon, false); free_xid(xid); - if (rc) + if (rc) { + if (rc == -EOPNOTSUPP) + return; + cifs_dbg(FYI, "%s: failed to query server interfaces: %d\n", __func__, rc); + } queue_delayed_work(cifsiod_wq, &tcon->query_interfaces, (SMB_INTERFACE_POLL_INTERVAL * HZ)); diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c index e0f586009330..42617f30d68b 100644 --- a/fs/smb/client/smb2pdu.c +++ b/fs/smb/client/smb2pdu.c @@ -437,10 +437,6 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, free_xid(xid); ses->flags &= ~CIFS_SES_FLAGS_PENDING_QUERY_INTERFACES; - /* regardless of rc value, setup polling */ - queue_delayed_work(cifsiod_wq, &tcon->query_interfaces, - (SMB_INTERFACE_POLL_INTERVAL * HZ)); - mutex_unlock(&ses->session_mutex); if (rc == -EOPNOTSUPP && ses->chan_count > 1) { @@ -461,8 +457,11 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, if (ses->chan_max > ses->chan_count && ses->iface_count && !SERVER_IS_CHAN(server)) { - if (ses->chan_count == 1) + if (ses->chan_count == 1) { cifs_server_dbg(VFS, "supports multichannel now\n"); + queue_delayed_work(cifsiod_wq, &tcon->query_interfaces, + (SMB_INTERFACE_POLL_INTERVAL * HZ)); + } cifs_try_adding_channels(ses); } -- Gitee From bb0f8379a29072a2b45e80581c700ed581193e68 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:22 +0800 Subject: [PATCH 0646/1421] Revert "cifs: serialize other channels when query server interfaces is pending" This reverts commit 512874477a3eb0339de844916fd8fc48ca131a4d. --- fs/smb/client/cifsglob.h | 1 - fs/smb/client/smb2pdu.c | 24 ++++++------------------ 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index 6a4ed99e162c..39117343b703 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -1053,7 +1053,6 @@ struct cifs_chan { }; #define CIFS_SES_FLAG_SCALE_CHANNELS (0x1) -#define CIFS_SES_FLAGS_PENDING_QUERY_INTERFACES (0x2) /* * Session structure. One of these for each uid session with a particular host diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c index 42617f30d68b..3e88e8b3c16e 100644 --- a/fs/smb/client/smb2pdu.c +++ b/fs/smb/client/smb2pdu.c @@ -425,19 +425,14 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, if (!rc && (server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL) && server->ops->query_server_interfaces) { + mutex_unlock(&ses->session_mutex); + /* - * query server network interfaces, in case they change. - * Also mark the session as pending this update while the query - * is in progress. This will be used to avoid calling - * smb2_reconnect recursively. + * query server network interfaces, in case they change */ - ses->flags |= CIFS_SES_FLAGS_PENDING_QUERY_INTERFACES; xid = get_xid(); rc = server->ops->query_server_interfaces(xid, tcon, false); free_xid(xid); - ses->flags &= ~CIFS_SES_FLAGS_PENDING_QUERY_INTERFACES; - - mutex_unlock(&ses->session_mutex); if (rc == -EOPNOTSUPP && ses->chan_count > 1) { /* @@ -579,18 +574,11 @@ static int smb2_ioctl_req_init(u32 opcode, struct cifs_tcon *tcon, struct TCP_Server_Info *server, void **request_buf, unsigned int *total_len) { - /* - * Skip reconnect in one of the following cases: - * 1. For FSCTL_VALIDATE_NEGOTIATE_INFO IOCTLs - * 2. For FSCTL_QUERY_NETWORK_INTERFACE_INFO IOCTL when called from - * smb2_reconnect (indicated by CIFS_SES_FLAG_SCALE_CHANNELS ses flag) - */ - if (opcode == FSCTL_VALIDATE_NEGOTIATE_INFO || - (opcode == FSCTL_QUERY_NETWORK_INTERFACE_INFO && - (tcon->ses->flags & CIFS_SES_FLAGS_PENDING_QUERY_INTERFACES))) + /* Skip reconnect only for FSCTL_VALIDATE_NEGOTIATE_INFO IOCTLs */ + if (opcode == FSCTL_VALIDATE_NEGOTIATE_INFO) { return __smb2_plain_req_init(SMB2_IOCTL, tcon, server, request_buf, total_len); - + } return smb2_plain_req_init(SMB2_IOCTL, tcon, server, request_buf, total_len); } -- Gitee From f5777498491e95909ce27b676e88f0a926cfde9b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:22 +0800 Subject: [PATCH 0647/1421] Revert "cifs: deal with the channel loading lag while picking channels" This reverts commit 417936a08363fc5a6bcdaf2073b419f0d6fe74b5. --- fs/smb/client/transport.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/smb/client/transport.c b/fs/smb/client/transport.c index 7b2560612bd6..2269963e5008 100644 --- a/fs/smb/client/transport.c +++ b/fs/smb/client/transport.c @@ -1025,16 +1025,14 @@ struct TCP_Server_Info *cifs_pick_channel(struct cifs_ses *ses) uint index = 0; unsigned int min_in_flight = UINT_MAX, max_in_flight = 0; struct TCP_Server_Info *server = NULL; - int i, start, cur; + int i; if (!ses) return NULL; spin_lock(&ses->chan_lock); - start = atomic_inc_return(&ses->chan_seq); for (i = 0; i < ses->chan_count; i++) { - cur = (start + i) % ses->chan_count; - server = ses->chans[cur].server; + server = ses->chans[i].server; if (!server || server->terminate) continue; @@ -1051,15 +1049,17 @@ struct TCP_Server_Info *cifs_pick_channel(struct cifs_ses *ses) */ if (server->in_flight < min_in_flight) { min_in_flight = server->in_flight; - index = cur; + index = i; } if (server->in_flight > max_in_flight) max_in_flight = server->in_flight; } /* if all channels are equally loaded, fall back to round-robin */ - if (min_in_flight == max_in_flight) - index = (uint)start % ses->chan_count; + if (min_in_flight == max_in_flight) { + index = (uint)atomic_inc_return(&ses->chan_seq); + index %= ses->chan_count; + } server = ses->chans[index].server; spin_unlock(&ses->chan_lock); -- Gitee From 5cfe4a8169e7a1cda898d62f082fedefa928c5f5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:22 +0800 Subject: [PATCH 0648/1421] Revert "jffs2: check jffs2_prealloc_raw_node_refs() result in few other places" This reverts commit 4d529eb23f79fc3680eb9ab882a4665cbb0f8cda. --- fs/jffs2/erase.c | 4 +--- fs/jffs2/scan.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c index fda9f4d6093f..ef3a1e1b6cb0 100644 --- a/fs/jffs2/erase.c +++ b/fs/jffs2/erase.c @@ -425,9 +425,7 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb .totlen = cpu_to_je32(c->cleanmarker_size) }; - ret = jffs2_prealloc_raw_node_refs(c, jeb, 1); - if (ret) - goto filebad; + jffs2_prealloc_raw_node_refs(c, jeb, 1); marker.hdr_crc = cpu_to_je32(crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4)); diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index 62879c218d4b..29671e33a171 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c @@ -256,9 +256,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c) jffs2_dbg(1, "%s(): Skipping %d bytes in nextblock to ensure page alignment\n", __func__, skip); - ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1); - if (ret) - goto out; + jffs2_prealloc_raw_node_refs(c, c->nextblock, 1); jffs2_scan_dirty_space(c, c->nextblock, skip); } #endif -- Gitee From d9a6ed03099095d82ca38d6985fb45a5125b24e3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:23 +0800 Subject: [PATCH 0649/1421] Revert "jffs2: check that raw node were preallocated before writing summary" This reverts commit 42cf90b41f21cc2d49826fa28aea854069e3a65b. --- fs/jffs2/summary.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fs/jffs2/summary.c b/fs/jffs2/summary.c index d83372d3e1a0..4fe64519870f 100644 --- a/fs/jffs2/summary.c +++ b/fs/jffs2/summary.c @@ -858,10 +858,7 @@ int jffs2_sum_write_sumnode(struct jffs2_sb_info *c) spin_unlock(&c->erase_completion_lock); jeb = c->nextblock; - ret = jffs2_prealloc_raw_node_refs(c, jeb, 1); - - if (ret) - goto out; + jffs2_prealloc_raw_node_refs(c, jeb, 1); if (!c->summary->sum_num || !c->summary->sum_list_head) { JFFS2_WARNING("Empty summary info!!!\n"); @@ -875,8 +872,6 @@ int jffs2_sum_write_sumnode(struct jffs2_sb_info *c) datasize += padsize; ret = jffs2_sum_write_data(c, jeb, infosize, datasize, padsize); - -out: spin_lock(&c->erase_completion_lock); return ret; } -- Gitee From ce006cf23e766915ee826d215d4c85e23298619e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:23 +0800 Subject: [PATCH 0650/1421] Revert "LoongArch: Fix panic caused by NULL-PMD in huge_pte_offset()" This reverts commit f1ca9827fdfa3b7921089e5146006bb7904f68be. --- arch/loongarch/mm/hugetlbpage.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/loongarch/mm/hugetlbpage.c b/arch/loongarch/mm/hugetlbpage.c index 58277fd9fb2f..41308429f446 100644 --- a/arch/loongarch/mm/hugetlbpage.c +++ b/arch/loongarch/mm/hugetlbpage.c @@ -47,8 +47,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, pmd = pmd_offset(pud, addr); } } - - return (!pmd || pmd_none(pmdp_get(pmd))) ? NULL : (pte_t *) pmd; + return pmd_none(pmdp_get(pmd)) ? NULL : (pte_t *) pmd; } int pmd_huge(pmd_t pmd) -- Gitee From b8b58da434bbf4445c68491255b106d511aba606 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:23 +0800 Subject: [PATCH 0651/1421] Revert "LoongArch: Avoid using $r0/$r1 as "mask" for csrxchg" This reverts commit 0f2846e90cdd2e676ded7c5ab2a58657bb4b2928. --- arch/loongarch/include/asm/irqflags.h | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/arch/loongarch/include/asm/irqflags.h b/arch/loongarch/include/asm/irqflags.h index 003172b8406b..319a8c616f1f 100644 --- a/arch/loongarch/include/asm/irqflags.h +++ b/arch/loongarch/include/asm/irqflags.h @@ -14,48 +14,40 @@ static inline void arch_local_irq_enable(void) { u32 flags = CSR_CRMD_IE; - register u32 mask asm("t0") = CSR_CRMD_IE; - __asm__ __volatile__( "csrxchg %[val], %[mask], %[reg]\n\t" : [val] "+r" (flags) - : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) + : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) : "memory"); } static inline void arch_local_irq_disable(void) { u32 flags = 0; - register u32 mask asm("t0") = CSR_CRMD_IE; - __asm__ __volatile__( "csrxchg %[val], %[mask], %[reg]\n\t" : [val] "+r" (flags) - : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) + : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) : "memory"); } static inline unsigned long arch_local_irq_save(void) { u32 flags = 0; - register u32 mask asm("t0") = CSR_CRMD_IE; - __asm__ __volatile__( "csrxchg %[val], %[mask], %[reg]\n\t" : [val] "+r" (flags) - : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) + : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) : "memory"); return flags; } static inline void arch_local_irq_restore(unsigned long flags) { - register u32 mask asm("t0") = CSR_CRMD_IE; - __asm__ __volatile__( "csrxchg %[val], %[mask], %[reg]\n\t" : [val] "+r" (flags) - : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) + : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) : "memory"); } -- Gitee From 2990074e4387a67bba54be5456b210fd673623be Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:23 +0800 Subject: [PATCH 0652/1421] Revert "platform/loongarch: laptop: Unregister generic_sub_drivers on exit" This reverts commit ad0bce6a9d1689be207cfccf9d9372a33232436f. --- drivers/platform/loongarch/loongson-laptop.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/platform/loongarch/loongson-laptop.c b/drivers/platform/loongarch/loongson-laptop.c index fe4fec2d4f94..ba9a90818c92 100644 --- a/drivers/platform/loongarch/loongson-laptop.c +++ b/drivers/platform/loongarch/loongson-laptop.c @@ -611,17 +611,11 @@ static int __init generic_acpi_laptop_init(void) static void __exit generic_acpi_laptop_exit(void) { - int i; - if (generic_inputdev) { - if (!input_device_registered) { - input_free_device(generic_inputdev); - } else { + if (input_device_registered) input_unregister_device(generic_inputdev); - - for (i = 0; i < ARRAY_SIZE(generic_sub_drivers); i++) - generic_subdriver_exit(&generic_sub_drivers[i]); - } + else + input_free_device(generic_inputdev); } } -- Gitee From cc301bfb155c2f082aae4318db5d0392e0a1941d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:23 +0800 Subject: [PATCH 0653/1421] Revert "platform/loongarch: laptop: Get brightness setting from EC on probe" This reverts commit 870d4967e0fe30a683bed9e266bc829e383620ce. --- drivers/platform/loongarch/loongson-laptop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/loongarch/loongson-laptop.c b/drivers/platform/loongarch/loongson-laptop.c index ba9a90818c92..99203584949d 100644 --- a/drivers/platform/loongarch/loongson-laptop.c +++ b/drivers/platform/loongarch/loongson-laptop.c @@ -392,8 +392,8 @@ static int laptop_backlight_register(void) if (!acpi_evalf(hotkey_handle, &status, "ECLL", "d")) return -EIO; + props.brightness = 1; props.max_brightness = status; - props.brightness = ec_get_brightness(); props.type = BACKLIGHT_PLATFORM; backlight_device_register("loongson_laptop", -- Gitee From 08216b8ecf60526aae89813d45f38ecaaafd843b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:24 +0800 Subject: [PATCH 0654/1421] Revert "drivers/rapidio/rio_cm.c: prevent possible heap overwrite" This reverts commit 81efcd57d077f68fc7c1e4c91c29bcff0dc6ce89. --- drivers/rapidio/rio_cm.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/rapidio/rio_cm.c b/drivers/rapidio/rio_cm.c index 897642e62068..49f8d111e546 100644 --- a/drivers/rapidio/rio_cm.c +++ b/drivers/rapidio/rio_cm.c @@ -787,9 +787,6 @@ static int riocm_ch_send(u16 ch_id, void *buf, int len) if (buf == NULL || ch_id == 0 || len == 0 || len > RIO_MAX_MSG_SIZE) return -EINVAL; - if (len < sizeof(struct rio_ch_chan_hdr)) - return -EINVAL; /* insufficient data from user */ - ch = riocm_get_channel(ch_id); if (!ch) { riocm_error("%s(%d) ch_%d not found", current->comm, -- Gitee From 508cd4456594339a90e0e32f5d812a6ded89fdef Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:24 +0800 Subject: [PATCH 0655/1421] Revert "io_uring: fix task leak issue in io_wq_create()" This reverts commit 1bce2282335f857985f3e1777e3ab06c4929451f. --- io_uring/io-wq.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c index 1c4ef4e4eb52..93f3e4d1df85 100644 --- a/io_uring/io-wq.c +++ b/io_uring/io-wq.c @@ -1206,10 +1206,8 @@ struct io_wq *io_wq_create(unsigned bounded, struct io_wq_data *data) atomic_set(&wq->worker_refs, 1); init_completion(&wq->worker_done); ret = cpuhp_state_add_instance_nocalls(io_wq_online, &wq->cpuhp_node); - if (ret) { - put_task_struct(wq->task); + if (ret) goto err; - } return wq; err: -- Gitee From 7245c8de0b3e6289a66da5e0d1bf95a4b7c35a5d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:24 +0800 Subject: [PATCH 0656/1421] Revert "Revert "x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2" on v6.6 and older" This reverts commit f3db7b5a872e9d023d259a7ba67574f71c9b974d. --- Documentation/admin-guide/kernel-parameters.txt | 2 ++ arch/x86/kernel/cpu/bugs.c | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index f95734ceb82b..315a817e3380 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -5978,6 +5978,8 @@ Selecting 'on' will also enable the mitigation against user space to user space task attacks. + Selecting specific mitigation does not force enable + user mitigations. Selecting 'off' will disable both the kernel and the user space protections. diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 07b45bbf6348..e9c4bcb38f45 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -1442,9 +1442,13 @@ static __ro_after_init enum spectre_v2_mitigation_cmd spectre_v2_cmd; static enum spectre_v2_user_cmd __init spectre_v2_parse_user_cmdline(void) { + enum spectre_v2_user_cmd mode; char arg[20]; int ret, i; + mode = IS_ENABLED(CONFIG_MITIGATION_SPECTRE_V2) ? + SPECTRE_V2_USER_CMD_AUTO : SPECTRE_V2_USER_CMD_NONE; + switch (spectre_v2_cmd) { case SPECTRE_V2_CMD_NONE: return SPECTRE_V2_USER_CMD_NONE; @@ -1457,7 +1461,7 @@ spectre_v2_parse_user_cmdline(void) ret = cmdline_find_option(boot_command_line, "spectre_v2_user", arg, sizeof(arg)); if (ret < 0) - return SPECTRE_V2_USER_CMD_AUTO; + return mode; for (i = 0; i < ARRAY_SIZE(v2_user_options); i++) { if (match_option(arg, ret, v2_user_options[i].option)) { @@ -1467,8 +1471,8 @@ spectre_v2_parse_user_cmdline(void) } } - pr_err("Unknown user space protection option (%s). Switching to AUTO select\n", arg); - return SPECTRE_V2_USER_CMD_AUTO; + pr_err("Unknown user space protection option (%s). Switching to default\n", arg); + return mode; } static inline bool spectre_v2_in_ibrs_mode(enum spectre_v2_mitigation mode) -- Gitee From 2e5cfcf3101b5bf2fc7d35016765842b70fa5627 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:24 +0800 Subject: [PATCH 0657/1421] Revert "powerpc/eeh: Fix missing PE bridge reconfiguration during VFIO EEH recovery" This reverts commit 7889d6a0d0cf9bdd9894cee1e67e34c8a58634f9. --- arch/powerpc/kernel/eeh.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c index 2e286bba2f64..ab316e155ea9 100644 --- a/arch/powerpc/kernel/eeh.c +++ b/arch/powerpc/kernel/eeh.c @@ -1516,8 +1516,6 @@ int eeh_pe_configure(struct eeh_pe *pe) /* Invalid PE ? */ if (!pe) return -ENODEV; - else - ret = eeh_ops->configure_bridge(pe); return ret; } -- Gitee From b620c68fcc758fe56befed17899cb3abf6fe2c0b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:25 +0800 Subject: [PATCH 0658/1421] Revert "powerpc/vdso: Fix build of VDSO32 with pcrel" This reverts commit a1d78bcdf2331ecd640eee5f113fac8f499ad5db. --- arch/powerpc/include/asm/ppc_asm.h | 2 +- arch/powerpc/kernel/vdso/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index fa7926532866..e7792aa13510 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h @@ -183,7 +183,7 @@ /* * Used to name C functions called from asm */ -#if defined(__powerpc64__) && defined(CONFIG_PPC_KERNEL_PCREL) +#ifdef CONFIG_PPC_KERNEL_PCREL #define CFUNC(name) name@notoc #else #define CFUNC(name) name diff --git a/arch/powerpc/kernel/vdso/Makefile b/arch/powerpc/kernel/vdso/Makefile index 47a9533a4dc1..d5defff8472d 100644 --- a/arch/powerpc/kernel/vdso/Makefile +++ b/arch/powerpc/kernel/vdso/Makefile @@ -50,7 +50,7 @@ ldflags-$(CONFIG_LD_ORPHAN_WARN) += -Wl,--orphan-handling=$(CONFIG_LD_ORPHAN_WAR ldflags-y += $(filter-out $(CC_AUTO_VAR_INIT_ZERO_ENABLER) $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS)) CC32FLAGS := -m32 -CC32FLAGSREMOVE := -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc -mpcrel +CC32FLAGSREMOVE := -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc ifdef CONFIG_CC_IS_CLANG # This flag is supported by clang for 64-bit but not 32-bit so it will cause # an unused command line flag warning for this file. -- Gitee From 0fc68529ab9674e466b932eccae9a1e5cb236d9b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:25 +0800 Subject: [PATCH 0659/1421] Revert "platform/x86: dell_rbu: Stop overwriting data buffer" This reverts commit b0633856a2a32c1c316311361451e545b6ba4c37. --- drivers/platform/x86/dell/dell_rbu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/x86/dell/dell_rbu.c b/drivers/platform/x86/dell/dell_rbu.c index fee20866b41e..4d2b5f6dd513 100644 --- a/drivers/platform/x86/dell/dell_rbu.c +++ b/drivers/platform/x86/dell/dell_rbu.c @@ -322,7 +322,7 @@ static void packet_empty_list(void) * zero out the RBU packet memory before freeing * to make sure there are no stale RBU packets left in memory */ - memset(newpacket->data, 0, newpacket->length); + memset(newpacket->data, 0, rbu_data.packetsize); set_memory_wb((unsigned long)newpacket->data, 1 << newpacket->ordernum); free_pages((unsigned long) newpacket->data, -- Gitee From 9941e1d3d5ed92f115eccda0bafa188da08cc681 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:25 +0800 Subject: [PATCH 0660/1421] Revert "platform/x86: dell_rbu: Fix list usage" This reverts commit 5e79bc6303e92954ed21ba026da1c590d4a2014c. --- drivers/platform/x86/dell/dell_rbu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/dell/dell_rbu.c b/drivers/platform/x86/dell/dell_rbu.c index 4d2b5f6dd513..9f51e0fcab04 100644 --- a/drivers/platform/x86/dell/dell_rbu.c +++ b/drivers/platform/x86/dell/dell_rbu.c @@ -292,7 +292,7 @@ static int packet_read_list(char *data, size_t * pread_length) remaining_bytes = *pread_length; bytes_read = rbu_data.packet_read_count; - list_for_each_entry(newpacket, &packet_data_head.list, list) { + list_for_each_entry(newpacket, (&packet_data_head.list)->next, list) { bytes_copied = do_packet_read(pdest, newpacket, remaining_bytes, bytes_read, &temp_count); remaining_bytes -= bytes_copied; @@ -315,7 +315,7 @@ static void packet_empty_list(void) { struct packet_data *newpacket, *tmp; - list_for_each_entry_safe(newpacket, tmp, &packet_data_head.list, list) { + list_for_each_entry_safe(newpacket, tmp, (&packet_data_head.list)->next, list) { list_del(&newpacket->list); /* -- Gitee From e306b948e606d29a90cc2740c0996abe805b90d7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:25 +0800 Subject: [PATCH 0661/1421] Revert "platform/x86/amd: pmc: Clear metrics table at start of cycle" This reverts commit 1e85b066de089e03e15f20fd2120e17c7e450cf1. --- drivers/platform/x86/amd/pmc/pmc.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c index af5cc8aa7988..946a546cd9dd 100644 --- a/drivers/platform/x86/amd/pmc/pmc.c +++ b/drivers/platform/x86/amd/pmc/pmc.c @@ -332,8 +332,6 @@ static int amd_pmc_setup_smu_logging(struct amd_pmc_dev *dev) return -ENOMEM; } - memset_io(dev->smu_virt_addr, 0, sizeof(struct smu_metrics)); - /* Start the logging */ amd_pmc_send_cmd(dev, 0, NULL, SMU_MSG_LOG_RESET, false); amd_pmc_send_cmd(dev, 0, NULL, SMU_MSG_LOG_START, false); -- Gitee From e3823fdda327b9668d6767b118dfea548575891b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:25 +0800 Subject: [PATCH 0662/1421] Revert "fs/xattr.c: fix simple_xattr_list()" This reverts commit 5e725effc606b93d7ef9d9c1803c704a504449e5. --- fs/xattr.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/xattr.c b/fs/xattr.c index 7574d24b982e..5fed22c22a2b 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -1342,7 +1342,6 @@ ssize_t simple_xattr_list(struct inode *inode, struct simple_xattrs *xattrs, buffer += err; } remaining_size -= err; - err = 0; read_lock(&xattrs->lock); for (rbp = rb_first(&xattrs->rb_root); rbp; rbp = rb_next(rbp)) { -- Gitee From 11b7bebc2b1ded4285ba8733b65e36b52408045d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:26 +0800 Subject: [PATCH 0663/1421] Revert "Revert "bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first"" This reverts commit 986292c1dbaa15e3ba00bfb63f90c31074fb44cf. --- drivers/bus/ti-sysc.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c index 46d7410f6f0f..65163312dab8 100644 --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -667,6 +667,51 @@ static int sysc_parse_and_check_child_range(struct sysc *ddata) return 0; } +/* Interconnect instances to probe before l4_per instances */ +static struct resource early_bus_ranges[] = { + /* am3/4 l4_wkup */ + { .start = 0x44c00000, .end = 0x44c00000 + 0x300000, }, + /* omap4/5 and dra7 l4_cfg */ + { .start = 0x4a000000, .end = 0x4a000000 + 0x300000, }, + /* omap4 l4_wkup */ + { .start = 0x4a300000, .end = 0x4a300000 + 0x30000, }, + /* omap5 and dra7 l4_wkup without dra7 dcan segment */ + { .start = 0x4ae00000, .end = 0x4ae00000 + 0x30000, }, +}; + +static atomic_t sysc_defer = ATOMIC_INIT(10); + +/** + * sysc_defer_non_critical - defer non_critical interconnect probing + * @ddata: device driver data + * + * We want to probe l4_cfg and l4_wkup interconnect instances before any + * l4_per instances as l4_per instances depend on resources on l4_cfg and + * l4_wkup interconnects. + */ +static int sysc_defer_non_critical(struct sysc *ddata) +{ + struct resource *res; + int i; + + if (!atomic_read(&sysc_defer)) + return 0; + + for (i = 0; i < ARRAY_SIZE(early_bus_ranges); i++) { + res = &early_bus_ranges[i]; + if (ddata->module_pa >= res->start && + ddata->module_pa <= res->end) { + atomic_set(&sysc_defer, 0); + + return 0; + } + } + + atomic_dec_if_positive(&sysc_defer); + + return -EPROBE_DEFER; +} + static struct device_node *stdout_path; static void sysc_init_stdout_path(struct sysc *ddata) @@ -892,6 +937,10 @@ static int sysc_map_and_check_registers(struct sysc *ddata) if (error) return error; + error = sysc_defer_non_critical(ddata); + if (error) + return error; + sysc_check_children(ddata); if (!of_property_present(np, "reg")) -- Gitee From f8daff79f7f9e761834a7604c7a2d93beda7e60c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:26 +0800 Subject: [PATCH 0664/1421] Revert "tee: Prevent size calculation wraparound on 32-bit kernels" This reverts commit 9491f7e0f60a07ac9794b882551d51591866f52c. --- drivers/tee/tee_core.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index d7ad16f262b2..0eb342de0b00 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -20,7 +19,7 @@ #define TEE_NUM_DEVICES 32 -#define TEE_IOCTL_PARAM_SIZE(x) (size_mul(sizeof(struct tee_param), (x))) +#define TEE_IOCTL_PARAM_SIZE(x) (sizeof(struct tee_param) * (x)) #define TEE_UUID_NS_NAME_SIZE 128 @@ -488,7 +487,7 @@ static int tee_ioctl_open_session(struct tee_context *ctx, if (copy_from_user(&arg, uarg, sizeof(arg))) return -EFAULT; - if (size_add(sizeof(arg), TEE_IOCTL_PARAM_SIZE(arg.num_params)) != buf.buf_len) + if (sizeof(arg) + TEE_IOCTL_PARAM_SIZE(arg.num_params) != buf.buf_len) return -EINVAL; if (arg.num_params) { @@ -566,7 +565,7 @@ static int tee_ioctl_invoke(struct tee_context *ctx, if (copy_from_user(&arg, uarg, sizeof(arg))) return -EFAULT; - if (size_add(sizeof(arg), TEE_IOCTL_PARAM_SIZE(arg.num_params)) != buf.buf_len) + if (sizeof(arg) + TEE_IOCTL_PARAM_SIZE(arg.num_params) != buf.buf_len) return -EINVAL; if (arg.num_params) { @@ -700,7 +699,7 @@ static int tee_ioctl_supp_recv(struct tee_context *ctx, if (get_user(num_params, &uarg->num_params)) return -EFAULT; - if (size_add(sizeof(*uarg), TEE_IOCTL_PARAM_SIZE(num_params)) != buf.buf_len) + if (sizeof(*uarg) + TEE_IOCTL_PARAM_SIZE(num_params) != buf.buf_len) return -EINVAL; params = kcalloc(num_params, sizeof(struct tee_param), GFP_KERNEL); @@ -799,7 +798,7 @@ static int tee_ioctl_supp_send(struct tee_context *ctx, get_user(num_params, &uarg->num_params)) return -EFAULT; - if (size_add(sizeof(*uarg), TEE_IOCTL_PARAM_SIZE(num_params)) > buf.buf_len) + if (sizeof(*uarg) + TEE_IOCTL_PARAM_SIZE(num_params) > buf.buf_len) return -EINVAL; params = kcalloc(num_params, sizeof(struct tee_param), GFP_KERNEL); -- Gitee From 130bafa63ddd8f083bc0f07d79f16a75f83a6f65 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:26 +0800 Subject: [PATCH 0665/1421] Revert "ARM: OMAP2+: Fix l4ls clk domain handling in STANDBY" This reverts commit 03c22cff90a67beb1081834ba9e29fddcedd950d. --- arch/arm/mach-omap2/clockdomain.h | 1 - arch/arm/mach-omap2/clockdomains33xx_data.c | 2 +- arch/arm/mach-omap2/cm33xx.c | 14 +------------- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h index 86a2f9e5d0ef..c36fb2721261 100644 --- a/arch/arm/mach-omap2/clockdomain.h +++ b/arch/arm/mach-omap2/clockdomain.h @@ -48,7 +48,6 @@ #define CLKDM_NO_AUTODEPS (1 << 4) #define CLKDM_ACTIVE_WITH_MPU (1 << 5) #define CLKDM_MISSING_IDLE_REPORTING (1 << 6) -#define CLKDM_STANDBY_FORCE_WAKEUP BIT(7) #define CLKDM_CAN_HWSUP (CLKDM_CAN_ENABLE_AUTO | CLKDM_CAN_DISABLE_AUTO) #define CLKDM_CAN_SWSUP (CLKDM_CAN_FORCE_SLEEP | CLKDM_CAN_FORCE_WAKEUP) diff --git a/arch/arm/mach-omap2/clockdomains33xx_data.c b/arch/arm/mach-omap2/clockdomains33xx_data.c index c05a3c07d448..87f4e927eb18 100644 --- a/arch/arm/mach-omap2/clockdomains33xx_data.c +++ b/arch/arm/mach-omap2/clockdomains33xx_data.c @@ -19,7 +19,7 @@ static struct clockdomain l4ls_am33xx_clkdm = { .pwrdm = { .name = "per_pwrdm" }, .cm_inst = AM33XX_CM_PER_MOD, .clkdm_offs = AM33XX_CM_PER_L4LS_CLKSTCTRL_OFFSET, - .flags = CLKDM_CAN_SWSUP | CLKDM_STANDBY_FORCE_WAKEUP, + .flags = CLKDM_CAN_SWSUP, }; static struct clockdomain l3s_am33xx_clkdm = { diff --git a/arch/arm/mach-omap2/cm33xx.c b/arch/arm/mach-omap2/cm33xx.c index aaee67d09791..c824d4e3db63 100644 --- a/arch/arm/mach-omap2/cm33xx.c +++ b/arch/arm/mach-omap2/cm33xx.c @@ -20,9 +20,6 @@ #include "cm-regbits-34xx.h" #include "cm-regbits-33xx.h" #include "prm33xx.h" -#if IS_ENABLED(CONFIG_SUSPEND) -#include -#endif /* * CLKCTRL_IDLEST_*: possible values for the CM_*_CLKCTRL.IDLEST bitfield: @@ -331,17 +328,8 @@ static int am33xx_clkdm_clk_disable(struct clockdomain *clkdm) { bool hwsup = false; -#if IS_ENABLED(CONFIG_SUSPEND) - /* - * In case of standby, Don't put the l4ls clk domain to sleep. - * Since CM3 PM FW doesn't wake-up/enable the l4ls clk domain - * upon wake-up, CM3 PM FW fails to wake-up th MPU. - */ - if (pm_suspend_target_state == PM_SUSPEND_STANDBY && - (clkdm->flags & CLKDM_STANDBY_FORCE_WAKEUP)) - return 0; -#endif hwsup = am33xx_cm_is_clkdm_in_hwsup(clkdm->cm_inst, clkdm->clkdm_offs); + if (!hwsup && (clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) am33xx_clkdm_sleep(clkdm); -- Gitee From db5a31a7e31dbe5e8a49faffa3b404aeddc2ba31 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:26 +0800 Subject: [PATCH 0666/1421] Revert "bus: fsl-mc: increase MC_CMD_COMPLETION_TIMEOUT_MS value" This reverts commit 63caaca1ba035b0887e05decc33bb04b2ab2e8f1. --- drivers/bus/fsl-mc/mc-sys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/bus/fsl-mc/mc-sys.c b/drivers/bus/fsl-mc/mc-sys.c index b22c59d57c8f..f2052cd0a051 100644 --- a/drivers/bus/fsl-mc/mc-sys.c +++ b/drivers/bus/fsl-mc/mc-sys.c @@ -19,7 +19,7 @@ /* * Timeout in milliseconds to wait for the completion of an MC command */ -#define MC_CMD_COMPLETION_TIMEOUT_MS 15000 +#define MC_CMD_COMPLETION_TIMEOUT_MS 500 /* * usleep_range() min and max values used to throttle down polling -- Gitee From 92e179868d7f36985ad55fe513774fe53e043731 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:26 +0800 Subject: [PATCH 0667/1421] Revert "watchdog: da9052_wdt: respect TWDMIN" This reverts commit c367cf714587c37b75b49e48283cf156e911803b. --- drivers/watchdog/da9052_wdt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c index 180526220d8c..d708c091bf1b 100644 --- a/drivers/watchdog/da9052_wdt.c +++ b/drivers/watchdog/da9052_wdt.c @@ -164,7 +164,6 @@ static int da9052_wdt_probe(struct platform_device *pdev) da9052_wdt = &driver_data->wdt; da9052_wdt->timeout = DA9052_DEF_TIMEOUT; - da9052_wdt->min_hw_heartbeat_ms = DA9052_TWDMIN; da9052_wdt->info = &da9052_wdt_info; da9052_wdt->ops = &da9052_wdt_ops; da9052_wdt->parent = dev; -- Gitee From ed22c6eee2d9efeaf981b7b968461edad69eb1e8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:27 +0800 Subject: [PATCH 0668/1421] Revert "fbcon: Make sure modelist not set on unregistered console" This reverts commit c2620ff37fa8aad6b407e9f6b1d5af29462c4cdf. --- drivers/video/fbdev/core/fbcon.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 75996ef9992e..7a6f9a3cb3ba 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -115,14 +115,9 @@ static signed char con2fb_map_boot[MAX_NR_CONSOLES]; static struct fb_info *fbcon_info_from_console(int console) { - signed char fb; WARN_CONSOLE_UNLOCKED(); - fb = con2fb_map[console]; - if (fb < 0 || fb >= ARRAY_SIZE(fbcon_registered_fb)) - return NULL; - - return fbcon_registered_fb[fb]; + return fbcon_registered_fb[con2fb_map[console]]; } static int logo_lines; -- Gitee From 0b149b1e2659a51da268326c67bb40a562d91b74 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:27 +0800 Subject: [PATCH 0669/1421] Revert "wifi: ath12k: Pass correct values of center freq1 and center freq2 for 160 MHz" This reverts commit 50b2bc5f6ed2040a8473a1b5be0cbea245587604. --- drivers/net/wireless/ath/ath12k/wmi.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c index 958ac4ed5c34..31af940bc572 100644 --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c @@ -951,24 +951,14 @@ int ath12k_wmi_vdev_down(struct ath12k *ar, u8 vdev_id) static void ath12k_wmi_put_wmi_channel(struct ath12k_wmi_channel_params *chan, struct wmi_vdev_start_req_arg *arg) { - u32 center_freq1 = arg->band_center_freq1; - memset(chan, 0, sizeof(*chan)); chan->mhz = cpu_to_le32(arg->freq); - chan->band_center_freq1 = cpu_to_le32(center_freq1); - if (arg->mode == MODE_11BE_EHT160) { - if (arg->freq > center_freq1) - chan->band_center_freq1 = cpu_to_le32(center_freq1 + 40); - else - chan->band_center_freq1 = cpu_to_le32(center_freq1 - 40); - - chan->band_center_freq2 = cpu_to_le32(center_freq1); - } else if (arg->mode == MODE_11BE_EHT80_80) { + chan->band_center_freq1 = cpu_to_le32(arg->band_center_freq1); + if (arg->mode == MODE_11AC_VHT80_80) chan->band_center_freq2 = cpu_to_le32(arg->band_center_freq2); - } else { + else chan->band_center_freq2 = 0; - } chan->info |= le32_encode_bits(arg->mode, WMI_CHAN_INFO_MODE); if (arg->passive) -- Gitee From 6e74b6288a3d9b6daab16e8ab68884ee202bbcea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:27 +0800 Subject: [PATCH 0670/1421] Revert "wifi: ath12k: fix incorrect CE addresses" This reverts commit 89a367949cffa344c147990f489d003eca191f6b. --- drivers/net/wireless/ath/ath12k/ce.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/ce.h b/drivers/net/wireless/ath/ath12k/ce.h index f9547a3945e4..857bc5f9e946 100644 --- a/drivers/net/wireless/ath/ath12k/ce.h +++ b/drivers/net/wireless/ath/ath12k/ce.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022, 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef ATH12K_CE_H @@ -39,8 +39,8 @@ #define PIPEDIR_INOUT_H2H 4 /* bidirectional, host to host */ /* CE address/mask */ -#define CE_HOST_IE_ADDRESS 0x75804C -#define CE_HOST_IE_2_ADDRESS 0x758050 +#define CE_HOST_IE_ADDRESS 0x00A1803C +#define CE_HOST_IE_2_ADDRESS 0x00A18040 #define CE_HOST_IE_3_ADDRESS CE_HOST_IE_ADDRESS #define CE_HOST_IE_3_SHIFT 0xC -- Gitee From e3c5d01c6c7dc2e3720976c1a5a9bff6a24c27cf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:27 +0800 Subject: [PATCH 0671/1421] Revert "wifi: ath12k: fix link valid field initialization in the monitor Rx" This reverts commit 14bc43a6cfdfc232a39cff86f727e7a855d2a08f. --- drivers/net/wireless/ath/ath12k/dp_mon.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/dp_mon.c b/drivers/net/wireless/ath/ath12k/dp_mon.c index 69bf75ebd751..35f22a4a16cf 100644 --- a/drivers/net/wireless/ath/ath12k/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/dp_mon.c @@ -1077,8 +1077,6 @@ static void ath12k_dp_mon_rx_deliver_msdu(struct ath12k *ar, struct napi_struct bool is_mcbc = rxcb->is_mcbc; bool is_eapol_tkip = rxcb->is_eapol; - status->link_valid = 0; - if ((status->encoding == RX_ENC_HE) && !(status->flag & RX_FLAG_RADIOTAP_HE) && !(status->flag & RX_FLAG_SKIP_MONITOR)) { he = skb_push(msdu, sizeof(known)); -- Gitee From 3483efb00b6e5f91f26b962e88e78c9b77f1b9cf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:27 +0800 Subject: [PATCH 0672/1421] Revert "wifi: ath11k: determine PM policy based on machine model" This reverts commit ee681d539aca71e89c45727e246af81e142b51b6. --- drivers/net/wireless/ath/ath11k/core.c | 55 -------------------------- drivers/net/wireless/ath/ath11k/core.h | 7 ---- 2 files changed, 62 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c index 0e8ff839cae2..609d8387c41f 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -704,52 +704,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { }, }; -static const struct dmi_system_id ath11k_pm_quirk_table[] = { - { - .driver_data = (void *)ATH11K_PM_WOW, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "21J4"), - }, - }, - { - .driver_data = (void *)ATH11K_PM_WOW, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "21K4"), - }, - }, - { - .driver_data = (void *)ATH11K_PM_WOW, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "21K6"), - }, - }, - { - .driver_data = (void *)ATH11K_PM_WOW, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "21K8"), - }, - }, - { - .driver_data = (void *)ATH11K_PM_WOW, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "21KA"), - }, - }, - { - .driver_data = (void *)ATH11K_PM_WOW, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "21F9"), - }, - }, - {} -}; - static inline struct ath11k_pdev *ath11k_core_get_single_pdev(struct ath11k_base *ab) { WARN_ON(!ab->hw_params.single_pdev_only); @@ -2064,17 +2018,8 @@ EXPORT_SYMBOL(ath11k_core_pre_init); int ath11k_core_init(struct ath11k_base *ab) { - const struct dmi_system_id *dmi_id; int ret; - dmi_id = dmi_first_match(ath11k_pm_quirk_table); - if (dmi_id) - ab->pm_policy = (kernel_ulong_t)dmi_id->driver_data; - else - ab->pm_policy = ATH11K_PM_DEFAULT; - - ath11k_dbg(ab, ATH11K_DBG_BOOT, "pm policy %u\n", ab->pm_policy); - ret = ath11k_core_soc_create(ab); if (ret) { ath11k_err(ab, "failed to create soc core: %d\n", ret); diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h index 812a174f74c0..555deafd8399 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -842,11 +842,6 @@ struct ath11k_msi_config { u16 hw_rev; }; -enum ath11k_pm_policy { - ATH11K_PM_DEFAULT, - ATH11K_PM_WOW, -}; - /* Master structure to hold the hw data which may be used in core module */ struct ath11k_base { enum ath11k_hw_rev hw_rev; @@ -999,8 +994,6 @@ struct ath11k_base { } testmode; #endif - enum ath11k_pm_policy pm_policy; - /* must be last */ u8 drv_priv[] __aligned(sizeof(void *)); }; -- Gitee From c3ae0d569c9c1504780bb77b81d6d3d7d3137503 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:28 +0800 Subject: [PATCH 0673/1421] Revert "octeontx2-pf: Add error log forcn10k_map_unmap_rq_policer()" This reverts commit fad928f787f2f425de4513f5c14f5246ed4a81ee. --- drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c b/drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c index a2807a1e4f4a..7417087b6db5 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c @@ -352,12 +352,9 @@ int cn10k_free_matchall_ipolicer(struct otx2_nic *pfvf) mutex_lock(&pfvf->mbox.lock); /* Remove RQ's policer mapping */ - for (qidx = 0; qidx < hw->rx_queues; qidx++) { - rc = cn10k_map_unmap_rq_policer(pfvf, qidx, hw->matchall_ipolicer, false); - if (rc) - dev_warn(pfvf->dev, "Failed to unmap RQ %d's policer (error %d).", - qidx, rc); - } + for (qidx = 0; qidx < hw->rx_queues; qidx++) + cn10k_map_unmap_rq_policer(pfvf, qidx, + hw->matchall_ipolicer, false); rc = cn10k_free_leaf_profile(pfvf, hw->matchall_ipolicer); -- Gitee From 74b8ffe28e278f9559fbede14450aa2ab6cb8b8e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:28 +0800 Subject: [PATCH 0674/1421] Revert "net: ethernet: cortina: Use TOE/TSO on all TCP" This reverts commit c513b2091c3d60fcb5da92b740040ed2c892d93a. --- drivers/net/ethernet/cortina/gemini.c | 37 ++++++--------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c index fce2ff1e1d83..5af98fba7480 100644 --- a/drivers/net/ethernet/cortina/gemini.c +++ b/drivers/net/ethernet/cortina/gemini.c @@ -1148,7 +1148,6 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, struct gmac_txdesc *txd; skb_frag_t *skb_frag; dma_addr_t mapping; - bool tcp = false; void *buffer; u16 mss; int ret; @@ -1156,13 +1155,6 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, word1 = skb->len; word3 = SOF_BIT; - /* Determine if we are doing TCP */ - if (skb->protocol == htons(ETH_P_IP)) - tcp = (ip_hdr(skb)->protocol == IPPROTO_TCP); - else - /* IPv6 */ - tcp = (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP); - mss = skb_shinfo(skb)->gso_size; if (mss) { /* This means we are dealing with TCP and skb->len is the @@ -1175,26 +1167,8 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, mss, skb->len); word1 |= TSS_MTU_ENABLE_BIT; word3 |= mss; - } else if (tcp) { - /* Even if we are not using TSO, use the hardware offloader - * for transferring the TCP frame: this hardware has partial - * TCP awareness (called TOE - TCP Offload Engine) and will - * according to the datasheet put packets belonging to the - * same TCP connection in the same queue for the TOE/TSO - * engine to process. The engine will deal with chopping - * up frames that exceed ETH_DATA_LEN which the - * checksumming engine cannot handle (see below) into - * manageable chunks. It flawlessly deals with quite big - * frames and frames containing custom DSA EtherTypes. - */ - mss = netdev->mtu + skb_tcp_all_headers(skb); - mss = min(mss, skb->len); - netdev_dbg(netdev, "TOE/TSO len %04x mtu %04x mss %04x\n", - skb->len, netdev->mtu, mss); - word1 |= TSS_MTU_ENABLE_BIT; - word3 |= mss; } else if (skb->len >= ETH_FRAME_LEN) { - /* Hardware offloaded checksumming isn't working on non-TCP frames + /* Hardware offloaded checksumming isn't working on frames * bigger than 1514 bytes. A hypothesis about this is that the * checksum buffer is only 1518 bytes, so when the frames get * bigger they get truncated, or the last few bytes get @@ -1211,16 +1185,21 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, } if (skb->ip_summed == CHECKSUM_PARTIAL) { + int tcp = 0; + /* We do not switch off the checksumming on non TCP/UDP * frames: as is shown from tests, the checksumming engine * is smart enough to see that a frame is not actually TCP * or UDP and then just pass it through without any changes * to the frame. */ - if (skb->protocol == htons(ETH_P_IP)) + if (skb->protocol == htons(ETH_P_IP)) { word1 |= TSS_IP_CHKSUM_BIT; - else + tcp = ip_hdr(skb)->protocol == IPPROTO_TCP; + } else { /* IPv6 */ word1 |= TSS_IPV6_ENABLE_BIT; + tcp = ipv6_hdr(skb)->nexthdr == IPPROTO_TCP; + } word1 |= tcp ? TSS_TCP_CHKSUM_BIT : TSS_UDP_CHKSUM_BIT; } -- Gitee From 0ce8ff4177bac77675a373fb93e0d42344636a09 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:28 +0800 Subject: [PATCH 0675/1421] Revert "bpf, sockmap: Fix data lost during EAGAIN retries" This reverts commit 32bc14fb0be0df367a4b62ea2baaa3f34bbb31eb. --- net/core/skmsg.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/core/skmsg.c b/net/core/skmsg.c index c3169e1e6352..2076db464e93 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c @@ -689,8 +689,7 @@ static void sk_psock_backlog(struct work_struct *work) if (ret <= 0) { if (ret == -EAGAIN) { sk_psock_skb_state(psock, state, len, off); - /* Restore redir info we cleared before */ - skb_bpf_set_redir(skb, psock->sk, ingress); + /* Delay slightly to prioritize any * other work that might be here. */ -- Gitee From 3f62c3b99479bc18cf79f76a64095b3b12c0a41c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:28 +0800 Subject: [PATCH 0676/1421] Revert "f2fs: fix to set atomic write status more clear" This reverts commit d8071934e4db9b3e8fa309e498a2347e9f618517. --- fs/f2fs/inode.c | 4 +--- fs/f2fs/segment.c | 6 ------ fs/f2fs/super.c | 4 +--- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index 66721c2093c0..21d3eabe95e0 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -35,9 +35,7 @@ void f2fs_mark_inode_dirty_sync(struct inode *inode, bool sync) if (f2fs_inode_dirtied(inode, sync)) return; - /* only atomic file w/ FI_ATOMIC_COMMITTED can be set vfs dirty */ - if (f2fs_is_atomic_file(inode) && - !is_inode_flag_set(inode, FI_ATOMIC_COMMITTED)) + if (f2fs_is_atomic_file(inode)) return; mark_inode_dirty_sync(inode); diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index c7714e954cb5..156d92b94525 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -372,13 +372,7 @@ static int __f2fs_commit_atomic_write(struct inode *inode) } else { sbi->committed_atomic_block += fi->atomic_write_cnt; set_inode_flag(inode, FI_ATOMIC_COMMITTED); - - /* - * inode may has no FI_ATOMIC_DIRTIED flag due to no write - * before commit. - */ if (is_inode_flag_set(inode, FI_ATOMIC_DIRTIED)) { - /* clear atomic dirty status and set vfs dirty status */ clear_inode_flag(inode, FI_ATOMIC_DIRTIED); f2fs_mark_inode_dirty_sync(inode, true); } diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 702137eafaa6..50170e7cf3f9 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1500,9 +1500,7 @@ int f2fs_inode_dirtied(struct inode *inode, bool sync) } spin_unlock(&sbi->inode_lock[DIRTY_META]); - /* if atomic write is not committed, set inode w/ atomic dirty */ - if (!ret && f2fs_is_atomic_file(inode) && - !is_inode_flag_set(inode, FI_ATOMIC_COMMITTED)) + if (!ret && f2fs_is_atomic_file(inode)) set_inode_flag(inode, FI_ATOMIC_DIRTIED); return ret; -- Gitee From a3c21740ebefdd163f54b898a7198c5dbf0ac786 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:29 +0800 Subject: [PATCH 0677/1421] Revert "usbnet: asix AX88772: leave the carrier control to phylink" This reverts commit bde6d42644699def2e91e877d3dc6e76d5a1ccb1. --- drivers/net/usb/asix.h | 1 + drivers/net/usb/asix_common.c | 22 ++++++++++++++++++++++ drivers/net/usb/asix_devices.c | 17 +++++++++++++---- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/drivers/net/usb/asix.h b/drivers/net/usb/asix.h index 8531b804021a..74162190bccc 100644 --- a/drivers/net/usb/asix.h +++ b/drivers/net/usb/asix.h @@ -224,6 +224,7 @@ int asix_write_rx_ctl(struct usbnet *dev, u16 mode, int in_pm); u16 asix_read_medium_status(struct usbnet *dev, int in_pm); int asix_write_medium_mode(struct usbnet *dev, u16 mode, int in_pm); +void asix_adjust_link(struct net_device *netdev); int asix_write_gpio(struct usbnet *dev, u16 value, int sleep, int in_pm); diff --git a/drivers/net/usb/asix_common.c b/drivers/net/usb/asix_common.c index 7fd763917ae2..72ffc89b477a 100644 --- a/drivers/net/usb/asix_common.c +++ b/drivers/net/usb/asix_common.c @@ -414,6 +414,28 @@ int asix_write_medium_mode(struct usbnet *dev, u16 mode, int in_pm) return ret; } +/* set MAC link settings according to information from phylib */ +void asix_adjust_link(struct net_device *netdev) +{ + struct phy_device *phydev = netdev->phydev; + struct usbnet *dev = netdev_priv(netdev); + u16 mode = 0; + + if (phydev->link) { + mode = AX88772_MEDIUM_DEFAULT; + + if (phydev->duplex == DUPLEX_HALF) + mode &= ~AX_MEDIUM_FD; + + if (phydev->speed != SPEED_100) + mode &= ~AX_MEDIUM_PS; + } + + asix_write_medium_mode(dev, mode, 0); + phy_print_status(phydev); + usbnet_link_change(dev, phydev->link, 0); +} + int asix_write_gpio(struct usbnet *dev, u16 value, int sleep, int in_pm) { int ret; diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c index 119295f5f3b3..ec4dcf89cbed 100644 --- a/drivers/net/usb/asix_devices.c +++ b/drivers/net/usb/asix_devices.c @@ -752,6 +752,7 @@ static void ax88772_mac_link_down(struct phylink_config *config, struct usbnet *dev = netdev_priv(to_net_dev(config->dev)); asix_write_medium_mode(dev, 0, 0); + usbnet_link_change(dev, false, false); } static void ax88772_mac_link_up(struct phylink_config *config, @@ -782,6 +783,7 @@ static void ax88772_mac_link_up(struct phylink_config *config, m |= AX_MEDIUM_RFC; asix_write_medium_mode(dev, m, 0); + usbnet_link_change(dev, true, false); } static const struct phylink_mac_ops ax88772_phylink_mac_ops = { @@ -1348,9 +1350,10 @@ static const struct driver_info ax88772_info = { .description = "ASIX AX88772 USB 2.0 Ethernet", .bind = ax88772_bind, .unbind = ax88772_unbind, + .status = asix_status, .reset = ax88772_reset, .stop = ax88772_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_MULTI_PACKET, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | FLAG_MULTI_PACKET, .rx_fixup = asix_rx_fixup_common, .tx_fixup = asix_tx_fixup, }; @@ -1359,9 +1362,11 @@ static const struct driver_info ax88772b_info = { .description = "ASIX AX88772B USB 2.0 Ethernet", .bind = ax88772_bind, .unbind = ax88772_unbind, + .status = asix_status, .reset = ax88772_reset, .stop = ax88772_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_MULTI_PACKET, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | + FLAG_MULTI_PACKET, .rx_fixup = asix_rx_fixup_common, .tx_fixup = asix_tx_fixup, .data = FLAG_EEPROM_MAC, @@ -1371,9 +1376,11 @@ static const struct driver_info lxausb_t1l_info = { .description = "Linux Automation GmbH USB 10Base-T1L", .bind = ax88772_bind, .unbind = ax88772_unbind, + .status = asix_status, .reset = ax88772_reset, .stop = ax88772_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_MULTI_PACKET, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | + FLAG_MULTI_PACKET, .rx_fixup = asix_rx_fixup_common, .tx_fixup = asix_tx_fixup, .data = FLAG_EEPROM_MAC, @@ -1405,8 +1412,10 @@ static const struct driver_info hg20f9_info = { .description = "HG20F9 USB 2.0 Ethernet", .bind = ax88772_bind, .unbind = ax88772_unbind, + .status = asix_status, .reset = ax88772_reset, - .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_MULTI_PACKET, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR | + FLAG_MULTI_PACKET, .rx_fixup = asix_rx_fixup_common, .tx_fixup = asix_tx_fixup, .data = FLAG_EEPROM_MAC, -- Gitee From 41f17ac677ecbcb66534a11c6d7043ba4a0877d5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:29 +0800 Subject: [PATCH 0678/1421] Revert "ice: fix check for existing switch rule" This reverts commit eb7ee89fa9bdb063faddc076d965946c1c79d8e6. --- drivers/net/ethernet/intel/ice/ice_switch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c index ac004ef1d724..19f730a68fa2 100644 --- a/drivers/net/ethernet/intel/ice/ice_switch.c +++ b/drivers/net/ethernet/intel/ice/ice_switch.c @@ -3024,7 +3024,7 @@ ice_add_update_vsi_list(struct ice_hw *hw, u16 vsi_handle_arr[2]; /* A rule already exists with the new VSI being added */ - if (cur_fltr->vsi_handle == new_fltr->vsi_handle) + if (cur_fltr->fwd_id.hw_vsi_id == new_fltr->fwd_id.hw_vsi_id) return -EEXIST; vsi_handle_arr[0] = cur_fltr->vsi_handle; @@ -5991,7 +5991,7 @@ ice_adv_add_update_vsi_list(struct ice_hw *hw, /* A rule already exists with the new VSI being added */ if (test_bit(vsi_handle, m_entry->vsi_list_info->vsi_map)) - return -EEXIST; + return 0; /* Update the previously created VSI list set with * the new VSI ID passed in -- Gitee From 920b92da64713bfa0ae74c452577015315117b47 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:29 +0800 Subject: [PATCH 0679/1421] Revert "i40e: fix MMIO write access to an invalid page in i40e_clear_hw" This reverts commit ac4af59d5b51e145a06b68270e8eeb6868fed697. --- drivers/net/ethernet/intel/i40e/i40e_common.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c index 5d46a8e5376d..4d7caa119971 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_common.c +++ b/drivers/net/ethernet/intel/i40e/i40e_common.c @@ -1067,11 +1067,10 @@ int i40e_pf_reset(struct i40e_hw *hw) void i40e_clear_hw(struct i40e_hw *hw) { u32 num_queues, base_queue; - s32 num_pf_int; - s32 num_vf_int; + u32 num_pf_int; + u32 num_vf_int; u32 num_vfs; - s32 i; - u32 j; + u32 i, j; u32 val; u32 eol = 0x7ff; -- Gitee From 2d71190a83343d7a76532354e10b0e94709b4b45 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:29 +0800 Subject: [PATCH 0680/1421] Revert "sock: Correct error checking condition for (assign|release)_proto_idx()" This reverts commit 87ccbca75c1bbc7992385516d74ec1dea171caf1. --- net/core/sock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/core/sock.c b/net/core/sock.c index ec48690b5174..84ba3f67bca9 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3817,7 +3817,7 @@ static int assign_proto_idx(struct proto *prot) { prot->inuse_idx = find_first_zero_bit(proto_inuse_idx, PROTO_INUSE_NR); - if (unlikely(prot->inuse_idx == PROTO_INUSE_NR)) { + if (unlikely(prot->inuse_idx == PROTO_INUSE_NR - 1)) { pr_err("PROTO_INUSE_NR exhausted\n"); return -ENOSPC; } @@ -3828,7 +3828,7 @@ static int assign_proto_idx(struct proto *prot) static void release_proto_idx(struct proto *prot) { - if (prot->inuse_idx != PROTO_INUSE_NR) + if (prot->inuse_idx != PROTO_INUSE_NR - 1) clear_bit(prot->inuse_idx, proto_inuse_idx); } #else -- Gitee From a82bfb61a40793df05ef16e75d2d53503c2c517f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:29 +0800 Subject: [PATCH 0681/1421] Revert "scsi: lpfc: Use memcpy() for BIOS version" This reverts commit 3cbc37e95337d9f7d4ffdbff0d90a7cc8ebdbb81. --- drivers/scsi/lpfc/lpfc_sli.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 4cf935b7223a..4a9fa00eeb79 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -6014,9 +6014,9 @@ lpfc_sli4_get_ctl_attr(struct lpfc_hba *phba) phba->sli4_hba.flash_id = bf_get(lpfc_cntl_attr_flash_id, cntl_attr); phba->sli4_hba.asic_rev = bf_get(lpfc_cntl_attr_asic_rev, cntl_attr); - memcpy(phba->BIOSVersion, cntl_attr->bios_ver_str, + memset(phba->BIOSVersion, 0, sizeof(phba->BIOSVersion)); + strlcat(phba->BIOSVersion, (char *)cntl_attr->bios_ver_str, sizeof(phba->BIOSVersion)); - phba->BIOSVersion[sizeof(phba->BIOSVersion) - 1] = '\0'; lpfc_printf_log(phba, KERN_INFO, LOG_SLI, "3086 lnk_type:%d, lnk_numb:%d, bios_ver:%s, " -- Gitee From 557b55fded98bc491d69adcca06f19c672390b55 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:30 +0800 Subject: [PATCH 0682/1421] Revert "wifi: ath12k: fix failed to set mhi state error during reboot with hardware grouping" This reverts commit 47cc0d8f62e45e2ea5c9f5177c2e53df08ab1429. --- drivers/net/wireless/ath/ath12k/pci.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/pci.c b/drivers/net/wireless/ath/ath12k/pci.c index 7dfbabf0637d..5fd80f90ecaf 100644 --- a/drivers/net/wireless/ath/ath12k/pci.c +++ b/drivers/net/wireless/ath/ath12k/pci.c @@ -1153,9 +1153,6 @@ void ath12k_pci_power_down(struct ath12k_base *ab) { struct ath12k_pci *ab_pci = ath12k_pci_priv(ab); - if (!test_bit(ATH12K_PCI_FLAG_INIT_DONE, &ab_pci->flags)) - return; - /* restore aspm in case firmware bootup fails */ ath12k_pci_aspm_restore(ab_pci); -- Gitee From fe8666fb143b72fb698c5f07ea5e746d92f3b1e8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:30 +0800 Subject: [PATCH 0683/1421] Revert "pinctrl: mcp23s08: Reset all pins to input at probe" This reverts commit acde55a7e5b870f3fd2cbfb0ee622d73bce9f106. --- drivers/pinctrl/pinctrl-mcp23s08.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c index ca45c1f36a89..fd97b6ee2a8d 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08.c +++ b/drivers/pinctrl/pinctrl-mcp23s08.c @@ -612,14 +612,6 @@ int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev, mcp->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); - /* - * Reset the chip - we don't really know what state it's in, so reset - * all pins to input first to prevent surprises. - */ - ret = mcp_write(mcp, MCP_IODIR, mcp->chip.ngpio == 16 ? 0xFFFF : 0xFF); - if (ret < 0) - return ret; - /* verify MCP_IOCON.SEQOP = 0, so sequential reads work, * and MCP_IOCON.HAEN = 1, so we work with all chips. */ -- Gitee From a7de55d37402a99fd11e65be90b317080f179745 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:30 +0800 Subject: [PATCH 0684/1421] Revert "software node: Correct a OOB check in software_node_get_reference_args()" This reverts commit eb8b3983f77ade2bb39bf2748432363ec45e6463. --- drivers/base/swnode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index a7a3e3b66bb5..079bd14bdedc 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -518,7 +518,7 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode, if (prop->is_inline) return -EINVAL; - if ((index + 1) * sizeof(*ref) > prop->length) + if (index * sizeof(*ref) >= prop->length) return -ENOENT; ref_array = prop->pointer; -- Gitee From bbd7b675e3902f5c763b4fa5b90f5502e79b1c0a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:30 +0800 Subject: [PATCH 0685/1421] Revert "net: ethernet: ti: am65-cpsw: handle -EPROBE_DEFER" This reverts commit 64b48c2ea73fc3d25e8feca0e25be0e62f91ed7f. --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index 28cc23736a69..c379a958380c 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -2089,9 +2089,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common) goto of_node_put; ret = of_get_mac_address(port_np, port->slave.mac_addr); - if (ret == -EPROBE_DEFER) { - goto of_node_put; - } else if (ret) { + if (ret) { am65_cpsw_am654_get_efuse_macid(port_np, port->port_id, port->slave.mac_addr); @@ -2951,16 +2949,6 @@ static int am65_cpsw_nuss_probe(struct platform_device *pdev) return ret; } - am65_cpsw_nuss_get_ver(common); - - ret = am65_cpsw_nuss_init_host_p(common); - if (ret) - goto err_pm_clear; - - ret = am65_cpsw_nuss_init_slave_ports(common); - if (ret) - goto err_pm_clear; - node = of_get_child_by_name(dev->of_node, "mdio"); if (!node) { dev_warn(dev, "MDIO node not found\n"); @@ -2977,6 +2965,16 @@ static int am65_cpsw_nuss_probe(struct platform_device *pdev) } of_node_put(node); + am65_cpsw_nuss_get_ver(common); + + ret = am65_cpsw_nuss_init_host_p(common); + if (ret) + goto err_of_clear; + + ret = am65_cpsw_nuss_init_slave_ports(common); + if (ret) + goto err_of_clear; + /* init common data */ ale_params.dev = dev; ale_params.ale_ageout = AM65_CPSW_ALE_AGEOUT_DEFAULT; -- Gitee From 4c9dd280f3bca9810351c9ce041e6122c2239d23 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:30 +0800 Subject: [PATCH 0686/1421] Revert "vxlan: Do not treat dst cache initialization errors as fatal" This reverts commit 4011eb0abea33b37bdbb2f8c07aa468963b9ab66. --- drivers/net/vxlan/vxlan_core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index 1b6b6acd3489..2ed879a0abc6 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -606,10 +606,10 @@ static int vxlan_fdb_append(struct vxlan_fdb *f, if (rd == NULL) return -ENOMEM; - /* The driver can work correctly without a dst cache, so do not treat - * dst cache initialization errors as fatal. - */ - dst_cache_init(&rd->dst_cache, GFP_ATOMIC | __GFP_NOWARN); + if (dst_cache_init(&rd->dst_cache, GFP_ATOMIC)) { + kfree(rd); + return -ENOMEM; + } rd->remote_ip = *ip; rd->remote_port = port; -- Gitee From 1ed5f4980864d8a4ed54fa64d9c3236a60311b7c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:31 +0800 Subject: [PATCH 0687/1421] Revert "net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions" This reverts commit 9ccc53ed0772a3f7ab19f767b019e7747c831630. --- net/bridge/br_multicast.c | 77 ++++----------------------------------- 1 file changed, 8 insertions(+), 69 deletions(-) diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index fa16ee88ec39..ea71a64f915f 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -2104,17 +2104,12 @@ static void __br_multicast_enable_port_ctx(struct net_bridge_mcast_port *pmctx) } } -static void br_multicast_enable_port_ctx(struct net_bridge_mcast_port *pmctx) +void br_multicast_enable_port(struct net_bridge_port *port) { - struct net_bridge *br = pmctx->port->br; + struct net_bridge *br = port->br; spin_lock_bh(&br->multicast_lock); - if (br_multicast_port_ctx_is_vlan(pmctx) && - !(pmctx->vlan->priv_flags & BR_VLFLAG_MCAST_ENABLED)) { - spin_unlock_bh(&br->multicast_lock); - return; - } - __br_multicast_enable_port_ctx(pmctx); + __br_multicast_enable_port_ctx(&port->multicast_ctx); spin_unlock_bh(&br->multicast_lock); } @@ -2141,67 +2136,11 @@ static void __br_multicast_disable_port_ctx(struct net_bridge_mcast_port *pmctx) br_multicast_rport_del_notify(pmctx, del); } -static void br_multicast_disable_port_ctx(struct net_bridge_mcast_port *pmctx) -{ - struct net_bridge *br = pmctx->port->br; - - spin_lock_bh(&br->multicast_lock); - if (br_multicast_port_ctx_is_vlan(pmctx) && - !(pmctx->vlan->priv_flags & BR_VLFLAG_MCAST_ENABLED)) { - spin_unlock_bh(&br->multicast_lock); - return; - } - - __br_multicast_disable_port_ctx(pmctx); - spin_unlock_bh(&br->multicast_lock); -} - -static void br_multicast_toggle_port(struct net_bridge_port *port, bool on) -{ -#if IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING) - if (br_opt_get(port->br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) { - struct net_bridge_vlan_group *vg; - struct net_bridge_vlan *vlan; - - rcu_read_lock(); - vg = nbp_vlan_group_rcu(port); - if (!vg) { - rcu_read_unlock(); - return; - } - - /* iterate each vlan, toggle vlan multicast context */ - list_for_each_entry_rcu(vlan, &vg->vlan_list, vlist) { - struct net_bridge_mcast_port *pmctx = - &vlan->port_mcast_ctx; - u8 state = br_vlan_get_state(vlan); - /* enable vlan multicast context when state is - * LEARNING or FORWARDING - */ - if (on && br_vlan_state_allowed(state, true)) - br_multicast_enable_port_ctx(pmctx); - else - br_multicast_disable_port_ctx(pmctx); - } - rcu_read_unlock(); - return; - } -#endif - /* toggle port multicast context when vlan snooping is disabled */ - if (on) - br_multicast_enable_port_ctx(&port->multicast_ctx); - else - br_multicast_disable_port_ctx(&port->multicast_ctx); -} - -void br_multicast_enable_port(struct net_bridge_port *port) -{ - br_multicast_toggle_port(port, true); -} - void br_multicast_disable_port(struct net_bridge_port *port) { - br_multicast_toggle_port(port, false); + spin_lock_bh(&port->br->multicast_lock); + __br_multicast_disable_port_ctx(&port->multicast_ctx); + spin_unlock_bh(&port->br->multicast_lock); } static int __grp_src_delete_marked(struct net_bridge_port_group *pg) @@ -4390,9 +4329,9 @@ int br_multicast_toggle_vlan_snooping(struct net_bridge *br, bool on, __br_multicast_open(&br->multicast_ctx); list_for_each_entry(p, &br->port_list, list) { if (on) - br_multicast_disable_port_ctx(&p->multicast_ctx); + br_multicast_disable_port(p); else - br_multicast_enable_port_ctx(&p->multicast_ctx); + br_multicast_enable_port(p); } list_for_each_entry(vlan, &vg->vlan_list, vlist) -- Gitee From 8ee239406b8bea8a465a566b336e953bd9220016 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:31 +0800 Subject: [PATCH 0688/1421] Revert "net: bridge: mcast: update multicast contex when vlan state is changed" This reverts commit 7a158a575b45f93ae04956d035f630267314bc34. --- net/bridge/br_mst.c | 4 ++-- net/bridge/br_multicast.c | 26 -------------------------- net/bridge/br_private.h | 11 +---------- 3 files changed, 3 insertions(+), 38 deletions(-) diff --git a/net/bridge/br_mst.c b/net/bridge/br_mst.c index 3f24b4ee49c2..1820f09ff59c 100644 --- a/net/bridge/br_mst.c +++ b/net/bridge/br_mst.c @@ -80,10 +80,10 @@ static void br_mst_vlan_set_state(struct net_bridge_vlan_group *vg, if (br_vlan_get_state(v) == state) return; + br_vlan_set_state(v, state); + if (v->vid == vg->pvid) br_vlan_set_pvid_state(vg, state); - - br_vlan_set_state(v, state); } int br_mst_set_state(struct net_bridge_port *p, u16 msti, u8 state, diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index ea71a64f915f..c38244d60ff8 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -4210,32 +4210,6 @@ static void __br_multicast_stop(struct net_bridge_mcast *brmctx) #endif } -void br_multicast_update_vlan_mcast_ctx(struct net_bridge_vlan *v, u8 state) -{ -#if IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING) - struct net_bridge *br; - - if (!br_vlan_should_use(v)) - return; - - if (br_vlan_is_master(v)) - return; - - br = v->port->br; - - if (!br_opt_get(br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) - return; - - if (br_vlan_state_allowed(state, true)) - br_multicast_enable_port_ctx(&v->port_mcast_ctx); - - /* Multicast is not disabled for the vlan when it goes in - * blocking state because the timers will expire and stop by - * themselves without sending more queries. - */ -#endif -} - void br_multicast_toggle_one_vlan(struct net_bridge_vlan *vlan, bool on) { struct net_bridge *br; diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 067d47b8eb8f..9197b511e459 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -1043,7 +1043,6 @@ void br_multicast_port_ctx_init(struct net_bridge_port *port, struct net_bridge_vlan *vlan, struct net_bridge_mcast_port *pmctx); void br_multicast_port_ctx_deinit(struct net_bridge_mcast_port *pmctx); -void br_multicast_update_vlan_mcast_ctx(struct net_bridge_vlan *v, u8 state); void br_multicast_toggle_one_vlan(struct net_bridge_vlan *vlan, bool on); int br_multicast_toggle_vlan_snooping(struct net_bridge *br, bool on, struct netlink_ext_ack *extack); @@ -1480,11 +1479,6 @@ static inline void br_multicast_port_ctx_deinit(struct net_bridge_mcast_port *pm { } -static inline void br_multicast_update_vlan_mcast_ctx(struct net_bridge_vlan *v, - u8 state) -{ -} - static inline void br_multicast_toggle_one_vlan(struct net_bridge_vlan *vlan, bool on) { @@ -1836,9 +1830,7 @@ bool br_vlan_global_opts_can_enter_range(const struct net_bridge_vlan *v_curr, bool br_vlan_global_opts_fill(struct sk_buff *skb, u16 vid, u16 vid_range, const struct net_bridge_vlan *v_opts); -/* vlan state manipulation helpers using *_ONCE to annotate lock-free access, - * while br_vlan_set_state() may access data protected by multicast_lock. - */ +/* vlan state manipulation helpers using *_ONCE to annotate lock-free access */ static inline u8 br_vlan_get_state(const struct net_bridge_vlan *v) { return READ_ONCE(v->state); @@ -1847,7 +1839,6 @@ static inline u8 br_vlan_get_state(const struct net_bridge_vlan *v) static inline void br_vlan_set_state(struct net_bridge_vlan *v, u8 state) { WRITE_ONCE(v->state, state); - br_multicast_update_vlan_mcast_ctx(v, state); } static inline u8 br_vlan_get_pvid_state(const struct net_bridge_vlan_group *vg) -- Gitee From 4f85584f143b9bc96ece76b3b463f748d8b44921 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:31 +0800 Subject: [PATCH 0689/1421] Revert "wifi: iwlwifi: Add missing MODULE_FIRMWARE for Qu-c0-jf-b0" This reverts commit e0ed03d765746b4e320e5a4a63a7a4ad082f8f36. --- drivers/net/wireless/intel/iwlwifi/cfg/22000.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c index 906f2790f561..d594694206b3 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c @@ -44,8 +44,6 @@ IWL_QU_C_HR_B_FW_PRE "-" __stringify(api) ".ucode" #define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \ IWL_QU_B_JF_B_FW_PRE "-" __stringify(api) ".ucode" -#define IWL_QU_C_JF_B_MODULE_FIRMWARE(api) \ - IWL_QU_C_JF_B_FW_PRE "-" __stringify(api) ".ucode" #define IWL_CC_A_MODULE_FIRMWARE(api) \ IWL_CC_A_FW_PRE "-" __stringify(api) ".ucode" @@ -425,7 +423,6 @@ const struct iwl_cfg iwl_cfg_quz_a0_hr_b0 = { MODULE_FIRMWARE(IWL_QU_B_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); -MODULE_FIRMWARE(IWL_QU_C_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); -- Gitee From 237418fad761174796c3571e1c8256f5e0b6c304 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:31 +0800 Subject: [PATCH 0690/1421] Revert "wifi: mac80211: VLAN traffic in multicast path" This reverts commit 93b9ffad773a647aebbdf7e5b3f47c3ffa7012d0. --- net/mac80211/tx.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index ec5469add68a..45a093d3f1fa 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -4507,10 +4507,8 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, IEEE80211_TX_CTRL_MLO_LINK_UNSPEC, NULL); } else if (ieee80211_vif_is_mld(&sdata->vif) && - ((sdata->vif.type == NL80211_IFTYPE_AP && - !ieee80211_hw_check(&sdata->local->hw, MLO_MCAST_MULTI_LINK_TX)) || - (sdata->vif.type == NL80211_IFTYPE_AP_VLAN && - !sdata->wdev.use_4addr))) { + sdata->vif.type == NL80211_IFTYPE_AP && + !ieee80211_hw_check(&sdata->local->hw, MLO_MCAST_MULTI_LINK_TX)) { ieee80211_mlo_multicast_tx(dev, skb); } else { normal: -- Gitee From 55043dff5288430279c0cddd84d3295369894eaf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:31 +0800 Subject: [PATCH 0691/1421] Revert "wifi: mac80211_hwsim: Prevent tsf from setting if beacon is disabled" This reverts commit 01aa5504b2b36fb2a3bfc282f3f3878052c190bf. --- drivers/net/wireless/virtual/mac80211_hwsim.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c index f5f48f7e6d26..d86a1bd7aab0 100644 --- a/drivers/net/wireless/virtual/mac80211_hwsim.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim.c @@ -1201,11 +1201,6 @@ static void mac80211_hwsim_set_tsf(struct ieee80211_hw *hw, /* MLD not supported here */ u32 bcn_int = data->link_data[0].beacon_int; u64 delta = abs(tsf - now); - struct ieee80211_bss_conf *conf; - - conf = link_conf_dereference_protected(vif, data->link_data[0].link_id); - if (conf && !conf->enable_beacon) - return; /* adjust after beaconing with new timestamp at old TBTT */ if (tsf > now) { -- Gitee From 7cd547cd43326ed44c92386d861a9455e9933adf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:32 +0800 Subject: [PATCH 0692/1421] Revert "wifi: iwlwifi: pcie: make sure to lock rxq->read" This reverts commit 6a535949689a1dae3112ad3738ce6406e0c5b022. --- drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c index 5c2e8d288397..e9807fcca6ad 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c @@ -2701,8 +2701,6 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file, for (i = 0; i < trans->num_rx_queues && pos < bufsz; i++) { struct iwl_rxq *rxq = &trans_pcie->rxq[i]; - spin_lock_bh(&rxq->lock); - pos += scnprintf(buf + pos, bufsz - pos, "queue#: %2d\n", i); pos += scnprintf(buf + pos, bufsz - pos, "\tread: %u\n", @@ -2723,7 +2721,6 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file, pos += scnprintf(buf + pos, bufsz - pos, "\tclosed_rb_num: Not Allocated\n"); } - spin_unlock_bh(&rxq->lock); } ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos); kfree(buf); @@ -3388,11 +3385,8 @@ iwl_trans_pcie_dump_data(struct iwl_trans *trans, /* Dump RBs is supported only for pre-9000 devices (1 queue) */ struct iwl_rxq *rxq = &trans_pcie->rxq[0]; /* RBs */ - spin_lock_bh(&rxq->lock); num_rbs = iwl_get_closed_rb_stts(trans, rxq); num_rbs = (num_rbs - rxq->read) & RX_QUEUE_MASK; - spin_unlock_bh(&rxq->lock); - len += num_rbs * (sizeof(*data) + sizeof(struct iwl_fw_error_dump_rb) + (PAGE_SIZE << trans_pcie->rx_page_order)); -- Gitee From 2721521661babc627f8d2f1299b811afb94f0faf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:32 +0800 Subject: [PATCH 0693/1421] Revert "iommu/amd: Ensure GA log notifier callbacks finish running before module unload" This reverts commit 3e59ed019ad6a7775d503297a6122734760045fc. --- drivers/iommu/amd/iommu.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index a5d6d786dba5..83c5d786686d 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -780,14 +780,6 @@ int amd_iommu_register_ga_log_notifier(int (*notifier)(u32)) { iommu_ga_log_notifier = notifier; - /* - * Ensure all in-flight IRQ handlers run to completion before returning - * to the caller, e.g. to ensure module code isn't unloaded while it's - * being executed in the IRQ handler. - */ - if (!notifier) - synchronize_rcu(); - return 0; } EXPORT_SYMBOL(amd_iommu_register_ga_log_notifier); -- Gitee From afcc1a4deda584bcfaf63c5e819d4ee3dd13079d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:32 +0800 Subject: [PATCH 0694/1421] Revert "scsi: lpfc: Fix lpfc_check_sli_ndlp() handling for GEN_REQUEST64 commands" This reverts commit 477ff7da3c9d6041bc3b3675d392f014e6d13023. --- drivers/scsi/lpfc/lpfc_hbadisc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index ff4428333877..5c9bc8af3c2d 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -5101,7 +5101,7 @@ lpfc_check_sli_ndlp(struct lpfc_hba *phba, case CMD_GEN_REQUEST64_CR: if (iocb->ndlp == ndlp) return 1; - break; + fallthrough; case CMD_ELS_REQUEST64_CR: if (remote_id == ndlp->nlp_DID) return 1; -- Gitee From 5279566cee973df2648f2c7937b0a68235369168 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:32 +0800 Subject: [PATCH 0695/1421] Revert "libbpf: Add identical pointer detection to btf_dedup_is_equiv()" This reverts commit 99a7f6044fdff3b272fd1f810336d005b9c9e9d8. --- tools/lib/bpf/btf.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index 2e9f28cece3f..8484b563b53d 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -3922,19 +3922,6 @@ static bool btf_dedup_identical_structs(struct btf_dedup *d, __u32 id1, __u32 id return true; } -static bool btf_dedup_identical_ptrs(struct btf_dedup *d, __u32 id1, __u32 id2) -{ - struct btf_type *t1, *t2; - - t1 = btf_type_by_id(d->btf, id1); - t2 = btf_type_by_id(d->btf, id2); - - if (!btf_is_ptr(t1) || !btf_is_ptr(t2)) - return false; - - return t1->type == t2->type; -} - /* * Check equivalence of BTF type graph formed by candidate struct/union (we'll * call it "candidate graph" in this description for brevity) to a type graph @@ -4067,9 +4054,6 @@ static int btf_dedup_is_equiv(struct btf_dedup *d, __u32 cand_id, */ if (btf_dedup_identical_structs(d, hypot_type_id, cand_id)) return 1; - /* A similar case is again observed for PTRs. */ - if (btf_dedup_identical_ptrs(d, hypot_type_id, cand_id)) - return 1; return 0; } -- Gitee From 72a491cc9599540c901d0f13d419e60309767665 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:33 +0800 Subject: [PATCH 0696/1421] Revert "clk: rockchip: rk3036: mark ddrphy as critical" This reverts commit 1160f3d760bf539e8014dba4590fbe3c07e07435. --- drivers/clk/rockchip/clk-rk3036.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/clk/rockchip/clk-rk3036.c b/drivers/clk/rockchip/clk-rk3036.c index f5f27535087a..d644bc155ec6 100644 --- a/drivers/clk/rockchip/clk-rk3036.c +++ b/drivers/clk/rockchip/clk-rk3036.c @@ -431,7 +431,6 @@ static const char *const rk3036_critical_clocks[] __initconst = { "hclk_peri", "pclk_peri", "pclk_ddrupctl", - "ddrphy", }; static void __init rk3036_clk_init(struct device_node *np) -- Gitee From e1fe81912b3627bf33e2f322d01fb1cb40f6e208 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:33 +0800 Subject: [PATCH 0697/1421] Revert "wifi: mac80211: do not offer a mesh path if forwarding is disabled" This reverts commit 8d6ae0c4bc679e67b53c76ff04a3b81f3d96fc7e. --- net/mac80211/mesh_hwmp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c index 54930b06c3a4..c6395551f5df 100644 --- a/net/mac80211/mesh_hwmp.c +++ b/net/mac80211/mesh_hwmp.c @@ -634,7 +634,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, mesh_path_add_gate(mpath); } rcu_read_unlock(); - } else if (ifmsh->mshcfg.dot11MeshForwarding) { + } else { rcu_read_lock(); mpath = mesh_path_lookup(sdata, target_addr); if (mpath) { @@ -652,8 +652,6 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, } } rcu_read_unlock(); - } else { - forward = false; } if (reply) { @@ -671,7 +669,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, } } - if (forward) { + if (forward && ifmsh->mshcfg.dot11MeshForwarding) { u32 preq_id; u8 hopcount; -- Gitee From f361b130828bbc3c58bfb322955fd6a9e2691227 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:33 +0800 Subject: [PATCH 0698/1421] Revert "wireless: purelifi: plfxlc: fix memory leak in plfxlc_usb_wreq_asyn()" This reverts commit 1db741d9e6f71d9d862e9351ad3b2a50d21c4f31. --- drivers/net/wireless/purelifi/plfxlc/usb.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/wireless/purelifi/plfxlc/usb.c b/drivers/net/wireless/purelifi/plfxlc/usb.c index 8151bc5e00cc..311676c1ece0 100644 --- a/drivers/net/wireless/purelifi/plfxlc/usb.c +++ b/drivers/net/wireless/purelifi/plfxlc/usb.c @@ -503,10 +503,8 @@ int plfxlc_usb_wreq_async(struct plfxlc_usb *usb, const u8 *buffer, (void *)buffer, buffer_len, complete_fn, context); r = usb_submit_urb(urb, GFP_ATOMIC); - if (r) { - usb_free_urb(urb); + if (r) dev_err(&udev->dev, "Async write submit failed (%d)\n", r); - } return r; } -- Gitee From 21addde4802ed0186c5ee1c9d5952a7eb3624af5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:33 +0800 Subject: [PATCH 0699/1421] Revert "net: vertexcom: mse102x: Return code for mse102x_rx_pkt_spi" This reverts commit 493eb4e2f545feae3aa77c895c36648a673d1d36. --- drivers/net/ethernet/vertexcom/mse102x.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/vertexcom/mse102x.c b/drivers/net/ethernet/vertexcom/mse102x.c index c902f8761d5d..060a566bc6aa 100644 --- a/drivers/net/ethernet/vertexcom/mse102x.c +++ b/drivers/net/ethernet/vertexcom/mse102x.c @@ -306,7 +306,7 @@ static void mse102x_dump_packet(const char *msg, int len, const char *data) data, len, true); } -static irqreturn_t mse102x_rx_pkt_spi(struct mse102x_net *mse) +static void mse102x_rx_pkt_spi(struct mse102x_net *mse) { struct sk_buff *skb; unsigned int rxalign; @@ -327,7 +327,7 @@ static irqreturn_t mse102x_rx_pkt_spi(struct mse102x_net *mse) mse102x_tx_cmd_spi(mse, CMD_CTR); ret = mse102x_rx_cmd_spi(mse, (u8 *)&rx); if (ret) - return IRQ_NONE; + return; cmd_resp = be16_to_cpu(rx); if ((cmd_resp & CMD_MASK) != CMD_RTS) { @@ -360,7 +360,7 @@ static irqreturn_t mse102x_rx_pkt_spi(struct mse102x_net *mse) rxalign = ALIGN(rxlen + DET_SOF_LEN + DET_DFT_LEN, 4); skb = netdev_alloc_skb_ip_align(mse->ndev, rxalign); if (!skb) - return IRQ_NONE; + return; /* 2 bytes Start of frame (before ethernet header) * 2 bytes Data frame tail (after ethernet frame) @@ -370,7 +370,7 @@ static irqreturn_t mse102x_rx_pkt_spi(struct mse102x_net *mse) if (mse102x_rx_frame_spi(mse, rxpkt, rxlen, drop)) { mse->ndev->stats.rx_errors++; dev_kfree_skb(skb); - return IRQ_HANDLED; + return; } if (netif_msg_pktdata(mse)) @@ -381,8 +381,6 @@ static irqreturn_t mse102x_rx_pkt_spi(struct mse102x_net *mse) mse->ndev->stats.rx_packets++; mse->ndev->stats.rx_bytes += rxlen; - - return IRQ_HANDLED; } static int mse102x_tx_pkt_spi(struct mse102x_net *mse, struct sk_buff *txb, @@ -514,13 +512,12 @@ static irqreturn_t mse102x_irq(int irq, void *_mse) { struct mse102x_net *mse = _mse; struct mse102x_net_spi *mses = to_mse102x_spi(mse); - irqreturn_t ret; mutex_lock(&mses->lock); - ret = mse102x_rx_pkt_spi(mse); + mse102x_rx_pkt_spi(mse); mutex_unlock(&mses->lock); - return ret; + return IRQ_HANDLED; } static int mse102x_net_open(struct net_device *ndev) -- Gitee From 4abec8e25b34a3fb341b7e3697bd7075d436964e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:33 +0800 Subject: [PATCH 0700/1421] Revert "net: mlx4: add SOF_TIMESTAMPING_TX_SOFTWARE flag when getting ts info" This reverts commit d724cd9e9eb9e46ba4baa25f54ad850f8ddb9d5b. --- drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c index 07dced3c2b1c..164a13272faa 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c @@ -1916,7 +1916,6 @@ static int mlx4_en_get_ts_info(struct net_device *dev, if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) { info->so_timestamping |= SOF_TIMESTAMPING_TX_HARDWARE | - SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_RX_HARDWARE | SOF_TIMESTAMPING_RAW_HARDWARE; -- Gitee From cb7ae48dcd37d3cc4d7d2ccf1cef17759327e4d7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:34 +0800 Subject: [PATCH 0701/1421] Revert "pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get()" This reverts commit 1ba19ccd3723d25c1cebd4dccd51a639fb06e7da. --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index ef87a6045e07..a9e665ea0f61 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -443,14 +443,11 @@ static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset) struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); unsigned int reg = INPUT_VAL; unsigned int val, mask; - int ret; armada_37xx_update_reg(®, &offset); mask = BIT(offset); - ret = regmap_read(info->regmap, reg, &val); - if (ret) - return ret; + regmap_read(info->regmap, reg, &val); return (val & mask) != 0; } -- Gitee From f360f8637a3e7ee39832e2c050fb259849449e33 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:34 +0800 Subject: [PATCH 0702/1421] Revert "pinctrl: armada-37xx: propagate error from armada_37xx_pmx_gpio_set_direction()" This reverts commit 765e9870c3422336f02bf93d8832f24110548fab. --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index a9e665ea0f61..8008bad481b7 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -472,17 +472,16 @@ static int armada_37xx_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, { struct armada_37xx_pinctrl *info = pinctrl_dev_get_drvdata(pctldev); struct gpio_chip *chip = range->gc; - int ret; dev_dbg(info->dev, "gpio_direction for pin %u as %s-%d to %s\n", offset, range->name, offset, input ? "input" : "output"); if (input) - ret = armada_37xx_gpio_direction_input(chip, offset); + armada_37xx_gpio_direction_input(chip, offset); else - ret = armada_37xx_gpio_direction_output(chip, offset, 0); + armada_37xx_gpio_direction_output(chip, offset, 0); - return ret; + return 0; } static int armada_37xx_gpio_request_enable(struct pinctrl_dev *pctldev, -- Gitee From f83b02a3ff6e0efa89dcac5cd9b29607ea42905e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:34 +0800 Subject: [PATCH 0703/1421] Revert "pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get_direction()" This reverts commit f03059a4b64585bd71bea83bbf4a5cfb6e0bb83e. --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index 8008bad481b7..1d9aa4e76a23 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -400,13 +400,10 @@ static int armada_37xx_gpio_get_direction(struct gpio_chip *chip, struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); unsigned int reg = OUTPUT_EN; unsigned int val, mask; - int ret; armada_37xx_update_reg(®, &offset); mask = BIT(offset); - ret = regmap_read(info->regmap, reg, &val); - if (ret) - return ret; + regmap_read(info->regmap, reg, &val); if (val & mask) return GPIO_LINE_DIRECTION_OUT; -- Gitee From c340c7ed7d087a5abc020d35bc94d67e5b058646 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:34 +0800 Subject: [PATCH 0704/1421] Revert "pinctrl: armada-37xx: propagate error from armada_37xx_pmx_set_by_name()" This reverts commit bd7634a1b364ffc2b8dc66bdc54d466ceffe82e8. --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index 1d9aa4e76a23..1a39fd97a900 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -358,7 +358,9 @@ static int armada_37xx_pmx_set_by_name(struct pinctrl_dev *pctldev, val = grp->val[func]; - return regmap_update_bits(info->regmap, reg, mask, val); + regmap_update_bits(info->regmap, reg, mask, val); + + return 0; } static int armada_37xx_pmx_set(struct pinctrl_dev *pctldev, -- Gitee From 071a95425b05f726884c8cbad01ea6849f9888b0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:34 +0800 Subject: [PATCH 0705/1421] Revert "net: atlantic: generate software timestamp just before the doorbell" This reverts commit 63cac1273f7a24975b19b0f848496526433e007f. --- drivers/net/ethernet/aquantia/atlantic/aq_main.c | 1 + drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_main.c b/drivers/net/ethernet/aquantia/atlantic/aq_main.c index 75d436c90696..0b2a52199914 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_main.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_main.c @@ -123,6 +123,7 @@ static netdev_tx_t aq_ndev_start_xmit(struct sk_buff *skb, struct net_device *nd } #endif + skb_tx_timestamp(skb); return aq_nic_xmit(aq_nic, skb); } diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c index 07392174f643..c9b0d57696a4 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c @@ -898,8 +898,6 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb) frags = aq_nic_map_skb(self, skb, ring); - skb_tx_timestamp(skb); - if (likely(frags)) { err = self->aq_hw_ops->hw_ring_tx_xmit(self->aq_hw, ring, frags); -- Gitee From 91a9c695aaabcee1b8dce94f03229919cbb34cf9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:35 +0800 Subject: [PATCH 0706/1421] Revert "ipv4/route: Use this_cpu_inc() for stats on PREEMPT_RT" This reverts commit 7c43e8c16753a344551e0de800ce5136808a5b9a. --- net/ipv4/route.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 8ee1ad2d8c13..97dc30a03dbf 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -192,11 +192,7 @@ const __u8 ip_tos2prio[16] = { EXPORT_SYMBOL(ip_tos2prio); static DEFINE_PER_CPU(struct rt_cache_stat, rt_cache_stat); -#ifndef CONFIG_PREEMPT_RT #define RT_CACHE_STAT_INC(field) raw_cpu_inc(rt_cache_stat.field) -#else -#define RT_CACHE_STAT_INC(field) this_cpu_inc(rt_cache_stat.field) -#endif #ifdef CONFIG_PROC_FS static void *rt_cache_seq_start(struct seq_file *seq, loff_t *pos) -- Gitee From 7769e71909322c2d05234e81ebd3800dbf804139 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:35 +0800 Subject: [PATCH 0707/1421] Revert "x86/sgx: Prevent attempts to reclaim poisoned pages" This reverts commit 5ea99483a698440ebdebcd54173b0f7e6ee2e0ef. --- arch/x86/kernel/cpu/sgx/main.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c index 0db6eeeeb672..c7f8c3200e8d 100644 --- a/arch/x86/kernel/cpu/sgx/main.c +++ b/arch/x86/kernel/cpu/sgx/main.c @@ -718,8 +718,6 @@ int arch_memory_failure(unsigned long pfn, int flags) goto out; } - sgx_unmark_page_reclaimable(page); - /* * TBD: Add additional plumbing to enable pre-emptive * action for asynchronous poison notification. Until -- Gitee From 8369d205ead79899f6d844b1d296c85f302b0e51 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:35 +0800 Subject: [PATCH 0708/1421] Revert "tcp: fix initial tp->rcvq_space.space value for passive TS enabled flows" This reverts commit f78de30a70313bd15895dd6d2c2c17f6dca0f0e7. --- net/ipv4/tcp_input.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 66d6ad6d633c..994c563b35f3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -6699,9 +6699,6 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) if (!tp->srtt_us) tcp_synack_rtt_meas(sk, req); - if (tp->rx_opt.tstamp_ok) - tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; - if (req) { tcp_rcv_synrecv_state_fastopen(sk); } else { @@ -6726,6 +6723,9 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) tp->snd_wnd = ntohs(th->window) << tp->rx_opt.snd_wscale; tcp_init_wl(tp, TCP_SKB_CB(skb)->seq); + if (tp->rx_opt.tstamp_ok) + tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; + if (!inet_csk(sk)->icsk_ca_ops->cong_control) tcp_update_pacing_rate(sk); -- Gitee From 8cd92bc6677ea7361fbf156d540dd6f39c6f042e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:35 +0800 Subject: [PATCH 0709/1421] Revert "tcp: always seek for minimal rtt in tcp_rcv_rtt_update()" This reverts commit 0dc74bebf57de07dfbad805fbdfa3d82e9d1c239. --- net/ipv4/tcp_input.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 994c563b35f3..a172248b6678 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -671,12 +671,10 @@ EXPORT_SYMBOL(tcp_initialize_rcv_mss); */ static void tcp_rcv_rtt_update(struct tcp_sock *tp, u32 sample, int win_dep) { - u32 new_sample, old_sample = tp->rcv_rtt_est.rtt_us; - long m = sample << 3; + u32 new_sample = tp->rcv_rtt_est.rtt_us; + long m = sample; - if (old_sample == 0 || m < old_sample) { - new_sample = m; - } else { + if (new_sample != 0) { /* If we sample in larger samples in the non-timestamp * case, we could grossly overestimate the RTT especially * with chatty applications or bulk transfer apps which @@ -687,9 +685,17 @@ static void tcp_rcv_rtt_update(struct tcp_sock *tp, u32 sample, int win_dep) * else with timestamps disabled convergence takes too * long. */ - if (win_dep) - return; - new_sample = old_sample - (old_sample >> 3) + sample; + if (!win_dep) { + m -= (new_sample >> 3); + new_sample += m; + } else { + m <<= 3; + if (m < new_sample) + new_sample = m; + } + } else { + /* No previous measure. */ + new_sample = m << 3; } tp->rcv_rtt_est.rtt_us = new_sample; -- Gitee From 74fe4ba93bd6872b812c70891327596908e5b995 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:35 +0800 Subject: [PATCH 0710/1421] Revert "wifi: rtw89: leave idle mode when setting WEP encryption for AP mode" This reverts commit 927f8797198a8012e4318331bc48a74f4fe5302a. --- drivers/net/wireless/realtek/rtw89/cam.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/cam.c b/drivers/net/wireless/realtek/rtw89/cam.c index 9a0ffaddb836..f5301c2bbf13 100644 --- a/drivers/net/wireless/realtek/rtw89/cam.c +++ b/drivers/net/wireless/realtek/rtw89/cam.c @@ -6,7 +6,6 @@ #include "debug.h" #include "fw.h" #include "mac.h" -#include "ps.h" static struct sk_buff * rtw89_cam_get_sec_key_cmd(struct rtw89_dev *rtwdev, @@ -334,11 +333,9 @@ int rtw89_cam_sec_key_add(struct rtw89_dev *rtwdev, switch (key->cipher) { case WLAN_CIPHER_SUITE_WEP40: - rtw89_leave_ips_by_hwflags(rtwdev); hw_key_type = RTW89_SEC_KEY_TYPE_WEP40; break; case WLAN_CIPHER_SUITE_WEP104: - rtw89_leave_ips_by_hwflags(rtwdev); hw_key_type = RTW89_SEC_KEY_TYPE_WEP104; break; case WLAN_CIPHER_SUITE_CCMP: -- Gitee From 7ff6ad01bb6a49b4b199138524941116c012439d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:36 +0800 Subject: [PATCH 0711/1421] Revert "wifi: ath11k: Fix QMI memory reuse logic" This reverts commit 558c723f8265f9b0fd01414e88284908edafdf1f. --- drivers/net/wireless/ath/ath11k/qmi.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/ath/ath11k/qmi.c index 91e31f30d2c8..fa46e645009c 100644 --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c @@ -1989,15 +1989,6 @@ static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab) chunk->prev_size == chunk->size) continue; - if (ab->qmi.mem_seg_count <= ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT) { - ath11k_dbg(ab, ATH11K_DBG_QMI, - "size/type mismatch (current %d %u) (prev %d %u), try later with small size\n", - chunk->size, chunk->type, - chunk->prev_size, chunk->prev_type); - ab->qmi.target_mem_delayed = true; - return 0; - } - /* cannot reuse the existing chunk */ dma_free_coherent(ab->dev, chunk->prev_size, chunk->vaddr, chunk->paddr); -- Gitee From 58c23bf0fa7cceda2cd890b4c9821e00fe97053e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:36 +0800 Subject: [PATCH 0712/1421] Revert "wifi: ath12k: fix a possible dead lock caused by ab->base_lock" This reverts commit b1859cfd9595dfc519fc80fd5adcd3d099f58035. --- drivers/net/wireless/ath/ath12k/wmi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c index 31af940bc572..a0ac2f350934 100644 --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c @@ -5503,7 +5503,7 @@ static int ath12k_reg_chan_list_event(struct ath12k_base *ab, struct sk_buff *sk goto fallback; } - spin_lock_bh(&ab->base_lock); + spin_lock(&ab->base_lock); if (test_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags)) { /* Once mac is registered, ar is valid and all CC events from * fw is considered to be received due to user requests @@ -5527,7 +5527,7 @@ static int ath12k_reg_chan_list_event(struct ath12k_base *ab, struct sk_buff *sk ab->default_regd[pdev_idx] = regd; } ab->dfs_region = reg_info->dfs_region; - spin_unlock_bh(&ab->base_lock); + spin_unlock(&ab->base_lock); goto mem_free; -- Gitee From f97c124250895a5390cb5e290ed4a8808a6718f8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:36 +0800 Subject: [PATCH 0713/1421] Revert "wifi: ath12k: fix macro definition HAL_RX_MSDU_PKT_LENGTH_GET" This reverts commit a4c78e795824bb9e70b2bc828ea0ed4e5e68935f. --- drivers/net/wireless/ath/ath12k/hal_desc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/hal_desc.h b/drivers/net/wireless/ath/ath12k/hal_desc.h index 5fd9232ad101..1bb840c2bef5 100644 --- a/drivers/net/wireless/ath/ath12k/hal_desc.h +++ b/drivers/net/wireless/ath/ath12k/hal_desc.h @@ -683,7 +683,7 @@ enum hal_rx_msdu_desc_reo_dest_ind { #define RX_MSDU_DESC_INFO0_DECAP_FORMAT GENMASK(30, 29) #define HAL_RX_MSDU_PKT_LENGTH_GET(val) \ - (le32_get_bits((val), RX_MSDU_DESC_INFO0_MSDU_LENGTH)) + (u32_get_bits((val), RX_MSDU_DESC_INFO0_MSDU_LENGTH)) struct rx_msdu_desc { __le32 info0; -- Gitee From 6254cba4ad971b03553fff0707ec71a8fac4cdcc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:36 +0800 Subject: [PATCH 0714/1421] Revert "net: dlink: add synchronization for stats update" This reverts commit a757de9dc7ab989a6e3d5bd57ecc231a84476d61. --- drivers/net/ethernet/dlink/dl2k.c | 14 +------------- drivers/net/ethernet/dlink/dl2k.h | 2 -- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/drivers/net/ethernet/dlink/dl2k.c b/drivers/net/ethernet/dlink/dl2k.c index fad5a72d3b16..ce46f3ac3b5a 100644 --- a/drivers/net/ethernet/dlink/dl2k.c +++ b/drivers/net/ethernet/dlink/dl2k.c @@ -146,8 +146,6 @@ rio_probe1 (struct pci_dev *pdev, const struct pci_device_id *ent) np->ioaddr = ioaddr; np->chip_id = chip_idx; np->pdev = pdev; - - spin_lock_init(&np->stats_lock); spin_lock_init (&np->tx_lock); spin_lock_init (&np->rx_lock); @@ -868,6 +866,7 @@ tx_error (struct net_device *dev, int tx_status) frame_id = (tx_status & 0xffff0000); printk (KERN_ERR "%s: Transmit error, TxStatus %4.4x, FrameId %d.\n", dev->name, tx_status, frame_id); + dev->stats.tx_errors++; /* Ttransmit Underrun */ if (tx_status & 0x10) { dev->stats.tx_fifo_errors++; @@ -904,15 +903,9 @@ tx_error (struct net_device *dev, int tx_status) rio_set_led_mode(dev); /* Let TxStartThresh stay default value */ } - - spin_lock(&np->stats_lock); /* Maximum Collisions */ if (tx_status & 0x08) dev->stats.collisions++; - - dev->stats.tx_errors++; - spin_unlock(&np->stats_lock); - /* Restart the Tx */ dw32(MACCtrl, dr16(MACCtrl) | TxEnable); } @@ -1081,9 +1074,7 @@ get_stats (struct net_device *dev) int i; #endif unsigned int stat_reg; - unsigned long flags; - spin_lock_irqsave(&np->stats_lock, flags); /* All statistics registers need to be acknowledged, else statistic overflow could cause problems */ @@ -1133,9 +1124,6 @@ get_stats (struct net_device *dev) dr16(TCPCheckSumErrors); dr16(UDPCheckSumErrors); dr16(IPCheckSumErrors); - - spin_unlock_irqrestore(&np->stats_lock, flags); - return &dev->stats; } diff --git a/drivers/net/ethernet/dlink/dl2k.h b/drivers/net/ethernet/dlink/dl2k.h index 56aff2f0bdbf..0e33e2eaae96 100644 --- a/drivers/net/ethernet/dlink/dl2k.h +++ b/drivers/net/ethernet/dlink/dl2k.h @@ -372,8 +372,6 @@ struct netdev_private { struct pci_dev *pdev; void __iomem *ioaddr; void __iomem *eeprom_addr; - // To ensure synchronization when stats are updated. - spinlock_t stats_lock; spinlock_t tx_lock; spinlock_t rx_lock; unsigned int rx_buf_sz; /* Based on MTU+slack. */ -- Gitee From 86333c09afb2aa0b00024431c853247cbef95c8b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:37 +0800 Subject: [PATCH 0715/1421] Revert "i2c: npcm: Add clock toggle recovery" This reverts commit b181413ec8a5d1151d6c4ba096f057f37210c691. --- drivers/i2c/busses/i2c-npcm7xx.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/i2c/busses/i2c-npcm7xx.c b/drivers/i2c/busses/i2c-npcm7xx.c index 5b3987460976..91f508d50e7a 100644 --- a/drivers/i2c/busses/i2c-npcm7xx.c +++ b/drivers/i2c/busses/i2c-npcm7xx.c @@ -1971,14 +1971,10 @@ static int npcm_i2c_init_module(struct npcm_i2c *bus, enum i2c_mode mode, /* Check HW is OK: SDA and SCL should be high at this point. */ if ((npcm_i2c_get_SDA(&bus->adap) == 0) || (npcm_i2c_get_SCL(&bus->adap) == 0)) { - dev_warn(bus->dev, " I2C%d SDA=%d SCL=%d, attempting to recover\n", bus->num, - npcm_i2c_get_SDA(&bus->adap), npcm_i2c_get_SCL(&bus->adap)); - if (npcm_i2c_recovery_tgclk(&bus->adap)) { - dev_err(bus->dev, "I2C%d init fail: SDA=%d SCL=%d\n", - bus->num, npcm_i2c_get_SDA(&bus->adap), - npcm_i2c_get_SCL(&bus->adap)); - return -ENXIO; - } + dev_err(bus->dev, "I2C%d init fail: lines are low\n", bus->num); + dev_err(bus->dev, "SDA=%d SCL=%d\n", npcm_i2c_get_SDA(&bus->adap), + npcm_i2c_get_SCL(&bus->adap)); + return -ENXIO; } npcm_i2c_int_enable(bus, true); -- Gitee From b40251741eadfb618ae95d749ce3555c2a0feabb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:37 +0800 Subject: [PATCH 0716/1421] Revert "i2c: tegra: check msg length in SMBUS block read" This reverts commit 4b770dc12134643b7ada1a8af34c0a296386e481. --- drivers/i2c/busses/i2c-tegra.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 08a81daedc11..91be04b534fe 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1397,11 +1397,6 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], ret = tegra_i2c_xfer_msg(i2c_dev, &msgs[i], MSG_END_CONTINUE); if (ret) break; - - /* Validate message length before proceeding */ - if (msgs[i].buf[0] == 0 || msgs[i].buf[0] > I2C_SMBUS_BLOCK_MAX) - break; - /* Set the msg length from first byte */ msgs[i].len += msgs[i].buf[0]; dev_dbg(i2c_dev->dev, "reading %d bytes\n", msgs[i].len); -- Gitee From 62621828d958f62b02d2d317d68886c8bd643a8a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:37 +0800 Subject: [PATCH 0717/1421] Revert "cpufreq: scmi: Skip SCMI devices that aren't used by the CPUs" This reverts commit 1bbac0e7359a7b576981146debaff0c3bec673fb. --- drivers/cpufreq/scmi-cpufreq.c | 36 +--------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c index 6ff77003a96e..e4989764efe2 100644 --- a/drivers/cpufreq/scmi-cpufreq.c +++ b/drivers/cpufreq/scmi-cpufreq.c @@ -299,40 +299,6 @@ static struct cpufreq_driver scmi_cpufreq_driver = { .register_em = scmi_cpufreq_register_em, }; -static bool scmi_dev_used_by_cpus(struct device *scmi_dev) -{ - struct device_node *scmi_np = dev_of_node(scmi_dev); - struct device_node *cpu_np, *np; - struct device *cpu_dev; - int cpu, idx; - - if (!scmi_np) - return false; - - for_each_possible_cpu(cpu) { - cpu_dev = get_cpu_device(cpu); - if (!cpu_dev) - continue; - - cpu_np = dev_of_node(cpu_dev); - - np = of_parse_phandle(cpu_np, "clocks", 0); - of_node_put(np); - - if (np == scmi_np) - return true; - - idx = of_property_match_string(cpu_np, "power-domain-names", "perf"); - np = of_parse_phandle(cpu_np, "power-domains", idx); - of_node_put(np); - - if (np == scmi_np) - return true; - } - - return false; -} - static int scmi_cpufreq_probe(struct scmi_device *sdev) { int ret; @@ -341,7 +307,7 @@ static int scmi_cpufreq_probe(struct scmi_device *sdev) handle = sdev->handle; - if (!handle || !scmi_dev_used_by_cpus(dev)) + if (!handle) return -ENODEV; perf_ops = handle->devm_protocol_get(sdev, SCMI_PROTOCOL_PERF, &ph); -- Gitee From c562cd88a50dc5e8ab5ad5486b22b569615b2c4b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:37 +0800 Subject: [PATCH 0718/1421] Revert "sctp: Do not wake readers in __sctp_write_space()" This reverts commit 42f36f7d732258f52601dea86106456be93bb053. --- net/sctp/socket.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index adc04e88f349..b84c5e0a76f5 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -9094,8 +9094,7 @@ static void __sctp_write_space(struct sctp_association *asoc) wq = rcu_dereference(sk->sk_wq); if (wq) { if (waitqueue_active(&wq->wait)) - wake_up_interruptible_poll(&wq->wait, EPOLLOUT | - EPOLLWRNORM | EPOLLWRBAND); + wake_up_interruptible(&wq->wait); /* Note that we try to include the Async I/O support * here by modeling from the current TCP/UDP code. -- Gitee From 8a6dc9afa7e6605e04d2718fa724ab7f1d47cae8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:37 +0800 Subject: [PATCH 0719/1421] Revert "wifi: mt76: mt7921: add 160 MHz AP for mt7922 device" This reverts commit ac7db5465ee1cc4afdb14ebd6bbdcaa21e3b8724. --- drivers/net/wireless/mediatek/mt76/mt7921/main.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c index 8e2ec3956331..31ef58e2a3d2 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c @@ -83,11 +83,6 @@ mt7921_init_he_caps(struct mt792x_phy *phy, enum nl80211_band band, he_cap_elem->phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_TX_1024_QAM_LESS_THAN_242_TONE_RU | IEEE80211_HE_PHY_CAP9_RX_1024_QAM_LESS_THAN_242_TONE_RU; - - if (is_mt7922(phy->mt76->dev)) { - he_cap_elem->phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G; - } break; case NL80211_IFTYPE_STATION: he_cap_elem->mac_cap_info[1] |= -- Gitee From a4e44fa29585c55e1a5338c46904149754524d6c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:38 +0800 Subject: [PATCH 0720/1421] Revert "wifi: mt76: mt76x2: Add support for LiteOn WN4516R,WN4519R" This reverts commit 6f168e818b3b5d65e096c6052174fa2f54c24e6d. --- drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 2 -- .../net/wireless/mediatek/mt76/mt76x2/usb_init.c | 13 +------------ 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c b/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c index 00248e2b21ea..70d3895762b4 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c @@ -17,8 +17,6 @@ static const struct usb_device_id mt76x2u_device_table[] = { { USB_DEVICE(0x057c, 0x8503) }, /* Avm FRITZ!WLAN AC860 */ { USB_DEVICE(0x7392, 0xb711) }, /* Edimax EW 7722 UAC */ { USB_DEVICE(0x0e8d, 0x7632) }, /* HC-M7662BU1 */ - { USB_DEVICE(0x0471, 0x2126) }, /* LiteOn WN4516R module, nonstandard USB connector */ - { USB_DEVICE(0x0471, 0x7600) }, /* LiteOn WN4519R module, nonstandard USB connector */ { USB_DEVICE(0x2c4e, 0x0103) }, /* Mercury UD13 */ { USB_DEVICE(0x0846, 0x9053) }, /* Netgear A6210 */ { USB_DEVICE(0x045e, 0x02e6) }, /* XBox One Wireless Adapter */ diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c index 3b5562811511..33a14365ec9b 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c @@ -191,7 +191,6 @@ int mt76x2u_register_device(struct mt76x02_dev *dev) { struct ieee80211_hw *hw = mt76_hw(dev); struct mt76_usb *usb = &dev->mt76.usb; - bool vht; int err; INIT_DELAYED_WORK(&dev->cal_work, mt76x2u_phy_calibrate); @@ -218,17 +217,7 @@ int mt76x2u_register_device(struct mt76x02_dev *dev) /* check hw sg support in order to enable AMSDU */ hw->max_tx_fragments = dev->mt76.usb.sg_en ? MT_TX_SG_MAX_SIZE : 1; - switch (dev->mt76.rev) { - case 0x76320044: - /* these ASIC revisions do not support VHT */ - vht = false; - break; - default: - vht = true; - break; - } - - err = mt76_register_device(&dev->mt76, vht, mt76x02_rates, + err = mt76_register_device(&dev->mt76, true, mt76x02_rates, ARRAY_SIZE(mt76x02_rates)); if (err) goto fail; -- Gitee From 096e3ac02b33c3a63c12e73b3e45a8904d4edeb8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:38 +0800 Subject: [PATCH 0721/1421] Revert "emulex/benet: correct command version selection in be_cmd_get_stats()" This reverts commit af4a503245b20f483e7c578fbd4ab62cc2e86d22. --- drivers/net/ethernet/emulex/benet/be_cmds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index a89aa4ac0a06..51b8377edd1d 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -1609,7 +1609,7 @@ int be_cmd_get_stats(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd) /* version 1 of the cmd is not supported only by BE2 */ if (BE2_chip(adapter)) hdr->version = 0; - else if (BE3_chip(adapter) || lancer_chip(adapter)) + if (BE3_chip(adapter) || lancer_chip(adapter)) hdr->version = 1; else hdr->version = 2; -- Gitee From c862c1135fc2f2adc650c765c2d1b709d12096c4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:38 +0800 Subject: [PATCH 0722/1421] Revert "wifi: mt76: mt7996: drop fragments with multicast or broadcast RA" This reverts commit 3dfb22e79a5775abb318a5c11d3a2e800ff5c436. --- drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c index 8fa16f95e6a7..35d9673ec0d8 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c @@ -650,14 +650,6 @@ mt7996_mac_fill_rx(struct mt7996_dev *dev, struct sk_buff *skb) status->last_amsdu = amsdu_info == MT_RXD4_LAST_AMSDU_FRAME; } - /* IEEE 802.11 fragmentation can only be applied to unicast frames. - * Hence, drop fragments with multicast/broadcast RA. - * This check fixes vulnerabilities, like CVE-2020-26145. - */ - if ((ieee80211_has_morefrags(fc) || seq_ctrl & IEEE80211_SCTL_FRAG) && - FIELD_GET(MT_RXD3_NORMAL_ADDR_TYPE, rxd3) != MT_RXD3_NORMAL_U2M) - return -EINVAL; - hdr_gap = (u8 *)rxd - skb->data + 2 * remove_pad; if (hdr_trans && ieee80211_has_morefrags(fc)) { if (mt7996_reverse_frag0_hdr_trans(skb, hdr_gap)) -- Gitee From bd317b6e2f0fbeb4d6bef15f372b162837630d5d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:38 +0800 Subject: [PATCH 0723/1421] Revert "i2c: designware: Invoke runtime suspend on quick slave re-registration" This reverts commit d0f81f48e636a4132061051145aa3c5665a97eea. --- drivers/i2c/busses/i2c-designware-slave.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-designware-slave.c b/drivers/i2c/busses/i2c-designware-slave.c index ea4c4955fe26..345b532a2b45 100644 --- a/drivers/i2c/busses/i2c-designware-slave.c +++ b/drivers/i2c/busses/i2c-designware-slave.c @@ -91,7 +91,7 @@ static int i2c_dw_unreg_slave(struct i2c_client *slave) i2c_dw_disable(dev); synchronize_irq(dev->irq); dev->slave = NULL; - pm_runtime_put_sync_suspend(dev->dev); + pm_runtime_put(dev->dev); return 0; } -- Gitee From c08df14745ee8fe82d7aae78e6fd4a324fa9fb38 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:38 +0800 Subject: [PATCH 0724/1421] Revert "bpf: Check rcu_read_lock_trace_held() in bpf_map_lookup_percpu_elem()" This reverts commit d896c00a4e0af8545bc4428eb7bddbf7f8bc82b6. --- kernel/bpf/helpers.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 8f0b62b04dee..41d62405c852 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -128,8 +128,7 @@ const struct bpf_func_proto bpf_map_peek_elem_proto = { BPF_CALL_3(bpf_map_lookup_percpu_elem, struct bpf_map *, map, void *, key, u32, cpu) { - WARN_ON_ONCE(!rcu_read_lock_held() && !rcu_read_lock_trace_held() && - !rcu_read_lock_bh_held()); + WARN_ON_ONCE(!rcu_read_lock_held() && !rcu_read_lock_bh_held()); return (unsigned long) map->ops->map_lookup_percpu_elem(map, key, cpu); } -- Gitee From 0d1afe15ba6c49fbf89e281de80fe8682741676c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:39 +0800 Subject: [PATCH 0725/1421] Revert "f2fs: use vmalloc instead of kvmalloc in .init_{,de}compress_ctx" This reverts commit 19c3a2a82ad6e7a8eecfd73c9a1ac494a6917ae0. --- fs/f2fs/compress.c | 23 +++++++++++++---------- fs/f2fs/f2fs.h | 5 ----- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c index e962de4ecaa2..f7ef69f44f3d 100644 --- a/fs/f2fs/compress.c +++ b/fs/f2fs/compress.c @@ -176,7 +176,8 @@ void f2fs_compress_ctx_add_page(struct compress_ctx *cc, struct page *page) #ifdef CONFIG_F2FS_FS_LZO static int lzo_init_compress_ctx(struct compress_ctx *cc) { - cc->private = f2fs_vmalloc(LZO1X_MEM_COMPRESS); + cc->private = f2fs_kvmalloc(F2FS_I_SB(cc->inode), + LZO1X_MEM_COMPRESS, GFP_NOFS); if (!cc->private) return -ENOMEM; @@ -186,7 +187,7 @@ static int lzo_init_compress_ctx(struct compress_ctx *cc) static void lzo_destroy_compress_ctx(struct compress_ctx *cc) { - vfree(cc->private); + kvfree(cc->private); cc->private = NULL; } @@ -243,7 +244,7 @@ static int lz4_init_compress_ctx(struct compress_ctx *cc) size = LZ4HC_MEM_COMPRESS; #endif - cc->private = f2fs_vmalloc(size); + cc->private = f2fs_kvmalloc(F2FS_I_SB(cc->inode), size, GFP_NOFS); if (!cc->private) return -ENOMEM; @@ -258,7 +259,7 @@ static int lz4_init_compress_ctx(struct compress_ctx *cc) static void lz4_destroy_compress_ctx(struct compress_ctx *cc) { - vfree(cc->private); + kvfree(cc->private); cc->private = NULL; } @@ -339,7 +340,8 @@ static int zstd_init_compress_ctx(struct compress_ctx *cc) params = zstd_get_params(level, cc->rlen); workspace_size = zstd_cstream_workspace_bound(¶ms.cParams); - workspace = f2fs_vmalloc(workspace_size); + workspace = f2fs_kvmalloc(F2FS_I_SB(cc->inode), + workspace_size, GFP_NOFS); if (!workspace) return -ENOMEM; @@ -347,7 +349,7 @@ static int zstd_init_compress_ctx(struct compress_ctx *cc) if (!stream) { f2fs_err_ratelimited(F2FS_I_SB(cc->inode), "%s zstd_init_cstream failed", __func__); - vfree(workspace); + kvfree(workspace); return -EIO; } @@ -360,7 +362,7 @@ static int zstd_init_compress_ctx(struct compress_ctx *cc) static void zstd_destroy_compress_ctx(struct compress_ctx *cc) { - vfree(cc->private); + kvfree(cc->private); cc->private = NULL; cc->private2 = NULL; } @@ -419,7 +421,8 @@ static int zstd_init_decompress_ctx(struct decompress_io_ctx *dic) workspace_size = zstd_dstream_workspace_bound(max_window_size); - workspace = f2fs_vmalloc(workspace_size); + workspace = f2fs_kvmalloc(F2FS_I_SB(dic->inode), + workspace_size, GFP_NOFS); if (!workspace) return -ENOMEM; @@ -427,7 +430,7 @@ static int zstd_init_decompress_ctx(struct decompress_io_ctx *dic) if (!stream) { f2fs_err_ratelimited(F2FS_I_SB(dic->inode), "%s zstd_init_dstream failed", __func__); - vfree(workspace); + kvfree(workspace); return -EIO; } @@ -439,7 +442,7 @@ static int zstd_init_decompress_ctx(struct decompress_io_ctx *dic) static void zstd_destroy_decompress_ctx(struct decompress_io_ctx *dic) { - vfree(dic->private); + kvfree(dic->private); dic->private = NULL; dic->private2 = NULL; } diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index fc729ac495a4..dc648b7638fe 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -3449,11 +3449,6 @@ static inline void *f2fs_kvzalloc(struct f2fs_sb_info *sbi, return f2fs_kvmalloc(sbi, size, flags | __GFP_ZERO); } -static inline void *f2fs_vmalloc(size_t size) -{ - return vmalloc(size); -} - static inline int get_extra_isize(struct inode *inode) { return F2FS_I(inode)->i_extra_isize / sizeof(__le32); -- Gitee From a2b539195451276514030271d3be7fe12a5dd6ad Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:39 +0800 Subject: [PATCH 0726/1421] Revert "tipc: use kfree_sensitive() for aead cleanup" This reverts commit 59c6412477227c14ac83bafb9431dd08e6348491. --- net/tipc/crypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c index ea5bb131ebd0..79f91b6ca8c8 100644 --- a/net/tipc/crypto.c +++ b/net/tipc/crypto.c @@ -425,7 +425,7 @@ static void tipc_aead_free(struct rcu_head *rp) } free_percpu(aead->tfm_entry); kfree_sensitive(aead->key); - kfree_sensitive(aead); + kfree(aead); } static int tipc_aead_users(struct tipc_aead __rcu *aead) -- Gitee From d890abdbe35dce765a87cac49a2e78bb0a14c8b0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:39 +0800 Subject: [PATCH 0727/1421] Revert "net: lan743x: Modify the EEPROM and OTP size for PCI1xxxx devices" This reverts commit 3435ad139f5589ab2aefcd7a34c790d1e61a9e26. --- .../net/ethernet/microchip/lan743x_ethtool.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan743x_ethtool.c b/drivers/net/ethernet/microchip/lan743x_ethtool.c index 39a58c3578a0..72b3092d35f7 100644 --- a/drivers/net/ethernet/microchip/lan743x_ethtool.c +++ b/drivers/net/ethernet/microchip/lan743x_ethtool.c @@ -18,8 +18,6 @@ #define EEPROM_MAC_OFFSET (0x01) #define MAX_EEPROM_SIZE (512) #define MAX_OTP_SIZE (1024) -#define MAX_HS_OTP_SIZE (8 * 1024) -#define MAX_HS_EEPROM_SIZE (64 * 1024) #define OTP_INDICATOR_1 (0xF3) #define OTP_INDICATOR_2 (0xF7) @@ -274,9 +272,6 @@ static int lan743x_hs_otp_read(struct lan743x_adapter *adapter, u32 offset, int ret; int i; - if (offset + length > MAX_HS_OTP_SIZE) - return -EINVAL; - ret = lan743x_hs_syslock_acquire(adapter, LOCK_TIMEOUT_MAX_CNT); if (ret < 0) return ret; @@ -325,9 +320,6 @@ static int lan743x_hs_otp_write(struct lan743x_adapter *adapter, u32 offset, int ret; int i; - if (offset + length > MAX_HS_OTP_SIZE) - return -EINVAL; - ret = lan743x_hs_syslock_acquire(adapter, LOCK_TIMEOUT_MAX_CNT); if (ret < 0) return ret; @@ -505,9 +497,6 @@ static int lan743x_hs_eeprom_read(struct lan743x_adapter *adapter, u32 val; int i; - if (offset + length > MAX_HS_EEPROM_SIZE) - return -EINVAL; - retval = lan743x_hs_syslock_acquire(adapter, LOCK_TIMEOUT_MAX_CNT); if (retval < 0) return retval; @@ -550,9 +539,6 @@ static int lan743x_hs_eeprom_write(struct lan743x_adapter *adapter, u32 val; int i; - if (offset + length > MAX_HS_EEPROM_SIZE) - return -EINVAL; - retval = lan743x_hs_syslock_acquire(adapter, LOCK_TIMEOUT_MAX_CNT); if (retval < 0) return retval; @@ -618,9 +604,9 @@ static int lan743x_ethtool_get_eeprom_len(struct net_device *netdev) struct lan743x_adapter *adapter = netdev_priv(netdev); if (adapter->flags & LAN743X_ADAPTER_FLAG_OTP) - return adapter->is_pci11x1x ? MAX_HS_OTP_SIZE : MAX_OTP_SIZE; + return MAX_OTP_SIZE; - return adapter->is_pci11x1x ? MAX_HS_EEPROM_SIZE : MAX_EEPROM_SIZE; + return MAX_EEPROM_SIZE; } static int lan743x_ethtool_get_eeprom(struct net_device *netdev, -- Gitee From ba79035536adeee9fd29b8a4bd82c752c7dfaff8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:39 +0800 Subject: [PATCH 0728/1421] Revert "net: macb: Check return value of dma_set_mask_and_coherent()" This reverts commit 40302addfe2850b7e031103cab45b61b47446e1c. --- drivers/net/ethernet/cadence/macb_main.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 534e7f7bca4c..6f45f4d9fba7 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -5070,11 +5070,7 @@ static int macb_probe(struct platform_device *pdev) #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT if (GEM_BFEXT(DAW64, gem_readl(bp, DCFG6))) { - err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(44)); - if (err) { - dev_err(&pdev->dev, "failed to set DMA mask\n"); - goto err_out_free_netdev; - } + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(44)); bp->hw_dma_cap |= HW_DMA_CAP_64B; } #endif -- Gitee From 135fd37239802f49752edf18abd8f6ff0b082cbc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:40 +0800 Subject: [PATCH 0729/1421] Revert "ACPI: battery: negate current when discharging" This reverts commit acb8318400d5c2ee2ad137c87a50d5c9cdca36f7. --- drivers/acpi/battery.c | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index cd3cbb7a36f8..e3cbaf3c3bbc 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c @@ -243,23 +243,10 @@ static int acpi_battery_get_property(struct power_supply *psy, break; case POWER_SUPPLY_PROP_CURRENT_NOW: case POWER_SUPPLY_PROP_POWER_NOW: - if (battery->rate_now == ACPI_BATTERY_VALUE_UNKNOWN) { + if (battery->rate_now == ACPI_BATTERY_VALUE_UNKNOWN) ret = -ENODEV; - break; - } - - val->intval = battery->rate_now * 1000; - /* - * When discharging, the current should be reported as a - * negative number as per the power supply class interface - * definition. - */ - if (psp == POWER_SUPPLY_PROP_CURRENT_NOW && - (battery->state & ACPI_BATTERY_STATE_DISCHARGING) && - acpi_battery_handle_discharging(battery) - == POWER_SUPPLY_STATUS_DISCHARGING) - val->intval = -val->intval; - + else + val->intval = battery->rate_now * 1000; break; case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN: -- Gitee From 890aea9cb65cf2b973b584e4b083edfb687cd713 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:40 +0800 Subject: [PATCH 0730/1421] Revert "PM: runtime: fix denying of auto suspend in pm_suspend_timer_fn()" This reverts commit 84ea1f997be2eb4c91cecea1183c576411a554b6. --- drivers/base/power/runtime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 0d43bf5b6cec..0af26cf8c005 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -1001,7 +1001,7 @@ static enum hrtimer_restart pm_suspend_timer_fn(struct hrtimer *timer) * If 'expires' is after the current time, we've been called * too early. */ - if (expires > 0 && expires <= ktime_get_mono_fast_ns()) { + if (expires > 0 && expires < ktime_get_mono_fast_ns()) { dev->power.timer_expires = 0; rpm_suspend(dev, dev->power.timer_autosuspends ? (RPM_ASYNC | RPM_AUTO) : RPM_ASYNC); -- Gitee From 0631a2d2322b926ef9d3d6919e818548066be18e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:40 +0800 Subject: [PATCH 0731/1421] Revert "gpiolib: of: Add polarity quirk for s5m8767" This reverts commit 132b7b96531f8f9dd3d9961454d5aae21cb1a7de. --- drivers/gpio/gpiolib-of.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c index c1e83b2926ae..a0a2a0f75bba 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -203,15 +203,6 @@ static void of_gpio_try_fixup_polarity(const struct device_node *np, */ { "lantiq,pci-xway", "gpio-reset", false }, #endif -#if IS_ENABLED(CONFIG_REGULATOR_S5M8767) - /* - * According to S5M8767, the DVS and DS pin are - * active-high signals. However, exynos5250-spring.dts use - * active-low setting. - */ - { "samsung,s5m8767-pmic", "s5m8767,pmic-buck-dvs-gpios", true }, - { "samsung,s5m8767-pmic", "s5m8767,pmic-buck-ds-gpios", true }, -#endif #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2005) /* * DTS for Nokia N900 incorrectly specified "active high" -- Gitee From 1ec0081c5f162a2d9d5408b3ec570796f3377dbb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:40 +0800 Subject: [PATCH 0732/1421] Revert "ASoC: tegra210_ahub: Add check to of_device_get_match_data()" This reverts commit 5441791db68f54d90268a6582557c078d620e640. --- sound/soc/tegra/tegra210_ahub.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sound/soc/tegra/tegra210_ahub.c b/sound/soc/tegra/tegra210_ahub.c index 140cb27f7328..ab3c6b2544d2 100644 --- a/sound/soc/tegra/tegra210_ahub.c +++ b/sound/soc/tegra/tegra210_ahub.c @@ -1359,8 +1359,6 @@ static int tegra_ahub_probe(struct platform_device *pdev) return -ENOMEM; ahub->soc_data = of_device_get_match_data(&pdev->dev); - if (!ahub->soc_data) - return -ENODEV; platform_set_drvdata(pdev, ahub); -- Gitee From da1c974ec0b5849b6d05a84d6d813d1cd55adfed Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:40 +0800 Subject: [PATCH 0733/1421] Revert "ACPICA: utilities: Fix overflow check in vsnprintf()" This reverts commit 1e62c935395196b5922600c26dd7202f6387bb72. --- drivers/acpi/acpica/utprint.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/acpica/utprint.c b/drivers/acpi/acpica/utprint.c index 7fad03c5252c..42b30b9f9312 100644 --- a/drivers/acpi/acpica/utprint.c +++ b/drivers/acpi/acpica/utprint.c @@ -333,8 +333,11 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args) pos = string; - size = ACPI_MIN(size, ACPI_PTR_DIFF(ACPI_MAX_PTR, string)); - end = string + size; + if (size != ACPI_UINT32_MAX) { + end = string + size; + } else { + end = ACPI_CAST_PTR(char, ACPI_UINT32_MAX); + } for (; *format; ++format) { if (*format != '%') { -- Gitee From 3c570444ed723b5a6e077c72c5f81e6e37b27420 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:41 +0800 Subject: [PATCH 0734/1421] Revert "power: supply: bq27xxx: Retrieve again when busy" This reverts commit 133d47ad028bbc78bbc2c74f55f20fa047942b9f. --- drivers/power/supply/bq27xxx_battery.c | 2 +- drivers/power/supply/bq27xxx_battery_i2c.c | 13 +------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c index e51fa2c694bc..23c873656757 100644 --- a/drivers/power/supply/bq27xxx_battery.c +++ b/drivers/power/supply/bq27xxx_battery.c @@ -2044,7 +2044,7 @@ static int bq27xxx_battery_get_property(struct power_supply *psy, mutex_unlock(&di->lock); if (psp != POWER_SUPPLY_PROP_PRESENT && di->cache.flags < 0) - return di->cache.flags; + return -ENODEV; switch (psp) { case POWER_SUPPLY_PROP_STATUS: diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c index 8877fa333cd0..886e0a8e2abd 100644 --- a/drivers/power/supply/bq27xxx_battery_i2c.c +++ b/drivers/power/supply/bq27xxx_battery_i2c.c @@ -6,7 +6,6 @@ * Andrew F. Davis */ -#include #include #include #include @@ -33,7 +32,6 @@ static int bq27xxx_battery_i2c_read(struct bq27xxx_device_info *di, u8 reg, struct i2c_msg msg[2]; u8 data[2]; int ret; - int retry = 0; if (!client->adapter) return -ENODEV; @@ -50,16 +48,7 @@ static int bq27xxx_battery_i2c_read(struct bq27xxx_device_info *di, u8 reg, else msg[1].len = 2; - do { - ret = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg)); - if (ret == -EBUSY && ++retry < 3) { - /* sleep 10 milliseconds when busy */ - usleep_range(10000, 11000); - continue; - } - break; - } while (1); - + ret = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg)); if (ret < 0) return ret; -- Gitee From 14bd1a5ea92148773f7895cfba2ce8b95635ef37 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:41 +0800 Subject: [PATCH 0735/1421] Revert "ACPICA: fix acpi parse and parseext cache leaks" This reverts commit c4451cf3af7532a87c33e26b7128b988beb2a006. --- drivers/acpi/acpica/psobject.c | 52 ++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/drivers/acpi/acpica/psobject.c b/drivers/acpi/acpica/psobject.c index 0bce1baaa62b..54471083ba54 100644 --- a/drivers/acpi/acpica/psobject.c +++ b/drivers/acpi/acpica/psobject.c @@ -636,8 +636,7 @@ acpi_status acpi_ps_complete_final_op(struct acpi_walk_state *walk_state, union acpi_parse_object *op, acpi_status status) { - acpi_status return_status = status; - u8 ascending = TRUE; + acpi_status status2; ACPI_FUNCTION_TRACE_PTR(ps_complete_final_op, walk_state); @@ -651,7 +650,7 @@ acpi_ps_complete_final_op(struct acpi_walk_state *walk_state, op)); do { if (op) { - if (ascending && walk_state->ascending_callback != NULL) { + if (walk_state->ascending_callback != NULL) { walk_state->op = op; walk_state->op_info = acpi_ps_get_opcode_info(op->common. @@ -673,26 +672,49 @@ acpi_ps_complete_final_op(struct acpi_walk_state *walk_state, } if (status == AE_CTRL_TERMINATE) { - ascending = FALSE; - return_status = AE_CTRL_TERMINATE; + status = AE_OK; + + /* Clean up */ + do { + if (op) { + status2 = + acpi_ps_complete_this_op + (walk_state, op); + if (ACPI_FAILURE + (status2)) { + return_ACPI_STATUS + (status2); + } + } + + acpi_ps_pop_scope(& + (walk_state-> + parser_state), + &op, + &walk_state-> + arg_types, + &walk_state-> + arg_count); + + } while (op); + + return_ACPI_STATUS(status); } else if (ACPI_FAILURE(status)) { /* First error is most important */ - ascending = FALSE; - return_status = status; + (void) + acpi_ps_complete_this_op(walk_state, + op); + return_ACPI_STATUS(status); } } - status = acpi_ps_complete_this_op(walk_state, op); - if (ACPI_FAILURE(status)) { - ascending = FALSE; - if (ACPI_SUCCESS(return_status) || - return_status == AE_CTRL_TERMINATE) { - return_status = status; - } + status2 = acpi_ps_complete_this_op(walk_state, op); + if (ACPI_FAILURE(status2)) { + return_ACPI_STATUS(status2); } } @@ -702,5 +724,5 @@ acpi_ps_complete_final_op(struct acpi_walk_state *walk_state, } while (op); - return_ACPI_STATUS(return_status); + return_ACPI_STATUS(status); } -- Gitee From 861c2abb5e6064947c4f4b7e4451b56312c528fc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:41 +0800 Subject: [PATCH 0736/1421] Revert "ACPI: Add missing prototype for non CONFIG_SUSPEND/CONFIG_X86 case" This reverts commit 028ae78d235ad6635e0f06c8b23d697020fc5896. --- include/linux/acpi.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 7c6f4006389d..1b76d2f83eac 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -1098,13 +1098,13 @@ void acpi_os_set_prepare_extended_sleep(int (*func)(u8 sleep_state, acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state, u32 val_a, u32 val_b); +#if defined(CONFIG_SUSPEND) && defined(CONFIG_X86) struct acpi_s2idle_dev_ops { struct list_head list_node; void (*prepare)(void); void (*check)(void); void (*restore)(void); }; -#if defined(CONFIG_SUSPEND) && defined(CONFIG_X86) int acpi_register_lps0_dev(struct acpi_s2idle_dev_ops *arg); void acpi_unregister_lps0_dev(struct acpi_s2idle_dev_ops *arg); int acpi_get_lps0_constraint(struct acpi_device *adev); @@ -1113,13 +1113,6 @@ static inline int acpi_get_lps0_constraint(struct device *dev) { return ACPI_STATE_UNKNOWN; } -static inline int acpi_register_lps0_dev(struct acpi_s2idle_dev_ops *arg) -{ - return -ENODEV; -} -static inline void acpi_unregister_lps0_dev(struct acpi_s2idle_dev_ops *arg) -{ -} #endif /* CONFIG_SUSPEND && CONFIG_X86 */ #ifndef CONFIG_IA64 void arch_reserve_mem_area(acpi_physical_address addr, size_t size); -- Gitee From f9da1133e7a5d9d3a030a97caaee891a9d8ba7f9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:41 +0800 Subject: [PATCH 0737/1421] Revert "ACPI: bus: Bail out if acpi_kobj registration fails" This reverts commit 99f7490a9be85bf76770f03ad410ea7c1c02addc. --- drivers/acpi/bus.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 645464f02363..a4aa53b7e2bb 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -1396,10 +1396,8 @@ static int __init acpi_init(void) } acpi_kobj = kobject_create_and_add("acpi", firmware_kobj); - if (!acpi_kobj) { - pr_err("Failed to register kobject\n"); - return -ENOMEM; - } + if (!acpi_kobj) + pr_debug("%s: kset create error\n", __func__); init_prmt(); acpi_init_pcc(); -- Gitee From e3af3887091ed1bf3dd415ec00beeb558bd72294 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:41 +0800 Subject: [PATCH 0738/1421] Revert "ASoC: tas2770: Power cycle amp on ISENSE/VSENSE change" This reverts commit 1350588a90e598778251398d1d28e729c679097a. --- sound/soc/codecs/tas2770.c | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 181b16530e5b..5c6b825c757b 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -158,37 +158,11 @@ static const struct snd_kcontrol_new isense_switch = static const struct snd_kcontrol_new vsense_switch = SOC_DAPM_SINGLE("Switch", TAS2770_PWR_CTRL, 2, 1, 1); -static int sense_event(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) -{ - struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); - struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); - - /* - * Powering up ISENSE/VSENSE requires a trip through the shutdown state. - * Do that here to ensure that our changes are applied properly, otherwise - * we might end up with non-functional IVSENSE if playback started earlier, - * which would break software speaker protection. - */ - switch (event) { - case SND_SOC_DAPM_PRE_REG: - return snd_soc_component_update_bits(component, TAS2770_PWR_CTRL, - TAS2770_PWR_CTRL_MASK, - TAS2770_PWR_CTRL_SHUTDOWN); - case SND_SOC_DAPM_POST_REG: - return tas2770_update_pwr_ctrl(tas2770); - default: - return 0; - } -} - static const struct snd_soc_dapm_widget tas2770_dapm_widgets[] = { SND_SOC_DAPM_AIF_IN("ASI1", "ASI1 Playback", 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_MUX("ASI1 Sel", SND_SOC_NOPM, 0, 0, &tas2770_asi1_mux), - SND_SOC_DAPM_SWITCH_E("ISENSE", TAS2770_PWR_CTRL, 3, 1, &isense_switch, - sense_event, SND_SOC_DAPM_PRE_REG | SND_SOC_DAPM_POST_REG), - SND_SOC_DAPM_SWITCH_E("VSENSE", TAS2770_PWR_CTRL, 2, 1, &vsense_switch, - sense_event, SND_SOC_DAPM_PRE_REG | SND_SOC_DAPM_POST_REG), + SND_SOC_DAPM_SWITCH("ISENSE", TAS2770_PWR_CTRL, 3, 1, &isense_switch), + SND_SOC_DAPM_SWITCH("VSENSE", TAS2770_PWR_CTRL, 2, 1, &vsense_switch), SND_SOC_DAPM_DAC_E("DAC", NULL, SND_SOC_NOPM, 0, 0, tas2770_dac_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_OUTPUT("OUT"), -- Gitee From a2584c1406f25464489a88573a3b438d6bf67017 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:42 +0800 Subject: [PATCH 0739/1421] Revert "ACPICA: Avoid sequence overread in call to strncmp()" This reverts commit 2c14a20c20d4743bc2dea3470129f454ed3d7aa2. --- include/acpi/actypes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 0a2420085241..85c2dcf2b704 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h @@ -527,7 +527,7 @@ typedef u64 acpi_integer; /* Support for the special RSDP signature (8 characters) */ -#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, (sizeof(a) < 8) ? ACPI_NAMESEG_SIZE : 8)) +#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) #define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) /* Support for OEMx signature (x can be any character) */ -- Gitee From 9421901172828bd0179b2a74a471d7bd2a765c65 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:42 +0800 Subject: [PATCH 0740/1421] Revert "mmc: Add quirk to disable DDR50 tuning" This reverts commit 3dc08612f2d2fadb5219628fc983ed0b4b2554f6. --- drivers/mmc/core/card.h | 6 ------ drivers/mmc/core/quirks.h | 10 ---------- drivers/mmc/core/sd.c | 32 ++++++++------------------------ include/linux/mmc/card.h | 1 - 4 files changed, 8 insertions(+), 41 deletions(-) diff --git a/drivers/mmc/core/card.h b/drivers/mmc/core/card.h index fe0b2fa3bb89..8476754b1b17 100644 --- a/drivers/mmc/core/card.h +++ b/drivers/mmc/core/card.h @@ -86,7 +86,6 @@ struct mmc_fixup { #define CID_MANFID_MICRON 0x13 #define CID_MANFID_SAMSUNG 0x15 #define CID_MANFID_APACER 0x27 -#define CID_MANFID_SWISSBIT 0x5D #define CID_MANFID_KINGSTON 0x70 #define CID_MANFID_HYNIX 0x90 #define CID_MANFID_KINGSTON_SD 0x9F @@ -292,9 +291,4 @@ static inline int mmc_card_broken_sd_poweroff_notify(const struct mmc_card *c) return c->quirks & MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY; } -static inline int mmc_card_no_uhs_ddr50_tuning(const struct mmc_card *c) -{ - return c->quirks & MMC_QUIRK_NO_UHS_DDR50_TUNING; -} - #endif diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h index 7f893bafaa60..89b512905be1 100644 --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h @@ -34,16 +34,6 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = { MMC_QUIRK_BROKEN_SD_CACHE | MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY, EXT_CSD_REV_ANY), - /* - * Swissbit series S46-u cards throw I/O errors during tuning requests - * after the initial tuning request expectedly times out. This has - * only been observed on cards manufactured on 01/2019 that are using - * Bay Trail host controllers. - */ - _FIXUP_EXT("0016G", CID_MANFID_SWISSBIT, 0x5342, 2019, 1, - 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, - MMC_QUIRK_NO_UHS_DDR50_TUNING, EXT_CSD_REV_ANY), - END_FIXUP }; diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index a06f3011e2b5..f02c3e5eb5c8 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -618,29 +618,6 @@ static int sd_set_current_limit(struct mmc_card *card, u8 *status) return 0; } -/* - * Determine if the card should tune or not. - */ -static bool mmc_sd_use_tuning(struct mmc_card *card) -{ - /* - * SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and - * SDR104 mode SD-cards. Note that tuning is mandatory for SDR104. - */ - if (mmc_host_is_spi(card->host)) - return false; - - switch (card->host->ios.timing) { - case MMC_TIMING_UHS_SDR50: - case MMC_TIMING_UHS_SDR104: - return true; - case MMC_TIMING_UHS_DDR50: - return !mmc_card_no_uhs_ddr50_tuning(card); - } - - return false; -} - /* * UHS-I specific initialization procedure */ @@ -684,7 +661,14 @@ static int mmc_sd_init_uhs_card(struct mmc_card *card) if (err) goto out; - if (mmc_sd_use_tuning(card)) { + /* + * SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and + * SDR104 mode SD-cards. Note that tuning is mandatory for SDR104. + */ + if (!mmc_host_is_spi(card->host) && + (card->host->ios.timing == MMC_TIMING_UHS_SDR50 || + card->host->ios.timing == MMC_TIMING_UHS_DDR50 || + card->host->ios.timing == MMC_TIMING_UHS_SDR104)) { err = mmc_execute_tuning(card); /* diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 7c6da19fff9f..afa575e362a4 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h @@ -297,7 +297,6 @@ struct mmc_card { #define MMC_QUIRK_BROKEN_SD_CACHE (1<<15) /* Disable broken SD cache support */ #define MMC_QUIRK_BROKEN_CACHE_FLUSH (1<<16) /* Don't flush cache until the write has occurred */ #define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY (1<<17) /* Disable broken SD poweroff notify support */ -#define MMC_QUIRK_NO_UHS_DDR50_TUNING (1<<18) /* Disable DDR50 tuning */ bool written_flag; /* Indicates eMMC has been written since power on */ bool reenable_cmdq; /* Re-enable Command Queue */ -- Gitee From 050ac6f1906a7aa7a63e04aca452ba0e0db3574f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:42 +0800 Subject: [PATCH 0741/1421] Revert "power: supply: collie: Fix wakeup source leaks on device unbind" This reverts commit 1a14773d5ed64e2528af5c937fa28dc6f547cc43. --- drivers/power/supply/collie_battery.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/power/supply/collie_battery.c b/drivers/power/supply/collie_battery.c index 3daf7befc0bf..68390bd1004f 100644 --- a/drivers/power/supply/collie_battery.c +++ b/drivers/power/supply/collie_battery.c @@ -440,7 +440,6 @@ static int collie_bat_probe(struct ucb1x00_dev *dev) static void collie_bat_remove(struct ucb1x00_dev *dev) { - device_init_wakeup(&ucb->dev, 0); free_irq(gpiod_to_irq(collie_bat_main.gpio_full), &collie_bat_main); power_supply_unregister(collie_bat_bu.psy); power_supply_unregister(collie_bat_main.psy); -- Gitee From 25af786749ec81812cfc695d786d29f028ed88b0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:42 +0800 Subject: [PATCH 0742/1421] Revert "clocksource: Fix the CPUs' choice in the watchdog per CPU verification" This reverts commit e761ca4bcc8c372436b2a7a59807ca015d362f1f. --- kernel/time/clocksource.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c index 353829883e66..3130f24daf59 100644 --- a/kernel/time/clocksource.c +++ b/kernel/time/clocksource.c @@ -288,7 +288,7 @@ static void clocksource_verify_choose_cpus(void) { int cpu, i, n = verify_n_cpus; - if (n < 0 || n >= num_online_cpus()) { + if (n < 0) { /* Check all of the CPUs. */ cpumask_copy(&cpus_chosen, cpu_online_mask); cpumask_clear_cpu(smp_processor_id(), &cpus_chosen); -- Gitee From b6b28bff6e1031f0e56105aaca354fa355eaa790 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:42 +0800 Subject: [PATCH 0743/1421] Revert "ASoC: amd: yc: Add quirk for Lenovo Yoga Pro 7 14ASP9" This reverts commit 547ff87fc45c29907a842cbdc61bbe005314f414. --- sound/soc/amd/yc/acp6x-mach.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 9fdee74c28df..622df58a9694 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -311,13 +311,6 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "83AS"), } }, - { - .driver_data = &acp6x_card, - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_NAME, "83HN"), - } - }, { .driver_data = &acp6x_card, .matches = { @@ -367,7 +360,7 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "M5402RA"), } }, - { + { .driver_data = &acp6x_card, .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), -- Gitee From 277bec51e531bee1f700612fde709f38361a4602 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:43 +0800 Subject: [PATCH 0744/1421] Revert "ACPICA: fix acpi operand cache leak in dswstate.c" This reverts commit 29b726507606041ab1ee5b56cc6c43010b6d135b. --- drivers/acpi/acpica/dsutils.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/acpi/acpica/dsutils.c b/drivers/acpi/acpica/dsutils.c index 2bdae8a25e08..fb9ed5e1da89 100644 --- a/drivers/acpi/acpica/dsutils.c +++ b/drivers/acpi/acpica/dsutils.c @@ -668,8 +668,6 @@ acpi_ds_create_operands(struct acpi_walk_state *walk_state, union acpi_parse_object *arguments[ACPI_OBJ_NUM_OPERANDS]; u32 arg_count = 0; u32 index = walk_state->num_operands; - u32 prev_num_operands = walk_state->num_operands; - u32 new_num_operands; u32 i; ACPI_FUNCTION_TRACE_PTR(ds_create_operands, first_arg); @@ -698,7 +696,6 @@ acpi_ds_create_operands(struct acpi_walk_state *walk_state, /* Create the interpreter arguments, in reverse order */ - new_num_operands = index; index--; for (i = 0; i < arg_count; i++) { arg = arguments[index]; @@ -723,11 +720,7 @@ acpi_ds_create_operands(struct acpi_walk_state *walk_state, * pop everything off of the operand stack and delete those * objects */ - walk_state->num_operands = i; - acpi_ds_obj_stack_pop_and_delete(new_num_operands, walk_state); - - /* Restore operand count */ - walk_state->num_operands = prev_num_operands; + acpi_ds_obj_stack_pop_and_delete(arg_count, walk_state); ACPI_EXCEPTION((AE_INFO, status, "While creating Arg %u", index)); return_ACPI_STATUS(status); -- Gitee From 3978a527ba12f47986ca7e8b7ae78690b1425759 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:43 +0800 Subject: [PATCH 0745/1421] Revert "iio: adc: ad7606_spi: fix reg write value mask" This reverts commit ab3801fec1e33dbfa4f53a5bf4a8aa0b0b0fb72a. --- drivers/iio/adc/ad7606_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/adc/ad7606_spi.c b/drivers/iio/adc/ad7606_spi.c index df48464a115d..67c96572cecc 100644 --- a/drivers/iio/adc/ad7606_spi.c +++ b/drivers/iio/adc/ad7606_spi.c @@ -151,7 +151,7 @@ static int ad7606_spi_reg_write(struct ad7606_state *st, struct spi_device *spi = to_spi_device(st->dev); st->d16[0] = cpu_to_be16((st->bops->rd_wr_cmd(addr, 1) << 8) | - (val & 0xFF)); + (val & 0x1FF)); return spi_write(spi, &st->d16[0], sizeof(st->d16[0])); } -- Gitee From ede006ddf1bada249312b5c73f45255b29187c20 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:43 +0800 Subject: [PATCH 0746/1421] Revert "iio: imu: inv_icm42600: Fix temperature calculation" This reverts commit 4433acb57ea54634942628a475f89c668e127b01. --- drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c index 91f0f381082b..213cce1c3111 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c @@ -67,18 +67,16 @@ int inv_icm42600_temp_read_raw(struct iio_dev *indio_dev, return IIO_VAL_INT; /* * T°C = (temp / 132.48) + 25 - * Tm°C = 1000 * ((temp / 132.48) + 25) - * Tm°C = 7.548309 * temp + 25000 - * Tm°C = (temp + 3312) * 7.548309 + * Tm°C = 1000 * ((temp * 100 / 13248) + 25) * scale: 100000 / 13248 ~= 7.548309 - * offset: 3312 + * offset: 25000 */ case IIO_CHAN_INFO_SCALE: *val = 7; *val2 = 548309; return IIO_VAL_INT_PLUS_MICRO; case IIO_CHAN_INFO_OFFSET: - *val = 3312; + *val = 25000; return IIO_VAL_INT; default: return -EINVAL; -- Gitee From b9ada8b336a1b1be77244dc23202f0803fddbb1d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:43 +0800 Subject: [PATCH 0747/1421] Revert "mm/hugetlb: fix huge_pmd_unshare() vs GUP-fast race" This reverts commit 4ba855b9b0c2a2326116ea48627aec90d81913eb. --- mm/hugetlb.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index b731f8e0e9d8..7c196b754071 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -7062,13 +7062,6 @@ int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma, return 0; pud_clear(pud); - /* - * Once our caller drops the rmap lock, some other process might be - * using this page table as a normal, non-hugetlb page table. - * Wait for pending gup_fast() in other threads to finish before letting - * that happen. - */ - tlb_remove_table_sync_one(); ptdesc_pmd_pts_dec(virt_to_ptdesc(ptep)); mm_dec_nr_pmds(mm); return 1; -- Gitee From 68a678a6ae928c33d08ad983ff606d682315e294 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:43 +0800 Subject: [PATCH 0748/1421] Revert "iio: accel: fxls8962af: Fix temperature scan element sign" This reverts commit 0bacd106cf0e47a5017e4e9d6b9cb4863913da3e. --- drivers/iio/accel/fxls8962af-core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index 9dc8b4530e86..be8a15cb945f 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -737,7 +737,6 @@ static const struct iio_event_spec fxls8962af_event[] = { BIT(IIO_CHAN_INFO_OFFSET),\ .scan_index = -1, \ .scan_type = { \ - .sign = 's', \ .realbits = 8, \ .storagebits = 8, \ }, \ -- Gitee From ebb50d8edac1193060b3dacaac93f6e160906d22 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:44 +0800 Subject: [PATCH 0749/1421] Revert "PCI: dw-rockchip: Fix PHY function call sequence in rockchip_pcie_phy_deinit()" This reverts commit 07e180ed36eb182c5ac4ec987e40acf82f5408f3. --- drivers/pci/controller/dwc/pcie-dw-rockchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-dw-rockchip.c b/drivers/pci/controller/dwc/pcie-dw-rockchip.c index 8af7a837a061..9b1256da096c 100644 --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c @@ -275,8 +275,8 @@ static int rockchip_pcie_phy_init(struct rockchip_pcie *rockchip) static void rockchip_pcie_phy_deinit(struct rockchip_pcie *rockchip) { - phy_power_off(rockchip->phy); phy_exit(rockchip->phy); + phy_power_off(rockchip->phy); } static const struct dw_pcie_ops dw_pcie_ops = { -- Gitee From ee640459211473d1d7270f85057bfe8550b9f1e5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:44 +0800 Subject: [PATCH 0750/1421] Revert "PCI: Fix lock symmetry in pci_slot_unlock()" This reverts commit 602b1e48be3ee2048502d7e87d0b2d662d23e789. --- drivers/pci/pci.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 4541dfbf0e1b..503304aba9ea 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5823,8 +5823,7 @@ static void pci_slot_unlock(struct pci_slot *slot) continue; if (dev->subordinate) pci_bus_unlock(dev->subordinate); - else - pci_dev_unlock(dev); + pci_dev_unlock(dev); } } -- Gitee From 9de6a8356c3e6c72e2d1ee32b1a4bb33a1603a56 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:44 +0800 Subject: [PATCH 0751/1421] Revert "PCI: Add ACS quirk for Loongson PCIe" This reverts commit 035a523f8d885b86a3e0f0fe75a02b8fce236cf0. --- drivers/pci/quirks.c | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index d67ea16e69e6..70f484b811de 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4988,18 +4988,6 @@ static int pci_quirk_brcm_acs(struct pci_dev *dev, u16 acs_flags) PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF); } -static int pci_quirk_loongson_acs(struct pci_dev *dev, u16 acs_flags) -{ - /* - * Loongson PCIe Root Ports don't advertise an ACS capability, but - * they do not allow peer-to-peer transactions between Root Ports. - * Allow each Root Port to be in a separate IOMMU group by masking - * SV/RR/CR/UF bits. - */ - return pci_acs_ctrl_enabled(acs_flags, - PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF); -} - /* * Wangxun 40G/25G/10G/1G NICs have no ACS capability, but on * multi-function devices, the hardware isolates the functions by @@ -5133,17 +5121,6 @@ static const struct pci_dev_acs_enabled { { PCI_VENDOR_ID_BROADCOM, 0x1762, pci_quirk_mf_endpoint_acs }, { PCI_VENDOR_ID_BROADCOM, 0x1763, pci_quirk_mf_endpoint_acs }, { PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs }, - /* Loongson PCIe Root Ports */ - { PCI_VENDOR_ID_LOONGSON, 0x3C09, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x3C19, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x3C29, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A09, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A19, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A29, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A39, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A49, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A59, pci_quirk_loongson_acs }, - { PCI_VENDOR_ID_LOONGSON, 0x7A69, pci_quirk_loongson_acs }, /* Amazon Annapurna Labs */ { PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031, pci_quirk_al_acs }, /* Zhaoxin multi-function devices */ -- Gitee From 070f0562dfc6a0efc281a24820e3a29e1293f3e3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:44 +0800 Subject: [PATCH 0752/1421] Revert "PCI: cadence-ep: Correct PBA offset in .set_msix() callback" This reverts commit b438ded2c3007b850273b5e80e96ec31201c1faa. --- drivers/pci/controller/cadence/pcie-cadence-ep.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/pci/controller/cadence/pcie-cadence-ep.c b/drivers/pci/controller/cadence/pcie-cadence-ep.c index 08fb16918043..a87dab9abba2 100644 --- a/drivers/pci/controller/cadence/pcie-cadence-ep.c +++ b/drivers/pci/controller/cadence/pcie-cadence-ep.c @@ -294,14 +294,13 @@ static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u8 vfn, struct cdns_pcie *pcie = &ep->pcie; u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET; u32 val, reg; - u16 actual_interrupts = interrupts + 1; fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn); reg = cap + PCI_MSIX_FLAGS; val = cdns_pcie_ep_fn_readw(pcie, fn, reg); val &= ~PCI_MSIX_FLAGS_QSIZE; - val |= interrupts; /* 0's based value */ + val |= interrupts; cdns_pcie_ep_fn_writew(pcie, fn, reg, val); /* Set MSIX BAR and offset */ @@ -311,7 +310,7 @@ static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u8 vfn, /* Set PBA BAR and offset. BAR must match MSIX BAR */ reg = cap + PCI_MSIX_PBA; - val = (offset + (actual_interrupts * PCI_MSIX_ENTRY_SIZE)) | bir; + val = (offset + (interrupts * PCI_MSIX_ENTRY_SIZE)) | bir; cdns_pcie_ep_fn_writel(pcie, fn, reg, val); return 0; -- Gitee From 1d2d6bdd8f739a2ce4969d6a339a661b3ca13bef Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:45 +0800 Subject: [PATCH 0753/1421] Revert "uio_hv_generic: Use correct size for interrupt and monitor pages" This reverts commit 18e627d06976f26d78b158b5ffe160418cf20501. --- drivers/uio/uio_hv_generic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c index 2804a4f74975..a2c7abf8c289 100644 --- a/drivers/uio/uio_hv_generic.c +++ b/drivers/uio/uio_hv_generic.c @@ -288,13 +288,13 @@ hv_uio_probe(struct hv_device *dev, pdata->info.mem[INT_PAGE_MAP].name = "int_page"; pdata->info.mem[INT_PAGE_MAP].addr = (uintptr_t)vmbus_connection.int_page; - pdata->info.mem[INT_PAGE_MAP].size = HV_HYP_PAGE_SIZE; + pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE; pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL; pdata->info.mem[MON_PAGE_MAP].name = "monitor_page"; pdata->info.mem[MON_PAGE_MAP].addr = (uintptr_t)vmbus_connection.monitor_pages[1]; - pdata->info.mem[MON_PAGE_MAP].size = HV_HYP_PAGE_SIZE; + pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE; pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL; pdata->recv_buf = vzalloc(RECV_BUFFER_SIZE); -- Gitee From 2a011a25a6bdcaaae418d1e5964ca1e3d2b66dfb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:45 +0800 Subject: [PATCH 0754/1421] Revert "Drivers: hv: Allocate interrupt and monitor pages aligned to system page boundary" This reverts commit f6960bae30f83458ba5ec3a4d57177eafeaf578b. --- drivers/hv/connection.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c index 27306c17b0c4..f001ae880e1d 100644 --- a/drivers/hv/connection.c +++ b/drivers/hv/connection.c @@ -206,20 +206,11 @@ int vmbus_connect(void) INIT_LIST_HEAD(&vmbus_connection.chn_list); mutex_init(&vmbus_connection.channel_mutex); - /* - * The following Hyper-V interrupt and monitor pages can be used by - * UIO for mapping to user-space, so they should always be allocated on - * system page boundaries. The system page size must be >= the Hyper-V - * page size. - */ - BUILD_BUG_ON(PAGE_SIZE < HV_HYP_PAGE_SIZE); - /* * Setup the vmbus event connection for channel interrupt * abstraction stuff */ - vmbus_connection.int_page = - (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); + vmbus_connection.int_page = hv_alloc_hyperv_zeroed_page(); if (vmbus_connection.int_page == NULL) { ret = -ENOMEM; goto cleanup; @@ -234,8 +225,8 @@ int vmbus_connect(void) * Setup the monitor notification facility. The 1st page for * parent->child and the 2nd page for child->parent */ - vmbus_connection.monitor_pages[0] = (void *)__get_free_page(GFP_KERNEL); - vmbus_connection.monitor_pages[1] = (void *)__get_free_page(GFP_KERNEL); + vmbus_connection.monitor_pages[0] = hv_alloc_hyperv_page(); + vmbus_connection.monitor_pages[1] = hv_alloc_hyperv_page(); if ((vmbus_connection.monitor_pages[0] == NULL) || (vmbus_connection.monitor_pages[1] == NULL)) { ret = -ENOMEM; @@ -351,23 +342,21 @@ void vmbus_disconnect(void) destroy_workqueue(vmbus_connection.work_queue); if (vmbus_connection.int_page) { - free_page((unsigned long)vmbus_connection.int_page); + hv_free_hyperv_page(vmbus_connection.int_page); vmbus_connection.int_page = NULL; } if (vmbus_connection.monitor_pages[0]) { if (!set_memory_encrypted( (unsigned long)vmbus_connection.monitor_pages[0], 1)) - free_page((unsigned long) - vmbus_connection.monitor_pages[0]); + hv_free_hyperv_page(vmbus_connection.monitor_pages[0]); vmbus_connection.monitor_pages[0] = NULL; } if (vmbus_connection.monitor_pages[1]) { if (!set_memory_encrypted( (unsigned long)vmbus_connection.monitor_pages[1], 1)) - free_page((unsigned long) - vmbus_connection.monitor_pages[1]); + hv_free_hyperv_page(vmbus_connection.monitor_pages[1]); vmbus_connection.monitor_pages[1] = NULL; } } -- Gitee From 7ce94b097fe6456071809e6dfe2c90325b16c628 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:45 +0800 Subject: [PATCH 0755/1421] Revert "smb: client: add NULL check in automount_fullpath" This reverts commit c0551d92d803e97245878b3a1b4174990878f4db. --- fs/smb/client/namespace.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/fs/smb/client/namespace.c b/fs/smb/client/namespace.c index ec58c0e50724..830f2a292bb0 100644 --- a/fs/smb/client/namespace.c +++ b/fs/smb/client/namespace.c @@ -146,9 +146,6 @@ static char *automount_fullpath(struct dentry *dentry, void *page) } spin_unlock(&tcon->tc_lock); - if (unlikely(!page)) - return ERR_PTR(-ENOMEM); - s = dentry_path_raw(dentry, page, PATH_MAX); if (IS_ERR(s)) return s; -- Gitee From f1ba27b48aebd7e198a939ba8fa6a80674a208ae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:45 +0800 Subject: [PATCH 0756/1421] Revert "cifs: dns resolution is needed only for primary channel" This reverts commit 36f9938c38ecd48a8452547b1cf99a2457e3a43c. --- fs/smb/client/connect.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index ccf0a2c67479..b03ea877602c 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -408,8 +408,7 @@ static int __cifs_reconnect(struct TCP_Server_Info *server, try_to_freeze(); cifs_server_lock(server); - if (!cifs_swn_set_server_dstaddr(server) && - !SERVER_IS_CHAN(server)) { + if (!cifs_swn_set_server_dstaddr(server)) { /* resolve the hostname again to make sure that IP address is up-to-date */ rc = reconn_set_ipaddr_from_hostname(server); cifs_dbg(FYI, "%s: reconn_set_ipaddr_from_hostname: rc=%d\n", __func__, rc); -- Gitee From c843b6cbbeccd2b0b225097c07302b1fdccc02e0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:45 +0800 Subject: [PATCH 0757/1421] Revert "cifs: update dstaddr whenever channel iface is updated" This reverts commit 5161a3accf309eef05fc083a80c49dcc8598dcdf. --- fs/smb/client/sess.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fs/smb/client/sess.c b/fs/smb/client/sess.c index c9e6de42eedb..f04922eb45d4 100644 --- a/fs/smb/client/sess.c +++ b/fs/smb/client/sess.c @@ -485,10 +485,6 @@ cifs_chan_update_iface(struct cifs_ses *ses, struct TCP_Server_Info *server) ses->chans[chan_index].iface = iface; spin_unlock(&ses->chan_lock); - - spin_lock(&server->srv_lock); - memcpy(&server->dstaddr, &iface->sockaddr, sizeof(server->dstaddr)); - spin_unlock(&server->srv_lock); } /* -- Gitee From 5316e4667cfb7f5324043e1a8d362d2e84e91be8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:46 +0800 Subject: [PATCH 0758/1421] Revert "cifs: reset connections for all channels when reconnect requested" This reverts commit 78a8cfcffd4374d322e46b91e77c0e714d5cea8d. --- fs/smb/client/connect.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index b03ea877602c..3faaee33ad45 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -393,13 +393,6 @@ static int __cifs_reconnect(struct TCP_Server_Info *server, if (!cifs_tcp_ses_needs_reconnect(server, 1)) return 0; - /* - * if smb session has been marked for reconnect, also reconnect all - * connections. This way, the other connections do not end up bad. - */ - if (mark_smb_session) - cifs_signal_cifsd_for_reconnect(server, mark_smb_session); - cifs_mark_tcp_ses_conns_for_reconnect(server, mark_smb_session); cifs_abort_connection(server); -- Gitee From c2d8152d1edae44b7aaa092db6fd72bd60d29f69 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:46 +0800 Subject: [PATCH 0759/1421] Revert "remoteproc: core: Release rproc->clean_table after rproc_attach() fails" This reverts commit bf92651ae8da70c282f30955410b8d53494a648c. --- drivers/remoteproc/remoteproc_core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 2d4ae3b5af86..7b9f6bc4cb1f 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -1654,7 +1654,6 @@ static int rproc_attach(struct rproc *rproc) rproc_resource_cleanup(rproc); /* release HW resources if needed */ rproc_unprepare_device(rproc); - kfree(rproc->clean_table); disable_iommu: rproc_disable_iommu(rproc); return ret; -- Gitee From 741fd5e11414ab286253dc6364e2bdf07c6b1e1b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:46 +0800 Subject: [PATCH 0760/1421] Revert "remoteproc: core: Cleanup acquired resources when rproc_handle_resources() fails in rproc_attach()" This reverts commit f1d69d111c5719496d9d9c0ae2483e16c985b23b. --- drivers/remoteproc/remoteproc_core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 7b9f6bc4cb1f..0c363ca566ff 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -1616,7 +1616,7 @@ static int rproc_attach(struct rproc *rproc) ret = rproc_set_rsc_table(rproc); if (ret) { dev_err(dev, "can't load resource table: %d\n", ret); - goto clean_up_resources; + goto unprepare_device; } /* reset max_notifyid */ @@ -1633,7 +1633,7 @@ static int rproc_attach(struct rproc *rproc) ret = rproc_handle_resources(rproc, rproc_loading_handlers); if (ret) { dev_err(dev, "Failed to process resources: %d\n", ret); - goto clean_up_resources; + goto unprepare_device; } /* Allocate carveout resources associated to rproc */ @@ -1652,6 +1652,7 @@ static int rproc_attach(struct rproc *rproc) clean_up_resources: rproc_resource_cleanup(rproc); +unprepare_device: /* release HW resources if needed */ rproc_unprepare_device(rproc); disable_iommu: -- Gitee From df3027b968ef79b0761b7860917b557b2e5f3708 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:46 +0800 Subject: [PATCH 0761/1421] Revert "regulator: max14577: Add error check for max14577_read_reg()" This reverts commit be678e7b2b4ac07ff049e067e0843ce05e5e2406. --- drivers/regulator/max14577-regulator.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/regulator/max14577-regulator.c b/drivers/regulator/max14577-regulator.c index 41fd15adfd1f..5e7171b9065a 100644 --- a/drivers/regulator/max14577-regulator.c +++ b/drivers/regulator/max14577-regulator.c @@ -40,14 +40,11 @@ static int max14577_reg_get_current_limit(struct regulator_dev *rdev) struct max14577 *max14577 = rdev_get_drvdata(rdev); const struct maxim_charger_current *limits = &maxim_charger_currents[max14577->dev_type]; - int ret; if (rdev_get_id(rdev) != MAX14577_CHARGER) return -EINVAL; - ret = max14577_read_reg(rmap, MAX14577_CHG_REG_CHG_CTRL4, ®_data); - if (ret < 0) - return ret; + max14577_read_reg(rmap, MAX14577_CHG_REG_CHG_CTRL4, ®_data); if ((reg_data & CHGCTRL4_MBCICHWRCL_MASK) == 0) return limits->min; -- Gitee From f6f8c49ce99c7f11268911a336d6812b76a83797 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:46 +0800 Subject: [PATCH 0762/1421] Revert "mips: Add -std= flag specified in KBUILD_CFLAGS to vdso CFLAGS" This reverts commit c83e19c617d1d3406e644a62ba37b01143b1b84a. --- arch/mips/vdso/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile index 0a3249647401..eb56581f6d73 100644 --- a/arch/mips/vdso/Makefile +++ b/arch/mips/vdso/Makefile @@ -30,7 +30,6 @@ endif # offsets. cflags-vdso := $(ccflags-vdso) \ $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ - $(filter -std=%,$(KBUILD_CFLAGS)) \ -O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \ -mrelax-pic-calls $(call cc-option, -mexplicit-relocs) \ -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \ -- Gitee From 66360cfabf965c0910494a113fe28e16cbd2dc4a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:47 +0800 Subject: [PATCH 0763/1421] Revert "staging: iio: ad5933: Correct settling cycles encoding per datasheet" This reverts commit 2d32f007d5e4e2b81c2ebec5cab4a926bfafd406. --- drivers/staging/iio/impedance-analyzer/ad5933.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c index 31d82a042dad..2d0883a64082 100644 --- a/drivers/staging/iio/impedance-analyzer/ad5933.c +++ b/drivers/staging/iio/impedance-analyzer/ad5933.c @@ -412,7 +412,7 @@ static ssize_t ad5933_store(struct device *dev, ret = ad5933_cmd(st, 0); break; case AD5933_OUT_SETTLING_CYCLES: - val = clamp(val, (u16)0, (u16)0x7FC); + val = clamp(val, (u16)0, (u16)0x7FF); st->settling_cycles = val; /* 2x, 4x handling, see datasheet */ -- Gitee From d5970f48e22faf2223220d566a92658794dfc7b0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:47 +0800 Subject: [PATCH 0764/1421] Revert "video: screen_info: Relocate framebuffers behind PCI bridges" This reverts commit 5902323a285608fa39dacd24488346d1c1cbd934. --- drivers/video/screen_info_pci.c | 79 ++++++++++++--------------------- 1 file changed, 29 insertions(+), 50 deletions(-) diff --git a/drivers/video/screen_info_pci.c b/drivers/video/screen_info_pci.c index 66bfc1d0a6dc..6c5833517141 100644 --- a/drivers/video/screen_info_pci.c +++ b/drivers/video/screen_info_pci.c @@ -7,8 +7,8 @@ static struct pci_dev *screen_info_lfb_pdev; static size_t screen_info_lfb_bar; -static resource_size_t screen_info_lfb_res_start; // original start of resource -static resource_size_t screen_info_lfb_offset; // framebuffer offset within resource +static resource_size_t screen_info_lfb_offset; +static struct resource screen_info_lfb_res = DEFINE_RES_MEM(0, 0); static bool __screen_info_relocation_is_valid(const struct screen_info *si, struct resource *pr) { @@ -31,7 +31,7 @@ void screen_info_apply_fixups(void) if (screen_info_lfb_pdev) { struct resource *pr = &screen_info_lfb_pdev->resource[screen_info_lfb_bar]; - if (pr->start != screen_info_lfb_res_start) { + if (pr->start != screen_info_lfb_res.start) { if (__screen_info_relocation_is_valid(si, pr)) { /* * Only update base if we have an actual @@ -47,67 +47,46 @@ void screen_info_apply_fixups(void) } } -static int __screen_info_lfb_pci_bus_region(const struct screen_info *si, unsigned int type, - struct pci_bus_region *r) -{ - u64 base, size; - - base = __screen_info_lfb_base(si); - if (!base) - return -EINVAL; - - size = __screen_info_lfb_size(si, type); - if (!size) - return -EINVAL; - - r->start = base; - r->end = base + size - 1; - - return 0; -} - static void screen_info_fixup_lfb(struct pci_dev *pdev) { unsigned int type; - struct pci_bus_region bus_region; + struct resource res[SCREEN_INFO_MAX_RESOURCES]; + size_t i, numres; int ret; - struct resource r = { - .flags = IORESOURCE_MEM, - }; - const struct resource *pr; const struct screen_info *si = &screen_info; if (screen_info_lfb_pdev) return; // already found type = screen_info_video_type(si); - if (!__screen_info_has_lfb(type)) - return; // only applies to EFI; maybe VESA + if (type != VIDEO_TYPE_EFI) + return; // only applies to EFI - ret = __screen_info_lfb_pci_bus_region(si, type, &bus_region); + ret = screen_info_resources(si, res, ARRAY_SIZE(res)); if (ret < 0) return; + numres = ret; - /* - * Translate the PCI bus address to resource. Account - * for an offset if the framebuffer is behind a PCI host - * bridge. - */ - pcibios_bus_to_resource(pdev->bus, &r, &bus_region); - - pr = pci_find_resource(pdev, &r); - if (!pr) - return; - - /* - * We've found a PCI device with the framebuffer - * resource. Store away the parameters to track - * relocation of the framebuffer aperture. - */ - screen_info_lfb_pdev = pdev; - screen_info_lfb_bar = pr - pdev->resource; - screen_info_lfb_offset = r.start - pr->start; - screen_info_lfb_res_start = bus_region.start; + for (i = 0; i < numres; ++i) { + struct resource *r = &res[i]; + const struct resource *pr; + + if (!(r->flags & IORESOURCE_MEM)) + continue; + pr = pci_find_resource(pdev, r); + if (!pr) + continue; + + /* + * We've found a PCI device with the framebuffer + * resource. Store away the parameters to track + * relocation of the framebuffer aperture. + */ + screen_info_lfb_pdev = pdev; + screen_info_lfb_bar = pr - pdev->resource; + screen_info_lfb_offset = r->start - pr->start; + memcpy(&screen_info_lfb_res, r, sizeof(screen_info_lfb_res)); + } } DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_ANY_ID, PCI_ANY_ID, PCI_BASE_CLASS_DISPLAY, 16, screen_info_fixup_lfb); -- Gitee From 7beb9d5b9a5b1041a8dfc58caa270a6c18a3c98a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:47 +0800 Subject: [PATCH 0765/1421] Revert "KVM: s390: rename PROT_NONE to PROT_TYPE_DUMMY" This reverts commit 68d8d512f42d58c4378b2bc0676a9254faa0789f. --- arch/s390/kvm/gaccess.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/s390/kvm/gaccess.c b/arch/s390/kvm/gaccess.c index 969a5e156919..090dc3833433 100644 --- a/arch/s390/kvm/gaccess.c +++ b/arch/s390/kvm/gaccess.c @@ -490,7 +490,7 @@ enum prot_type { PROT_TYPE_DAT = 3, PROT_TYPE_IEP = 4, /* Dummy value for passing an initialized value when code != PGM_PROTECTION */ - PROT_TYPE_DUMMY, + PROT_NONE, }; static int trans_exc_ending(struct kvm_vcpu *vcpu, int code, unsigned long gva, u8 ar, @@ -506,7 +506,7 @@ static int trans_exc_ending(struct kvm_vcpu *vcpu, int code, unsigned long gva, switch (code) { case PGM_PROTECTION: switch (prot) { - case PROT_TYPE_DUMMY: + case PROT_NONE: /* We should never get here, acts like termination */ WARN_ON_ONCE(1); break; @@ -976,7 +976,7 @@ static int guest_range_to_gpas(struct kvm_vcpu *vcpu, unsigned long ga, u8 ar, gpa = kvm_s390_real_to_abs(vcpu, ga); if (kvm_is_error_gpa(vcpu->kvm, gpa)) { rc = PGM_ADDRESSING; - prot = PROT_TYPE_DUMMY; + prot = PROT_NONE; } } if (rc) @@ -1134,7 +1134,7 @@ int access_guest_with_key(struct kvm_vcpu *vcpu, unsigned long ga, u8 ar, if (rc == PGM_PROTECTION) prot = PROT_TYPE_KEYC; else - prot = PROT_TYPE_DUMMY; + prot = PROT_NONE; rc = trans_exc_ending(vcpu, rc, ga, ar, mode, prot, terminate); } out_unlock: -- Gitee From 8b7cec093f13b89f29b461d940a8b1dc06aeaa35 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:47 +0800 Subject: [PATCH 0766/1421] Revert "net: ch9200: fix uninitialised access during mii_nway_restart" This reverts commit 677c3e4892c5c18f9ce69e328c0a6e97fc45957b. --- drivers/net/usb/ch9200.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/usb/ch9200.c b/drivers/net/usb/ch9200.c index a206ffa76f1b..f69d9b902da0 100644 --- a/drivers/net/usb/ch9200.c +++ b/drivers/net/usb/ch9200.c @@ -178,7 +178,6 @@ static int ch9200_mdio_read(struct net_device *netdev, int phy_id, int loc) { struct usbnet *dev = netdev_priv(netdev); unsigned char buff[2]; - int ret; netdev_dbg(netdev, "%s phy_id:%02x loc:%02x\n", __func__, phy_id, loc); @@ -186,10 +185,8 @@ static int ch9200_mdio_read(struct net_device *netdev, int phy_id, int loc) if (phy_id != 0) return -ENODEV; - ret = control_read(dev, REQUEST_READ, 0, loc * 2, buff, 0x02, - CONTROL_TIMEOUT_MS); - if (ret < 0) - return ret; + control_read(dev, REQUEST_READ, 0, loc * 2, buff, 0x02, + CONTROL_TIMEOUT_MS); return (buff[0] | buff[1] << 8); } -- Gitee From 7c2b218a446a97cea46e6b3d3c8543eb2c0e5dfd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:47 +0800 Subject: [PATCH 0767/1421] Revert "phy: fsl-imx8mq-usb: fix phy_tx_vboost_level_from_property()" This reverts commit 594b76345c7fd5cba08a236cd93c7297f53fd3c0. --- drivers/phy/freescale/phy-fsl-imx8mq-usb.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/phy/freescale/phy-fsl-imx8mq-usb.c b/drivers/phy/freescale/phy-fsl-imx8mq-usb.c index f914f016b3d2..adc6394626ce 100644 --- a/drivers/phy/freescale/phy-fsl-imx8mq-usb.c +++ b/drivers/phy/freescale/phy-fsl-imx8mq-usb.c @@ -95,12 +95,12 @@ static u32 phy_tx_preemp_amp_tune_from_property(u32 microamp) static u32 phy_tx_vboost_level_from_property(u32 microvolt) { switch (microvolt) { - case 1156: - return 5; - case 844: - return 3; + case 0 ... 960: + return 0; + case 961 ... 1160: + return 2; default: - return 4; + return 3; } } -- Gitee From ebbae0619ebefaa06997142ebbc17ac3f0483b0d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:48 +0800 Subject: [PATCH 0768/1421] Revert "ftrace: Fix UAF when lookup kallsym after ftrace disabled" This reverts commit 39b229874683b692cf1f66cba64bb36761c47cda. --- kernel/trace/ftrace.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 4351b9069a91..650493ed76cd 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -6772,10 +6772,9 @@ void ftrace_release_mod(struct module *mod) mutex_lock(&ftrace_lock); - /* - * To avoid the UAF problem after the module is unloaded, the - * 'mod_map' resource needs to be released unconditionally. - */ + if (ftrace_disabled) + goto out_unlock; + list_for_each_entry_safe(mod_map, n, &ftrace_mod_maps, list) { if (mod_map->mod == mod) { list_del_rcu(&mod_map->list); @@ -6784,9 +6783,6 @@ void ftrace_release_mod(struct module *mod) } } - if (ftrace_disabled) - goto out_unlock; - /* * Each module has its own ftrace_pages, remove * them from the list. -- Gitee From 9632e1d95b61036cc5db607261a7b4d05082eebf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:48 +0800 Subject: [PATCH 0769/1421] Revert "mtd: rawnand: qcom: Fix read len for onfi param page" This reverts commit e6064b3e61a3eeb17afbda3b1c4f4a126b1ab243. --- drivers/mtd/nand/raw/qcom_nandc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c index beafca6ba0df..b8cff9240b28 100644 --- a/drivers/mtd/nand/raw/qcom_nandc.c +++ b/drivers/mtd/nand/raw/qcom_nandc.c @@ -2917,7 +2917,7 @@ static int qcom_param_page_type_exec(struct nand_chip *chip, const struct nand_ write_reg_dma(nandc, NAND_DEV_CMD1, 1, NAND_BAM_NEXT_SGL); } - nandc->buf_count = 512; + nandc->buf_count = len; memset(nandc->data_buffer, 0xff, nandc->buf_count); config_nand_single_cw_page_read(chip, false, 0); -- Gitee From b18ec78f570b4f3a1381c47d7907d9c44db25403 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:48 +0800 Subject: [PATCH 0770/1421] Revert "dm-verity: fix a memory leak if some arguments are specified multiple times" This reverts commit 584a780f24cef04eddb3fdcddcb825c9717c7ba5. --- drivers/md/dm-verity-fec.c | 4 ---- drivers/md/dm-verity-target.c | 8 +------- drivers/md/dm-verity-verify-sig.c | 17 ++++------------- 3 files changed, 5 insertions(+), 24 deletions(-) diff --git a/drivers/md/dm-verity-fec.c b/drivers/md/dm-verity-fec.c index 8007e2e21972..6a7a17c489c9 100644 --- a/drivers/md/dm-verity-fec.c +++ b/drivers/md/dm-verity-fec.c @@ -624,10 +624,6 @@ int verity_fec_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v, (*argc)--; if (!strcasecmp(arg_name, DM_VERITY_OPT_FEC_DEV)) { - if (v->fec->dev) { - ti->error = "FEC device already specified"; - return -EINVAL; - } r = dm_get_device(ti, arg_value, BLK_OPEN_READ, &v->fec->dev); if (r) { ti->error = "FEC device lookup failed"; diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c index 60e74c0e02f1..6ae97da741bb 100644 --- a/drivers/md/dm-verity-target.c +++ b/drivers/md/dm-verity-target.c @@ -1043,9 +1043,6 @@ static int verity_alloc_most_once(struct dm_verity *v) { struct dm_target *ti = v->ti; - if (v->validated_blocks) - return 0; - /* the bitset can only handle INT_MAX blocks */ if (v->data_blocks > INT_MAX) { ti->error = "device too large to use check_at_most_once"; @@ -1069,9 +1066,6 @@ static int verity_alloc_zero_digest(struct dm_verity *v) struct ahash_request *req; u8 *zero_data; - if (v->zero_digest) - return 0; - v->zero_digest = kmalloc(v->digest_size, GFP_KERNEL); if (!v->zero_digest) @@ -1411,7 +1405,7 @@ static int verity_ctr(struct dm_target *ti, unsigned int argc, char **argv) goto bad; } - /* Root hash signature is an optional parameter */ + /* Root hash signature is a optional parameter*/ r = verity_verify_root_hash(root_hash_digest_to_validate, strlen(root_hash_digest_to_validate), verify_args.sig, diff --git a/drivers/md/dm-verity-verify-sig.c b/drivers/md/dm-verity-verify-sig.c index 1ced2ef255f3..4836508ea50c 100644 --- a/drivers/md/dm-verity-verify-sig.c +++ b/drivers/md/dm-verity-verify-sig.c @@ -71,14 +71,9 @@ int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, const char *arg_name) { struct dm_target *ti = v->ti; - int ret; + int ret = 0; const char *sig_key = NULL; - if (v->signature_key_desc) { - ti->error = DM_VERITY_VERIFY_ERR("root_hash_sig_key_desc already specified"); - return -EINVAL; - } - if (!*argc) { ti->error = DM_VERITY_VERIFY_ERR("Signature key not specified"); return -EINVAL; @@ -88,18 +83,14 @@ int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, (*argc)--; ret = verity_verify_get_sig_from_key(sig_key, sig_opts); - if (ret < 0) { + if (ret < 0) ti->error = DM_VERITY_VERIFY_ERR("Invalid key specified"); - return ret; - } v->signature_key_desc = kstrdup(sig_key, GFP_KERNEL); - if (!v->signature_key_desc) { - ti->error = DM_VERITY_VERIFY_ERR("Could not allocate memory for signature key"); + if (!v->signature_key_desc) return -ENOMEM; - } - return 0; + return ret; } /* -- Gitee From 910a608b03238866fcd2ced45d389e71523747ba Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:48 +0800 Subject: [PATCH 0771/1421] Revert "dm-mirror: fix a tiny race condition" This reverts commit d7af8ef91c39a22f3ebffaf3f5174e6b77fea7f7. --- drivers/md/dm-raid1.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 94b6c43dfa5c..9511dae5b556 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c @@ -133,9 +133,10 @@ static void queue_bio(struct mirror_set *ms, struct bio *bio, int rw) spin_lock_irqsave(&ms->lock, flags); should_wake = !(bl->head); bio_list_add(bl, bio); + spin_unlock_irqrestore(&ms->lock, flags); + if (should_wake) wakeup_mirrord(ms); - spin_unlock_irqrestore(&ms->lock, flags); } static void dispatch_bios(void *context, struct bio_list *bio_list) @@ -645,9 +646,9 @@ static void write_callback(unsigned long error, void *context) if (!ms->failures.head) should_wake = 1; bio_list_add(&ms->failures, bio); + spin_unlock_irqrestore(&ms->lock, flags); if (should_wake) wakeup_mirrord(ms); - spin_unlock_irqrestore(&ms->lock, flags); } static void do_write(struct mirror_set *ms, struct bio *bio) -- Gitee From 76df3aea4bc341a29f4c80d7e51cf142e99cf91f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:49 +0800 Subject: [PATCH 0772/1421] Revert "KVM: VMX: Flush shadow VMCS on emergency reboot" This reverts commit bfe996bd5f3a2ad2d334d55974aa20dec60bd5fe. --- arch/x86/kvm/vmx/vmx.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index e7f3b70f9114..e5a2c230110e 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -787,11 +787,8 @@ static void vmx_emergency_disable(void) return; list_for_each_entry(v, &per_cpu(loaded_vmcss_on_cpu, cpu), - loaded_vmcss_on_cpu_link) { + loaded_vmcss_on_cpu_link) vmcs_clear(v->vmcs); - if (v->shadow_vmcs) - vmcs_clear(v->shadow_vmcs); - } kvm_cpu_vmxoff(); } -- Gitee From 953be251c0514c2131cabea3726c6d5c2023d3d3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:49 +0800 Subject: [PATCH 0773/1421] Revert "KVM: SVM: Clear current_vmcb during vCPU free for all *possible* CPUs" This reverts commit d1ef5497d2c4808c38872ed145dbc46acdddc0ed. --- arch/x86/kvm/svm/svm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 86c50747e158..c84a1451f194 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1503,7 +1503,7 @@ static void svm_clear_current_vmcb(struct vmcb *vmcb) { int i; - for_each_possible_cpu(i) + for_each_online_cpu(i) cmpxchg(per_cpu_ptr(&svm_data.current_vmcb, i), vmcb, NULL); } -- Gitee From 1c42ae981fc2958ff3196ec259ed8c9406680332 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:49 +0800 Subject: [PATCH 0774/1421] Revert "mtd: nand: sunxi: Add randomizer configuration before randomizer enable" This reverts commit 5abd95eb866a4dbb6baa8fa381475b37c5ed0102. --- drivers/mtd/nand/raw/sunxi_nand.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/mtd/nand/raw/sunxi_nand.c b/drivers/mtd/nand/raw/sunxi_nand.c index 4469618ee603..fe6a689f6d65 100644 --- a/drivers/mtd/nand/raw/sunxi_nand.c +++ b/drivers/mtd/nand/raw/sunxi_nand.c @@ -817,7 +817,6 @@ static int sunxi_nfc_hw_ecc_read_chunk(struct nand_chip *nand, if (ret) return ret; - sunxi_nfc_randomizer_config(nand, page, false); sunxi_nfc_randomizer_enable(nand); writel(NFC_DATA_TRANS | NFC_DATA_SWAP_METHOD | NFC_ECC_OP, nfc->regs + NFC_REG_CMD); -- Gitee From 70f9aafb88f862c442c0c9d35d5ea275d8017549 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:49 +0800 Subject: [PATCH 0775/1421] Revert "mtd: rawnand: sunxi: Add randomizer configuration in sunxi_nfc_hw_ecc_write_chunk" This reverts commit b3afa21baa089ec05cd638e44bb13a4e5f9a3b25. --- drivers/mtd/nand/raw/sunxi_nand.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/mtd/nand/raw/sunxi_nand.c b/drivers/mtd/nand/raw/sunxi_nand.c index fe6a689f6d65..9abf38049d35 100644 --- a/drivers/mtd/nand/raw/sunxi_nand.c +++ b/drivers/mtd/nand/raw/sunxi_nand.c @@ -1049,7 +1049,6 @@ static int sunxi_nfc_hw_ecc_write_chunk(struct nand_chip *nand, if (ret) return ret; - sunxi_nfc_randomizer_config(nand, page, false); sunxi_nfc_randomizer_enable(nand); sunxi_nfc_hw_ecc_set_prot_oob_bytes(nand, oob, 0, bbm, page); -- Gitee From b99ab04c7cb6a729037f85d291b316862d3b0fbb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:49 +0800 Subject: [PATCH 0776/1421] Revert "mm: fix ratelimit_pages update error in dirty_ratio_handler()" This reverts commit ab524108e80bbcc49bdbba52e33cd0329edd36c6. --- mm/page-writeback.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 9ceb841af819..e632ec9b6421 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -541,8 +541,8 @@ static int dirty_ratio_handler(struct ctl_table *table, int write, void *buffer, ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos); if (ret == 0 && write && vm_dirty_ratio != old_ratio) { - vm_dirty_bytes = 0; writeback_set_ratelimit(); + vm_dirty_bytes = 0; } return ret; } -- Gitee From eca909865c59edd9be1c306e5703bffa018321ca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:50 +0800 Subject: [PATCH 0777/1421] Revert "RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction" This reverts commit a0b98e955db69eab44ad93057e13d3dd74116906. --- drivers/infiniband/core/iwcm.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c index ce41f235af25..3e4941754b48 100644 --- a/drivers/infiniband/core/iwcm.c +++ b/drivers/infiniband/core/iwcm.c @@ -367,9 +367,12 @@ EXPORT_SYMBOL(iw_cm_disconnect); /* * CM_ID <-- DESTROYING * - * Clean up all resources associated with the connection. + * Clean up all resources associated with the connection and release + * the initial reference taken by iw_create_cm_id. + * + * Returns true if and only if the last cm_id_priv reference has been dropped. */ -static void destroy_cm_id(struct iw_cm_id *cm_id) +static bool destroy_cm_id(struct iw_cm_id *cm_id) { struct iwcm_id_private *cm_id_priv; struct ib_qp *qp; @@ -438,22 +441,20 @@ static void destroy_cm_id(struct iw_cm_id *cm_id) iwpm_remove_mapinfo(&cm_id->local_addr, &cm_id->m_local_addr); iwpm_remove_mapping(&cm_id->local_addr, RDMA_NL_IWCM); } + + return iwcm_deref_id(cm_id_priv); } /* - * Destroy cm_id. If the cm_id still has other references, wait for all - * references to be released on the cm_id and then release the initial - * reference taken by iw_create_cm_id. + * This function is only called by the application thread and cannot + * be called by the event thread. The function will wait for all + * references to be released on the cm_id and then kfree the cm_id + * object. */ void iw_destroy_cm_id(struct iw_cm_id *cm_id) { - struct iwcm_id_private *cm_id_priv; - - cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); - destroy_cm_id(cm_id); - if (refcount_read(&cm_id_priv->refcount) > 1) + if (!destroy_cm_id(cm_id)) flush_workqueue(iwcm_wq); - iwcm_deref_id(cm_id_priv); } EXPORT_SYMBOL(iw_destroy_cm_id); @@ -1036,10 +1037,8 @@ static void cm_work_handler(struct work_struct *_work) if (!test_bit(IWCM_F_DROP_EVENTS, &cm_id_priv->flags)) { ret = process_event(cm_id_priv, &levent); - if (ret) { - destroy_cm_id(&cm_id_priv->id); - WARN_ON_ONCE(iwcm_deref_id(cm_id_priv)); - } + if (ret) + WARN_ON_ONCE(destroy_cm_id(&cm_id_priv->id)); } else pr_debug("dropping event %d\n", levent.event); if (iwcm_deref_id(cm_id_priv)) -- Gitee From 35346c4102874a6e7d8200fb62afe7ab8986df67 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:50 +0800 Subject: [PATCH 0778/1421] Revert "watchdog: fix watchdog may detect false positive of softlockup" This reverts commit 2d8c62c01bbf0807f2c6133a9b7ff00734c25447. --- kernel/watchdog.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/kernel/watchdog.c b/kernel/watchdog.c index f3d305751a2a..c904872be06c 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -41,7 +41,6 @@ int __read_mostly watchdog_user_enabled = 1; static int __read_mostly watchdog_hardlockup_user_enabled = WATCHDOG_HARDLOCKUP_DEFAULT; static int __read_mostly watchdog_softlockup_user_enabled = 1; int __read_mostly watchdog_thresh = 10; -static int __read_mostly watchdog_thresh_next; static int __read_mostly watchdog_hardlockup_available; struct cpumask watchdog_cpumask __read_mostly; @@ -657,20 +656,12 @@ int lockup_detector_offline_cpu(unsigned int cpu) return 0; } -static void __lockup_detector_reconfigure(bool thresh_changed) +static void __lockup_detector_reconfigure(void) { cpus_read_lock(); watchdog_hardlockup_stop(); softlockup_stop_all(); - /* - * To prevent watchdog_timer_fn from using the old interval and - * the new watchdog_thresh at the same time, which could lead to - * false softlockup reports, it is necessary to update the - * watchdog_thresh after the softlockup is completed. - */ - if (thresh_changed) - watchdog_thresh = READ_ONCE(watchdog_thresh_next); set_sample_period(); lockup_detector_update_enable(); if (watchdog_enabled && watchdog_thresh) @@ -688,7 +679,7 @@ static void __lockup_detector_reconfigure(bool thresh_changed) void lockup_detector_reconfigure(void) { mutex_lock(&watchdog_mutex); - __lockup_detector_reconfigure(false); + __lockup_detector_reconfigure(); mutex_unlock(&watchdog_mutex); } @@ -708,29 +699,27 @@ static __init void lockup_detector_setup(void) return; mutex_lock(&watchdog_mutex); - __lockup_detector_reconfigure(false); + __lockup_detector_reconfigure(); softlockup_initialized = true; mutex_unlock(&watchdog_mutex); } #else /* CONFIG_SOFTLOCKUP_DETECTOR */ -static void __lockup_detector_reconfigure(bool thresh_changed) +static void __lockup_detector_reconfigure(void) { cpus_read_lock(); watchdog_hardlockup_stop(); - if (thresh_changed) - watchdog_thresh = READ_ONCE(watchdog_thresh_next); lockup_detector_update_enable(); watchdog_hardlockup_start(); cpus_read_unlock(); } void lockup_detector_reconfigure(void) { - __lockup_detector_reconfigure(false); + __lockup_detector_reconfigure(); } static inline void lockup_detector_setup(void) { - __lockup_detector_reconfigure(false); + __lockup_detector_reconfigure(); } #endif /* !CONFIG_SOFTLOCKUP_DETECTOR */ @@ -766,11 +755,11 @@ void lockup_detector_soft_poweroff(void) #ifdef CONFIG_SYSCTL /* Propagate any changes to the watchdog infrastructure */ -static void proc_watchdog_update(bool thresh_changed) +static void proc_watchdog_update(void) { /* Remove impossible cpus to keep sysctl output clean. */ cpumask_and(&watchdog_cpumask, &watchdog_cpumask, cpu_possible_mask); - __lockup_detector_reconfigure(thresh_changed); + __lockup_detector_reconfigure(); } /* @@ -803,7 +792,7 @@ static int proc_watchdog_common(int which, struct ctl_table *table, int write, old = READ_ONCE(*param); err = proc_dointvec_minmax(table, write, buffer, lenp, ppos); if (!err && old != READ_ONCE(*param)) - proc_watchdog_update(false); + proc_watchdog_update(); } mutex_unlock(&watchdog_mutex); return err; @@ -852,13 +841,11 @@ int proc_watchdog_thresh(struct ctl_table *table, int write, mutex_lock(&watchdog_mutex); - watchdog_thresh_next = READ_ONCE(watchdog_thresh); - - old = watchdog_thresh_next; + old = READ_ONCE(watchdog_thresh); err = proc_dointvec_minmax(table, write, buffer, lenp, ppos); - if (!err && write && old != READ_ONCE(watchdog_thresh_next)) - proc_watchdog_update(true); + if (!err && write && old != READ_ONCE(watchdog_thresh)) + proc_watchdog_update(); mutex_unlock(&watchdog_mutex); return err; @@ -879,7 +866,7 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write, err = proc_do_large_bitmap(table, write, buffer, lenp, ppos); if (!err && write) - proc_watchdog_update(false); + proc_watchdog_update(); mutex_unlock(&watchdog_mutex); return err; @@ -899,7 +886,7 @@ static struct ctl_table watchdog_sysctls[] = { }, { .procname = "watchdog_thresh", - .data = &watchdog_thresh_next, + .data = &watchdog_thresh, .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_watchdog_thresh, -- Gitee From 76606d40630ff0b5943da04a10f19a128e1f2f8b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:50 +0800 Subject: [PATCH 0779/1421] Revert "ipc: fix to protect IPCS lookups using RCU" This reverts commit ddb59e1636f93edfcbbec68d0b5d33a183498ab5. --- ipc/shm.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ipc/shm.c b/ipc/shm.c index c4845689b7f6..576a543b7cff 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -430,11 +430,8 @@ static int shm_try_destroy_orphaned(int id, void *p, void *data) void shm_destroy_orphaned(struct ipc_namespace *ns) { down_write(&shm_ids(ns).rwsem); - if (shm_ids(ns).in_use) { - rcu_read_lock(); + if (shm_ids(ns).in_use) idr_for_each(&shm_ids(ns).ipcs_idr, &shm_try_destroy_orphaned, ns); - rcu_read_unlock(); - } up_write(&shm_ids(ns).rwsem); } -- Gitee From f5e294012a67ef1f7176786b192b890aae9e4afb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:50 +0800 Subject: [PATCH 0780/1421] Revert "clk: meson-g12a: add missing fclk_div2 to spicc" This reverts commit ac608aa57a362cac0b97064fcf3507a801308b85. --- drivers/clk/meson/g12a.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c index 69018efbf7f4..233ce4a4c1c2 100644 --- a/drivers/clk/meson/g12a.c +++ b/drivers/clk/meson/g12a.c @@ -3971,7 +3971,6 @@ static const struct clk_parent_data spicc_sclk_parent_data[] = { { .hw = &g12a_clk81.hw }, { .hw = &g12a_fclk_div4.hw }, { .hw = &g12a_fclk_div3.hw }, - { .hw = &g12a_fclk_div2.hw }, { .hw = &g12a_fclk_div5.hw }, { .hw = &g12a_fclk_div7.hw }, }; -- Gitee From 5723bd40894b9529ded513a00041c787d654d9b9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:50 +0800 Subject: [PATCH 0781/1421] Revert "parisc: fix building with gcc-15" This reverts commit 1beadd2f9f68e1a888756405a888fdda11290f27. --- arch/parisc/boot/compressed/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/parisc/boot/compressed/Makefile b/arch/parisc/boot/compressed/Makefile index 9fba12b70d1b..a294a1b58ee7 100644 --- a/arch/parisc/boot/compressed/Makefile +++ b/arch/parisc/boot/compressed/Makefile @@ -22,7 +22,6 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os ifndef CONFIG_64BIT KBUILD_CFLAGS += -mfast-indirect-calls endif -KBUILD_CFLAGS += -std=gnu11 LDFLAGS_vmlinux := -X -e startup --as-needed -T $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE -- Gitee From d19ce81d9b3bfe73bcd33f6eb88ee5d52c59f66a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:51 +0800 Subject: [PATCH 0782/1421] Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()" This reverts commit 819f046a63ce5873fc434a6596cd09b2ea508540. --- drivers/video/console/vgacon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index c9ec89649b05..7ad047bcae17 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -1139,7 +1139,7 @@ static bool vgacon_scroll(struct vc_data *c, unsigned int t, unsigned int b, c->vc_screenbuf_size - delta); c->vc_origin = vga_vram_end - c->vc_screenbuf_size; vga_rolled_over = 0; - } else if (oldo - delta >= (unsigned long)c->vc_screenbuf) + } else c->vc_origin -= delta; c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; scr_memsetw((u16 *) (c->vc_origin), c->vc_video_erase_char, -- Gitee From 058ee663764caa33c816cc46ee55b669e2bc53cd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:51 +0800 Subject: [PATCH 0783/1421] Revert "parisc/unaligned: Fix hex output to show 8 hex chars" This reverts commit 3c76626e213e204bb626b46f57089605ef0ce239. --- arch/parisc/kernel/unaligned.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/parisc/kernel/unaligned.c b/arch/parisc/kernel/unaligned.c index e673c71e16d9..a8e75e5b884a 100644 --- a/arch/parisc/kernel/unaligned.c +++ b/arch/parisc/kernel/unaligned.c @@ -24,7 +24,7 @@ #define DPRINTF(fmt, args...) #endif -#define RFMT "0x%08lx" +#define RFMT "%#08lx" /* 1111 1100 0000 0000 0001 0011 1100 0000 */ #define OPCODE1(a,b,c) ((a)<<26|(b)<<12|(c)<<6) -- Gitee From 6a476f672875ee6add93e67b33bbfb6c2d6ede5b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:51 +0800 Subject: [PATCH 0784/1421] Revert "fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var" This reverts commit ec884946475877d1735d3054e9a14c5f742ad358. --- drivers/video/fbdev/core/fbmem.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 52bd3af54369..6a1f3910934d 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -868,10 +868,8 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) !list_empty(&info->modelist)) ret = fb_add_videomode(&mode, &info->modelist); - if (ret) { - info->var = old_var; + if (ret) return ret; - } event.info = info; event.data = &mode; -- Gitee From e5f8b591b19c67bd994b9175eb269388ed1e09a8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:51 +0800 Subject: [PATCH 0785/1421] Revert "EDAC/altera: Use correct write width with the INTTEST register" This reverts commit 7f5a10dea1452d714ddc2fc540931242ac976f5b. --- drivers/edac/altera_edac.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 54ec89415093..e04fd1a7e9aa 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -1756,9 +1756,9 @@ altr_edac_a10_device_trig(struct file *file, const char __user *user_buf, local_irq_save(flags); if (trig_type == ALTR_UE_TRIGGER_CHAR) - writew(priv->ue_set_mask, set_addr); + writel(priv->ue_set_mask, set_addr); else - writew(priv->ce_set_mask, set_addr); + writel(priv->ce_set_mask, set_addr); /* Ensure the interrupt test bits are set */ wmb(); @@ -1788,7 +1788,7 @@ altr_edac_a10_device_trig2(struct file *file, const char __user *user_buf, local_irq_save(flags); if (trig_type == ALTR_UE_TRIGGER_CHAR) { - writew(priv->ue_set_mask, set_addr); + writel(priv->ue_set_mask, set_addr); } else { /* Setup read/write of 4 bytes */ writel(ECC_WORD_WRITE, drvdata->base + ECC_BLK_DBYTECTRL_OFST); -- Gitee From 71486a25cafde29080f97b1a704d80eb223ba5ea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:51 +0800 Subject: [PATCH 0786/1421] Revert "fbdev: Fix do_register_framebuffer to prevent null-ptr-deref in fb_videomode_to_var" This reverts commit 1074847ed21076f0dee87f963aff916d36ebbfd0. --- drivers/video/fbdev/core/fbmem.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 6a1f3910934d..ee44a46a66be 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -928,7 +928,7 @@ static int fb_check_foreignness(struct fb_info *fi) static int do_register_framebuffer(struct fb_info *fb_info) { - int i, err = 0; + int i; struct fb_videomode mode; if (fb_check_foreignness(fb_info)) @@ -937,18 +937,10 @@ static int do_register_framebuffer(struct fb_info *fb_info) if (num_registered_fb == FB_MAX) return -ENXIO; + num_registered_fb++; for (i = 0 ; i < FB_MAX; i++) if (!registered_fb[i]) break; - - if (!fb_info->modelist.prev || !fb_info->modelist.next) - INIT_LIST_HEAD(&fb_info->modelist); - - fb_var_to_videomode(&mode, &fb_info->var); - err = fb_add_videomode(&mode, &fb_info->modelist); - if (err < 0) - return err; - fb_info->node = i; refcount_set(&fb_info->count, 1); mutex_init(&fb_info->lock); @@ -974,12 +966,16 @@ static int do_register_framebuffer(struct fb_info *fb_info) if (!fb_info->pixmap.blit_y) fb_info->pixmap.blit_y = ~(u32)0; + if (!fb_info->modelist.prev || !fb_info->modelist.next) + INIT_LIST_HEAD(&fb_info->modelist); + if (fb_info->skip_vt_switch) pm_vt_switch_required(fb_info->device, false); else pm_vt_switch_required(fb_info->device, true); - num_registered_fb++; + fb_var_to_videomode(&mode, &fb_info->var); + fb_add_videomode(&mode, &fb_info->modelist); registered_fb[i] = fb_info; #ifdef CONFIG_GUMSTIX_AM200EPD -- Gitee From c90c99527040796a4100acb2262134b3c6561166 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:52 +0800 Subject: [PATCH 0787/1421] Revert "net: ftgmac100: select FIXED_PHY" This reverts commit 4bda245c2c74c5048a683ebf490914d6736342c4. --- drivers/net/ethernet/faraday/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/ethernet/faraday/Kconfig b/drivers/net/ethernet/faraday/Kconfig index 474073c7f94d..c699bd6bcbb9 100644 --- a/drivers/net/ethernet/faraday/Kconfig +++ b/drivers/net/ethernet/faraday/Kconfig @@ -31,7 +31,6 @@ config FTGMAC100 depends on ARM || COMPILE_TEST depends on !64BIT || BROKEN select PHYLIB - select FIXED_PHY select MDIO_ASPEED if MACH_ASPEED_G6 select CRC32 help -- Gitee From cf275a43891193edfa76c8f01fc759138fe20e7c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:52 +0800 Subject: [PATCH 0788/1421] Revert "net/sched: fix use-after-free in taprio_dev_notifier" This reverts commit 3b9e80a55e27018ca4ec448f9705b9d6c49bb902. --- net/sched/sch_taprio.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c index d162e2dd8602..951a87909c29 100644 --- a/net/sched/sch_taprio.c +++ b/net/sched/sch_taprio.c @@ -1338,15 +1338,13 @@ static int taprio_dev_notifier(struct notifier_block *nb, unsigned long event, stab = rtnl_dereference(q->root->stab); - rcu_read_lock(); - oper = rcu_dereference(q->oper_sched); + oper = rtnl_dereference(q->oper_sched); if (oper) taprio_update_queue_max_sdu(q, oper, stab); - admin = rcu_dereference(q->admin_sched); + admin = rtnl_dereference(q->admin_sched); if (admin) taprio_update_queue_max_sdu(q, admin, stab); - rcu_read_unlock(); break; } -- Gitee From 2984fbfbe7537fc177c033d1bb62ff4aa52b3735 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:52 +0800 Subject: [PATCH 0789/1421] Revert "NFC: nci: uart: Set tty->disc_data only in success path" This reverts commit 23efb6e9c8ca38627f6688fe81187fdb8ad03363. --- net/nfc/nci/uart.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/nfc/nci/uart.c b/net/nfc/nci/uart.c index aab107727f18..ed1508a9e093 100644 --- a/net/nfc/nci/uart.c +++ b/net/nfc/nci/uart.c @@ -119,22 +119,22 @@ static int nci_uart_set_driver(struct tty_struct *tty, unsigned int driver) memcpy(nu, nci_uart_drivers[driver], sizeof(struct nci_uart)); nu->tty = tty; + tty->disc_data = nu; skb_queue_head_init(&nu->tx_q); INIT_WORK(&nu->write_work, nci_uart_write_work); spin_lock_init(&nu->rx_lock); ret = nu->ops.open(nu); if (ret) { + tty->disc_data = NULL; kfree(nu); - return ret; } else if (!try_module_get(nu->owner)) { nu->ops.close(nu); + tty->disc_data = NULL; kfree(nu); return -ENOENT; } - tty->disc_data = nu; - - return 0; + return ret; } /* ------ LDISC part ------ */ -- Gitee From 14a8359e0e49fd7fbab240c07e82e1ee1b5cfb7d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:52 +0800 Subject: [PATCH 0790/1421] Revert "hwmon: (ftsteutates) Fix TOCTOU race in fts_read()" This reverts commit c6e3ec752f034f2b42becb08887efe4c8b457d7c. --- drivers/hwmon/ftsteutates.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/hwmon/ftsteutates.c b/drivers/hwmon/ftsteutates.c index 27e5dd94b04f..b74a2665e733 100644 --- a/drivers/hwmon/ftsteutates.c +++ b/drivers/hwmon/ftsteutates.c @@ -423,16 +423,13 @@ static int fts_read(struct device *dev, enum hwmon_sensor_types type, u32 attr, break; case hwmon_pwm: switch (attr) { - case hwmon_pwm_auto_channels_temp: { - u8 fan_source = data->fan_source[channel]; - - if (fan_source == FTS_FAN_SOURCE_INVALID || fan_source >= BITS_PER_LONG) + case hwmon_pwm_auto_channels_temp: + if (data->fan_source[channel] == FTS_FAN_SOURCE_INVALID) *val = 0; else - *val = BIT(fan_source); + *val = BIT(data->fan_source[channel]); return 0; - } default: break; } -- Gitee From 8344cbffeb64cbbd93fc9d96f89ff6ad75fb045b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:52 +0800 Subject: [PATCH 0791/1421] Revert "f2fs: fix to do sanity check on sit_bitmap_size" This reverts commit b431026b7c264031d727131302505e3b244d6b5d. --- fs/f2fs/super.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 50170e7cf3f9..6b3cafbe9867 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -3608,7 +3608,6 @@ int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi) block_t user_block_count, valid_user_blocks; block_t avail_node_count, valid_node_count; unsigned int nat_blocks, nat_bits_bytes, nat_bits_blocks; - unsigned int sit_blk_cnt; int i, j; total = le32_to_cpu(raw_super->segment_count); @@ -3720,13 +3719,6 @@ int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi) return 1; } - sit_blk_cnt = DIV_ROUND_UP(main_segs, SIT_ENTRY_PER_BLOCK); - if (sit_bitmap_size * 8 < sit_blk_cnt) { - f2fs_err(sbi, "Wrong bitmap size: sit: %u, sit_blk_cnt:%u", - sit_bitmap_size, sit_blk_cnt); - return 1; - } - cp_pack_start_sum = __start_sum_addr(sbi); cp_payload = __cp_payload(sbi); if (cp_pack_start_sum < cp_payload + 1 || -- Gitee From 6a7b626fb3c623b0bdf5c653d206ebc5f8e93408 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:53 +0800 Subject: [PATCH 0792/1421] Revert "f2fs: prevent kernel warning due to negative i_nlink from corrupted image" This reverts commit b240a8dfd15aa0c7056cf611c05d407b4dbbc514. --- fs/f2fs/namei.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 523009bc2732..4d6f0a6365fe 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -560,15 +560,6 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry) goto fail; } - if (unlikely(inode->i_nlink == 0)) { - f2fs_warn(F2FS_I_SB(inode), "%s: inode (ino=%lx) has zero i_nlink", - __func__, inode->i_ino); - err = -EFSCORRUPTED; - set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_FSCK); - f2fs_put_page(page, 0); - goto fail; - } - f2fs_balance_fs(sbi, true); f2fs_lock_op(sbi); -- Gitee From d085d223be387310914d88e0783a6dc4d588b814 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:53 +0800 Subject: [PATCH 0793/1421] Revert "f2fs: fix to do sanity check on ino and xnid" This reverts commit c3df92f7c2b427c67cbe2ed262c95cfb0c8dda51. --- fs/f2fs/inode.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index 21d3eabe95e0..06941705e893 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -285,12 +285,6 @@ static bool sanity_check_inode(struct inode *inode, struct page *node_page) return false; } - if (ino_of_node(node_page) == fi->i_xattr_nid) { - f2fs_warn(sbi, "%s: corrupted inode i_ino=%lx, xnid=%x, run fsck to fix.", - __func__, inode->i_ino, fi->i_xattr_nid); - return false; - } - if (f2fs_has_extra_attr(inode)) { if (!f2fs_sb_has_extra_attr(sbi)) { f2fs_warn(sbi, "%s: inode (ino=%lx) is with extra_attr, but extra_attr feature is off", -- Gitee From 66da4683f2a475c51dedc9cf1284507c8d42b25c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:53 +0800 Subject: [PATCH 0794/1421] Revert "Input: gpio-keys - fix possible concurrent access in gpio_keys_irq_timer()" This reverts commit 88a1bb525818a6f8f9d650a013519780c358e6ff. --- drivers/input/keyboard/gpio_keys.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index c5f4207fddce..2e7c2c046e67 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -455,8 +455,6 @@ static enum hrtimer_restart gpio_keys_irq_timer(struct hrtimer *t) release_timer); struct input_dev *input = bdata->input; - guard(spinlock_irqsave)(&bdata->lock); - if (bdata->key_pressed) { input_report_key(input, *bdata->code, 0); input_sync(input); -- Gitee From cb113aba2a725b43951647fdeb902e0944416105 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:53 +0800 Subject: [PATCH 0795/1421] Revert "Input: ims-pcu - check record size in ims_pcu_flash_firmware()" This reverts commit 8a56bdb81153966537f01177512307698bcd6f0d. --- drivers/input/misc/ims-pcu.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c index 5cfe9b56978d..180d90e46061 100644 --- a/drivers/input/misc/ims-pcu.c +++ b/drivers/input/misc/ims-pcu.c @@ -845,12 +845,6 @@ static int ims_pcu_flash_firmware(struct ims_pcu *pcu, addr = be32_to_cpu(rec->addr) / 2; len = be16_to_cpu(rec->len); - if (len > sizeof(pcu->cmd_buf) - 1 - sizeof(*fragment)) { - dev_err(pcu->dev, - "Invalid record length in firmware: %d\n", len); - return -EINVAL; - } - fragment = (void *)&pcu->cmd_buf[1]; put_unaligned_le32(addr, &fragment->addr); fragment->len = len; -- Gitee From c9d491ce274b05fda53d212f9294907c90c61c78 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:53 +0800 Subject: [PATCH 0796/1421] Revert "ext4: only dirty folios when data journaling regular files" This reverts commit 18ffab45b2d81140b37dd7eb1d8e42c142b0c811. --- fs/ext4/inode.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 9694ef6b996e..aff82042e3f8 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1011,12 +1011,7 @@ int ext4_walk_page_buffers(handle_t *handle, struct inode *inode, */ static int ext4_dirty_journalled_data(handle_t *handle, struct buffer_head *bh) { - struct folio *folio = bh->b_folio; - struct inode *inode = folio->mapping->host; - - /* only regular files have a_ops */ - if (S_ISREG(inode->i_mode)) - folio_mark_dirty(folio); + folio_mark_dirty(bh->b_folio); return ext4_handle_dirty_metadata(handle, NULL, bh); } -- Gitee From 827c0f56e819d0e939a437f8f12785512709074f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:54 +0800 Subject: [PATCH 0797/1421] Revert "ext4: ensure i_size is smaller than maxbytes" This reverts commit 94265fde69013afc6e817333c5dafd1377a55415. --- fs/ext4/inode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index aff82042e3f8..86245e27be18 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4939,8 +4939,7 @@ struct inode *__ext4_iget(struct super_block *sb, unsigned long ino, ei->i_file_acl |= ((__u64)le16_to_cpu(raw_inode->i_file_acl_high)) << 32; inode->i_size = ext4_isize(sb, raw_inode); - size = i_size_read(inode); - if (size < 0 || size > ext4_get_maxbytes(inode)) { + if ((size = i_size_read(inode)) < 0) { ext4_error_inode(inode, function, line, 0, "iget: bad i_size value: %lld", size); ret = -EFSCORRUPTED; -- Gitee From 3e18f33df2e721ef5d320eec4ea76d58dbe66c14 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:54 +0800 Subject: [PATCH 0798/1421] Revert "ext4: factor out ext4_get_maxbytes()" This reverts commit 1d285d1d7ccb6a607573ffc39484e4ea377a8d53. --- fs/ext4/ext4.h | 7 ------- fs/ext4/extents.c | 7 ++++++- fs/ext4/file.c | 7 ++++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index fe46e8863d67..a79952481380 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -3352,13 +3352,6 @@ static inline unsigned int ext4_flex_bg_size(struct ext4_sb_info *sbi) return 1 << sbi->s_log_groups_per_flex; } -static inline loff_t ext4_get_maxbytes(struct inode *inode) -{ - if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) - return inode->i_sb->s_maxbytes; - return EXT4_SB(inode->i_sb)->s_bitmap_maxbytes; -} - #define ext4_std_error(sb, errno) \ do { \ if ((errno)) \ diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 3d8cdf553415..1ad181f6f396 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4971,7 +4971,12 @@ static const struct iomap_ops ext4_iomap_xattr_ops = { static int ext4_fiemap_check_ranges(struct inode *inode, u64 start, u64 *len) { - u64 maxbytes = ext4_get_maxbytes(inode); + u64 maxbytes; + + if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) + maxbytes = inode->i_sb->s_maxbytes; + else + maxbytes = EXT4_SB(inode->i_sb)->s_bitmap_maxbytes; if (*len == 0) return -EINVAL; diff --git a/fs/ext4/file.c b/fs/ext4/file.c index b37e0e4a71bf..c71af675e310 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -898,7 +898,12 @@ static int ext4_file_open(struct inode *inode, struct file *filp) loff_t ext4_llseek(struct file *file, loff_t offset, int whence) { struct inode *inode = file->f_mapping->host; - loff_t maxbytes = ext4_get_maxbytes(inode); + loff_t maxbytes; + + if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) + maxbytes = EXT4_SB(inode->i_sb)->s_bitmap_maxbytes; + else + maxbytes = inode->i_sb->s_maxbytes; switch (whence) { default: -- Gitee From 83c01e91cce07e45c7312b6637873eb9ee3cfbf2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:54 +0800 Subject: [PATCH 0799/1421] Revert "ext4: fix calculation of credits for extent tree modification" This reverts commit 24690b09e9c269efe4e2c22a3994633f67c9a6bb. --- fs/ext4/extents.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 1ad181f6f396..057bedd0a505 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -2374,19 +2374,18 @@ int ext4_ext_calc_credits_for_single_extent(struct inode *inode, int nrblocks, int ext4_ext_index_trans_blocks(struct inode *inode, int extents) { int index; + int depth; /* If we are converting the inline data, only one is needed here. */ if (ext4_has_inline_data(inode)) return 1; - /* - * Extent tree can change between the time we estimate credits and - * the time we actually modify the tree. Assume the worst case. - */ + depth = ext_depth(inode); + if (extents <= 1) - index = EXT4_MAX_EXTENT_DEPTH * 2; + index = depth * 2; else - index = EXT4_MAX_EXTENT_DEPTH * 3; + index = depth * 3; return index; } -- Gitee From 204cf0f74c332017b34f3de0fe7214553f385740 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:54 +0800 Subject: [PATCH 0800/1421] Revert "ext4: inline: fix len overflow in ext4_prepare_inline_data" This reverts commit a48a22bc39763ad897abe9bbe117cc18cd17c12f. --- fs/ext4/inline.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index c85647a0ba09..3f363276ddd3 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c @@ -392,7 +392,7 @@ static int ext4_update_inline_data(handle_t *handle, struct inode *inode, } static int ext4_prepare_inline_data(handle_t *handle, struct inode *inode, - loff_t len) + unsigned int len) { int ret, size, no_expand; struct ext4_inode_info *ei = EXT4_I(inode); -- Gitee From 7283b6020f88a7501435cb9af0abc812e20424e3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:55 +0800 Subject: [PATCH 0801/1421] Revert "bus: fsl-mc: fix GET/SET_TAILDROP command ids" This reverts commit 71bb8111b92c707855760b469ea624d005796d0a. --- drivers/bus/fsl-mc/fsl-mc-uapi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/bus/fsl-mc/fsl-mc-uapi.c b/drivers/bus/fsl-mc/fsl-mc-uapi.c index a376ec661653..9c4c1395fcdb 100644 --- a/drivers/bus/fsl-mc/fsl-mc-uapi.c +++ b/drivers/bus/fsl-mc/fsl-mc-uapi.c @@ -275,13 +275,13 @@ static struct fsl_mc_cmd_desc fsl_mc_accepted_cmds[] = { .size = 8, }, [DPSW_GET_TAILDROP] = { - .cmdid_value = 0x0A90, + .cmdid_value = 0x0A80, .cmdid_mask = 0xFFF0, .token = true, .size = 14, }, [DPSW_SET_TAILDROP] = { - .cmdid_value = 0x0A80, + .cmdid_value = 0x0A90, .cmdid_mask = 0xFFF0, .token = true, .size = 24, -- Gitee From 29eb318a2694bc68a5e12206763abfccf9f474b1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:55 +0800 Subject: [PATCH 0802/1421] Revert "bus: fsl-mc: do not add a device-link for the UAPI used DPMCP device" This reverts commit 0a56ca069bd23609e4091e9a45cfe1a1f5e59710. --- drivers/bus/fsl-mc/mc-io.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/bus/fsl-mc/mc-io.c b/drivers/bus/fsl-mc/mc-io.c index 8b7a34f4db94..95b10a6cf307 100644 --- a/drivers/bus/fsl-mc/mc-io.c +++ b/drivers/bus/fsl-mc/mc-io.c @@ -214,19 +214,12 @@ int __must_check fsl_mc_portal_allocate(struct fsl_mc_device *mc_dev, if (error < 0) goto error_cleanup_resource; - /* If the DPRC device itself tries to allocate a portal (usually for - * UAPI interaction), don't add a device link between them since the - * DPMCP device is an actual child device of the DPRC and a reverse - * dependency is not allowed. - */ - if (mc_dev != mc_bus_dev) { - dpmcp_dev->consumer_link = device_link_add(&mc_dev->dev, - &dpmcp_dev->dev, - DL_FLAG_AUTOREMOVE_CONSUMER); - if (!dpmcp_dev->consumer_link) { - error = -EINVAL; - goto error_cleanup_mc_io; - } + dpmcp_dev->consumer_link = device_link_add(&mc_dev->dev, + &dpmcp_dev->dev, + DL_FLAG_AUTOREMOVE_CONSUMER); + if (!dpmcp_dev->consumer_link) { + error = -EINVAL; + goto error_cleanup_mc_io; } *new_mc_io = mc_io; -- Gitee From 5153fd71d785b4b648a23e3d27a296a61fa0a30b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:55 +0800 Subject: [PATCH 0803/1421] Revert "ata: pata_via: Force PIO for ATAPI devices on VT6415/VT6330" This reverts commit ef8d22d2cc2d072eee79f3e257c9612174723fcb. --- drivers/ata/pata_via.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index d82728a01832..696b99720dcb 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c @@ -368,8 +368,7 @@ static unsigned int via_mode_filter(struct ata_device *dev, unsigned int mask) } if (dev->class == ATA_DEV_ATAPI && - (dmi_check_system(no_atapi_dma_dmi_table) || - config->id == PCI_DEVICE_ID_VIA_6415)) { + dmi_check_system(no_atapi_dma_dmi_table)) { ata_dev_warn(dev, "controller locks up on ATAPI DMA, forcing PIO\n"); mask &= ATA_MASK_PIO; } -- Gitee From 4093470edaab87635f2a099151093617a88e5e1f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:55 +0800 Subject: [PATCH 0804/1421] Revert "cgroup,freezer: fix incomplete freezing when attaching tasks" This reverts commit 4f4840a7733ca0cda0a99393ed5b236584606d0e. --- kernel/cgroup/legacy_freezer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c index a3e13e6d5ee4..66d1708042a7 100644 --- a/kernel/cgroup/legacy_freezer.c +++ b/kernel/cgroup/legacy_freezer.c @@ -189,12 +189,13 @@ static void freezer_attach(struct cgroup_taskset *tset) if (!(freezer->state & CGROUP_FREEZING)) { __thaw_task(task); } else { + freeze_task(task); + /* clear FROZEN and propagate upwards */ while (freezer && (freezer->state & CGROUP_FROZEN)) { freezer->state &= ~CGROUP_FROZEN; freezer = parent_freezer(freezer); } - freeze_task(task); } } -- Gitee From 07ba55c8a15bc0b62ff02b949a6a029c1519ce58 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:55 +0800 Subject: [PATCH 0805/1421] Revert "ceph: set superblock s_magic for IMA fsmagic matching" This reverts commit a031eaff32bccee05916bbf8216e33292996ed7a. --- fs/ceph/super.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 84e855e8929b..29026ba4f022 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -1220,7 +1220,6 @@ static int ceph_set_super(struct super_block *s, struct fs_context *fc) s->s_time_min = 0; s->s_time_max = U32_MAX; s->s_flags |= SB_NODIRATIME | SB_NOATIME; - s->s_magic = CEPH_SUPER_MAGIC; ceph_fscrypt_set_ops(s); -- Gitee From 7deac9efae88f9243c882362c9be155b0f50f4e9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:56 +0800 Subject: [PATCH 0806/1421] Revert "can: tcan4x5x: fix power regulator retrieval during probe" This reverts commit 74a23ac25c288f54b885fd5e923d3e280be81145. --- drivers/net/can/m_can/tcan4x5x-core.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/tcan4x5x-core.c index 4d440ecfc211..ae8c42f5debd 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -385,11 +385,10 @@ static int tcan4x5x_can_probe(struct spi_device *spi) priv = cdev_to_priv(mcan_class); priv->power = devm_regulator_get_optional(&spi->dev, "vsup"); - if (IS_ERR(priv->power)) { - if (PTR_ERR(priv->power) == -EPROBE_DEFER) { - ret = -EPROBE_DEFER; - goto out_m_can_class_free_dev; - } + if (PTR_ERR(priv->power) == -EPROBE_DEFER) { + ret = -EPROBE_DEFER; + goto out_m_can_class_free_dev; + } else { priv->power = NULL; } -- Gitee From 16d78a3481073757fca6a6f392059ffd3229eb4c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:56 +0800 Subject: [PATCH 0807/1421] Revert "bus: mhi: host: Fix conflict between power_up and SYSERR" This reverts commit c2fdecd71be75258886c367808a1e71b52e8c1bc. --- drivers/bus/mhi/host/pm.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/bus/mhi/host/pm.c b/drivers/bus/mhi/host/pm.c index e48bf44c785c..27f8a40f288c 100644 --- a/drivers/bus/mhi/host/pm.c +++ b/drivers/bus/mhi/host/pm.c @@ -586,7 +586,6 @@ static void mhi_pm_sys_error_transition(struct mhi_controller *mhi_cntrl) struct mhi_cmd *mhi_cmd; struct mhi_event_ctxt *er_ctxt; struct device *dev = &mhi_cntrl->mhi_dev->dev; - bool reset_device = false; int ret, i; dev_dbg(dev, "Transitioning from PM state: %s to: %s\n", @@ -615,23 +614,8 @@ static void mhi_pm_sys_error_transition(struct mhi_controller *mhi_cntrl) /* Wake up threads waiting for state transition */ wake_up_all(&mhi_cntrl->state_event); - if (MHI_REG_ACCESS_VALID(prev_state)) { - /* - * If the device is in PBL or SBL, it will only respond to - * RESET if the device is in SYSERR state. SYSERR might - * already be cleared at this point. - */ - enum mhi_state cur_state = mhi_get_mhi_state(mhi_cntrl); - enum mhi_ee_type cur_ee = mhi_get_exec_env(mhi_cntrl); - - if (cur_state == MHI_STATE_SYS_ERR) - reset_device = true; - else if (cur_ee != MHI_EE_PBL && cur_ee != MHI_EE_SBL) - reset_device = true; - } - /* Trigger MHI RESET so that the device will not access host memory */ - if (reset_device) { + if (MHI_REG_ACCESS_VALID(prev_state)) { u32 in_reset = -1; unsigned long timeout = msecs_to_jiffies(mhi_cntrl->timeout_ms); -- Gitee From 67f7db2a4a59b8dad4bf4841a9b5ce77bd6396df Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:56 +0800 Subject: [PATCH 0808/1421] Revert "bus: mhi: ep: Update read pointer only after buffer is written" This reverts commit 7dc8030c33764488c97ace88d26857626dc90f2b. --- drivers/bus/mhi/ep/ring.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/bus/mhi/ep/ring.c b/drivers/bus/mhi/ep/ring.c index fedf26392e8d..ba9f696d1aa8 100644 --- a/drivers/bus/mhi/ep/ring.c +++ b/drivers/bus/mhi/ep/ring.c @@ -131,23 +131,19 @@ int mhi_ep_ring_add_element(struct mhi_ep_ring *ring, struct mhi_ring_element *e } old_offset = ring->rd_offset; + mhi_ep_ring_inc_index(ring); dev_dbg(dev, "Adding an element to ring at offset (%zu)\n", ring->rd_offset); - buf_info.host_addr = ring->rbase + (old_offset * sizeof(*el)); - buf_info.dev_addr = el; - buf_info.size = sizeof(*el); - - ret = mhi_cntrl->write_sync(mhi_cntrl, &buf_info); - if (ret) - return ret; - - mhi_ep_ring_inc_index(ring); /* Update rp in ring context */ rp = cpu_to_le64(ring->rd_offset * sizeof(*el) + ring->rbase); memcpy_toio((void __iomem *) &ring->ring_ctx->generic.rp, &rp, sizeof(u64)); - return ret; + buf_info.host_addr = ring->rbase + (old_offset * sizeof(*el)); + buf_info.dev_addr = el; + buf_info.size = sizeof(*el); + + return mhi_cntrl->write_sync(mhi_cntrl, &buf_info); } void mhi_ep_ring_init(struct mhi_ep_ring *ring, enum mhi_ep_ring_type type, u32 id) -- Gitee From d20484198bb4aec2faa9cddef5846f27dc7b6402 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:56 +0800 Subject: [PATCH 0809/1421] Revert "ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4" This reverts commit 23ec05fa8d61bd49738cc412d267360138989f46. --- arch/arm/mach-omap2/pmic-cpcap.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/arch/arm/mach-omap2/pmic-cpcap.c b/arch/arm/mach-omap2/pmic-cpcap.c index 527cf4b7e378..668dc84fd31e 100644 --- a/arch/arm/mach-omap2/pmic-cpcap.c +++ b/arch/arm/mach-omap2/pmic-cpcap.c @@ -264,11 +264,7 @@ int __init omap4_cpcap_init(void) static int __init cpcap_late_init(void) { - if (!of_find_compatible_node(NULL, NULL, "motorola,cpcap")) - return 0; - - if (soc_is_omap443x() || soc_is_omap446x() || soc_is_omap447x()) - omap4_vc_set_pmic_signaling(PWRDM_POWER_RET); + omap4_vc_set_pmic_signaling(PWRDM_POWER_RET); return 0; } -- Gitee From 5d660d819176cd9b6a1a1dccbe75215ebecae808 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:56 +0800 Subject: [PATCH 0810/1421] Revert "ARM: 9447/1: arm/memremap: fix arch_memremap_can_ram_remap()" This reverts commit 3a12d018bc8bade4b9fbe53b66013e9479e0b0ef. --- arch/arm/mm/ioremap.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 7801c5bb775d..1c5aeba9bc27 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c @@ -515,5 +515,7 @@ void __init early_ioremap_init(void) bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size, unsigned long flags) { - return memblock_is_map_memory(offset); + unsigned long pfn = PHYS_PFN(offset); + + return memblock_is_map_memory(pfn); } -- Gitee From 264445117aa89c8c5fb73fe31082294f3de6fa63 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:57 +0800 Subject: [PATCH 0811/1421] Revert "arm64/mm: Close theoretical race where stale TLB entry remains valid" This reverts commit a673037035e9d33487baeee4ab4a30705819176c. --- arch/arm64/include/asm/tlbflush.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h index 6eeb56b6fac1..d37db2f7a54c 100644 --- a/arch/arm64/include/asm/tlbflush.h +++ b/arch/arm64/include/asm/tlbflush.h @@ -311,14 +311,13 @@ static inline void arch_tlbbatch_add_pending(struct arch_tlbflush_unmap_batch *b } /* - * If mprotect/munmap/etc occurs during TLB batched flushing, we need to ensure - * all the previously issued TLBIs targeting mm have completed. But since we - * can be executing on a remote CPU, a DSB cannot guarantee this like it can - * for arch_tlbbatch_flush(). Our only option is to flush the entire mm. + * If mprotect/munmap/etc occurs during TLB batched flushing, we need to + * synchronise all the TLBI issued with a DSB to avoid the race mentioned in + * flush_tlb_batched_pending(). */ static inline void arch_flush_tlb_batched_pending(struct mm_struct *mm) { - flush_tlb_mm(mm); + dsb(ish); } /* -- Gitee From 21c5caac939850a526142f8fa10c1db3745266f0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:57 +0800 Subject: [PATCH 0812/1421] Revert "media: uvcvideo: Fix deferred probing error" This reverts commit e72db706ac76b0ae93bbfb3bd171acd384e826b0. --- drivers/media/usb/uvc/uvc_driver.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 76f18557f37b..02cfa12b9cb9 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -2217,16 +2217,13 @@ static int uvc_probe(struct usb_interface *intf, #endif /* Parse the Video Class control descriptor. */ - ret = uvc_parse_control(dev); - if (ret < 0) { - ret = -ENODEV; + if (uvc_parse_control(dev) < 0) { uvc_dbg(dev, PROBE, "Unable to parse UVC descriptors\n"); goto error; } /* Parse the associated GPIOs. */ - ret = uvc_gpio_parse(dev); - if (ret < 0) { + if (uvc_gpio_parse(dev) < 0) { uvc_dbg(dev, PROBE, "Unable to parse UVC GPIOs\n"); goto error; } @@ -2252,32 +2249,24 @@ static int uvc_probe(struct usb_interface *intf, } /* Register the V4L2 device. */ - ret = v4l2_device_register(&intf->dev, &dev->vdev); - if (ret < 0) + if (v4l2_device_register(&intf->dev, &dev->vdev) < 0) goto error; /* Scan the device for video chains. */ - if (uvc_scan_device(dev) < 0) { - ret = -ENODEV; + if (uvc_scan_device(dev) < 0) goto error; - } /* Initialize controls. */ - if (uvc_ctrl_init_device(dev) < 0) { - ret = -ENODEV; + if (uvc_ctrl_init_device(dev) < 0) goto error; - } /* Register video device nodes. */ - if (uvc_register_chains(dev) < 0) { - ret = -ENODEV; + if (uvc_register_chains(dev) < 0) goto error; - } #ifdef CONFIG_MEDIA_CONTROLLER /* Register the media device node */ - ret = media_device_register(&dev->mdev); - if (ret < 0) + if (media_device_register(&dev->mdev) < 0) goto error; #endif /* Save our data pointer in the interface data. */ @@ -2311,7 +2300,7 @@ static int uvc_probe(struct usb_interface *intf, error: uvc_unregister_video(dev); kref_put(&dev->ref, uvc_delete); - return ret; + return -ENODEV; } static void uvc_disconnect(struct usb_interface *intf) -- Gitee From e7c1bf0703b8152b10e846e2411685b723926dff Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:57 +0800 Subject: [PATCH 0813/1421] Revert "media: uvcvideo: Send control events for partial succeeds" This reverts commit 2fb8a1b58c00857a7c8f062a44346c1d8f565792. --- drivers/media/usb/uvc/uvc_ctrl.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 59e21746f550..36acc7eeff08 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1642,9 +1642,7 @@ static bool uvc_ctrl_xctrls_has_control(const struct v4l2_ext_control *xctrls, } static void uvc_ctrl_send_events(struct uvc_fh *handle, - struct uvc_entity *entity, - const struct v4l2_ext_control *xctrls, - unsigned int xctrls_count) + const struct v4l2_ext_control *xctrls, unsigned int xctrls_count) { struct uvc_control_mapping *mapping; struct uvc_control *ctrl; @@ -1655,9 +1653,6 @@ static void uvc_ctrl_send_events(struct uvc_fh *handle, u32 changes = V4L2_EVENT_CTRL_CH_VALUE; ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping); - if (ctrl->entity != entity) - continue; - if (ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) /* Notification will be sent from an Interrupt event. */ continue; @@ -1896,12 +1891,11 @@ int __uvc_ctrl_commit(struct uvc_fh *handle, int rollback, uvc_ctrl_find_ctrl_idx(entity, ctrls, err_ctrl); goto done; - } else if (ret > 0 && !rollback) { - uvc_ctrl_send_events(handle, entity, - ctrls->controls, ctrls->count); } } + if (!rollback) + uvc_ctrl_send_events(handle, ctrls->controls, ctrls->count); ret = 0; done: mutex_unlock(&chain->ctrl_mutex); -- Gitee From 6afb9187bd052d375dc617c1a51a5de67845893d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:57 +0800 Subject: [PATCH 0814/1421] Revert "media: uvcvideo: Return the number of processed controls" This reverts commit 7e9bcbf508d1a2727ef7afc636be9d9626a37e91. --- drivers/media/usb/uvc/uvc_ctrl.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 36acc7eeff08..5926a9dfb0b1 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1783,17 +1783,12 @@ int uvc_ctrl_begin(struct uvc_video_chain *chain) return mutex_lock_interruptible(&chain->ctrl_mutex) ? -ERESTARTSYS : 0; } -/* - * Returns the number of uvc controls that have been correctly set, or a - * negative number if there has been an error. - */ static int uvc_ctrl_commit_entity(struct uvc_device *dev, struct uvc_fh *handle, struct uvc_entity *entity, int rollback, struct uvc_control **err_ctrl) { - unsigned int processed_ctrls = 0; struct uvc_control *ctrl; unsigned int i; int ret; @@ -1828,9 +1823,6 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev, else ret = 0; - if (!ret) - processed_ctrls++; - if (rollback || ret < 0) memcpy(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP), @@ -1849,7 +1841,7 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev, uvc_ctrl_set_handle(handle, ctrl, handle); } - return processed_ctrls; + return 0; } static int uvc_ctrl_find_ctrl_idx(struct uvc_entity *entity, @@ -1896,7 +1888,6 @@ int __uvc_ctrl_commit(struct uvc_fh *handle, int rollback, if (!rollback) uvc_ctrl_send_events(handle, ctrls->controls, ctrls->count); - ret = 0; done: mutex_unlock(&chain->ctrl_mutex); return ret; -- Gitee From b052fa288e2dc456d57bc2add23b194318763d33 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:57 +0800 Subject: [PATCH 0815/1421] Revert "media: imx-jpeg: Cleanup after an allocation error" This reverts commit 2864ccb2bfdc76bf21717c3fb2953efc8d5a363e. --- drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index dc3e0d292810..655d8dbe2c1a 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -820,7 +820,6 @@ static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) return true; err: dev_err(jpeg->dev, "Could not allocate descriptors for slot %d", jpeg->slot_data.slot); - mxc_jpeg_free_slot_data(jpeg); return false; } -- Gitee From f926846ab227cf37f179f3c16fe22d788c3cc380 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:58 +0800 Subject: [PATCH 0816/1421] Revert "media: imx-jpeg: Reset slot data pointers when freed" This reverts commit 428e2dce0c35e1b5aca8c8614aefb42a9b591166. --- drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index 655d8dbe2c1a..f22ca3cc63fe 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -758,22 +758,16 @@ static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), jpeg->slot_data.desc, jpeg->slot_data.desc_handle); - jpeg->slot_data.desc = NULL; - jpeg->slot_data.desc_handle = 0; /* free descriptor for encoder configuration phase / decoder DHT */ dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), jpeg->slot_data.cfg_desc, jpeg->slot_data.cfg_desc_handle); - jpeg->slot_data.cfg_desc_handle = 0; - jpeg->slot_data.cfg_desc = NULL; /* free configuration stream */ dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, jpeg->slot_data.cfg_stream_vaddr, jpeg->slot_data.cfg_stream_handle); - jpeg->slot_data.cfg_stream_vaddr = NULL; - jpeg->slot_data.cfg_stream_handle = 0; jpeg->slot_data.used = false; } -- Gitee From ece9d5f743c7d5970e0308c58c5c09a2dd4098df Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:58 +0800 Subject: [PATCH 0817/1421] Revert "media: imx-jpeg: Move mxc_jpeg_free_slot_data() ahead" This reverts commit b00f845b1fb3229d05a3d254232899b27ca4efea. --- .../media/platform/nxp/imx-jpeg/mxc-jpeg.c | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index f22ca3cc63fe..687f7cb8c4b9 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -752,26 +752,6 @@ static int mxc_get_free_slot(struct mxc_jpeg_slot_data *slot_data) return -1; } -static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) -{ - /* free descriptor for decoding/encoding phase */ - dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), - jpeg->slot_data.desc, - jpeg->slot_data.desc_handle); - - /* free descriptor for encoder configuration phase / decoder DHT */ - dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), - jpeg->slot_data.cfg_desc, - jpeg->slot_data.cfg_desc_handle); - - /* free configuration stream */ - dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, - jpeg->slot_data.cfg_stream_vaddr, - jpeg->slot_data.cfg_stream_handle); - - jpeg->slot_data.used = false; -} - static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) { struct mxc_jpeg_desc *desc; @@ -818,6 +798,26 @@ static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) return false; } +static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) +{ + /* free descriptor for decoding/encoding phase */ + dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), + jpeg->slot_data.desc, + jpeg->slot_data.desc_handle); + + /* free descriptor for encoder configuration phase / decoder DHT */ + dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), + jpeg->slot_data.cfg_desc, + jpeg->slot_data.cfg_desc_handle); + + /* free configuration stream */ + dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, + jpeg->slot_data.cfg_stream_vaddr, + jpeg->slot_data.cfg_stream_handle); + + jpeg->slot_data.used = false; +} + static void mxc_jpeg_check_and_set_last_buffer(struct mxc_jpeg_ctx *ctx, struct vb2_v4l2_buffer *src_buf, struct vb2_v4l2_buffer *dst_buf) -- Gitee From f62beb21f0cf971e08cd0fb6976ba89fa38d49d9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:58 +0800 Subject: [PATCH 0818/1421] Revert "media: imx-jpeg: Drop the first error frames" This reverts commit 98f62dd280873e20c2d94c04e7380abd710ae97e. --- drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index 687f7cb8c4b9..092d83b7e795 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -1913,19 +1913,9 @@ static void mxc_jpeg_buf_queue(struct vb2_buffer *vb) jpeg_src_buf = vb2_to_mxc_buf(vb); jpeg_src_buf->jpeg_parse_error = false; ret = mxc_jpeg_parse(ctx, vb); - if (ret) { + if (ret) jpeg_src_buf->jpeg_parse_error = true; - /* - * if the capture queue is not setup, the device_run() won't be scheduled, - * need to drop the error buffer, so that the decoding can continue - */ - if (!vb2_is_streaming(v4l2_m2m_get_dst_vq(ctx->fh.m2m_ctx))) { - v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR); - return; - } - } - end: v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf); } -- Gitee From 2309ff3f89fdf449b288a729846e672482e89bfb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:58 +0800 Subject: [PATCH 0819/1421] Revert "media: vivid: Change the siize of the composing" This reverts commit 390cdccc4fae12c842f26e55951c7c06d7b7c108. --- drivers/media/test-drivers/vivid/vivid-vid-cap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/test-drivers/vivid/vivid-vid-cap.c b/drivers/media/test-drivers/vivid/vivid-vid-cap.c index 0ab47fb8696b..9443dbb04699 100644 --- a/drivers/media/test-drivers/vivid/vivid-vid-cap.c +++ b/drivers/media/test-drivers/vivid/vivid-vid-cap.c @@ -954,8 +954,8 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection if (dev->has_compose_cap) { v4l2_rect_set_min_size(compose, &min_rect); v4l2_rect_set_max_size(compose, &max_rect); + v4l2_rect_map_inside(compose, &fmt); } - v4l2_rect_map_inside(compose, &fmt); dev->fmt_cap_rect = fmt; tpg_s_buf_height(&dev->tpg, fmt.height); } else if (dev->has_compose_cap) { -- Gitee From ea2a9020152ec3a6f6bafab3e933e76fae401b08 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:58 +0800 Subject: [PATCH 0820/1421] Revert "media: vidtv: Terminating the subsequent process of initialization failure" This reverts commit dc61981b53b3540a87b16d63020a1bff00293c8b. --- drivers/media/test-drivers/vidtv/vidtv_channel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/test-drivers/vidtv/vidtv_channel.c b/drivers/media/test-drivers/vidtv/vidtv_channel.c index f3023e91b3eb..7838e6272712 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_channel.c +++ b/drivers/media/test-drivers/vidtv/vidtv_channel.c @@ -497,7 +497,7 @@ int vidtv_channel_si_init(struct vidtv_mux *m) vidtv_psi_sdt_table_destroy(m->si.sdt); free_pat: vidtv_psi_pat_table_destroy(m->si.pat); - return -EINVAL; + return 0; } void vidtv_channel_si_destroy(struct vidtv_mux *m) -- Gitee From 1f73040ab42a4ee74f5acceede7214d4b6c1439b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:59 +0800 Subject: [PATCH 0821/1421] Revert "media: videobuf2: use sgtable-based scatterlist wrappers" This reverts commit b32c761e047ac2ef41c38ca123c430641cc9b3e9. --- drivers/media/common/videobuf2/videobuf2-dma-sg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/common/videobuf2/videobuf2-dma-sg.c b/drivers/media/common/videobuf2/videobuf2-dma-sg.c index a5aa6a2a028c..6975a71d740f 100644 --- a/drivers/media/common/videobuf2/videobuf2-dma-sg.c +++ b/drivers/media/common/videobuf2/videobuf2-dma-sg.c @@ -469,7 +469,7 @@ vb2_dma_sg_dmabuf_ops_begin_cpu_access(struct dma_buf *dbuf, struct vb2_dma_sg_buf *buf = dbuf->priv; struct sg_table *sgt = buf->dma_sgt; - dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir); + dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); return 0; } @@ -480,7 +480,7 @@ vb2_dma_sg_dmabuf_ops_end_cpu_access(struct dma_buf *dbuf, struct vb2_dma_sg_buf *buf = dbuf->priv; struct sg_table *sgt = buf->dma_sgt; - dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir); + dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); return 0; } -- Gitee From 40b6ab637843fad8c13bdfa7b89f73661fc1c23b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:59 +0800 Subject: [PATCH 0822/1421] Revert "media: venus: Fix probe error handling" This reverts commit 34674b067773c5e964aa2fc1c521ded1669c100a. --- drivers/media/platform/qcom/venus/core.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c index 47ce3365451d..b570eb8c3756 100644 --- a/drivers/media/platform/qcom/venus/core.c +++ b/drivers/media/platform/qcom/venus/core.c @@ -348,7 +348,7 @@ static int venus_probe(struct platform_device *pdev) ret = v4l2_device_register(dev, &core->v4l2_dev); if (ret) - goto err_hfi_destroy; + goto err_core_deinit; platform_set_drvdata(pdev, core); @@ -380,24 +380,24 @@ static int venus_probe(struct platform_device *pdev) ret = venus_enumerate_codecs(core, VIDC_SESSION_TYPE_DEC); if (ret) - goto err_core_deinit; + goto err_venus_shutdown; ret = venus_enumerate_codecs(core, VIDC_SESSION_TYPE_ENC); if (ret) - goto err_core_deinit; + goto err_venus_shutdown; ret = pm_runtime_put_sync(dev); if (ret) { pm_runtime_get_noresume(dev); - goto err_core_deinit; + goto err_dev_unregister; } venus_dbgfs_init(core); return 0; -err_core_deinit: - hfi_core_deinit(core, false); +err_dev_unregister: + v4l2_device_unregister(&core->v4l2_dev); err_venus_shutdown: venus_shutdown(core); err_firmware_deinit: @@ -408,9 +408,9 @@ static int venus_probe(struct platform_device *pdev) pm_runtime_put_noidle(dev); pm_runtime_disable(dev); pm_runtime_set_suspended(dev); - v4l2_device_unregister(&core->v4l2_dev); -err_hfi_destroy: hfi_destroy(core); +err_core_deinit: + hfi_core_deinit(core, false); err_core_put: if (core->pm_ops->core_put) core->pm_ops->core_put(core); -- Gitee From 4b028651ba775f8b8389bc4e0718b4549e21befb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:59 +0800 Subject: [PATCH 0823/1421] Revert "media: v4l2-dev: fix error handling in __video_register_device()" This reverts commit 3a3a926fe1236157a5ce045069785d45918615eb. --- drivers/media/v4l2-core/v4l2-dev.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index c4d3d110c500..77bbf276ae89 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c @@ -1033,25 +1033,25 @@ int __video_register_device(struct video_device *vdev, vdev->dev.class = &video_class; vdev->dev.devt = MKDEV(VIDEO_MAJOR, vdev->minor); vdev->dev.parent = vdev->dev_parent; - vdev->dev.release = v4l2_device_release; dev_set_name(&vdev->dev, "%s%d", name_base, vdev->num); - - /* Increase v4l2_device refcount */ - v4l2_device_get(vdev->v4l2_dev); - mutex_lock(&videodev_lock); ret = device_register(&vdev->dev); if (ret < 0) { mutex_unlock(&videodev_lock); pr_err("%s: device_register failed\n", __func__); - put_device(&vdev->dev); - return ret; + goto cleanup; } + /* Register the release callback that will be called when the last + reference to the device goes away. */ + vdev->dev.release = v4l2_device_release; if (nr != -1 && nr != vdev->num && warn_if_nr_in_use) pr_warn("%s: requested %s%d, got %s\n", __func__, name_base, nr, video_device_node_name(vdev)); + /* Increase v4l2_device refcount */ + v4l2_device_get(vdev->v4l2_dev); + /* Part 5: Register the entity. */ ret = video_register_media_controller(vdev); -- Gitee From 33160502098b848d296339217fd328ca7d6e7b9b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:37:59 +0800 Subject: [PATCH 0824/1421] Revert "media: omap3isp: use sgtable-based scatterlist wrappers" This reverts commit 2ad2cf1f60df9145cee68b4d490ffa696303cab0. --- drivers/media/platform/ti/omap3isp/ispccdc.c | 8 ++++---- drivers/media/platform/ti/omap3isp/ispstat.c | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/ti/omap3isp/ispccdc.c b/drivers/media/platform/ti/omap3isp/ispccdc.c index 6eb387ea1dae..2fe42aa91800 100644 --- a/drivers/media/platform/ti/omap3isp/ispccdc.c +++ b/drivers/media/platform/ti/omap3isp/ispccdc.c @@ -446,8 +446,8 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc, if (ret < 0) goto done; - dma_sync_sgtable_for_cpu(isp->dev, &req->table.sgt, - DMA_TO_DEVICE); + dma_sync_sg_for_cpu(isp->dev, req->table.sgt.sgl, + req->table.sgt.nents, DMA_TO_DEVICE); if (copy_from_user(req->table.addr, config->lsc, req->config.size)) { @@ -455,8 +455,8 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc, goto done; } - dma_sync_sgtable_for_device(isp->dev, &req->table.sgt, - DMA_TO_DEVICE); + dma_sync_sg_for_device(isp->dev, req->table.sgt.sgl, + req->table.sgt.nents, DMA_TO_DEVICE); } spin_lock_irqsave(&ccdc->lsc.req_lock, flags); diff --git a/drivers/media/platform/ti/omap3isp/ispstat.c b/drivers/media/platform/ti/omap3isp/ispstat.c index dc496ca9748a..68cf68dbcace 100644 --- a/drivers/media/platform/ti/omap3isp/ispstat.c +++ b/drivers/media/platform/ti/omap3isp/ispstat.c @@ -161,7 +161,8 @@ static void isp_stat_buf_sync_for_device(struct ispstat *stat, if (ISP_STAT_USES_DMAENGINE(stat)) return; - dma_sync_sgtable_for_device(stat->isp->dev, &buf->sgt, DMA_FROM_DEVICE); + dma_sync_sg_for_device(stat->isp->dev, buf->sgt.sgl, + buf->sgt.nents, DMA_FROM_DEVICE); } static void isp_stat_buf_sync_for_cpu(struct ispstat *stat, @@ -170,7 +171,8 @@ static void isp_stat_buf_sync_for_cpu(struct ispstat *stat, if (ISP_STAT_USES_DMAENGINE(stat)) return; - dma_sync_sgtable_for_cpu(stat->isp->dev, &buf->sgt, DMA_FROM_DEVICE); + dma_sync_sg_for_cpu(stat->isp->dev, buf->sgt.sgl, + buf->sgt.nents, DMA_FROM_DEVICE); } static void isp_stat_buf_clear(struct ispstat *stat) -- Gitee From 9080440cc1990c353d6ec6b9684bb208510061bb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:00 +0800 Subject: [PATCH 0825/1421] Revert "media: mediatek: vcodec: Correct vsi_core framebuffer size" This reverts commit 467ec3c05bfabe8edbfa77761b662000d4f32583. --- .../mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c index bbf56016f70a..21836dd6ef85 100644 --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c @@ -821,7 +821,7 @@ static int vdec_hevc_slice_setup_core_buffer(struct vdec_hevc_slice_inst *inst, inst->vsi_core->fb.y.dma_addr = y_fb_dma; inst->vsi_core->fb.y.size = ctx->picinfo.fb_sz[0]; inst->vsi_core->fb.c.dma_addr = c_fb_dma; - inst->vsi_core->fb.c.size = ctx->picinfo.fb_sz[1]; + inst->vsi_core->fb.y.size = ctx->picinfo.fb_sz[1]; inst->vsi_core->dec.vdec_fb_va = (unsigned long)fb; -- Gitee From 632553145c2e098fe0b06b32a3fc4e2cf11b8563 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:00 +0800 Subject: [PATCH 0826/1421] Revert "media: gspca: Add error handling for stv06xx_read_sensor()" This reverts commit e4c3e9e7488772001e8cfaa41ee75f067a4195a7. --- drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c b/drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c index 303b055fefea..5a47dcbf1c8e 100644 --- a/drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c +++ b/drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c @@ -520,13 +520,12 @@ static int hdcs_init(struct sd *sd) static int hdcs_dump(struct sd *sd) { u16 reg, val; - int err = 0; pr_info("Dumping sensor registers:\n"); - for (reg = HDCS_IDENT; reg <= HDCS_ROWEXPH && !err; reg++) { - err = stv06xx_read_sensor(sd, reg, &val); + for (reg = HDCS_IDENT; reg <= HDCS_ROWEXPH; reg++) { + stv06xx_read_sensor(sd, reg, &val); pr_info("reg 0x%02x = 0x%02x\n", reg, val); } - return (err < 0) ? err : 0; + return 0; } -- Gitee From 9084e8c6ae4c7c23055915fe6364d37f6ab28dca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:00 +0800 Subject: [PATCH 0827/1421] Revert "media: davinci: vpif: Fix memory leak in probe error path" This reverts commit 82135119d67c0bc32e030af2070f48aa619f6945. --- drivers/media/platform/ti/davinci/vpif.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/media/platform/ti/davinci/vpif.c b/drivers/media/platform/ti/davinci/vpif.c index fa9679abf7a4..63cdfed37bc9 100644 --- a/drivers/media/platform/ti/davinci/vpif.c +++ b/drivers/media/platform/ti/davinci/vpif.c @@ -505,7 +505,7 @@ static int vpif_probe(struct platform_device *pdev) pdev_display = kzalloc(sizeof(*pdev_display), GFP_KERNEL); if (!pdev_display) { ret = -ENOMEM; - goto err_del_pdev_capture; + goto err_put_pdev_capture; } pdev_display->name = "vpif_display"; @@ -528,8 +528,6 @@ static int vpif_probe(struct platform_device *pdev) err_put_pdev_display: platform_device_put(pdev_display); -err_del_pdev_capture: - platform_device_del(pdev_capture); err_put_pdev_capture: platform_device_put(pdev_capture); err_put_rpm: -- Gitee From 2bc9c305646bf3f6a0dd570f9fadcc419cb7abb0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:00 +0800 Subject: [PATCH 0828/1421] Revert "media: cxusb: no longer judge rbuf when the write fails" This reverts commit 979e767362dceae9d166b0bf945f231787429283. --- drivers/media/usb/dvb-usb/cxusb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c index ce52c936cb93..1d98d3465e28 100644 --- a/drivers/media/usb/dvb-usb/cxusb.c +++ b/drivers/media/usb/dvb-usb/cxusb.c @@ -119,8 +119,9 @@ static void cxusb_gpio_tuner(struct dvb_usb_device *d, int onoff) o[0] = GPIO_TUNER; o[1] = onoff; + cxusb_ctrl_msg(d, CMD_GPIO_WRITE, o, 2, &i, 1); - if (!cxusb_ctrl_msg(d, CMD_GPIO_WRITE, o, 2, &i, 1) && i != 0x01) + if (i != 0x01) dev_info(&d->udev->dev, "gpio_write failed.\n"); st->gpio_write_state[GPIO_TUNER] = onoff; -- Gitee From ef6dec24a4ca29440522b757b384ff06c01a8072 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:00 +0800 Subject: [PATCH 0829/1421] Revert "media: ccs-pll: Check for too high VT PLL multiplier in dual PLL case" This reverts commit 205a72450c68f3e6bcbd3bc894644c922ce21ba2. --- drivers/media/i2c/ccs-pll.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/media/i2c/ccs-pll.c b/drivers/media/i2c/ccs-pll.c index 611c9823be85..fce3f0f18574 100644 --- a/drivers/media/i2c/ccs-pll.c +++ b/drivers/media/i2c/ccs-pll.c @@ -312,11 +312,6 @@ __ccs_pll_calculate_vt_tree(struct device *dev, dev_dbg(dev, "more_mul2: %u\n", more_mul); pll_fr->pll_multiplier = mul * more_mul; - if (pll_fr->pll_multiplier > lim_fr->max_pll_multiplier) { - dev_dbg(dev, "pll multiplier %u too high\n", - pll_fr->pll_multiplier); - return -EINVAL; - } if (pll_fr->pll_multiplier * pll_fr->pll_ip_clk_freq_hz > lim_fr->max_pll_op_clk_freq_hz) -- Gitee From 31ecee56d213277274a906885cd42e36624a0e2f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:01 +0800 Subject: [PATCH 0830/1421] Revert "media: ccs-pll: Correct the upper limit of maximum op_pre_pll_clk_div" This reverts commit 021efb835d67db42c8b6a2b1f30231085a518a9d. --- drivers/media/i2c/ccs-pll.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ccs-pll.c b/drivers/media/i2c/ccs-pll.c index fce3f0f18574..98ffbdf565f3 100644 --- a/drivers/media/i2c/ccs-pll.c +++ b/drivers/media/i2c/ccs-pll.c @@ -794,7 +794,7 @@ int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *lim, op_lim_fr->min_pre_pll_clk_div, op_lim_fr->max_pre_pll_clk_div); max_op_pre_pll_clk_div = min_t(u16, op_lim_fr->max_pre_pll_clk_div, - DIV_ROUND_UP(pll->ext_clk_freq_hz, + clk_div_even(pll->ext_clk_freq_hz / op_lim_fr->min_pll_ip_clk_freq_hz)); min_op_pre_pll_clk_div = max_t(u16, op_lim_fr->min_pre_pll_clk_div, -- Gitee From 0b48709ff760fb871fb34a70a373fd09d4438fbd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:01 +0800 Subject: [PATCH 0831/1421] Revert "media: ccs-pll: Start OP pre-PLL multiplier search from correct value" This reverts commit 9295a42c685cf268c1e7725a242d4d564d2f7b17. --- drivers/media/i2c/ccs-pll.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/media/i2c/ccs-pll.c b/drivers/media/i2c/ccs-pll.c index 98ffbdf565f3..7e5d87a7975f 100644 --- a/drivers/media/i2c/ccs-pll.c +++ b/drivers/media/i2c/ccs-pll.c @@ -817,8 +817,6 @@ int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *lim, one_or_more( DIV_ROUND_UP(op_lim_fr->max_pll_op_clk_freq_hz, pll->ext_clk_freq_hz)))); - if (!(pll->flags & CCS_PLL_FLAG_EXT_IP_PLL_DIVIDER)) - min_op_pre_pll_clk_div = clk_div_even(min_op_pre_pll_clk_div); dev_dbg(dev, "pll_op check: min / max op_pre_pll_clk_div: %u / %u\n", min_op_pre_pll_clk_div, max_op_pre_pll_clk_div); -- Gitee From 69f2301156fd0e4c5af286631d917506b1295ea4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:01 +0800 Subject: [PATCH 0832/1421] Revert "media: ccs-pll: Start VT pre-PLL multiplier search from correct value" This reverts commit 9e1a14cd4f49b2aaf26f370887dfe65347c3730f. --- drivers/media/i2c/ccs-pll.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/media/i2c/ccs-pll.c b/drivers/media/i2c/ccs-pll.c index 7e5d87a7975f..cf8858cb13d4 100644 --- a/drivers/media/i2c/ccs-pll.c +++ b/drivers/media/i2c/ccs-pll.c @@ -397,8 +397,6 @@ static int ccs_pll_calculate_vt_tree(struct device *dev, min_pre_pll_clk_div = max_t(u16, min_pre_pll_clk_div, pll->ext_clk_freq_hz / lim_fr->max_pll_ip_clk_freq_hz); - if (!(pll->flags & CCS_PLL_FLAG_EXT_IP_PLL_DIVIDER)) - min_pre_pll_clk_div = clk_div_even(min_pre_pll_clk_div); dev_dbg(dev, "vt min/max_pre_pll_clk_div: %u,%u\n", min_pre_pll_clk_div, max_pre_pll_clk_div); -- Gitee From 914e3217b4477573af8707e20386898c725880e2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:01 +0800 Subject: [PATCH 0833/1421] Revert "media: i2c: ds90ub913: Fix returned fmt from .set_fmt()" This reverts commit 6c3c2b8fa86f293e6a979dbf515351974b4a0c31. --- drivers/media/i2c/ds90ub913.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/ds90ub913.c b/drivers/media/i2c/ds90ub913.c index 6ec960d7914e..ae33d1ecf835 100644 --- a/drivers/media/i2c/ds90ub913.c +++ b/drivers/media/i2c/ds90ub913.c @@ -453,9 +453,9 @@ static int ub913_set_fmt(struct v4l2_subdev *sd, if (!fmt) return -EINVAL; - *fmt = format->format; + format->format.code = finfo->outcode; - fmt->code = finfo->outcode; + *fmt = format->format; return 0; } -- Gitee From 9481277908aecc5be4b8886e69f7a42d136adc89 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:01 +0800 Subject: [PATCH 0834/1421] Revert "media: nxp: imx8-isi: better handle the m2m usage_count" This reverts commit ac365f7d6b750ae3c0ae80c359b69b1bd9a26ee7. --- drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c index cd6c52e9d158..9745d6219a16 100644 --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c @@ -43,7 +43,6 @@ struct mxc_isi_m2m_ctx_queue_data { struct v4l2_pix_format_mplane format; const struct mxc_isi_format_info *info; u32 sequence; - bool streaming; }; struct mxc_isi_m2m_ctx { @@ -487,17 +486,14 @@ static int mxc_isi_m2m_streamon(struct file *file, void *fh, enum v4l2_buf_type type) { struct mxc_isi_m2m_ctx *ctx = to_isi_m2m_ctx(fh); - struct mxc_isi_m2m_ctx_queue_data *q = mxc_isi_m2m_ctx_qdata(ctx, type); const struct v4l2_pix_format_mplane *out_pix = &ctx->queues.out.format; const struct v4l2_pix_format_mplane *cap_pix = &ctx->queues.cap.format; const struct mxc_isi_format_info *cap_info = ctx->queues.cap.info; const struct mxc_isi_format_info *out_info = ctx->queues.out.info; struct mxc_isi_m2m *m2m = ctx->m2m; bool bypass; - int ret; - if (q->streaming) - return 0; + int ret; mutex_lock(&m2m->lock); @@ -551,8 +547,6 @@ static int mxc_isi_m2m_streamon(struct file *file, void *fh, goto unchain; } - q->streaming = true; - return 0; unchain: @@ -575,14 +569,10 @@ static int mxc_isi_m2m_streamoff(struct file *file, void *fh, enum v4l2_buf_type type) { struct mxc_isi_m2m_ctx *ctx = to_isi_m2m_ctx(fh); - struct mxc_isi_m2m_ctx_queue_data *q = mxc_isi_m2m_ctx_qdata(ctx, type); struct mxc_isi_m2m *m2m = ctx->m2m; v4l2_m2m_ioctl_streamoff(file, fh, type); - if (!q->streaming) - return 0; - mutex_lock(&m2m->lock); /* @@ -608,8 +598,6 @@ static int mxc_isi_m2m_streamoff(struct file *file, void *fh, mutex_unlock(&m2m->lock); - q->streaming = false; - return 0; } -- Gitee From 46bea0310ef0a4279d800a4809772562a94a1a39 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:02 +0800 Subject: [PATCH 0835/1421] Revert "media: ov5675: suppress probe deferral errors" This reverts commit a584da54d5b16f9ec27178d7a9dd37363e5c88f9. --- drivers/media/i2c/ov5675.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5675.c b/drivers/media/i2c/ov5675.c index 92c3e7951ee7..c499e7e93c54 100644 --- a/drivers/media/i2c/ov5675.c +++ b/drivers/media/i2c/ov5675.c @@ -1339,8 +1339,11 @@ static int ov5675_probe(struct i2c_client *client) return -ENOMEM; ret = ov5675_get_hwcfg(ov5675, &client->dev); - if (ret) + if (ret) { + dev_err(&client->dev, "failed to get HW configuration: %d", + ret); return ret; + } v4l2_i2c_subdev_init(&ov5675->sd, client, &ov5675_subdev_ops); -- Gitee From cb19d2609c9c7ed8c6247e24aee7fa1a39aabf16 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:02 +0800 Subject: [PATCH 0836/1421] Revert "media: ov8856: suppress probe deferral errors" This reverts commit e9ffb71763e0af45cbdcddf7575aa08697a5dce1. --- drivers/media/i2c/ov8856.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/ov8856.c b/drivers/media/i2c/ov8856.c index 8c93fe6285f8..f053c3a7676a 100644 --- a/drivers/media/i2c/ov8856.c +++ b/drivers/media/i2c/ov8856.c @@ -2323,8 +2323,8 @@ static int ov8856_get_hwcfg(struct ov8856 *ov8856, struct device *dev) if (!is_acpi_node(fwnode)) { ov8856->xvclk = devm_clk_get(dev, "xvclk"); if (IS_ERR(ov8856->xvclk)) { - dev_err_probe(dev, PTR_ERR(ov8856->xvclk), - "could not get xvclk clock\n"); + dev_err(dev, "could not get xvclk clock (%pe)\n", + ov8856->xvclk); return PTR_ERR(ov8856->xvclk); } @@ -2429,8 +2429,11 @@ static int ov8856_probe(struct i2c_client *client) return -ENOMEM; ret = ov8856_get_hwcfg(ov8856, &client->dev); - if (ret) + if (ret) { + dev_err(&client->dev, "failed to get HW configuration: %d", + ret); return ret; + } v4l2_i2c_subdev_init(&ov8856->sd, client, &ov8856_subdev_ops); -- Gitee From eb29ffdf5d8f0eb414a825a081372a05de65e1ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:02 +0800 Subject: [PATCH 0837/1421] Revert "wifi: rtlwifi: disable ASPM for RTL8723BE with subsystem ID 11ad:1723" This reverts commit b12a3820ca4d33b6dee7d48c7234935cef17a4b0. --- drivers/net/wireless/realtek/rtlwifi/pci.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c index 3645f212021f..3abd0c4c954b 100644 --- a/drivers/net/wireless/realtek/rtlwifi/pci.c +++ b/drivers/net/wireless/realtek/rtlwifi/pci.c @@ -155,16 +155,6 @@ static void _rtl_pci_update_default_setting(struct ieee80211_hw *hw) if (rtlpriv->rtlhal.hw_type == HARDWARE_TYPE_RTL8192SE && init_aspm == 0x43) ppsc->support_aspm = false; - - /* RTL8723BE found on some ASUSTek laptops, such as F441U and - * X555UQ with subsystem ID 11ad:1723 are known to output large - * amounts of PCIe AER errors during and after boot up, causing - * heavy lags, poor network throughput, and occasional lock-ups. - */ - if (rtlpriv->rtlhal.hw_type == HARDWARE_TYPE_RTL8723BE && - (rtlpci->pdev->subsystem_vendor == 0x11ad && - rtlpci->pdev->subsystem_device == 0x1723)) - ppsc->support_aspm = false; } static bool _rtl_pci_platform_switch_device_pci_aspm( -- Gitee From e2281b55d64404d028365d6d2e501c0fedd5c1c8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:02 +0800 Subject: [PATCH 0838/1421] Revert "wifi: rtw88: usb: Reduce control message timeout to 500 ms" This reverts commit abc532ee0dbdb15e278a271aecb52de85b39e857. --- drivers/net/wireless/realtek/rtw88/usb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c index eba3a2ee747f..8f1d653282b7 100644 --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c @@ -133,7 +133,7 @@ static void rtw_usb_write(struct rtw_dev *rtwdev, u32 addr, u32 val, int len) ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), RTW_USB_CMD_REQ, RTW_USB_CMD_WRITE, - addr, 0, data, len, 500); + addr, 0, data, len, 30000); if (ret < 0 && ret != -ENODEV && count++ < 4) rtw_err(rtwdev, "write register 0x%x failed with %d\n", addr, ret); -- Gitee From 67cfe8c53ad42bbabddc6dafc9fe9dcb8b3d34d8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:02 +0800 Subject: [PATCH 0839/1421] Revert "jbd2: fix data-race and null-ptr-deref in jbd2_journal_dirty_metadata()" This reverts commit dd5419934507d1863cba0c1044bc70f6bde497fb. --- fs/jbd2/transaction.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c index c2b8ad0b24c4..76adab83cac3 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c @@ -1499,7 +1499,7 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) jh->b_next_transaction == transaction); spin_unlock(&jh->b_state_lock); } - if (data_race(jh->b_modified == 1)) { + if (jh->b_modified == 1) { /* If it's in our transaction it must be in BJ_Metadata list. */ if (data_race(jh->b_transaction == transaction && jh->b_jlist != BJ_Metadata)) { @@ -1518,6 +1518,7 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) goto out; } + journal = transaction->t_journal; spin_lock(&jh->b_state_lock); if (is_handle_aborted(handle)) { @@ -1532,8 +1533,6 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) goto out_unlock_bh; } - journal = transaction->t_journal; - if (jh->b_modified == 0) { /* * This buffer's got modified and becoming part -- Gitee From 841ef59f6dd426c1ae077b94f69b74a0b57b19b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:03 +0800 Subject: [PATCH 0840/1421] Revert "wifi: ath12k: fix ring-buffer corruption" This reverts commit 1f3c8f1c218918fa7e82afcb050ce2ba2791a65a. --- drivers/net/wireless/ath/ath12k/ce.c | 11 ++++++----- drivers/net/wireless/ath/ath12k/hal.c | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/ce.c b/drivers/net/wireless/ath/ath12k/ce.c index 740586fe49d1..be0d669d31fc 100644 --- a/drivers/net/wireless/ath/ath12k/ce.c +++ b/drivers/net/wireless/ath/ath12k/ce.c @@ -343,10 +343,11 @@ static int ath12k_ce_completed_recv_next(struct ath12k_ce_pipe *pipe, goto err; } - /* Make sure descriptor is read after the head pointer. */ - dma_rmb(); - *nbytes = ath12k_hal_ce_dst_status_get_length(desc); + if (*nbytes == 0) { + ret = -EIO; + goto err; + } *skb = pipe->dest_ring->skb[sw_index]; pipe->dest_ring->skb[sw_index] = NULL; @@ -379,8 +380,8 @@ static void ath12k_ce_recv_process_cb(struct ath12k_ce_pipe *pipe) dma_unmap_single(ab->dev, ATH12K_SKB_RXCB(skb)->paddr, max_nbytes, DMA_FROM_DEVICE); - if (unlikely(max_nbytes < nbytes || nbytes == 0)) { - ath12k_warn(ab, "unexpected rx length (nbytes %d, max %d)", + if (unlikely(max_nbytes < nbytes)) { + ath12k_warn(ab, "rxed more than expected (nbytes %d, max %d)", nbytes, max_nbytes); dev_kfree_skb_any(skb); continue; diff --git a/drivers/net/wireless/ath/ath12k/hal.c b/drivers/net/wireless/ath/ath12k/hal.c index 169e16c6ed65..0b5a91ab0df4 100644 --- a/drivers/net/wireless/ath/ath12k/hal.c +++ b/drivers/net/wireless/ath/ath12k/hal.c @@ -1565,7 +1565,7 @@ u32 ath12k_hal_ce_dst_status_get_length(struct hal_ce_srng_dst_status_desc *desc { u32 len; - len = le32_get_bits(READ_ONCE(desc->flags), HAL_CE_DST_STATUS_DESC_FLAGS_LEN); + len = le32_get_bits(desc->flags, HAL_CE_DST_STATUS_DESC_FLAGS_LEN); desc->flags &= ~cpu_to_le32(HAL_CE_DST_STATUS_DESC_FLAGS_LEN); return len; @@ -1734,7 +1734,7 @@ void ath12k_hal_srng_access_begin(struct ath12k_base *ab, struct hal_srng *srng) srng->u.src_ring.cached_tp = *(volatile u32 *)srng->u.src_ring.tp_addr; else - srng->u.dst_ring.cached_hp = READ_ONCE(*srng->u.dst_ring.hp_addr); + srng->u.dst_ring.cached_hp = *srng->u.dst_ring.hp_addr; } /* Update cached ring head/tail pointers to HW. ath12k_hal_srng_access_begin() -- Gitee From 4fa168167440caf6225fc60fa99f02642dbd3b57 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:03 +0800 Subject: [PATCH 0841/1421] Revert "fs/nfs/read: fix double-unlock bug in nfs_return_empty_folio()" This reverts commit 4e51299dc2479048caae2054677772ac9dfdb615. --- fs/nfs/read.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 688a24e9bc8b..a142287d86f6 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c @@ -56,8 +56,7 @@ static int nfs_return_empty_folio(struct folio *folio) { folio_zero_segment(folio, 0, folio_size(folio)); folio_mark_uptodate(folio); - if (nfs_netfs_folio_unlock(folio)) - folio_unlock(folio); + folio_unlock(folio); return 0; } -- Gitee From 1bc65d081345d7f397ba45eb4e412fb82e02d3a3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:03 +0800 Subject: [PATCH 0842/1421] Revert "SUNRPC: Prevent hang on NFS mount with xprtsec=[m]tls" This reverts commit d0f979302aa2d573071b1bb816f50ec173a798c2. --- net/sunrpc/xprtsock.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index f90d84492bbe..29df05879c8e 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -2724,11 +2724,6 @@ static void xs_tcp_tls_setup_socket(struct work_struct *work) } rpc_shutdown_client(lower_clnt); - /* Check for ingress data that arrived before the socket's - * ->data_ready callback was set up. - */ - xs_poll_check_readable(upper_transport); - out_unlock: current_restore_flags(pflags, PF_MEMALLOC); upper_transport->clnt = NULL; -- Gitee From e25fe1f25cb7809f8bec82b154e6799503745355 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:03 +0800 Subject: [PATCH 0843/1421] Revert "nfsd: Initialize ssc before laundromat_work to prevent NULL dereference" This reverts commit fb673dc4ed8caba0c8036e27d1591595bd5f020e. --- fs/nfsd/nfssvc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 623f522b1565..710a54c7dffc 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -432,13 +432,13 @@ static int nfsd_startup_net(struct net *net, const struct cred *cred) if (ret) goto out_filecache; -#ifdef CONFIG_NFSD_V4_2_INTER_SSC - nfsd4_ssc_init_umount_work(nn); -#endif ret = nfs4_state_start_net(net); if (ret) goto out_reply_cache; +#ifdef CONFIG_NFSD_V4_2_INTER_SSC + nfsd4_ssc_init_umount_work(nn); +#endif nn->nfsd_net_up = true; return 0; -- Gitee From ac4c8a81c25943e24774d88560abcb87bbb14220 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:04 +0800 Subject: [PATCH 0844/1421] Revert "nfsd: nfsd4_spo_must_allow() must check this is a v4 compound request" This reverts commit 922281e7fdf8f6e08b02f07bed437b4738540260. --- fs/nfsd/nfs4proc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index b2bbf3d6d177..b3eca08f15b1 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -3580,8 +3580,7 @@ bool nfsd4_spo_must_allow(struct svc_rqst *rqstp) struct nfs4_op_map *allow = &cstate->clp->cl_spo_must_allow; u32 opiter; - if (rqstp->rq_procinfo != &nfsd_version4.vs_proc[NFSPROC4_COMPOUND] || - cstate->minorversion == 0) + if (!cstate->minorversion) return false; if (cstate->spo_must_allowed) -- Gitee From be9886864a98e61ef28b08fb65388bff4e5bc8fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:04 +0800 Subject: [PATCH 0845/1421] Revert "wifi: ath11k: fix ring-buffer corruption" This reverts commit 22acbd6976d7cc04b2021712dadb6a299114e63e. --- drivers/net/wireless/ath/ath11k/ce.c | 11 ++++++----- drivers/net/wireless/ath/ath11k/hal.c | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/ce.c b/drivers/net/wireless/ath/ath11k/ce.c index 9d8efec46508..e66e86bdec20 100644 --- a/drivers/net/wireless/ath/ath11k/ce.c +++ b/drivers/net/wireless/ath/ath11k/ce.c @@ -393,10 +393,11 @@ static int ath11k_ce_completed_recv_next(struct ath11k_ce_pipe *pipe, goto err; } - /* Make sure descriptor is read after the head pointer. */ - dma_rmb(); - *nbytes = ath11k_hal_ce_dst_status_get_length(desc); + if (*nbytes == 0) { + ret = -EIO; + goto err; + } *skb = pipe->dest_ring->skb[sw_index]; pipe->dest_ring->skb[sw_index] = NULL; @@ -429,8 +430,8 @@ static void ath11k_ce_recv_process_cb(struct ath11k_ce_pipe *pipe) dma_unmap_single(ab->dev, ATH11K_SKB_RXCB(skb)->paddr, max_nbytes, DMA_FROM_DEVICE); - if (unlikely(max_nbytes < nbytes || nbytes == 0)) { - ath11k_warn(ab, "unexpected rx length (nbytes %d, max %d)", + if (unlikely(max_nbytes < nbytes)) { + ath11k_warn(ab, "rxed more than expected (nbytes %d, max %d)", nbytes, max_nbytes); dev_kfree_skb_any(skb); continue; diff --git a/drivers/net/wireless/ath/ath11k/hal.c b/drivers/net/wireless/ath/ath11k/hal.c index f32fa104ded9..ae5f7e401e21 100644 --- a/drivers/net/wireless/ath/ath11k/hal.c +++ b/drivers/net/wireless/ath/ath11k/hal.c @@ -601,7 +601,7 @@ u32 ath11k_hal_ce_dst_status_get_length(void *buf) (struct hal_ce_srng_dst_status_desc *)buf; u32 len; - len = FIELD_GET(HAL_CE_DST_STATUS_DESC_FLAGS_LEN, READ_ONCE(desc->flags)); + len = FIELD_GET(HAL_CE_DST_STATUS_DESC_FLAGS_LEN, desc->flags); desc->flags &= ~HAL_CE_DST_STATUS_DESC_FLAGS_LEN; return len; @@ -802,7 +802,7 @@ void ath11k_hal_srng_access_begin(struct ath11k_base *ab, struct hal_srng *srng) srng->u.src_ring.cached_tp = *(volatile u32 *)srng->u.src_ring.tp_addr; } else { - srng->u.dst_ring.cached_hp = READ_ONCE(*srng->u.dst_ring.hp_addr); + srng->u.dst_ring.cached_hp = *srng->u.dst_ring.hp_addr; /* Try to prefetch the next descriptor in the ring */ if (srng->flags & HAL_SRNG_FLAGS_CACHED) -- Gitee From dd0ba2c43286dc180dc54f7bb4313e6d3a33a97e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:04 +0800 Subject: [PATCH 0846/1421] Revert "wifi: ath11k: fix rx completion meta data corruption" This reverts commit e729dccd7f224bbe66253357b14d5a8593073b2b. --- drivers/net/wireless/ath/ath11k/dp_rx.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c index 2b7bee666472..4c70366ac56e 100644 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c @@ -2649,7 +2649,7 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id, struct ath11k *ar; struct hal_reo_dest_ring *desc; enum hal_reo_dest_ring_push_reason push_reason; - u32 cookie, info0, rx_msdu_info0, rx_mpdu_info0; + u32 cookie; int i; for (i = 0; i < MAX_RADIOS; i++) @@ -2662,14 +2662,11 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id, try_again: ath11k_hal_srng_access_begin(ab, srng); - /* Make sure descriptor is read after the head pointer. */ - dma_rmb(); - while (likely(desc = (struct hal_reo_dest_ring *)ath11k_hal_srng_dst_get_next_entry(ab, srng))) { cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE, - READ_ONCE(desc->buf_addr_info.info1)); + desc->buf_addr_info.info1); buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID, cookie); mac_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_PDEV_ID, cookie); @@ -2698,9 +2695,8 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id, num_buffs_reaped[mac_id]++; - info0 = READ_ONCE(desc->info0); push_reason = FIELD_GET(HAL_REO_DEST_RING_INFO0_PUSH_REASON, - info0); + desc->info0); if (unlikely(push_reason != HAL_REO_DEST_RING_PUSH_REASON_ROUTING_INSTRUCTION)) { dev_kfree_skb_any(msdu); @@ -2708,21 +2704,18 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id, continue; } - rx_msdu_info0 = READ_ONCE(desc->rx_msdu_info.info0); - rx_mpdu_info0 = READ_ONCE(desc->rx_mpdu_info.info0); - - rxcb->is_first_msdu = !!(rx_msdu_info0 & + rxcb->is_first_msdu = !!(desc->rx_msdu_info.info0 & RX_MSDU_DESC_INFO0_FIRST_MSDU_IN_MPDU); - rxcb->is_last_msdu = !!(rx_msdu_info0 & + rxcb->is_last_msdu = !!(desc->rx_msdu_info.info0 & RX_MSDU_DESC_INFO0_LAST_MSDU_IN_MPDU); - rxcb->is_continuation = !!(rx_msdu_info0 & + rxcb->is_continuation = !!(desc->rx_msdu_info.info0 & RX_MSDU_DESC_INFO0_MSDU_CONTINUATION); rxcb->peer_id = FIELD_GET(RX_MPDU_DESC_META_DATA_PEER_ID, - READ_ONCE(desc->rx_mpdu_info.meta_data)); + desc->rx_mpdu_info.meta_data); rxcb->seq_no = FIELD_GET(RX_MPDU_DESC_INFO0_SEQ_NUM, - rx_mpdu_info0); + desc->rx_mpdu_info.info0); rxcb->tid = FIELD_GET(HAL_REO_DEST_RING_INFO0_RX_QUEUE_NUM, - info0); + desc->info0); rxcb->mac_id = mac_id; __skb_queue_tail(&msdu_list[mac_id], msdu); -- Gitee From 1c6113a9c631bc844806932b57a641b953ca789c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:04 +0800 Subject: [PATCH 0847/1421] Revert "wifi: p54: prevent buffer-overflow in p54_rx_eeprom_readback()" This reverts commit 452509a2808a6b5c879bce8172f84b08263407a3. --- drivers/net/wireless/intersil/p54/fwio.c | 2 -- drivers/net/wireless/intersil/p54/p54.h | 1 - drivers/net/wireless/intersil/p54/txrx.c | 13 ++++--------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/intersil/p54/fwio.c b/drivers/net/wireless/intersil/p54/fwio.c index 06e5df90b43e..b52cce38115d 100644 --- a/drivers/net/wireless/intersil/p54/fwio.c +++ b/drivers/net/wireless/intersil/p54/fwio.c @@ -231,7 +231,6 @@ int p54_download_eeprom(struct p54_common *priv, void *buf, mutex_lock(&priv->eeprom_mutex); priv->eeprom = buf; - priv->eeprom_slice_size = len; eeprom_hdr = skb_put(skb, eeprom_hdr_size + len); if (priv->fw_var < 0x509) { @@ -254,7 +253,6 @@ int p54_download_eeprom(struct p54_common *priv, void *buf, ret = -EBUSY; } priv->eeprom = NULL; - priv->eeprom_slice_size = 0; mutex_unlock(&priv->eeprom_mutex); return ret; } diff --git a/drivers/net/wireless/intersil/p54/p54.h b/drivers/net/wireless/intersil/p54/p54.h index 97fc863fef81..3356ea708d81 100644 --- a/drivers/net/wireless/intersil/p54/p54.h +++ b/drivers/net/wireless/intersil/p54/p54.h @@ -258,7 +258,6 @@ struct p54_common { /* eeprom handling */ void *eeprom; - size_t eeprom_slice_size; struct completion eeprom_comp; struct mutex eeprom_mutex; }; diff --git a/drivers/net/wireless/intersil/p54/txrx.c b/drivers/net/wireless/intersil/p54/txrx.c index 2deb1bb54f24..8414aa208655 100644 --- a/drivers/net/wireless/intersil/p54/txrx.c +++ b/drivers/net/wireless/intersil/p54/txrx.c @@ -496,19 +496,14 @@ static void p54_rx_eeprom_readback(struct p54_common *priv, return ; if (priv->fw_var >= 0x509) { - if (le16_to_cpu(eeprom->v2.len) != priv->eeprom_slice_size) - return; - - memcpy(priv->eeprom, eeprom->v2.data, priv->eeprom_slice_size); + memcpy(priv->eeprom, eeprom->v2.data, + le16_to_cpu(eeprom->v2.len)); } else { - if (le16_to_cpu(eeprom->v1.len) != priv->eeprom_slice_size) - return; - - memcpy(priv->eeprom, eeprom->v1.data, priv->eeprom_slice_size); + memcpy(priv->eeprom, eeprom->v1.data, + le16_to_cpu(eeprom->v1.len)); } priv->eeprom = NULL; - priv->eeprom_slice_size = 0; tmp = p54_find_and_unlink_skb(priv, hdr->req_id); dev_kfree_skb_any(tmp); complete(&priv->eeprom_comp); -- Gitee From 8a34d0c7855aecbfb3a1d7c416100c0b51ab8472 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:04 +0800 Subject: [PATCH 0848/1421] Revert "net/mlx5: Add error handling in mlx5_query_nic_vport_node_guid()" This reverts commit b38772090833459d0236eda682af5df69da97e10. --- drivers/net/ethernet/mellanox/mlx5/core/vport.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/vport.c b/drivers/net/ethernet/mellanox/mlx5/core/vport.c index 06b5265b6e6d..6587ba8bfccd 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/vport.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/vport.c @@ -444,22 +444,19 @@ int mlx5_query_nic_vport_node_guid(struct mlx5_core_dev *mdev, u64 *node_guid) { u32 *out; int outlen = MLX5_ST_SZ_BYTES(query_nic_vport_context_out); - int err; out = kvzalloc(outlen, GFP_KERNEL); if (!out) return -ENOMEM; - err = mlx5_query_nic_vport_context(mdev, 0, out); - if (err) - goto out; + mlx5_query_nic_vport_context(mdev, 0, out); *node_guid = MLX5_GET64(query_nic_vport_context_out, out, nic_vport_context.node_guid); -out: + kvfree(out); - return err; + return 0; } EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_node_guid); -- Gitee From 574738536db095c0cbe8098e2c206f23651122c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:05 +0800 Subject: [PATCH 0849/1421] Revert "net/mlx5_core: Add error handling inmlx5_query_nic_vport_qkey_viol_cntr()" This reverts commit 9bcc4e485c47824e7dc217a2953be830b9abb8d7. --- drivers/net/ethernet/mellanox/mlx5/core/vport.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/vport.c b/drivers/net/ethernet/mellanox/mlx5/core/vport.c index 6587ba8bfccd..21753f327868 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/vport.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/vport.c @@ -498,22 +498,19 @@ int mlx5_query_nic_vport_qkey_viol_cntr(struct mlx5_core_dev *mdev, { u32 *out; int outlen = MLX5_ST_SZ_BYTES(query_nic_vport_context_out); - int err; out = kvzalloc(outlen, GFP_KERNEL); if (!out) return -ENOMEM; - err = mlx5_query_nic_vport_context(mdev, 0, out); - if (err) - goto out; + mlx5_query_nic_vport_context(mdev, 0, out); *qkey_viol_cntr = MLX5_GET(query_nic_vport_context_out, out, nic_vport_context.qkey_violation_counter); -out: + kvfree(out); - return err; + return 0; } EXPORT_SYMBOL_GPL(mlx5_query_nic_vport_qkey_viol_cntr); -- Gitee From faa50a3bc49d8fe5b1d0a4ceeef63b68afb20992 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:05 +0800 Subject: [PATCH 0850/1421] Revert "regulator: max20086: Change enable gpio to optional" This reverts commit dd84c7e8ab58c15245db3fbe1eb51c5b0b442f3e. --- drivers/regulator/max20086-regulator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/max20086-regulator.c b/drivers/regulator/max20086-regulator.c index 8fcca52026bf..deb1bae5a3e5 100644 --- a/drivers/regulator/max20086-regulator.c +++ b/drivers/regulator/max20086-regulator.c @@ -264,7 +264,7 @@ static int max20086_i2c_probe(struct i2c_client *i2c) * shutdown. */ flags = boot_on ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW; - chip->ena_gpiod = devm_gpiod_get_optional(chip->dev, "enable", flags); + chip->ena_gpiod = devm_gpiod_get(chip->dev, "enable", flags); if (IS_ERR(chip->ena_gpiod)) { ret = PTR_ERR(chip->ena_gpiod); dev_err(chip->dev, "Failed to get enable GPIO: %d\n", ret); -- Gitee From 119f3b4f6a94a6459fbc86e4b149b13174d08c15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:05 +0800 Subject: [PATCH 0851/1421] Revert "regulator: max20086: Fix MAX200086 chip id" This reverts commit 2bbc3a668aa2c8f1dfbf92fa2c023f559904099c. --- drivers/regulator/max20086-regulator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/max20086-regulator.c b/drivers/regulator/max20086-regulator.c index deb1bae5a3e5..1cf04d1efb33 100644 --- a/drivers/regulator/max20086-regulator.c +++ b/drivers/regulator/max20086-regulator.c @@ -29,7 +29,7 @@ #define MAX20086_REG_ADC4 0x09 /* DEVICE IDs */ -#define MAX20086_DEVICE_ID_MAX20086 0x30 +#define MAX20086_DEVICE_ID_MAX20086 0x40 #define MAX20086_DEVICE_ID_MAX20087 0x20 #define MAX20086_DEVICE_ID_MAX20088 0x10 #define MAX20086_DEVICE_ID_MAX20089 0x00 -- Gitee From d996ae364b34ca9de7d1cf8fc6654628370b363c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:05 +0800 Subject: [PATCH 0852/1421] Revert "powerpc/pseries/msi: Avoid reading PCI device registers in reduced power states" This reverts commit c38c52bbb5b61018080cacbffd324ea09ecd8b36. --- arch/powerpc/platforms/pseries/msi.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c index fdcf10cd4d12..423ee1d5bd94 100644 --- a/arch/powerpc/platforms/pseries/msi.c +++ b/arch/powerpc/platforms/pseries/msi.c @@ -519,12 +519,7 @@ static struct msi_domain_info pseries_msi_domain_info = { static void pseries_msi_compose_msg(struct irq_data *data, struct msi_msg *msg) { - struct pci_dev *dev = msi_desc_to_pci_dev(irq_data_get_msi_desc(data)); - - if (dev->current_state == PCI_D0) - __pci_read_msi_msg(irq_data_get_msi_desc(data), msg); - else - get_cached_msi_msg(data->irq, msg); + __pci_read_msi_msg(irq_data_get_msi_desc(data), msg); } static struct irq_chip pseries_msi_irq_chip = { -- Gitee From 708a9b65edc4df8c8c28b4e5e613ba50f4e7f9d8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:05 +0800 Subject: [PATCH 0853/1421] Revert "io_uring/kbuf: account ring io_buffer_list memory" This reverts commit 3cc2426e4c619774b349855e46cefd3256c93e09. --- io_uring/kbuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io_uring/kbuf.c b/io_uring/kbuf.c index b2c381634393..addd7c973657 100644 --- a/io_uring/kbuf.c +++ b/io_uring/kbuf.c @@ -560,7 +560,7 @@ int io_register_pbuf_ring(struct io_ring_ctx *ctx, void __user *arg) io_destroy_bl(ctx, bl); } - free_bl = bl = kzalloc(sizeof(*bl), GFP_KERNEL_ACCOUNT); + free_bl = bl = kzalloc(sizeof(*bl), GFP_KERNEL); if (!bl) return -ENOMEM; -- Gitee From 0386d1a0aa983f0681d2084185fe5cf452ff83e9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:06 +0800 Subject: [PATCH 0854/1421] Revert "io_uring: account drain memory to cgroup" This reverts commit 2bb0fce16e014b79b4b7ba311a229e40e2ea9ca2. --- io_uring/io_uring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 897f07014c01..ff1a93d405e9 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -1808,7 +1808,7 @@ static __cold void io_drain_req(struct io_kiocb *req) spin_unlock(&ctx->completion_lock); io_prep_async_link(req); - de = kmalloc(sizeof(*de), GFP_KERNEL_ACCOUNT); + de = kmalloc(sizeof(*de), GFP_KERNEL); if (!de) { ret = -ENOMEM; io_req_defer_failed(req, ret); -- Gitee From 6e01cdad0f1fe80023e0506907d06157e86587c7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:06 +0800 Subject: [PATCH 0855/1421] Revert "ASoC: meson: meson-card-utils: use of_property_present() for DT parsing" This reverts commit ba5c60fc1ff106e51494204f8b3f96241d7f9321. --- sound/soc/meson/meson-card-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/meson/meson-card-utils.c b/sound/soc/meson/meson-card-utils.c index 1adaf0041a48..f7fd9c013e19 100644 --- a/sound/soc/meson/meson-card-utils.c +++ b/sound/soc/meson/meson-card-utils.c @@ -231,7 +231,7 @@ static int meson_card_parse_of_optional(struct snd_soc_card *card, const char *p)) { /* If property is not provided, don't fail ... */ - if (!of_property_present(card->dev->of_node, propname)) + if (!of_property_read_bool(card->dev->of_node, propname)) return 0; /* ... but do fail if it is provided and the parsing fails */ -- Gitee From c69979ff4b4d7d3cf476699858f3e1974b7675ae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:06 +0800 Subject: [PATCH 0856/1421] Revert "ASoC: qcom: sdm845: Add error handling in sdm845_slim_snd_hw_params()" This reverts commit d4185596953069a78e7bc71dd3b1a6cf30e39849. --- sound/soc/qcom/sdm845.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c index 39d22304ce43..3eb29645a637 100644 --- a/sound/soc/qcom/sdm845.c +++ b/sound/soc/qcom/sdm845.c @@ -90,10 +90,6 @@ static int sdm845_slim_snd_hw_params(struct snd_pcm_substream *substream, else ret = snd_soc_dai_set_channel_map(cpu_dai, tx_ch_cnt, tx_ch, 0, NULL); - if (ret != 0 && ret != -ENOTSUPP) { - dev_err(rtd->dev, "failed to set cpu chan map, err:%d\n", ret); - return ret; - } } return 0; -- Gitee From 35417d5fa44686d3f76cefc1003fc984b688ccdb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:06 +0800 Subject: [PATCH 0857/1421] Revert "gfs2: move msleep to sleepable context" This reverts commit bae4e22a9573e0719ece73fe7f6e30b43021975c. --- fs/gfs2/lock_dlm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/gfs2/lock_dlm.c b/fs/gfs2/lock_dlm.c index 07aac73377d8..e028e55e67d9 100644 --- a/fs/gfs2/lock_dlm.c +++ b/fs/gfs2/lock_dlm.c @@ -959,15 +959,14 @@ static int control_mount(struct gfs2_sbd *sdp) if (sdp->sd_args.ar_spectator) { fs_info(sdp, "Recovery is required. Waiting for a " "non-spectator to mount.\n"); - spin_unlock(&ls->ls_recover_spin); msleep_interruptible(1000); } else { fs_info(sdp, "control_mount wait1 block %u start %u " "mount %u lvb %u flags %lx\n", block_gen, start_gen, mount_gen, lvb_gen, ls->ls_recover_flags); - spin_unlock(&ls->ls_recover_spin); } + spin_unlock(&ls->ls_recover_spin); goto restart; } -- Gitee From 1037551fd718ec9fe412da3cdeab07b3ddeab4af Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:06 +0800 Subject: [PATCH 0858/1421] Revert "crypto: marvell/cesa - Do not chain submitted requests" This reverts commit 3c30dc7fd5b7d2c8a38bd84f5b5c716e96054593. --- drivers/crypto/marvell/cesa/cesa.c | 2 +- drivers/crypto/marvell/cesa/cesa.h | 9 ++--- drivers/crypto/marvell/cesa/tdma.c | 53 ++++++++++++------------------ 3 files changed, 25 insertions(+), 39 deletions(-) diff --git a/drivers/crypto/marvell/cesa/cesa.c b/drivers/crypto/marvell/cesa/cesa.c index 76f34b81258d..b61e35b932e5 100644 --- a/drivers/crypto/marvell/cesa/cesa.c +++ b/drivers/crypto/marvell/cesa/cesa.c @@ -94,7 +94,7 @@ static int mv_cesa_std_process(struct mv_cesa_engine *engine, u32 status) static int mv_cesa_int_process(struct mv_cesa_engine *engine, u32 status) { - if (engine->chain_hw.first && engine->chain_hw.last) + if (engine->chain.first && engine->chain.last) return mv_cesa_tdma_process(engine, status); return mv_cesa_std_process(engine, status); diff --git a/drivers/crypto/marvell/cesa/cesa.h b/drivers/crypto/marvell/cesa/cesa.h index 50ca1039fdaa..d215a6bed6bc 100644 --- a/drivers/crypto/marvell/cesa/cesa.h +++ b/drivers/crypto/marvell/cesa/cesa.h @@ -440,10 +440,8 @@ struct mv_cesa_dev { * SRAM * @queue: fifo of the pending crypto requests * @load: engine load counter, useful for load balancing - * @chain_hw: list of the current tdma descriptors being processed - * by the hardware. - * @chain_sw: list of the current tdma descriptors that will be - * submitted to the hardware. + * @chain: list of the current tdma descriptors being processed + * by this engine. * @complete_queue: fifo of the processed requests by the engine * * Structure storing CESA engine information. @@ -465,8 +463,7 @@ struct mv_cesa_engine { struct gen_pool *pool; struct crypto_queue queue; atomic_t load; - struct mv_cesa_tdma_chain chain_hw; - struct mv_cesa_tdma_chain chain_sw; + struct mv_cesa_tdma_chain chain; struct list_head complete_queue; int irq; }; diff --git a/drivers/crypto/marvell/cesa/tdma.c b/drivers/crypto/marvell/cesa/tdma.c index 243305354420..388a06e180d6 100644 --- a/drivers/crypto/marvell/cesa/tdma.c +++ b/drivers/crypto/marvell/cesa/tdma.c @@ -38,15 +38,6 @@ void mv_cesa_dma_step(struct mv_cesa_req *dreq) { struct mv_cesa_engine *engine = dreq->engine; - spin_lock_bh(&engine->lock); - if (engine->chain_sw.first == dreq->chain.first) { - engine->chain_sw.first = NULL; - engine->chain_sw.last = NULL; - } - engine->chain_hw.first = dreq->chain.first; - engine->chain_hw.last = dreq->chain.last; - spin_unlock_bh(&engine->lock); - writel_relaxed(0, engine->regs + CESA_SA_CFG); mv_cesa_set_int_mask(engine, CESA_SA_INT_ACC0_IDMA_DONE); @@ -105,27 +96,25 @@ void mv_cesa_dma_prepare(struct mv_cesa_req *dreq, void mv_cesa_tdma_chain(struct mv_cesa_engine *engine, struct mv_cesa_req *dreq) { - struct mv_cesa_tdma_desc *last = engine->chain_sw.last; + if (engine->chain.first == NULL && engine->chain.last == NULL) { + engine->chain.first = dreq->chain.first; + engine->chain.last = dreq->chain.last; + } else { + struct mv_cesa_tdma_desc *last; - /* - * Break the DMA chain if the request being queued needs the IV - * regs to be set before lauching the request. - */ - if (!last || dreq->chain.first->flags & CESA_TDMA_SET_STATE) - engine->chain_sw.first = dreq->chain.first; - else { + last = engine->chain.last; last->next = dreq->chain.first; - last->next_dma = cpu_to_le32(dreq->chain.first->cur_dma); - } - last = dreq->chain.last; - engine->chain_sw.last = last; - /* - * Break the DMA chain if the CESA_TDMA_BREAK_CHAIN is set on - * the last element of the current chain. - */ - if (last->flags & CESA_TDMA_BREAK_CHAIN) { - engine->chain_sw.first = NULL; - engine->chain_sw.last = NULL; + engine->chain.last = dreq->chain.last; + + /* + * Break the DMA chain if the CESA_TDMA_BREAK_CHAIN is set on + * the last element of the current chain, or if the request + * being queued needs the IV regs to be set before lauching + * the request. + */ + if (!(last->flags & CESA_TDMA_BREAK_CHAIN) && + !(dreq->chain.first->flags & CESA_TDMA_SET_STATE)) + last->next_dma = cpu_to_le32(dreq->chain.first->cur_dma); } } @@ -138,7 +127,7 @@ int mv_cesa_tdma_process(struct mv_cesa_engine *engine, u32 status) tdma_cur = readl(engine->regs + CESA_TDMA_CUR); - for (tdma = engine->chain_hw.first; tdma; tdma = next) { + for (tdma = engine->chain.first; tdma; tdma = next) { spin_lock_bh(&engine->lock); next = tdma->next; spin_unlock_bh(&engine->lock); @@ -160,12 +149,12 @@ int mv_cesa_tdma_process(struct mv_cesa_engine *engine, u32 status) &backlog); /* Re-chaining to the next request */ - engine->chain_hw.first = tdma->next; + engine->chain.first = tdma->next; tdma->next = NULL; /* If this is the last request, clear the chain */ - if (engine->chain_hw.first == NULL) - engine->chain_hw.last = NULL; + if (engine->chain.first == NULL) + engine->chain.last = NULL; spin_unlock_bh(&engine->lock); ctx = crypto_tfm_ctx(req->tfm); -- Gitee From a0231495e381815f7abe843396ac5d000b73ece9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:07 +0800 Subject: [PATCH 0859/1421] Revert "configfs: Do not override creating attribute file failure in populate_attrs()" This reverts commit 6efaf85550602db31bff26164073d2c0dbafd264. --- fs/configfs/dir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c index 2df99cd1034d..18677cd4e62f 100644 --- a/fs/configfs/dir.c +++ b/fs/configfs/dir.c @@ -593,7 +593,7 @@ static int populate_attrs(struct config_item *item) break; } } - if (!error && t->ct_bin_attrs) { + if (t->ct_bin_attrs) { for (i = 0; (bin_attr = t->ct_bin_attrs[i]) != NULL; i++) { error = configfs_create_bin_file(item, bin_attr); if (error) -- Gitee From 79747770ff90a63e067668c44ebb107ba132ba77 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:07 +0800 Subject: [PATCH 0860/1421] Revert "Linux 6.6.94" This reverts commit d2c8670dfc2f5e58ef241bb348cb43cf8e3ccc93. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9625d9072c77..c9a1e2286b3a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 94 +SUBLEVEL = 93 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From 3647da3bef071372c9a6efb2e8953db3b7813184 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:07 +0800 Subject: [PATCH 0861/1421] Revert "drm/meson: Use 1000ULL when operating with mode->clock" This reverts commit 68e23c34defe509d96bd1169225ad0caac0c1274. --- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index 0b7e8e0ba4fc..73ec7ae48510 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -75,7 +75,7 @@ static void meson_encoder_hdmi_set_vclk(struct meson_encoder_hdmi *encoder_hdmi, unsigned long long venc_freq; unsigned long long hdmi_freq; - vclk_freq = mode->clock * 1000ULL; + vclk_freq = mode->clock * 1000; /* For 420, pixel clock is half unlike venc clock */ if (encoder_hdmi->output_bus_fmt == MEDIA_BUS_FMT_UYYVYY8_0_5X24) @@ -123,7 +123,7 @@ static enum drm_mode_status meson_encoder_hdmi_mode_valid(struct drm_bridge *bri struct meson_encoder_hdmi *encoder_hdmi = bridge_to_meson_encoder_hdmi(bridge); struct meson_drm *priv = encoder_hdmi->priv; bool is_hdmi2_sink = display_info->hdmi.scdc.supported; - unsigned long long clock = mode->clock * 1000ULL; + unsigned long long clock = mode->clock * 1000; unsigned long long phy_freq; unsigned long long vclk_freq; unsigned long long venc_freq; -- Gitee From 8bd0ba8e59496af66a93e561d16571fe46dd3485 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:07 +0800 Subject: [PATCH 0862/1421] Revert "net: usb: aqc111: debug info before sanitation" This reverts commit ebd40e98fb726d7c2f9bce474843a1ee3570e980. --- drivers/net/usb/aqc111.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c index 3ebb1f84d302..04d5573123be 100644 --- a/drivers/net/usb/aqc111.c +++ b/drivers/net/usb/aqc111.c @@ -31,11 +31,11 @@ static int aqc111_read_cmd_nopm(struct usbnet *dev, u8 cmd, u16 value, USB_RECIP_DEVICE, value, index, data, size); if (unlikely(ret < size)) { + ret = ret < 0 ? ret : -ENODATA; + netdev_warn(dev->net, "Failed to read(0x%x) reg index 0x%04x: %d\n", cmd, index, ret); - - ret = ret < 0 ? ret : -ENODATA; } return ret; @@ -50,11 +50,11 @@ static int aqc111_read_cmd(struct usbnet *dev, u8 cmd, u16 value, USB_RECIP_DEVICE, value, index, data, size); if (unlikely(ret < size)) { + ret = ret < 0 ? ret : -ENODATA; + netdev_warn(dev->net, "Failed to read(0x%x) reg index 0x%04x: %d\n", cmd, index, ret); - - ret = ret < 0 ? ret : -ENODATA; } return ret; -- Gitee From d930e646b5528af150063e11043657ada0518d2c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:07 +0800 Subject: [PATCH 0863/1421] Revert "regulator: dt-bindings: mt6357: Drop fixed compatible requirement" This reverts commit a0ac02c539142a07e89966cb663ab0d8269c4b2b. --- .../regulator/mediatek,mt6357-regulator.yaml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml b/Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml index 698266c09e25..6327bb2f6ee0 100644 --- a/Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml +++ b/Documentation/devicetree/bindings/regulator/mediatek,mt6357-regulator.yaml @@ -33,7 +33,7 @@ patternProperties: "^ldo-v(camio18|aud28|aux18|io18|io28|rf12|rf18|cn18|cn28|fe28)$": type: object - $ref: regulator.yaml# + $ref: fixed-regulator.yaml# unevaluatedProperties: false description: Properties for single fixed LDO regulator. @@ -112,6 +112,7 @@ examples: regulator-enable-ramp-delay = <220>; }; mt6357_vfe28_reg: ldo-vfe28 { + compatible = "regulator-fixed"; regulator-name = "vfe28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -124,12 +125,14 @@ examples: regulator-enable-ramp-delay = <110>; }; mt6357_vrf18_reg: ldo-vrf18 { + compatible = "regulator-fixed"; regulator-name = "vrf18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <110>; }; mt6357_vrf12_reg: ldo-vrf12 { + compatible = "regulator-fixed"; regulator-name = "vrf12"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; @@ -154,12 +157,14 @@ examples: regulator-enable-ramp-delay = <264>; }; mt6357_vcn28_reg: ldo-vcn28 { + compatible = "regulator-fixed"; regulator-name = "vcn28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-enable-ramp-delay = <264>; }; mt6357_vcn18_reg: ldo-vcn18 { + compatible = "regulator-fixed"; regulator-name = "vcn18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -178,6 +183,7 @@ examples: regulator-enable-ramp-delay = <264>; }; mt6357_vcamio_reg: ldo-vcamio18 { + compatible = "regulator-fixed"; regulator-name = "vcamio"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -206,24 +212,28 @@ examples: regulator-always-on; }; mt6357_vaux18_reg: ldo-vaux18 { + compatible = "regulator-fixed"; regulator-name = "vaux18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <264>; }; mt6357_vaud28_reg: ldo-vaud28 { + compatible = "regulator-fixed"; regulator-name = "vaud28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-enable-ramp-delay = <264>; }; mt6357_vio28_reg: ldo-vio28 { + compatible = "regulator-fixed"; regulator-name = "vio28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-enable-ramp-delay = <264>; }; mt6357_vio18_reg: ldo-vio18 { + compatible = "regulator-fixed"; regulator-name = "vio18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; -- Gitee From 2763e6092cd767560105b87f1644257d8216a57b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:08 +0800 Subject: [PATCH 0864/1421] Revert "calipso: unlock rcu before returning -EAFNOSUPPORT" This reverts commit becd90c8f491b443b1c80972d28758ac90caf5f8. --- net/netlabel/netlabel_kapi.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/netlabel/netlabel_kapi.c b/net/netlabel/netlabel_kapi.c index daef0eeaea2c..75b645c1928d 100644 --- a/net/netlabel/netlabel_kapi.c +++ b/net/netlabel/netlabel_kapi.c @@ -1140,10 +1140,8 @@ int netlbl_conn_setattr(struct sock *sk, break; #if IS_ENABLED(CONFIG_IPV6) case AF_INET6: - if (sk->sk_family != AF_INET6) { - ret_val = -EAFNOSUPPORT; - goto conn_setattr_return; - } + if (sk->sk_family != AF_INET6) + return -EAFNOSUPPORT; addr6 = (struct sockaddr_in6 *)addr; entry = netlbl_domhsh_getentry_af6(secattr->domain, -- Gitee From 7a12b881ad91b466db3720cb4329cc1adf23a3d7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:08 +0800 Subject: [PATCH 0865/1421] Revert "x86/iopl: Cure TIF_IO_BITMAP inconsistencies" This reverts commit 42dd55fe43600b722b5fe97492b4d7a79ad135d3. --- arch/x86/kernel/ioport.c | 13 ++++--------- arch/x86/kernel/process.c | 6 ------ 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c index 9a101150376d..e2fab3ceb09f 100644 --- a/arch/x86/kernel/ioport.c +++ b/arch/x86/kernel/ioport.c @@ -33,9 +33,8 @@ void io_bitmap_share(struct task_struct *tsk) set_tsk_thread_flag(tsk, TIF_IO_BITMAP); } -static void task_update_io_bitmap(void) +static void task_update_io_bitmap(struct task_struct *tsk) { - struct task_struct *tsk = current; struct thread_struct *t = &tsk->thread; if (t->iopl_emul == 3 || t->io_bitmap) { @@ -55,12 +54,7 @@ void io_bitmap_exit(struct task_struct *tsk) struct io_bitmap *iobm = tsk->thread.io_bitmap; tsk->thread.io_bitmap = NULL; - /* - * Don't touch the TSS when invoked on a failed fork(). TSS - * reflects the state of @current and not the state of @tsk. - */ - if (tsk == current) - task_update_io_bitmap(); + task_update_io_bitmap(tsk); if (iobm && refcount_dec_and_test(&iobm->refcnt)) kfree(iobm); } @@ -198,7 +192,8 @@ SYSCALL_DEFINE1(iopl, unsigned int, level) } t->iopl_emul = level; - task_update_io_bitmap(); + task_update_io_bitmap(current); + return 0; } diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 33c235e9d0d3..8a398acfdea2 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -180,7 +180,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) frame->ret_addr = (unsigned long) ret_from_fork_asm; p->thread.sp = (unsigned long) fork_frame; p->thread.io_bitmap = NULL; - clear_tsk_thread_flag(p, TIF_IO_BITMAP); p->thread.iopl_warn = 0; memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); @@ -469,11 +468,6 @@ void native_tss_update_io_bitmap(void) } else { struct io_bitmap *iobm = t->io_bitmap; - if (WARN_ON_ONCE(!iobm)) { - clear_thread_flag(TIF_IO_BITMAP); - native_tss_invalidate_io_bitmap(); - } - /* * Only copy bitmap data when the sequence number differs. The * update time is accounted to the incoming task. -- Gitee From 53eb64dc79025412de71b46d3c1a7e1be1ec4065 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:08 +0800 Subject: [PATCH 0866/1421] Revert "xen/arm: call uaccess_ttbr0_enable for dm_op hypercall" This reverts commit ee4bb420b550732e19429547e0bff4a276342e80. --- arch/arm64/xen/hypercall.S | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S index ae551b857137..9d01361696a1 100644 --- a/arch/arm64/xen/hypercall.S +++ b/arch/arm64/xen/hypercall.S @@ -83,26 +83,7 @@ HYPERCALL3(vcpu_op); HYPERCALL1(platform_op_raw); HYPERCALL2(multicall); HYPERCALL2(vm_assist); - -SYM_FUNC_START(HYPERVISOR_dm_op) - mov x16, #__HYPERVISOR_dm_op; \ - /* - * dm_op hypercalls are issued by the userspace. The kernel needs to - * enable access to TTBR0_EL1 as the hypervisor would issue stage 1 - * translations to user memory via AT instructions. Since AT - * instructions are not affected by the PAN bit (ARMv8.1), we only - * need the explicit uaccess_enable/disable if the TTBR0 PAN emulation - * is enabled (it implies that hardware UAO and PAN disabled). - */ - uaccess_ttbr0_enable x6, x7, x8 - hvc XEN_IMM - - /* - * Disable userspace access from kernel once the hyp call completed. - */ - uaccess_ttbr0_disable x6, x7 - ret -SYM_FUNC_END(HYPERVISOR_dm_op); +HYPERCALL3(dm_op); SYM_FUNC_START(privcmd_call) mov x16, x0 -- Gitee From 238f8fe6ad108a10aed9749cfa11d047a28b1cbe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:08 +0800 Subject: [PATCH 0867/1421] Revert "usb: typec: tcpm/tcpci_maxim: Fix bounds check in process_rx()" This reverts commit 6f5236b5b9920e2ae2d1f7412a0ebf5242f9eade. --- drivers/usb/typec/tcpm/tcpci_maxim_core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpci_maxim_core.c b/drivers/usb/typec/tcpm/tcpci_maxim_core.c index e460b956ab71..9454b12a073c 100644 --- a/drivers/usb/typec/tcpm/tcpci_maxim_core.c +++ b/drivers/usb/typec/tcpm/tcpci_maxim_core.c @@ -145,8 +145,7 @@ static void process_rx(struct max_tcpci_chip *chip, u16 status) return; } - if (count > sizeof(struct pd_message) + 1 || - count + 1 > TCPC_RECEIVE_BUFFER_LEN) { + if (count > sizeof(struct pd_message) || count + 1 > TCPC_RECEIVE_BUFFER_LEN) { dev_err(chip->dev, "Invalid TCPC_RX_BYTE_CNT %d\n", count); return; } -- Gitee From 1f90678077ba959a1d4aee11d4390843f7eb6239 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:08 +0800 Subject: [PATCH 0868/1421] Revert "usb: Flush altsetting 0 endpoints before reinitializating them after reset." This reverts commit 84d647880aa8d3c244f0a87bf17a75185718b06c. --- drivers/usb/core/hub.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 855356752380..760283a541b4 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -6103,7 +6103,6 @@ static int usb_reset_and_verify_device(struct usb_device *udev) struct usb_hub *parent_hub; struct usb_hcd *hcd = bus_to_hcd(udev->bus); struct usb_device_descriptor descriptor; - struct usb_interface *intf; struct usb_host_bos *bos; int i, j, ret = 0; int port1 = udev->portnum; @@ -6161,18 +6160,6 @@ static int usb_reset_and_verify_device(struct usb_device *udev) if (!udev->actconfig) goto done; - /* - * Some devices can't handle setting default altsetting 0 with a - * Set-Interface request. Disable host-side endpoints of those - * interfaces here. Enable and reset them back after host has set - * its internal endpoint structures during usb_hcd_alloc_bandwith() - */ - for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) { - intf = udev->actconfig->interface[i]; - if (intf->cur_altsetting->desc.bAlternateSetting == 0) - usb_disable_interface(udev, intf, true); - } - mutex_lock(hcd->bandwidth_mutex); ret = usb_hcd_alloc_bandwidth(udev, udev->actconfig, NULL, NULL); if (ret < 0) { @@ -6204,11 +6191,12 @@ static int usb_reset_and_verify_device(struct usb_device *udev) */ for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) { struct usb_host_config *config = udev->actconfig; + struct usb_interface *intf = config->interface[i]; struct usb_interface_descriptor *desc; - intf = config->interface[i]; desc = &intf->cur_altsetting->desc; if (desc->bAlternateSetting == 0) { + usb_disable_interface(udev, intf, true); usb_enable_interface(udev, intf, true); ret = 0; } else { -- Gitee From 4a88f5d335cf5ea0eb5a44b820e702ae51110abe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:09 +0800 Subject: [PATCH 0869/1421] Revert "usb: cdnsp: Fix issue with detecting USB 3.2 speed" This reverts commit 1bfeffa08cc18c61e53c887f7af9e18be377184c. --- drivers/usb/cdns3/cdnsp-gadget.c | 3 +-- drivers/usb/cdns3/cdnsp-gadget.h | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c index 132885fbb98f..1ef7ee5a47c7 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.c +++ b/drivers/usb/cdns3/cdnsp-gadget.c @@ -28,8 +28,7 @@ unsigned int cdnsp_port_speed(unsigned int port_status) { /*Detect gadget speed based on PORTSC register*/ - if (DEV_SUPERSPEEDPLUS(port_status) || - DEV_SSP_GEN1x2(port_status) || DEV_SSP_GEN2x2(port_status)) + if (DEV_SUPERSPEEDPLUS(port_status)) return USB_SPEED_SUPER_PLUS; else if (DEV_SUPERSPEED(port_status)) return USB_SPEED_SUPER; diff --git a/drivers/usb/cdns3/cdnsp-gadget.h b/drivers/usb/cdns3/cdnsp-gadget.h index 909cee01772a..ed84dbb9fd6f 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.h +++ b/drivers/usb/cdns3/cdnsp-gadget.h @@ -285,15 +285,11 @@ struct cdnsp_port_regs { #define XDEV_HS (0x3 << 10) #define XDEV_SS (0x4 << 10) #define XDEV_SSP (0x5 << 10) -#define XDEV_SSP1x2 (0x6 << 10) -#define XDEV_SSP2x2 (0x7 << 10) #define DEV_UNDEFSPEED(p) (((p) & DEV_SPEED_MASK) == (0x0 << 10)) #define DEV_FULLSPEED(p) (((p) & DEV_SPEED_MASK) == XDEV_FS) #define DEV_HIGHSPEED(p) (((p) & DEV_SPEED_MASK) == XDEV_HS) #define DEV_SUPERSPEED(p) (((p) & DEV_SPEED_MASK) == XDEV_SS) #define DEV_SUPERSPEEDPLUS(p) (((p) & DEV_SPEED_MASK) == XDEV_SSP) -#define DEV_SSP_GEN1x2(p) (((p) & DEV_SPEED_MASK) == XDEV_SSP1x2) -#define DEV_SSP_GEN2x2(p) (((p) & DEV_SPEED_MASK) == XDEV_SSP2x2) #define DEV_SUPERSPEED_ANY(p) (((p) & DEV_SPEED_MASK) >= XDEV_SS) #define DEV_PORT_SPEED(p) (((p) >> 10) & 0x0f) /* Port Link State Write Strobe - set this when changing link state */ -- Gitee From a823f3377028573b6a056982dfc325fd37583921 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:09 +0800 Subject: [PATCH 0870/1421] Revert "usb: cdnsp: Fix issue with detecting command completion event" This reverts commit 94254204b09eaceb56d10e5e0a55df79e5c285f7. --- drivers/usb/cdns3/cdnsp-gadget.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c index 1ef7ee5a47c7..601a60a28022 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.c +++ b/drivers/usb/cdns3/cdnsp-gadget.c @@ -546,7 +546,6 @@ int cdnsp_wait_for_cmd_compl(struct cdnsp_device *pdev) dma_addr_t cmd_deq_dma; union cdnsp_trb *event; u32 cycle_state; - u32 retry = 10; int ret, val; u64 cmd_dma; u32 flags; @@ -578,23 +577,8 @@ int cdnsp_wait_for_cmd_compl(struct cdnsp_device *pdev) flags = le32_to_cpu(event->event_cmd.flags); /* Check the owner of the TRB. */ - if ((flags & TRB_CYCLE) != cycle_state) { - /* - * Give some extra time to get chance controller - * to finish command before returning error code. - * Checking CMD_RING_BUSY is not sufficient because - * this bit is cleared to '0' when the Command - * Descriptor has been executed by controller - * and not when command completion event has - * be added to event ring. - */ - if (retry--) { - udelay(20); - continue; - } - + if ((flags & TRB_CYCLE) != cycle_state) return -EINVAL; - } cmd_dma = le64_to_cpu(event->event_cmd.cmd_trb); -- Gitee From 1df76ba265f70f7840f55e642314dd8ea8b61582 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:09 +0800 Subject: [PATCH 0871/1421] Revert "VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify" This reverts commit d909b42240254cd0462ad31a1b3e16ea69b09e67. --- drivers/misc/vmw_vmci/vmci_host.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c index b64944367ac5..abe79f6fd2a7 100644 --- a/drivers/misc/vmw_vmci/vmci_host.c +++ b/drivers/misc/vmw_vmci/vmci_host.c @@ -227,7 +227,6 @@ static int drv_cp_harray_to_user(void __user *user_buf_uva, static int vmci_host_setup_notify(struct vmci_ctx *context, unsigned long uva) { - struct page *page; int retval; if (context->notify_page) { @@ -244,11 +243,13 @@ static int vmci_host_setup_notify(struct vmci_ctx *context, /* * Lock physical page backing a given user VA. */ - retval = get_user_pages_fast(uva, 1, FOLL_WRITE, &page); - if (retval != 1) + retval = get_user_pages_fast(uva, 1, FOLL_WRITE, &context->notify_page); + if (retval != 1) { + context->notify_page = NULL; return VMCI_ERROR_GENERIC; - - context->notify_page = page; + } + if (context->notify_page == NULL) + return VMCI_ERROR_UNAVAILABLE; /* * Map the locked page and set up notify pointer. -- Gitee From 3c6bf5ab9ed61c5cfd21673e55c27e910149c266 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:09 +0800 Subject: [PATCH 0872/1421] Revert "usb: usbtmc: Fix read_stb function and get_stb ioctl" This reverts commit 022a75fc90918a4c92ac85956566659d1e09b778. --- drivers/usb/class/usbtmc.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index ee45f3c74aec..629ef749dafc 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -565,15 +565,14 @@ static int usbtmc488_ioctl_read_stb(struct usbtmc_file_data *file_data, rv = usbtmc_get_stb(file_data, &stb); - if (rv < 0) - return rv; - - srq_asserted = atomic_xchg(&file_data->srq_asserted, srq_asserted); - if (srq_asserted) - stb |= 0x40; /* Set RQS bit */ - - rv = put_user(stb, (__u8 __user *)arg); + if (rv > 0) { + srq_asserted = atomic_xchg(&file_data->srq_asserted, + srq_asserted); + if (srq_asserted) + stb |= 0x40; /* Set RQS bit */ + rv = put_user(stb, (__u8 __user *)arg); + } return rv; } @@ -2202,7 +2201,7 @@ static long usbtmc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) case USBTMC_IOCTL_GET_STB: retval = usbtmc_get_stb(file_data, &tmp_byte); - if (!retval) + if (retval > 0) retval = put_user(tmp_byte, (__u8 __user *)arg); break; -- Gitee From 981d94c668f7fe0be627146dc46e649319fb0bb7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:09 +0800 Subject: [PATCH 0873/1421] Revert "kbuild: Disable -Wdefault-const-init-unsafe" This reverts commit e6ebb35a15b3c85216e174670055a604a04a8327. --- scripts/Makefile.extrawarn | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn index 570f64e2ddf1..0ea3281a92e1 100644 --- a/scripts/Makefile.extrawarn +++ b/scripts/Makefile.extrawarn @@ -29,18 +29,6 @@ KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds ifdef CONFIG_CC_IS_CLANG # The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable. KBUILD_CFLAGS += -Wno-gnu - -# Clang may emit a warning when a const variable, such as the dummy variables -# in typecheck(), or const member of an aggregate type are not initialized, -# which can result in unexpected behavior. However, in many audited cases of -# the "field" variant of the warning, this is intentional because the field is -# never used within a particular call path, the field is within a union with -# other non-const members, or the containing object is not const so the field -# can be modified via memcpy() / memset(). While the variable warning also gets -# disabled with this same switch, there should not be too much coverage lost -# because -Wuninitialized will still flag when an uninitialized const variable -# is used. -KBUILD_CFLAGS += $(call cc-disable-warning, default-const-init-unsafe) else # gcc inanely warns about local variables called 'main' -- Gitee From 16a1979c6baa7083af94df23804c8605871d4d13 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:10 +0800 Subject: [PATCH 0874/1421] Revert "posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del()" This reverts commit f0eb9a57469f4e1bf397c67492f0deab203d7747. --- kernel/time/posix-cpu-timers.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c index 9af1f2a72a0a..e9c6f9d0e42c 100644 --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c @@ -1437,15 +1437,6 @@ void run_posix_cpu_timers(void) lockdep_assert_irqs_disabled(); - /* - * Ensure that release_task(tsk) can't happen while - * handle_posix_cpu_timers() is running. Otherwise, a concurrent - * posix_cpu_timer_del() may fail to lock_task_sighand(tsk) and - * miss timer->it.cpu.firing != 0. - */ - if (tsk->exit_state) - return; - /* * If the actual expiry is deferred to task work context and the * work is already scheduled there is no point to do anything here. -- Gitee From 12cd040c16e076d6a7517c7f48e60777252af965 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:10 +0800 Subject: [PATCH 0875/1421] Revert "Revert "io_uring: ensure deferred completions are posted for multishot"" This reverts commit 027d05fd524cc09a37d469109a066e81ce52e326. --- io_uring/io_uring.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index ff1a93d405e9..9c383afeaf8e 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -920,6 +920,14 @@ static bool __io_post_aux_cqe(struct io_ring_ctx *ctx, u64 user_data, s32 res, u { bool filled; + /* + * If multishot has already posted deferred completions, ensure that + * those are flushed first before posting this one. If not, CQEs + * could get reordered. + */ + if (!wq_list_empty(&ctx->submit_state.compl_reqs)) + __io_submit_flush_completions(ctx); + io_cq_lock(ctx); filled = io_fill_cqe_aux(ctx, user_data, res, cflags); if (!filled && allow_overflow) -- Gitee From 6b896912e4874b0b9fa5fd1d1f999dcd429a0998 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:10 +0800 Subject: [PATCH 0876/1421] Revert "io_uring/rw: fix wrong NOWAIT check in io_rw_init_file()" This reverts commit 975ec0db6e1704718d2ef7043827bef60da9e5a5. --- io_uring/rw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io_uring/rw.c b/io_uring/rw.c index 4ff3442ac2ee..6344006cf718 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -696,7 +696,7 @@ static int io_rw_init_file(struct io_kiocb *req, fmode_t mode) * reliably. If not, or it IOCB_NOWAIT is set, don't retry. */ if (kiocb->ki_flags & IOCB_NOWAIT || - ((file->f_flags & O_NONBLOCK && !(req->flags & REQ_F_SUPPORT_NOWAIT)))) + ((file->f_flags & O_NONBLOCK && (req->flags & REQ_F_SUPPORT_NOWAIT)))) req->flags |= REQ_F_NOWAIT; if (ctx->flags & IORING_SETUP_IOPOLL) { -- Gitee From 6315dfc77327903653643661c026f26ea411888d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:10 +0800 Subject: [PATCH 0877/1421] Revert "io_uring/rw: allow pollable non-blocking attempts for !FMODE_NOWAIT" This reverts commit b41bfc62a69c41e7c2900d0c40d8672b727e7dee. --- io_uring/rw.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/io_uring/rw.c b/io_uring/rw.c index 6344006cf718..230f553d1428 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -28,19 +28,9 @@ struct io_rw { rwf_t flags; }; -static bool io_file_supports_nowait(struct io_kiocb *req, __poll_t mask) +static inline bool io_file_supports_nowait(struct io_kiocb *req) { - /* If FMODE_NOWAIT is set for a file, we're golden */ - if (req->flags & REQ_F_SUPPORT_NOWAIT) - return true; - /* No FMODE_NOWAIT, if we can poll, check the status */ - if (io_file_can_poll(req)) { - struct poll_table_struct pt = { ._key = mask }; - - return vfs_poll(req->file, &pt) & mask; - } - /* No FMODE_NOWAIT support, and file isn't pollable. Tough luck. */ - return false; + return req->flags & REQ_F_SUPPORT_NOWAIT; } #ifdef CONFIG_COMPAT @@ -695,8 +685,8 @@ static int io_rw_init_file(struct io_kiocb *req, fmode_t mode) * supports async. Otherwise it's impossible to use O_NONBLOCK files * reliably. If not, or it IOCB_NOWAIT is set, don't retry. */ - if (kiocb->ki_flags & IOCB_NOWAIT || - ((file->f_flags & O_NONBLOCK && (req->flags & REQ_F_SUPPORT_NOWAIT)))) + if ((kiocb->ki_flags & IOCB_NOWAIT) || + ((file->f_flags & O_NONBLOCK) && !io_file_supports_nowait(req))) req->flags |= REQ_F_NOWAIT; if (ctx->flags & IORING_SETUP_IOPOLL) { @@ -762,7 +752,7 @@ static int __io_read(struct io_kiocb *req, unsigned int issue_flags) if (force_nonblock) { /* If the file doesn't support async, just async punt */ - if (unlikely(!io_file_supports_nowait(req, EPOLLIN))) { + if (unlikely(!io_file_supports_nowait(req))) { ret = io_setup_async_rw(req, iovec, s, true); return ret ?: -EAGAIN; } @@ -937,7 +927,7 @@ int io_write(struct io_kiocb *req, unsigned int issue_flags) if (force_nonblock) { /* If the file doesn't support async, just async punt */ - if (unlikely(!io_file_supports_nowait(req, EPOLLOUT))) + if (unlikely(!io_file_supports_nowait(req))) goto copy_iov; /* File path supports NOWAIT for non-direct_IO only for block devices. */ -- Gitee From 34557fb3caf71c049c93d52ed64ce980d044e390 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:10 +0800 Subject: [PATCH 0878/1421] Revert "io_uring: add io_file_can_poll() helper" This reverts commit cb83e50b226c3827a4d97ad477cc7b1f316bc11f. --- include/linux/io_uring_types.h | 3 --- io_uring/io_uring.c | 2 +- io_uring/io_uring.h | 12 ------------ io_uring/kbuf.c | 3 ++- io_uring/poll.c | 2 +- io_uring/rw.c | 4 ++-- 6 files changed, 6 insertions(+), 20 deletions(-) diff --git a/include/linux/io_uring_types.h b/include/linux/io_uring_types.h index dad2f9e4d53d..0fadef2983e0 100644 --- a/include/linux/io_uring_types.h +++ b/include/linux/io_uring_types.h @@ -416,7 +416,6 @@ enum { /* keep async read/write and isreg together and in order */ REQ_F_SUPPORT_NOWAIT_BIT, REQ_F_ISREG_BIT, - REQ_F_CAN_POLL_BIT, /* not a real bit, just to check we're not overflowing the space */ __REQ_F_LAST_BIT, @@ -484,8 +483,6 @@ enum { REQ_F_CLEAR_POLLIN = BIT(REQ_F_CLEAR_POLLIN_BIT), /* hashed into ->cancel_hash_locked, protected by ->uring_lock */ REQ_F_HASH_LOCKED = BIT(REQ_F_HASH_LOCKED_BIT), - /* file is pollable */ - REQ_F_CAN_POLL = BIT(REQ_F_CAN_POLL_BIT), }; typedef void (*io_req_tw_func_t)(struct io_kiocb *req, struct io_tw_state *ts); diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 9c383afeaf8e..43b46098279a 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -1953,7 +1953,7 @@ void io_wq_submit_work(struct io_wq_work *work) if (req->flags & REQ_F_FORCE_ASYNC) { bool opcode_poll = def->pollin || def->pollout; - if (opcode_poll && io_file_can_poll(req)) { + if (opcode_poll && file_can_poll(req->file)) { needs_poll = true; issue_flags |= IO_URING_F_NONBLOCK; } diff --git a/io_uring/io_uring.h b/io_uring/io_uring.h index 59f5f71037ff..0ffec66deee7 100644 --- a/io_uring/io_uring.h +++ b/io_uring/io_uring.h @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include "io-wq.h" @@ -411,15 +410,4 @@ static inline size_t uring_sqe_size(struct io_ring_ctx *ctx) return 2 * sizeof(struct io_uring_sqe); return sizeof(struct io_uring_sqe); } - -static inline bool io_file_can_poll(struct io_kiocb *req) -{ - if (req->flags & REQ_F_CAN_POLL) - return true; - if (file_can_poll(req->file)) { - req->flags |= REQ_F_CAN_POLL; - return true; - } - return false; -} #endif diff --git a/io_uring/kbuf.c b/io_uring/kbuf.c index addd7c973657..8c6611fe4f46 100644 --- a/io_uring/kbuf.c +++ b/io_uring/kbuf.c @@ -148,7 +148,8 @@ static void __user *io_ring_buffer_select(struct io_kiocb *req, size_t *len, req->buf_list = bl; req->buf_index = buf->bid; - if (issue_flags & IO_URING_F_UNLOCKED || !io_file_can_poll(req)) { + if (issue_flags & IO_URING_F_UNLOCKED || + (req->file && !file_can_poll(req->file))) { /* * If we came in unlocked, we have no choice but to consume the * buffer here, otherwise nothing ensures that the buffer won't diff --git a/io_uring/poll.c b/io_uring/poll.c index 2390bf5f1710..cf8e86bc96de 100644 --- a/io_uring/poll.c +++ b/io_uring/poll.c @@ -717,7 +717,7 @@ int io_arm_poll_handler(struct io_kiocb *req, unsigned issue_flags) if (!def->pollin && !def->pollout) return IO_APOLL_ABORTED; - if (!io_file_can_poll(req)) + if (!file_can_poll(req->file)) return IO_APOLL_ABORTED; if (!(req->flags & REQ_F_APOLL_MULTISHOT)) mask |= EPOLLONESHOT; diff --git a/io_uring/rw.c b/io_uring/rw.c index 230f553d1428..75b001febb4d 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -629,7 +629,7 @@ static bool io_rw_should_retry(struct io_kiocb *req) * just use poll if we can, and don't attempt if the fs doesn't * support callback based unlocks */ - if (io_file_can_poll(req) || !(req->file->f_mode & FMODE_BUF_RASYNC)) + if (file_can_poll(req->file) || !(req->file->f_mode & FMODE_BUF_RASYNC)) return false; wait->wait.func = io_async_buf_func; @@ -783,7 +783,7 @@ static int __io_read(struct io_kiocb *req, unsigned int issue_flags) if (ret == -EAGAIN || (req->flags & REQ_F_REISSUE)) { req->flags &= ~REQ_F_REISSUE; /* if we can poll, just do that */ - if (req->opcode == IORING_OP_READ && io_file_can_poll(req)) + if (req->opcode == IORING_OP_READ && file_can_poll(req->file)) return -EAGAIN; /* IOPOLL retry should happen for io-wq threads */ if (!force_nonblock && !(req->ctx->flags & IORING_SETUP_IOPOLL)) -- Gitee From 90b7f7c11805b2f7db335a7ab7274dd7b02f2132 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:11 +0800 Subject: [PATCH 0879/1421] Revert "HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()" This reverts commit e8bd97123a13eec30a24f7c43a713b1e73dc908a. --- drivers/hid/hid-hyperv.c | 4 ++-- drivers/hid/usbhid/hid-core.c | 25 +++++++++++-------------- drivers/usb/gadget/function/f_hid.c | 12 ++++++------ include/linux/hid.h | 3 +-- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/drivers/hid/hid-hyperv.c b/drivers/hid/hid-hyperv.c index 9eafff0b6ea4..0fb210e40a41 100644 --- a/drivers/hid/hid-hyperv.c +++ b/drivers/hid/hid-hyperv.c @@ -192,7 +192,7 @@ static void mousevsc_on_receive_device_info(struct mousevsc_dev *input_device, goto cleanup; input_device->report_desc_size = le16_to_cpu( - desc->rpt_desc.wDescriptorLength); + desc->desc[0].wDescriptorLength); if (input_device->report_desc_size == 0) { input_device->dev_info_status = -EINVAL; goto cleanup; @@ -210,7 +210,7 @@ static void mousevsc_on_receive_device_info(struct mousevsc_dev *input_device, memcpy(input_device->report_desc, ((unsigned char *)desc) + desc->bLength, - le16_to_cpu(desc->rpt_desc.wDescriptorLength)); + le16_to_cpu(desc->desc[0].wDescriptorLength)); /* Send the ack */ memset(&ack, 0, sizeof(struct mousevsc_prt_msg)); diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index a8e8da002b9b..257dd73e37bf 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -982,11 +982,12 @@ static int usbhid_parse(struct hid_device *hid) struct usb_host_interface *interface = intf->cur_altsetting; struct usb_device *dev = interface_to_usbdev (intf); struct hid_descriptor *hdesc; - struct hid_class_descriptor *hcdesc; u32 quirks = 0; unsigned int rsize = 0; char *rdesc; - int ret; + int ret, n; + int num_descriptors; + size_t offset = offsetof(struct hid_descriptor, desc); quirks = hid_lookup_quirk(hid); @@ -1008,19 +1009,20 @@ static int usbhid_parse(struct hid_device *hid) return -ENODEV; } - if (!hdesc->bNumDescriptors || - hdesc->bLength != sizeof(*hdesc) + - (hdesc->bNumDescriptors - 1) * sizeof(*hcdesc)) { - dbg_hid("hid descriptor invalid, bLen=%hhu bNum=%hhu\n", - hdesc->bLength, hdesc->bNumDescriptors); + if (hdesc->bLength < sizeof(struct hid_descriptor)) { + dbg_hid("hid descriptor is too short\n"); return -EINVAL; } hid->version = le16_to_cpu(hdesc->bcdHID); hid->country = hdesc->bCountryCode; - if (hdesc->rpt_desc.bDescriptorType == HID_DT_REPORT) - rsize = le16_to_cpu(hdesc->rpt_desc.wDescriptorLength); + num_descriptors = min_t(int, hdesc->bNumDescriptors, + (hdesc->bLength - offset) / sizeof(struct hid_class_descriptor)); + + for (n = 0; n < num_descriptors; n++) + if (hdesc->desc[n].bDescriptorType == HID_DT_REPORT) + rsize = le16_to_cpu(hdesc->desc[n].wDescriptorLength); if (!rsize || rsize > HID_MAX_DESCRIPTOR_SIZE) { dbg_hid("weird size of report descriptor (%u)\n", rsize); @@ -1048,11 +1050,6 @@ static int usbhid_parse(struct hid_device *hid) goto err; } - if (hdesc->bNumDescriptors > 1) - hid_warn(intf, - "%u unsupported optional hid class descriptors\n", - (int)(hdesc->bNumDescriptors - 1)); - hid->quirks |= quirks; return 0; diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c index 2f1ec03d17d6..2db01e03bfbf 100644 --- a/drivers/usb/gadget/function/f_hid.c +++ b/drivers/usb/gadget/function/f_hid.c @@ -118,8 +118,8 @@ static struct hid_descriptor hidg_desc = { .bcdHID = cpu_to_le16(0x0101), .bCountryCode = 0x00, .bNumDescriptors = 0x1, - /*.rpt_desc.bDescriptorType = DYNAMIC */ - /*.rpt_desc.wDescriptorLength = DYNAMIC */ + /*.desc[0].bDescriptorType = DYNAMIC */ + /*.desc[0].wDescriptorLenght = DYNAMIC */ }; /* Super-Speed Support */ @@ -728,8 +728,8 @@ static int hidg_setup(struct usb_function *f, struct hid_descriptor hidg_desc_copy = hidg_desc; VDBG(cdev, "USB_REQ_GET_DESCRIPTOR: HID\n"); - hidg_desc_copy.rpt_desc.bDescriptorType = HID_DT_REPORT; - hidg_desc_copy.rpt_desc.wDescriptorLength = + hidg_desc_copy.desc[0].bDescriptorType = HID_DT_REPORT; + hidg_desc_copy.desc[0].wDescriptorLength = cpu_to_le16(hidg->report_desc_length); length = min_t(unsigned short, length, @@ -970,8 +970,8 @@ static int hidg_bind(struct usb_configuration *c, struct usb_function *f) * We can use hidg_desc struct here but we should not relay * that its content won't change after returning from this function. */ - hidg_desc.rpt_desc.bDescriptorType = HID_DT_REPORT; - hidg_desc.rpt_desc.wDescriptorLength = + hidg_desc.desc[0].bDescriptorType = HID_DT_REPORT; + hidg_desc.desc[0].wDescriptorLength = cpu_to_le16(hidg->report_desc_length); hidg_hs_in_ep_desc.bEndpointAddress = diff --git a/include/linux/hid.h b/include/linux/hid.h index 5d37e2349fae..38e161a827bd 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -736,9 +736,8 @@ struct hid_descriptor { __le16 bcdHID; __u8 bCountryCode; __u8 bNumDescriptors; - struct hid_class_descriptor rpt_desc; - struct hid_class_descriptor opt_descs[]; + struct hid_class_descriptor desc[1]; } __attribute__ ((packed)); #define HID_DEVICE(b, g, ven, prod) \ -- Gitee From d9f520246ceb757f544a5296877bff4490d9d359 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:11 +0800 Subject: [PATCH 0880/1421] Revert "ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1" This reverts commit a4f61f04df8f4153a1d3cf15bb4bdb5aeb43386b. --- sound/usb/implicit.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/usb/implicit.c b/sound/usb/implicit.c index 77f06da93151..4727043fd745 100644 --- a/sound/usb/implicit.c +++ b/sound/usb/implicit.c @@ -57,7 +57,6 @@ static const struct snd_usb_implicit_fb_match playback_implicit_fb_quirks[] = { IMPLICIT_FB_FIXED_DEV(0x31e9, 0x0002, 0x81, 2), /* Solid State Logic SSL2+ */ IMPLICIT_FB_FIXED_DEV(0x0499, 0x172f, 0x81, 2), /* Steinberg UR22C */ IMPLICIT_FB_FIXED_DEV(0x0d9a, 0x00df, 0x81, 2), /* RTX6001 */ - IMPLICIT_FB_FIXED_DEV(0x19f7, 0x000a, 0x84, 3), /* RODE AI-1 */ IMPLICIT_FB_FIXED_DEV(0x22f0, 0x0006, 0x81, 3), /* Allen&Heath Qu-16 */ IMPLICIT_FB_FIXED_DEV(0x1686, 0xf029, 0x82, 2), /* Zoom UAC-2 */ IMPLICIT_FB_FIXED_DEV(0x2466, 0x8003, 0x86, 2), /* Fractal Audio Axe-Fx II */ -- Gitee From 2353fe0e05ed528ad4e1f68f27dc561796e12384 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:11 +0800 Subject: [PATCH 0881/1421] Revert "tools/resolve_btfids: Fix build when cross compiling kernel with clang." This reverts commit 9eec790ef30d7b33247ca50defef144223a0ff1f. --- tools/bpf/resolve_btfids/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/bpf/resolve_btfids/Makefile b/tools/bpf/resolve_btfids/Makefile index b0072e64b010..4b8079f294f6 100644 --- a/tools/bpf/resolve_btfids/Makefile +++ b/tools/bpf/resolve_btfids/Makefile @@ -19,7 +19,7 @@ endif # Overrides for the prepare step libraries. HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \ - CROSS_COMPILE="" CLANG_CROSS_FLAGS="" EXTRA_CFLAGS="$(HOSTCFLAGS)" + CROSS_COMPILE="" EXTRA_CFLAGS="$(HOSTCFLAGS)" RM ?= rm HOSTCC ?= gcc -- Gitee From ce94ab8f051f8c86ed11caa23781fb60b3d593f8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:11 +0800 Subject: [PATCH 0882/1421] Revert "block: Fix bvec_set_folio() for very large folios" This reverts commit 1ecd881704d8c431959a055945a06e1a60adb9c5. --- include/linux/bvec.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/include/linux/bvec.h b/include/linux/bvec.h index 99ab7b2bba27..bd1e361b351c 100644 --- a/include/linux/bvec.h +++ b/include/linux/bvec.h @@ -57,12 +57,9 @@ static inline void bvec_set_page(struct bio_vec *bv, struct page *page, * @offset: offset into the folio */ static inline void bvec_set_folio(struct bio_vec *bv, struct folio *folio, - size_t len, size_t offset) + unsigned int len, unsigned int offset) { - unsigned long nr = offset / PAGE_SIZE; - - WARN_ON_ONCE(len > UINT_MAX); - bvec_set_page(bv, folio_page(folio, nr), len, offset % PAGE_SIZE); + bvec_set_page(bv, &folio->page, len, offset); } /** -- Gitee From 9c5bb82d96c925c19d7c4a96f2dbf0b33e3339a7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:12 +0800 Subject: [PATCH 0883/1421] Revert "bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP" This reverts commit ff6e24a7c5aa4e4deddce474b0b4953ed79fdd6f. --- include/linux/bio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/bio.h b/include/linux/bio.h index f193aef4fac0..b893418c3cc0 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -294,7 +294,7 @@ static inline void bio_first_folio(struct folio_iter *fi, struct bio *bio, fi->folio = page_folio(bvec->bv_page); fi->offset = bvec->bv_offset + - PAGE_SIZE * folio_page_idx(fi->folio, bvec->bv_page); + PAGE_SIZE * (bvec->bv_page - &fi->folio->page); fi->_seg_count = bvec->bv_len; fi->length = min(folio_size(fi->folio) - fi->offset, fi->_seg_count); fi->_next = folio_next(fi->folio); -- Gitee From 6bcc0aa319074b7103ee9622cdaebc4f5d5d63f5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:12 +0800 Subject: [PATCH 0884/1421] Revert "perf: Ensure bpf_perf_link path is properly serialized" This reverts commit c7b53583cbc566302b213c41f0f73e66bccd5357. --- kernel/events/core.c | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 563f39518f7f..6460f79280ed 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -5913,9 +5913,6 @@ static int perf_event_set_output(struct perf_event *event, static int perf_event_set_filter(struct perf_event *event, void __user *arg); static int perf_copy_attr(struct perf_event_attr __user *uattr, struct perf_event_attr *attr); -static int __perf_event_set_bpf_prog(struct perf_event *event, - struct bpf_prog *prog, - u64 bpf_cookie); static long _perf_ioctl(struct perf_event *event, unsigned int cmd, unsigned long arg) { @@ -5984,7 +5981,7 @@ static long _perf_ioctl(struct perf_event *event, unsigned int cmd, unsigned lon if (IS_ERR(prog)) return PTR_ERR(prog); - err = __perf_event_set_bpf_prog(event, prog, 0); + err = perf_event_set_bpf_prog(event, prog, 0); if (err) { bpf_prog_put(prog); return err; @@ -10586,9 +10583,8 @@ static inline bool perf_event_is_tracing(struct perf_event *event) return false; } -static int __perf_event_set_bpf_prog(struct perf_event *event, - struct bpf_prog *prog, - u64 bpf_cookie) +int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog, + u64 bpf_cookie) { bool is_kprobe, is_uprobe, is_tracepoint, is_syscall_tp; @@ -10626,20 +10622,6 @@ static int __perf_event_set_bpf_prog(struct perf_event *event, return perf_event_attach_bpf_prog(event, prog, bpf_cookie); } -int perf_event_set_bpf_prog(struct perf_event *event, - struct bpf_prog *prog, - u64 bpf_cookie) -{ - struct perf_event_context *ctx; - int ret; - - ctx = perf_event_ctx_lock(event); - ret = __perf_event_set_bpf_prog(event, prog, bpf_cookie); - perf_event_ctx_unlock(event, ctx); - - return ret; -} - void perf_event_free_bpf_prog(struct perf_event *event) { if (!perf_event_is_tracing(event)) { @@ -10659,15 +10641,7 @@ static void perf_event_free_filter(struct perf_event *event) { } -static int __perf_event_set_bpf_prog(struct perf_event *event, - struct bpf_prog *prog, - u64 bpf_cookie) -{ - return -ENOENT; -} - -int perf_event_set_bpf_prog(struct perf_event *event, - struct bpf_prog *prog, +int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog, u64 bpf_cookie) { return -ENOENT; -- Gitee From 8bd6931058863c1cdb2ef275647abfb3dbfbc5fe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:12 +0800 Subject: [PATCH 0885/1421] Revert "nvmet-fcloop: access fcpreq only when holding reqlock" This reverts commit a621ed0098c361f14101f3621e32da6ecc2e9ef3. --- drivers/nvme/target/fcloop.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c index aeeb7455fc2e..4b35bdcac185 100644 --- a/drivers/nvme/target/fcloop.c +++ b/drivers/nvme/target/fcloop.c @@ -613,13 +613,12 @@ fcloop_fcp_recv_work(struct work_struct *work) { struct fcloop_fcpreq *tfcp_req = container_of(work, struct fcloop_fcpreq, fcp_rcv_work); - struct nvmefc_fcp_req *fcpreq; + struct nvmefc_fcp_req *fcpreq = tfcp_req->fcpreq; unsigned long flags; int ret = 0; bool aborted = false; spin_lock_irqsave(&tfcp_req->reqlock, flags); - fcpreq = tfcp_req->fcpreq; switch (tfcp_req->inistate) { case INI_IO_START: tfcp_req->inistate = INI_IO_ACTIVE; @@ -634,19 +633,16 @@ fcloop_fcp_recv_work(struct work_struct *work) } spin_unlock_irqrestore(&tfcp_req->reqlock, flags); - if (unlikely(aborted)) { - /* the abort handler will call fcloop_call_host_done */ - return; - } - - if (unlikely(check_for_drop(tfcp_req))) { - pr_info("%s: dropped command ********\n", __func__); - return; + if (unlikely(aborted)) + ret = -ECANCELED; + else { + if (likely(!check_for_drop(tfcp_req))) + ret = nvmet_fc_rcv_fcp_req(tfcp_req->tport->targetport, + &tfcp_req->tgt_fcp_req, + fcpreq->cmdaddr, fcpreq->cmdlen); + else + pr_info("%s: dropped command ********\n", __func__); } - - ret = nvmet_fc_rcv_fcp_req(tfcp_req->tport->targetport, - &tfcp_req->tgt_fcp_req, - fcpreq->cmdaddr, fcpreq->cmdlen); if (ret) fcloop_call_host_done(fcpreq, tfcp_req, ret); } @@ -661,10 +657,9 @@ fcloop_fcp_abort_recv_work(struct work_struct *work) unsigned long flags; spin_lock_irqsave(&tfcp_req->reqlock, flags); + fcpreq = tfcp_req->fcpreq; switch (tfcp_req->inistate) { case INI_IO_ABORTED: - fcpreq = tfcp_req->fcpreq; - tfcp_req->fcpreq = NULL; break; case INI_IO_COMPLETED: completed = true; @@ -686,6 +681,10 @@ fcloop_fcp_abort_recv_work(struct work_struct *work) nvmet_fc_rcv_fcp_abort(tfcp_req->tport->targetport, &tfcp_req->tgt_fcp_req); + spin_lock_irqsave(&tfcp_req->reqlock, flags); + tfcp_req->fcpreq = NULL; + spin_unlock_irqrestore(&tfcp_req->reqlock, flags); + fcloop_call_host_done(fcpreq, tfcp_req, -ECANCELED); /* call_host_done releases reference for abort downcall */ } -- Gitee From f30b1a430b6b7e9bccafc8e37c391dcaf18f91aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:12 +0800 Subject: [PATCH 0886/1421] Revert "fs/filesystems: Fix potential unsigned integer underflow in fs_name()" This reverts commit c383aac9bca6f3416dd336b8cc52ce0f26e290c1. --- fs/filesystems.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/fs/filesystems.c b/fs/filesystems.c index 95e5256821a5..58b9067b2391 100644 --- a/fs/filesystems.c +++ b/fs/filesystems.c @@ -156,19 +156,15 @@ static int fs_index(const char __user * __name) static int fs_name(unsigned int index, char __user * buf) { struct file_system_type * tmp; - int len, res = -EINVAL; + int len, res; read_lock(&file_systems_lock); - for (tmp = file_systems; tmp; tmp = tmp->next, index--) { - if (index == 0) { - if (try_module_get(tmp->owner)) - res = 0; + for (tmp = file_systems; tmp; tmp = tmp->next, index--) + if (index <= 0 && try_module_get(tmp->owner)) break; - } - } read_unlock(&file_systems_lock); - if (res) - return res; + if (!tmp) + return -EINVAL; /* OK, we got the reference, so we can safely block */ len = strlen(tmp->name) + 1; -- Gitee From 2d2b13fd77a9fa8efd3c4a4b3b54a05a8ae74b7e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:12 +0800 Subject: [PATCH 0887/1421] Revert "net_sched: ets: fix a race in ets_qdisc_change()" This reverts commit 1a01281c9ede57317265cf3d561490d951955e8a. --- net/sched/sch_ets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_ets.c b/net/sched/sch_ets.c index 3ee46f6e005d..9da86db4d2c2 100644 --- a/net/sched/sch_ets.c +++ b/net/sched/sch_ets.c @@ -661,7 +661,7 @@ static int ets_qdisc_change(struct Qdisc *sch, struct nlattr *opt, for (i = q->nbands; i < oldbands; i++) { if (i >= q->nstrict && q->classes[i].qdisc->q.qlen) list_del_init(&q->classes[i].alist); - qdisc_purge_queue(q->classes[i].qdisc); + qdisc_tree_flush_backlog(q->classes[i].qdisc); } q->nstrict = nstrict; memcpy(q->prio2band, priomap, sizeof(priomap)); -- Gitee From 8858cb8b891a083c2b3c7767e4422c1966097d5b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:13 +0800 Subject: [PATCH 0888/1421] Revert "net_sched: tbf: fix a race in tbf_change()" This reverts commit 8f997be7efd33eec434747d0aabbe59d0cf47559. --- net/sched/sch_tbf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c index 61dd5c8f2310..f92174008499 100644 --- a/net/sched/sch_tbf.c +++ b/net/sched/sch_tbf.c @@ -452,7 +452,7 @@ static int tbf_change(struct Qdisc *sch, struct nlattr *opt, sch_tree_lock(sch); if (child) { - qdisc_purge_queue(q->qdisc); + qdisc_tree_flush_backlog(q->qdisc); old = q->qdisc; q->qdisc = child; } -- Gitee From c52e8135de2a42c4c0209653591062cff9d17d6b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:13 +0800 Subject: [PATCH 0889/1421] Revert "net_sched: red: fix a race in __red_change()" This reverts commit a12312ace39682956cabf97dcbea89257177bcec. --- net/sched/sch_red.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c index 3c6b4460cf2c..16277b6a0238 100644 --- a/net/sched/sch_red.c +++ b/net/sched/sch_red.c @@ -283,7 +283,7 @@ static int __red_change(struct Qdisc *sch, struct nlattr **tb, q->userbits = userbits; q->limit = ctl->limit; if (child) { - qdisc_purge_queue(q->qdisc); + qdisc_tree_flush_backlog(q->qdisc); old_child = q->qdisc; q->qdisc = child; } -- Gitee From 21f553a1d569fafbc266532ca7973878ad9e5378 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:13 +0800 Subject: [PATCH 0890/1421] Revert "net_sched: prio: fix a race in prio_tune()" This reverts commit 39a357141198dbccb0a1de3800b5aca1568335b5. --- net/sched/sch_prio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c index fdd9caa41e80..fdc5ef52c3ee 100644 --- a/net/sched/sch_prio.c +++ b/net/sched/sch_prio.c @@ -211,7 +211,7 @@ static int prio_tune(struct Qdisc *sch, struct nlattr *opt, memcpy(q->prio2band, qopt->priomap, TC_PRIO_MAX+1); for (i = q->bands; i < oldbands; i++) - qdisc_purge_queue(q->queues[i]); + qdisc_tree_flush_backlog(q->queues[i]); for (i = oldbands; i < q->bands; i++) { q->queues[i] = queues[i]; -- Gitee From 17a1f156ebccfbf9823b16f141f509236f20375c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:13 +0800 Subject: [PATCH 0891/1421] Revert "net/mlx5e: Fix leak of Geneve TLV option object" This reverts commit 72f8c503376f26cc066f872b0c7c60f62ab0425d. --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 2be9c69daad5..dc9b157a4499 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -1915,8 +1915,9 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv, return err; } -static bool mlx5_flow_has_geneve_opt(struct mlx5_flow_spec *spec) +static bool mlx5_flow_has_geneve_opt(struct mlx5e_tc_flow *flow) { + struct mlx5_flow_spec *spec = &flow->attr->parse_attr->spec; void *headers_v = MLX5_ADDR_OF(fte_match_param, spec->match_value, misc_parameters_3); @@ -1955,7 +1956,7 @@ static void mlx5e_tc_del_fdb_flow(struct mlx5e_priv *priv, } complete_all(&flow->del_hw_done); - if (mlx5_flow_has_geneve_opt(&attr->parse_attr->spec)) + if (mlx5_flow_has_geneve_opt(flow)) mlx5_geneve_tlv_option_del(priv->mdev->geneve); if (flow->decap_route) @@ -2455,13 +2456,12 @@ static int parse_tunnel_attr(struct mlx5e_priv *priv, err = mlx5e_tc_tun_parse(filter_dev, priv, tmp_spec, f, match_level); if (err) { + kvfree(tmp_spec); NL_SET_ERR_MSG_MOD(extack, "Failed to parse tunnel attributes"); netdev_warn(priv->netdev, "Failed to parse tunnel attributes"); - } else { - err = mlx5e_tc_set_attr_rx_tun(flow, tmp_spec); + return err; } - if (mlx5_flow_has_geneve_opt(tmp_spec)) - mlx5_geneve_tlv_option_del(priv->mdev->geneve); + err = mlx5e_tc_set_attr_rx_tun(flow, tmp_spec); kvfree(tmp_spec); if (err) return err; -- Gitee From eaf2db4602c4d02fa2c60f4445c34c242b8d9dcc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:13 +0800 Subject: [PATCH 0892/1421] Revert "net/mlx5: Fix return value when searching for existing flow group" This reverts commit 2f35ec848df801e5004faf50117c11110e05f6a4. --- drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c index 5f35a6fc0305..d2dc375f5e49 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c @@ -1984,7 +1984,6 @@ try_add_to_existing_fg(struct mlx5_flow_table *ft, struct mlx5_flow_handle *rule; struct match_list *iter; bool take_write = false; - bool try_again = false; struct fs_fte *fte; u64 version = 0; int err; @@ -2044,7 +2043,6 @@ try_add_to_existing_fg(struct mlx5_flow_table *ft, nested_down_write_ref_node(&g->node, FS_LOCK_PARENT); if (!g->node.active) { - try_again = true; up_write_ref_node(&g->node, false); continue; } @@ -2066,8 +2064,7 @@ try_add_to_existing_fg(struct mlx5_flow_table *ft, tree_put_node(&fte->node, false); return rule; } - err = try_again ? -EAGAIN : -ENOENT; - rule = ERR_PTR(err); + rule = ERR_PTR(-ENOENT); out: kmem_cache_free(steering->ftes_cache, fte); return rule; -- Gitee From c9e01da64080785bb9dc4a5b0badd69eed498dbb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:14 +0800 Subject: [PATCH 0893/1421] Revert "net/mlx5: Fix ECVF vports unload on shutdown flow" This reverts commit 07c77cddb05bc9f15d03e3e907252beacc049ef4. --- .../net/ethernet/mellanox/mlx5/core/eswitch.c | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c index 914b380fd3ee..f6022c135ec0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c @@ -1295,15 +1295,12 @@ mlx5_eswitch_enable_pf_vf_vports(struct mlx5_eswitch *esw, ret = mlx5_eswitch_load_pf_vf_vport(esw, MLX5_VPORT_ECPF, enabled_events); if (ret) goto ecpf_err; - } - - /* Enable ECVF vports */ - if (mlx5_core_ec_sriov_enabled(esw->dev)) { - ret = mlx5_eswitch_load_ec_vf_vports(esw, - esw->esw_funcs.num_ec_vfs, - enabled_events); - if (ret) - goto ec_vf_err; + if (mlx5_core_ec_sriov_enabled(esw->dev)) { + ret = mlx5_eswitch_load_ec_vf_vports(esw, esw->esw_funcs.num_ec_vfs, + enabled_events); + if (ret) + goto ec_vf_err; + } } /* Enable VF vports */ @@ -1334,11 +1331,9 @@ void mlx5_eswitch_disable_pf_vf_vports(struct mlx5_eswitch *esw) { mlx5_eswitch_unload_vf_vports(esw, esw->esw_funcs.num_vfs); - if (mlx5_core_ec_sriov_enabled(esw->dev)) - mlx5_eswitch_unload_ec_vf_vports(esw, - esw->esw_funcs.num_ec_vfs); - if (mlx5_ecpf_vport_exists(esw->dev)) { + if (mlx5_core_ec_sriov_enabled(esw->dev)) + mlx5_eswitch_unload_ec_vf_vports(esw, esw->esw_funcs.num_vfs); mlx5_eswitch_unload_pf_vf_vport(esw, MLX5_VPORT_ECPF); } -- Gitee From 8c8fb60eb40f19d93f46146d08d354964aed1251 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:14 +0800 Subject: [PATCH 0894/1421] Revert "net/mlx5: Ensure fw pages are always allocated on same NUMA" This reverts commit 9607b5b3f723ecac20e4986d8d91299a55230753. --- drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c b/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c index e0581c6f9cec..dcf58efac159 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c @@ -291,7 +291,7 @@ static void free_4k(struct mlx5_core_dev *dev, u64 addr, u32 function) static int alloc_system_page(struct mlx5_core_dev *dev, u32 function) { struct device *device = mlx5_core_dma_dev(dev); - int nid = dev->priv.numa_node; + int nid = dev_to_node(device); struct page *page; u64 zero_addr = 1; u64 addr; -- Gitee From 8fc3d13c74b840c4faedbae85c46db80af5d1111 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:14 +0800 Subject: [PATCH 0895/1421] Revert "Bluetooth: MGMT: Fix sparse errors" This reverts commit 7eda9ddd39c9aa185f6b8d414f327c07a9c49acf. --- net/bluetooth/mgmt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 853d217cabc9..44174f59b31e 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -5159,11 +5159,11 @@ static void mgmt_adv_monitor_added(struct sock *sk, struct hci_dev *hdev, } static void mgmt_adv_monitor_removed(struct sock *sk, struct hci_dev *hdev, - __le16 handle) + u16 handle) { struct mgmt_ev_adv_monitor_removed ev; - ev.monitor_handle = handle; + ev.monitor_handle = cpu_to_le16(handle); mgmt_event(MGMT_EV_ADV_MONITOR_REMOVED, hdev, &ev, sizeof(ev), sk); } -- Gitee From 27182b5922ec6329720743a844d0a60950d2d6cf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:14 +0800 Subject: [PATCH 0896/1421] Revert "Bluetooth: hci_sync: Fix broadcast/PA when using an existing instance" This reverts commit df1950273fcb75a6ba31a41f664225a9bedae3e5. --- net/bluetooth/hci_sync.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index e92bc4ceb5ad..d6f40806ee51 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -1586,8 +1586,7 @@ static int hci_enable_per_advertising_sync(struct hci_dev *hdev, u8 instance) static int hci_adv_bcast_annoucement(struct hci_dev *hdev, struct adv_info *adv) { u8 bid[3]; - u8 ad[HCI_MAX_EXT_AD_LENGTH]; - u8 len; + u8 ad[4 + 3]; /* Skip if NULL adv as instance 0x00 is used for general purpose * advertising so it cannot used for the likes of Broadcast Announcement @@ -1613,10 +1612,8 @@ static int hci_adv_bcast_annoucement(struct hci_dev *hdev, struct adv_info *adv) /* Generate Broadcast ID */ get_random_bytes(bid, sizeof(bid)); - len = eir_append_service_data(ad, 0, 0x1852, bid, sizeof(bid)); - memcpy(ad + len, adv->adv_data, adv->adv_data_len); - hci_set_adv_instance_data(hdev, adv->instance, len + adv->adv_data_len, - ad, 0, NULL); + eir_append_service_data(ad, 0, 0x1852, bid, sizeof(bid)); + hci_set_adv_instance_data(hdev, adv->instance, sizeof(ad), ad, 0, NULL); return hci_update_adv_data_sync(hdev, adv->instance); } @@ -1633,15 +1630,8 @@ int hci_start_per_adv_sync(struct hci_dev *hdev, u8 instance, u8 data_len, if (instance) { adv = hci_find_adv_instance(hdev, instance); - if (adv) { - /* Turn it into periodic advertising */ - adv->periodic = true; - adv->per_adv_data_len = data_len; - if (data) - memcpy(adv->per_adv_data, data, data_len); - adv->flags = flags; - } else if (!adv) { - /* Create an instance if that could not be found */ + /* Create an instance if that could not be found */ + if (!adv) { adv = hci_add_per_instance(hdev, instance, flags, data_len, data, sync_interval, -- Gitee From 20ee4f1b60fde20642ac6d8c3300f539893195aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:14 +0800 Subject: [PATCH 0897/1421] Revert "Bluetooth: Fix NULL pointer deference on eir_get_service_data" This reverts commit 6def2798677cf7cfe2521d6498af8185bf5291bd. --- net/bluetooth/eir.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/net/bluetooth/eir.c b/net/bluetooth/eir.c index 3e1713673ecc..1bc51e2b05a3 100644 --- a/net/bluetooth/eir.c +++ b/net/bluetooth/eir.c @@ -366,19 +366,17 @@ u8 eir_create_scan_rsp(struct hci_dev *hdev, u8 instance, u8 *ptr) void *eir_get_service_data(u8 *eir, size_t eir_len, u16 uuid, size_t *len) { - size_t dlen; - - while ((eir = eir_get_data(eir, eir_len, EIR_SERVICE_DATA, &dlen))) { + while ((eir = eir_get_data(eir, eir_len, EIR_SERVICE_DATA, len))) { u16 value = get_unaligned_le16(eir); if (uuid == value) { if (len) - *len = dlen - 2; + *len -= 2; return &eir[2]; } - eir += dlen; - eir_len -= dlen; + eir += *len; + eir_len -= *len; } return NULL; -- Gitee From 87806de9445234527ffa040c5bf27cdb3a76247c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:15 +0800 Subject: [PATCH 0898/1421] Revert "net/mdiobus: Fix potential out-of-bounds clause 45 read/write access" This reverts commit 29120e92960e9e17d8aa4cab57b0d1511d9de862. --- drivers/net/phy/mdio_bus.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index e02706b7cc1e..103998969d44 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -946,9 +946,6 @@ int __mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum) lockdep_assert_held_once(&bus->mdio_lock); - if (addr >= PHY_MAX_ADDR) - return -ENXIO; - if (bus->read_c45) retval = bus->read_c45(bus, addr, devad, regnum); else @@ -980,9 +977,6 @@ int __mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum, lockdep_assert_held_once(&bus->mdio_lock); - if (addr >= PHY_MAX_ADDR) - return -ENXIO; - if (bus->write_c45) err = bus->write_c45(bus, addr, devad, regnum, val); else -- Gitee From 4645b708ab350d1316e196fac7c618c45cd0883a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:15 +0800 Subject: [PATCH 0899/1421] Revert "net/mdiobus: Fix potential out-of-bounds read/write access" This reverts commit 17e0ce63bff064791ea51eea1588551b381090dd. --- drivers/net/phy/mdio_bus.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 103998969d44..25dcaa49ab8b 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -850,9 +850,6 @@ int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum) lockdep_assert_held_once(&bus->mdio_lock); - if (addr >= PHY_MAX_ADDR) - return -ENXIO; - if (bus->read) retval = bus->read(bus, addr, regnum); else @@ -882,9 +879,6 @@ int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val) lockdep_assert_held_once(&bus->mdio_lock); - if (addr >= PHY_MAX_ADDR) - return -ENXIO; - if (bus->write) err = bus->write(bus, addr, regnum, val); else -- Gitee From 221ea9cdf47877a1cfcaa227f043c866d37b138c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:15 +0800 Subject: [PATCH 0900/1421] Revert "macsec: MACsec SCI assignment for ES = 0" This reverts commit 59e8a29a0d655c5b753cd4d375de3bc927e34966. --- drivers/net/macsec.c | 40 ++++++---------------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 767053d6c6b6..7c96493a367b 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -243,39 +243,15 @@ static sci_t make_sci(const u8 *addr, __be16 port) return sci; } -static sci_t macsec_active_sci(struct macsec_secy *secy) +static sci_t macsec_frame_sci(struct macsec_eth_header *hdr, bool sci_present) { - struct macsec_rx_sc *rx_sc = rcu_dereference_bh(secy->rx_sc); - - /* Case single RX SC */ - if (rx_sc && !rcu_dereference_bh(rx_sc->next)) - return (rx_sc->active) ? rx_sc->sci : 0; - /* Case no RX SC or multiple */ - else - return 0; -} - -static sci_t macsec_frame_sci(struct macsec_eth_header *hdr, bool sci_present, - struct macsec_rxh_data *rxd) -{ - struct macsec_dev *macsec; - sci_t sci = 0; + sci_t sci; - /* SC = 1 */ - if (sci_present) { + if (sci_present) memcpy(&sci, hdr->secure_channel_id, sizeof(hdr->secure_channel_id)); - /* SC = 0; ES = 0 */ - } else if ((!(hdr->tci_an & (MACSEC_TCI_ES | MACSEC_TCI_SC))) && - (list_is_singular(&rxd->secys))) { - /* Only one SECY should exist on this scenario */ - macsec = list_first_or_null_rcu(&rxd->secys, struct macsec_dev, - secys); - if (macsec) - return macsec_active_sci(&macsec->secy); - } else { + else sci = make_sci(hdr->eth.h_source, MACSEC_PORT_ES); - } return sci; } @@ -1129,7 +1105,7 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb) struct macsec_rxh_data *rxd; struct macsec_dev *macsec; unsigned int len; - sci_t sci = 0; + sci_t sci; u32 hdr_pn; bool cbit; struct pcpu_rx_sc_stats *rxsc_stats; @@ -1176,14 +1152,11 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb) macsec_skb_cb(skb)->has_sci = !!(hdr->tci_an & MACSEC_TCI_SC); macsec_skb_cb(skb)->assoc_num = hdr->tci_an & MACSEC_AN_MASK; + sci = macsec_frame_sci(hdr, macsec_skb_cb(skb)->has_sci); rcu_read_lock(); rxd = macsec_data_rcu(skb->dev); - sci = macsec_frame_sci(hdr, macsec_skb_cb(skb)->has_sci, rxd); - if (!sci) - goto drop_nosc; - list_for_each_entry_rcu(macsec, &rxd->secys, secys) { struct macsec_rx_sc *sc = find_rx_sc(&macsec->secy, sci); @@ -1306,7 +1279,6 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb) macsec_rxsa_put(rx_sa); drop_nosa: macsec_rxsc_put(rx_sc); -drop_nosc: rcu_read_unlock(); drop_direct: kfree_skb(skb); -- Gitee From 28490caac60110c5fdf0e9292f5be993bdb9646a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:15 +0800 Subject: [PATCH 0901/1421] Revert "net: Fix TOCTOU issue in sk_is_readable()" This reverts commit fafcf7dde838e1100594cff5aca6d8aa65b69573. --- include/net/sock.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index e15bea43b2ec..dc625f94ee37 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -3043,11 +3043,8 @@ int sock_ioctl_inout(struct sock *sk, unsigned int cmd, int sk_ioctl(struct sock *sk, unsigned int cmd, void __user *arg); static inline bool sk_is_readable(struct sock *sk) { - const struct proto *prot = READ_ONCE(sk->sk_prot); - - if (prot->sock_is_readable) - return prot->sock_is_readable(sk); - + if (sk->sk_prot->sock_is_readable) + return sk->sk_prot->sock_is_readable(sk); return false; } #endif /* _SOCK_H */ -- Gitee From 21ab92f3b50c74000f72eee8a538fba56486b047 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:16 +0800 Subject: [PATCH 0902/1421] Revert "ACPI: CPPC: Fix NULL pointer dereference when nosmp is used" This reverts commit 6831834023f8206041a5be4077a768696b365f8a. --- drivers/acpi/cppc_acpi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index 10d531427ba7..ed02a2a9970a 100644 --- a/drivers/acpi/cppc_acpi.c +++ b/drivers/acpi/cppc_acpi.c @@ -461,7 +461,7 @@ bool cppc_allow_fast_switch(void) struct cpc_desc *cpc_ptr; int cpu; - for_each_present_cpu(cpu) { + for_each_possible_cpu(cpu) { cpc_ptr = per_cpu(cpc_desc_ptr, cpu); desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF]; if (!CPC_IN_SYSTEM_MEMORY(desired_reg) && -- Gitee From 3b099ce617ac3a21b8230c09f76babee8c72063f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:16 +0800 Subject: [PATCH 0903/1421] Revert "i40e: retry VFLR handling if there is ongoing VF reset" This reverts commit bec2d15b3235aa787532fc0aadfef37d3b3bb9ce. --- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 80036942dc76..348869f05020 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -4332,10 +4332,7 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf) reg = rd32(hw, I40E_GLGEN_VFLRSTAT(reg_idx)); if (reg & BIT(bit_idx)) /* i40e_reset_vf will clear the bit in GLGEN_VFLRSTAT */ - if (!i40e_reset_vf(vf, true)) { - /* At least one VF did not finish resetting, retry next time */ - set_bit(__I40E_VFLR_EVENT_PENDING, pf->state); - } + i40e_reset_vf(vf, true); } return 0; -- Gitee From f5b4d76de8e7667609a5553dbd44eb3e90883e30 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:16 +0800 Subject: [PATCH 0904/1421] Revert "i40e: return false from i40e_reset_vf if reset is in progress" This reverts commit 623a8f085b4f714ef1a460a4ca8077c4fa37b3b0. --- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 348869f05020..d5509bc16d0d 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -1552,8 +1552,8 @@ static void i40e_cleanup_reset_vf(struct i40e_vf *vf) * @vf: pointer to the VF structure * @flr: VFLR was issued or not * - * Return: True if reset was performed successfully or if resets are disabled. - * False if reset is already in progress. + * Returns true if the VF is in reset, resets successfully, or resets + * are disabled and false otherwise. **/ bool i40e_reset_vf(struct i40e_vf *vf, bool flr) { @@ -1572,7 +1572,7 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr) /* If VF is being reset already we don't need to continue. */ if (test_and_set_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) - return false; + return true; i40e_trigger_vf_reset(vf, flr); -- Gitee From 4928f1cdc9d9ecab5d0ba7f7dd01850776558788 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:16 +0800 Subject: [PATCH 0905/1421] Revert "drm/meson: fix more rounding issues with 59.94Hz modes" This reverts commit 71474b17abbbe9ca8dbfaea51d4b395ef1c42760. --- drivers/gpu/drm/meson/meson_vclk.c | 55 ++++++++++++------------------ 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_vclk.c b/drivers/gpu/drm/meson/meson_vclk.c index dfe0c28a0f05..c4123bb958e4 100644 --- a/drivers/gpu/drm/meson/meson_vclk.c +++ b/drivers/gpu/drm/meson/meson_vclk.c @@ -110,7 +110,10 @@ #define HDMI_PLL_LOCK BIT(31) #define HDMI_PLL_LOCK_G12A (3 << 30) -#define FREQ_1000_1001(_freq) DIV_ROUND_CLOSEST_ULL((_freq) * 1000ULL, 1001ULL) +#define PIXEL_FREQ_1000_1001(_freq) \ + DIV_ROUND_CLOSEST_ULL((_freq) * 1000ULL, 1001ULL) +#define PHY_FREQ_1000_1001(_freq) \ + (PIXEL_FREQ_1000_1001(DIV_ROUND_DOWN_ULL(_freq, 10ULL)) * 10) /* VID PLL Dividers */ enum { @@ -769,36 +772,6 @@ static void meson_hdmi_pll_generic_set(struct meson_drm *priv, pll_freq); } -static bool meson_vclk_freqs_are_matching_param(unsigned int idx, - unsigned long long phy_freq, - unsigned long long vclk_freq) -{ - DRM_DEBUG_DRIVER("i = %d vclk_freq = %lluHz alt = %lluHz\n", - idx, params[idx].vclk_freq, - FREQ_1000_1001(params[idx].vclk_freq)); - DRM_DEBUG_DRIVER("i = %d phy_freq = %lluHz alt = %lluHz\n", - idx, params[idx].phy_freq, - FREQ_1000_1001(params[idx].phy_freq)); - - /* Match strict frequency */ - if (phy_freq == params[idx].phy_freq && - vclk_freq == params[idx].vclk_freq) - return true; - - /* Match 1000/1001 variant: vclk deviation has to be less than 1kHz - * (drm EDID is defined in 1kHz steps, so everything smaller must be - * rounding error) and the PHY freq deviation has to be less than - * 10kHz (as the TMDS clock is 10 times the pixel clock, so anything - * smaller must be rounding error as well). - */ - if (abs(vclk_freq - FREQ_1000_1001(params[idx].vclk_freq)) < 1000 && - abs(phy_freq - FREQ_1000_1001(params[idx].phy_freq)) < 10000) - return true; - - /* no match */ - return false; -} - enum drm_mode_status meson_vclk_vic_supported_freq(struct meson_drm *priv, unsigned long long phy_freq, @@ -817,7 +790,19 @@ meson_vclk_vic_supported_freq(struct meson_drm *priv, } for (i = 0 ; params[i].pixel_freq ; ++i) { - if (meson_vclk_freqs_are_matching_param(i, phy_freq, vclk_freq)) + DRM_DEBUG_DRIVER("i = %d vclk_freq = %lluHz alt = %lluHz\n", + i, params[i].vclk_freq, + PIXEL_FREQ_1000_1001(params[i].vclk_freq)); + DRM_DEBUG_DRIVER("i = %d phy_freq = %lluHz alt = %lluHz\n", + i, params[i].phy_freq, + PHY_FREQ_1000_1001(params[i].phy_freq)); + /* Match strict frequency */ + if (phy_freq == params[i].phy_freq && + vclk_freq == params[i].vclk_freq) + return MODE_OK; + /* Match 1000/1001 variant */ + if (phy_freq == PHY_FREQ_1000_1001(params[i].phy_freq) && + vclk_freq == PIXEL_FREQ_1000_1001(params[i].vclk_freq)) return MODE_OK; } @@ -1090,8 +1075,10 @@ void meson_vclk_setup(struct meson_drm *priv, unsigned int target, } for (freq = 0 ; params[freq].pixel_freq ; ++freq) { - if (meson_vclk_freqs_are_matching_param(freq, phy_freq, - vclk_freq)) { + if ((phy_freq == params[freq].phy_freq || + phy_freq == PHY_FREQ_1000_1001(params[freq].phy_freq)) && + (vclk_freq == params[freq].vclk_freq || + vclk_freq == PIXEL_FREQ_1000_1001(params[freq].vclk_freq))) { if (vclk_freq != params[freq].vclk_freq) vic_alternate_clock = true; else -- Gitee From 7ee4a55d6fb14b45aae0f530d0fea863309e531f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:16 +0800 Subject: [PATCH 0906/1421] Revert "drm/meson: use vclk_freq instead of pixel_freq in debug print" This reverts commit fb485d37eb5f812b82f1f822818d54ae48c9fefa. --- drivers/gpu/drm/meson/meson_vclk.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_vclk.c b/drivers/gpu/drm/meson/meson_vclk.c index c4123bb958e4..3325580d885d 100644 --- a/drivers/gpu/drm/meson/meson_vclk.c +++ b/drivers/gpu/drm/meson/meson_vclk.c @@ -790,9 +790,9 @@ meson_vclk_vic_supported_freq(struct meson_drm *priv, } for (i = 0 ; params[i].pixel_freq ; ++i) { - DRM_DEBUG_DRIVER("i = %d vclk_freq = %lluHz alt = %lluHz\n", - i, params[i].vclk_freq, - PIXEL_FREQ_1000_1001(params[i].vclk_freq)); + DRM_DEBUG_DRIVER("i = %d pixel_freq = %lluHz alt = %lluHz\n", + i, params[i].pixel_freq, + PIXEL_FREQ_1000_1001(params[i].pixel_freq)); DRM_DEBUG_DRIVER("i = %d phy_freq = %lluHz alt = %lluHz\n", i, params[i].phy_freq, PHY_FREQ_1000_1001(params[i].phy_freq)); -- Gitee From a59fdc8f5e827fe386c6a62df7e2117f88e3c80b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:17 +0800 Subject: [PATCH 0907/1421] Revert "drm/meson: fix debug log statement when setting the HDMI clocks" This reverts commit 9892ba19f2c4ea012438ec8218f0699f09666d01. --- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index 73ec7ae48510..cd0e9e2d59ee 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -108,7 +108,7 @@ static void meson_encoder_hdmi_set_vclk(struct meson_encoder_hdmi *encoder_hdmi, venc_freq /= 2; dev_dbg(priv->dev, - "phy:%lluHz vclk=%lluHz venc=%lluHz hdmi=%lluHz enci=%d\n", + "vclk:%lluHz phy=%lluHz venc=%lluHz hdmi=%lluHz enci=%d\n", phy_freq, vclk_freq, venc_freq, hdmi_freq, priv->venc.hdmi_use_enci); -- Gitee From c4ba04bca7610a0dc4627dd69b2167a8d7eb3353 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:17 +0800 Subject: [PATCH 0908/1421] Revert "drm/meson: use unsigned long long / Hz for frequency types" This reverts commit df3078a245c38701c7c5324d8731af19fda76cd2. --- drivers/gpu/drm/meson/meson_drv.c | 2 +- drivers/gpu/drm/meson/meson_drv.h | 2 +- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 29 ++- drivers/gpu/drm/meson/meson_vclk.c | 195 ++++++++++----------- drivers/gpu/drm/meson/meson_vclk.h | 13 +- 5 files changed, 115 insertions(+), 126 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index 27441e571630..095f634ff7c7 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -168,7 +168,7 @@ static const struct meson_drm_soc_attr meson_drm_soc_attrs[] = { /* S805X/S805Y HDMI PLL won't lock for HDMI PHY freq > 1,65GHz */ { .limits = { - .max_hdmi_phy_freq = 1650000000, + .max_hdmi_phy_freq = 1650000, }, .attrs = (const struct soc_device_attribute []) { { .soc_id = "GXL (S805*)", }, diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h index be4b0e4df6e1..3f9345c14f31 100644 --- a/drivers/gpu/drm/meson/meson_drv.h +++ b/drivers/gpu/drm/meson/meson_drv.h @@ -37,7 +37,7 @@ struct meson_drm_match_data { }; struct meson_drm_soc_limits { - unsigned long long max_hdmi_phy_freq; + unsigned int max_hdmi_phy_freq; }; struct meson_drm { diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index cd0e9e2d59ee..c4686568c9ca 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -70,12 +70,12 @@ static void meson_encoder_hdmi_set_vclk(struct meson_encoder_hdmi *encoder_hdmi, { struct meson_drm *priv = encoder_hdmi->priv; int vic = drm_match_cea_mode(mode); - unsigned long long phy_freq; - unsigned long long vclk_freq; - unsigned long long venc_freq; - unsigned long long hdmi_freq; + unsigned int phy_freq; + unsigned int vclk_freq; + unsigned int venc_freq; + unsigned int hdmi_freq; - vclk_freq = mode->clock * 1000; + vclk_freq = mode->clock; /* For 420, pixel clock is half unlike venc clock */ if (encoder_hdmi->output_bus_fmt == MEDIA_BUS_FMT_UYYVYY8_0_5X24) @@ -107,8 +107,7 @@ static void meson_encoder_hdmi_set_vclk(struct meson_encoder_hdmi *encoder_hdmi, if (mode->flags & DRM_MODE_FLAG_DBLCLK) venc_freq /= 2; - dev_dbg(priv->dev, - "vclk:%lluHz phy=%lluHz venc=%lluHz hdmi=%lluHz enci=%d\n", + dev_dbg(priv->dev, "vclk:%d phy=%d venc=%d hdmi=%d enci=%d\n", phy_freq, vclk_freq, venc_freq, hdmi_freq, priv->venc.hdmi_use_enci); @@ -123,11 +122,10 @@ static enum drm_mode_status meson_encoder_hdmi_mode_valid(struct drm_bridge *bri struct meson_encoder_hdmi *encoder_hdmi = bridge_to_meson_encoder_hdmi(bridge); struct meson_drm *priv = encoder_hdmi->priv; bool is_hdmi2_sink = display_info->hdmi.scdc.supported; - unsigned long long clock = mode->clock * 1000; - unsigned long long phy_freq; - unsigned long long vclk_freq; - unsigned long long venc_freq; - unsigned long long hdmi_freq; + unsigned int phy_freq; + unsigned int vclk_freq; + unsigned int venc_freq; + unsigned int hdmi_freq; int vic = drm_match_cea_mode(mode); enum drm_mode_status status; @@ -146,12 +144,12 @@ static enum drm_mode_status meson_encoder_hdmi_mode_valid(struct drm_bridge *bri if (status != MODE_OK) return status; - return meson_vclk_dmt_supported_freq(priv, clock); + return meson_vclk_dmt_supported_freq(priv, mode->clock); /* Check against supported VIC modes */ } else if (!meson_venc_hdmi_supported_vic(vic)) return MODE_BAD; - vclk_freq = clock; + vclk_freq = mode->clock; /* For 420, pixel clock is half unlike venc clock */ if (drm_mode_is_420_only(display_info, mode) || @@ -181,8 +179,7 @@ static enum drm_mode_status meson_encoder_hdmi_mode_valid(struct drm_bridge *bri if (mode->flags & DRM_MODE_FLAG_DBLCLK) venc_freq /= 2; - dev_dbg(priv->dev, - "%s: vclk:%lluHz phy=%lluHz venc=%lluHz hdmi=%lluHz\n", + dev_dbg(priv->dev, "%s: vclk:%d phy=%d venc=%d hdmi=%d\n", __func__, phy_freq, vclk_freq, venc_freq, hdmi_freq); return meson_vclk_vic_supported_freq(priv, phy_freq, vclk_freq); diff --git a/drivers/gpu/drm/meson/meson_vclk.c b/drivers/gpu/drm/meson/meson_vclk.c index 3325580d885d..2a82119eb58e 100644 --- a/drivers/gpu/drm/meson/meson_vclk.c +++ b/drivers/gpu/drm/meson/meson_vclk.c @@ -110,10 +110,7 @@ #define HDMI_PLL_LOCK BIT(31) #define HDMI_PLL_LOCK_G12A (3 << 30) -#define PIXEL_FREQ_1000_1001(_freq) \ - DIV_ROUND_CLOSEST_ULL((_freq) * 1000ULL, 1001ULL) -#define PHY_FREQ_1000_1001(_freq) \ - (PIXEL_FREQ_1000_1001(DIV_ROUND_DOWN_ULL(_freq, 10ULL)) * 10) +#define FREQ_1000_1001(_freq) DIV_ROUND_CLOSEST(_freq * 1000, 1001) /* VID PLL Dividers */ enum { @@ -363,11 +360,11 @@ enum { }; struct meson_vclk_params { - unsigned long long pll_freq; - unsigned long long phy_freq; - unsigned long long vclk_freq; - unsigned long long venc_freq; - unsigned long long pixel_freq; + unsigned int pll_freq; + unsigned int phy_freq; + unsigned int vclk_freq; + unsigned int venc_freq; + unsigned int pixel_freq; unsigned int pll_od1; unsigned int pll_od2; unsigned int pll_od3; @@ -375,11 +372,11 @@ struct meson_vclk_params { unsigned int vclk_div; } params[] = { [MESON_VCLK_HDMI_ENCI_54000] = { - .pll_freq = 4320000000, - .phy_freq = 270000000, - .vclk_freq = 54000000, - .venc_freq = 54000000, - .pixel_freq = 54000000, + .pll_freq = 4320000, + .phy_freq = 270000, + .vclk_freq = 54000, + .venc_freq = 54000, + .pixel_freq = 54000, .pll_od1 = 4, .pll_od2 = 4, .pll_od3 = 1, @@ -387,11 +384,11 @@ struct meson_vclk_params { .vclk_div = 1, }, [MESON_VCLK_HDMI_DDR_54000] = { - .pll_freq = 4320000000, - .phy_freq = 270000000, - .vclk_freq = 54000000, - .venc_freq = 54000000, - .pixel_freq = 27000000, + .pll_freq = 4320000, + .phy_freq = 270000, + .vclk_freq = 54000, + .venc_freq = 54000, + .pixel_freq = 27000, .pll_od1 = 4, .pll_od2 = 4, .pll_od3 = 1, @@ -399,11 +396,11 @@ struct meson_vclk_params { .vclk_div = 1, }, [MESON_VCLK_HDMI_DDR_148500] = { - .pll_freq = 2970000000, - .phy_freq = 742500000, - .vclk_freq = 148500000, - .venc_freq = 148500000, - .pixel_freq = 74250000, + .pll_freq = 2970000, + .phy_freq = 742500, + .vclk_freq = 148500, + .venc_freq = 148500, + .pixel_freq = 74250, .pll_od1 = 4, .pll_od2 = 1, .pll_od3 = 1, @@ -411,11 +408,11 @@ struct meson_vclk_params { .vclk_div = 1, }, [MESON_VCLK_HDMI_74250] = { - .pll_freq = 2970000000, - .phy_freq = 742500000, - .vclk_freq = 74250000, - .venc_freq = 74250000, - .pixel_freq = 74250000, + .pll_freq = 2970000, + .phy_freq = 742500, + .vclk_freq = 74250, + .venc_freq = 74250, + .pixel_freq = 74250, .pll_od1 = 2, .pll_od2 = 2, .pll_od3 = 2, @@ -423,11 +420,11 @@ struct meson_vclk_params { .vclk_div = 1, }, [MESON_VCLK_HDMI_148500] = { - .pll_freq = 2970000000, - .phy_freq = 1485000000, - .vclk_freq = 148500000, - .venc_freq = 148500000, - .pixel_freq = 148500000, + .pll_freq = 2970000, + .phy_freq = 1485000, + .vclk_freq = 148500, + .venc_freq = 148500, + .pixel_freq = 148500, .pll_od1 = 1, .pll_od2 = 2, .pll_od3 = 2, @@ -435,11 +432,11 @@ struct meson_vclk_params { .vclk_div = 1, }, [MESON_VCLK_HDMI_297000] = { - .pll_freq = 5940000000, - .phy_freq = 2970000000, - .venc_freq = 297000000, - .vclk_freq = 297000000, - .pixel_freq = 297000000, + .pll_freq = 5940000, + .phy_freq = 2970000, + .venc_freq = 297000, + .vclk_freq = 297000, + .pixel_freq = 297000, .pll_od1 = 2, .pll_od2 = 1, .pll_od3 = 1, @@ -447,11 +444,11 @@ struct meson_vclk_params { .vclk_div = 2, }, [MESON_VCLK_HDMI_594000] = { - .pll_freq = 5940000000, - .phy_freq = 5940000000, - .venc_freq = 594000000, - .vclk_freq = 594000000, - .pixel_freq = 594000000, + .pll_freq = 5940000, + .phy_freq = 5940000, + .venc_freq = 594000, + .vclk_freq = 594000, + .pixel_freq = 594000, .pll_od1 = 1, .pll_od2 = 1, .pll_od3 = 2, @@ -459,11 +456,11 @@ struct meson_vclk_params { .vclk_div = 1, }, [MESON_VCLK_HDMI_594000_YUV420] = { - .pll_freq = 5940000000, - .phy_freq = 2970000000, - .venc_freq = 594000000, - .vclk_freq = 594000000, - .pixel_freq = 297000000, + .pll_freq = 5940000, + .phy_freq = 2970000, + .venc_freq = 594000, + .vclk_freq = 594000, + .pixel_freq = 297000, .pll_od1 = 2, .pll_od2 = 1, .pll_od3 = 1, @@ -620,16 +617,16 @@ static void meson_hdmi_pll_set_params(struct meson_drm *priv, unsigned int m, 3 << 20, pll_od_to_reg(od3) << 20); } -#define XTAL_FREQ (24 * 1000 * 1000) +#define XTAL_FREQ 24000 static unsigned int meson_hdmi_pll_get_m(struct meson_drm *priv, - unsigned long long pll_freq) + unsigned int pll_freq) { /* The GXBB PLL has a /2 pre-multiplier */ if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXBB)) - pll_freq = DIV_ROUND_DOWN_ULL(pll_freq, 2); + pll_freq /= 2; - return DIV_ROUND_DOWN_ULL(pll_freq, XTAL_FREQ); + return pll_freq / XTAL_FREQ; } #define HDMI_FRAC_MAX_GXBB 4096 @@ -638,13 +635,12 @@ static unsigned int meson_hdmi_pll_get_m(struct meson_drm *priv, static unsigned int meson_hdmi_pll_get_frac(struct meson_drm *priv, unsigned int m, - unsigned long long pll_freq) + unsigned int pll_freq) { - unsigned long long parent_freq = XTAL_FREQ; + unsigned int parent_freq = XTAL_FREQ; unsigned int frac_max = HDMI_FRAC_MAX_GXL; unsigned int frac_m; unsigned int frac; - u32 remainder; /* The GXBB PLL has a /2 pre-multiplier and a larger FRAC width */ if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXBB)) { @@ -656,11 +652,11 @@ static unsigned int meson_hdmi_pll_get_frac(struct meson_drm *priv, frac_max = HDMI_FRAC_MAX_G12A; /* We can have a perfect match !*/ - if (div_u64_rem(pll_freq, m, &remainder) == parent_freq && - remainder == 0) + if (pll_freq / m == parent_freq && + pll_freq % m == 0) return 0; - frac = mul_u64_u64_div_u64(pll_freq, frac_max, parent_freq); + frac = div_u64((u64)pll_freq * (u64)frac_max, parent_freq); frac_m = m * frac_max; if (frac_m > frac) return frac_max; @@ -670,7 +666,7 @@ static unsigned int meson_hdmi_pll_get_frac(struct meson_drm *priv, } static bool meson_hdmi_pll_validate_params(struct meson_drm *priv, - unsigned long long m, + unsigned int m, unsigned int frac) { if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXBB)) { @@ -698,7 +694,7 @@ static bool meson_hdmi_pll_validate_params(struct meson_drm *priv, } static bool meson_hdmi_pll_find_params(struct meson_drm *priv, - unsigned long long freq, + unsigned int freq, unsigned int *m, unsigned int *frac, unsigned int *od) @@ -710,7 +706,7 @@ static bool meson_hdmi_pll_find_params(struct meson_drm *priv, continue; *frac = meson_hdmi_pll_get_frac(priv, *m, freq * *od); - DRM_DEBUG_DRIVER("PLL params for %lluHz: m=%x frac=%x od=%d\n", + DRM_DEBUG_DRIVER("PLL params for %dkHz: m=%x frac=%x od=%d\n", freq, *m, *frac, *od); if (meson_hdmi_pll_validate_params(priv, *m, *frac)) @@ -722,7 +718,7 @@ static bool meson_hdmi_pll_find_params(struct meson_drm *priv, /* pll_freq is the frequency after the OD dividers */ enum drm_mode_status -meson_vclk_dmt_supported_freq(struct meson_drm *priv, unsigned long long freq) +meson_vclk_dmt_supported_freq(struct meson_drm *priv, unsigned int freq) { unsigned int od, m, frac; @@ -745,7 +741,7 @@ EXPORT_SYMBOL_GPL(meson_vclk_dmt_supported_freq); /* pll_freq is the frequency after the OD dividers */ static void meson_hdmi_pll_generic_set(struct meson_drm *priv, - unsigned long long pll_freq) + unsigned int pll_freq) { unsigned int od, m, frac, od1, od2, od3; @@ -760,7 +756,7 @@ static void meson_hdmi_pll_generic_set(struct meson_drm *priv, od1 = od / od2; } - DRM_DEBUG_DRIVER("PLL params for %lluHz: m=%x frac=%x od=%d/%d/%d\n", + DRM_DEBUG_DRIVER("PLL params for %dkHz: m=%x frac=%x od=%d/%d/%d\n", pll_freq, m, frac, od1, od2, od3); meson_hdmi_pll_set_params(priv, m, frac, od1, od2, od3); @@ -768,18 +764,17 @@ static void meson_hdmi_pll_generic_set(struct meson_drm *priv, return; } - DRM_ERROR("Fatal, unable to find parameters for PLL freq %lluHz\n", + DRM_ERROR("Fatal, unable to find parameters for PLL freq %d\n", pll_freq); } enum drm_mode_status -meson_vclk_vic_supported_freq(struct meson_drm *priv, - unsigned long long phy_freq, - unsigned long long vclk_freq) +meson_vclk_vic_supported_freq(struct meson_drm *priv, unsigned int phy_freq, + unsigned int vclk_freq) { int i; - DRM_DEBUG_DRIVER("phy_freq = %lluHz vclk_freq = %lluHz\n", + DRM_DEBUG_DRIVER("phy_freq = %d vclk_freq = %d\n", phy_freq, vclk_freq); /* Check against soc revision/package limits */ @@ -790,19 +785,19 @@ meson_vclk_vic_supported_freq(struct meson_drm *priv, } for (i = 0 ; params[i].pixel_freq ; ++i) { - DRM_DEBUG_DRIVER("i = %d pixel_freq = %lluHz alt = %lluHz\n", + DRM_DEBUG_DRIVER("i = %d pixel_freq = %d alt = %d\n", i, params[i].pixel_freq, - PIXEL_FREQ_1000_1001(params[i].pixel_freq)); - DRM_DEBUG_DRIVER("i = %d phy_freq = %lluHz alt = %lluHz\n", + FREQ_1000_1001(params[i].pixel_freq)); + DRM_DEBUG_DRIVER("i = %d phy_freq = %d alt = %d\n", i, params[i].phy_freq, - PHY_FREQ_1000_1001(params[i].phy_freq)); + FREQ_1000_1001(params[i].phy_freq/10)*10); /* Match strict frequency */ if (phy_freq == params[i].phy_freq && vclk_freq == params[i].vclk_freq) return MODE_OK; /* Match 1000/1001 variant */ - if (phy_freq == PHY_FREQ_1000_1001(params[i].phy_freq) && - vclk_freq == PIXEL_FREQ_1000_1001(params[i].vclk_freq)) + if (phy_freq == (FREQ_1000_1001(params[i].phy_freq/10)*10) && + vclk_freq == FREQ_1000_1001(params[i].vclk_freq)) return MODE_OK; } @@ -810,9 +805,8 @@ meson_vclk_vic_supported_freq(struct meson_drm *priv, } EXPORT_SYMBOL_GPL(meson_vclk_vic_supported_freq); -static void meson_vclk_set(struct meson_drm *priv, - unsigned long long pll_base_freq, unsigned int od1, - unsigned int od2, unsigned int od3, +static void meson_vclk_set(struct meson_drm *priv, unsigned int pll_base_freq, + unsigned int od1, unsigned int od2, unsigned int od3, unsigned int vid_pll_div, unsigned int vclk_div, unsigned int hdmi_tx_div, unsigned int venc_div, bool hdmi_use_enci, bool vic_alternate_clock) @@ -832,15 +826,15 @@ static void meson_vclk_set(struct meson_drm *priv, meson_hdmi_pll_generic_set(priv, pll_base_freq); } else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXBB)) { switch (pll_base_freq) { - case 2970000000: + case 2970000: m = 0x3d; frac = vic_alternate_clock ? 0xd02 : 0xe00; break; - case 4320000000: + case 4320000: m = vic_alternate_clock ? 0x59 : 0x5a; frac = vic_alternate_clock ? 0xe8f : 0; break; - case 5940000000: + case 5940000: m = 0x7b; frac = vic_alternate_clock ? 0xa05 : 0xc00; break; @@ -850,15 +844,15 @@ static void meson_vclk_set(struct meson_drm *priv, } else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXM) || meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXL)) { switch (pll_base_freq) { - case 2970000000: + case 2970000: m = 0x7b; frac = vic_alternate_clock ? 0x281 : 0x300; break; - case 4320000000: + case 4320000: m = vic_alternate_clock ? 0xb3 : 0xb4; frac = vic_alternate_clock ? 0x347 : 0; break; - case 5940000000: + case 5940000: m = 0xf7; frac = vic_alternate_clock ? 0x102 : 0x200; break; @@ -867,15 +861,15 @@ static void meson_vclk_set(struct meson_drm *priv, meson_hdmi_pll_set_params(priv, m, frac, od1, od2, od3); } else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) { switch (pll_base_freq) { - case 2970000000: + case 2970000: m = 0x7b; frac = vic_alternate_clock ? 0x140b4 : 0x18000; break; - case 4320000000: + case 4320000: m = vic_alternate_clock ? 0xb3 : 0xb4; frac = vic_alternate_clock ? 0x1a3ee : 0; break; - case 5940000000: + case 5940000: m = 0xf7; frac = vic_alternate_clock ? 0x8148 : 0x10000; break; @@ -1031,14 +1025,14 @@ static void meson_vclk_set(struct meson_drm *priv, } void meson_vclk_setup(struct meson_drm *priv, unsigned int target, - unsigned long long phy_freq, unsigned long long vclk_freq, - unsigned long long venc_freq, unsigned long long dac_freq, + unsigned int phy_freq, unsigned int vclk_freq, + unsigned int venc_freq, unsigned int dac_freq, bool hdmi_use_enci) { bool vic_alternate_clock = false; - unsigned long long freq; - unsigned long long hdmi_tx_div; - unsigned long long venc_div; + unsigned int freq; + unsigned int hdmi_tx_div; + unsigned int venc_div; if (target == MESON_VCLK_TARGET_CVBS) { meson_venci_cvbs_clock_config(priv); @@ -1058,27 +1052,27 @@ void meson_vclk_setup(struct meson_drm *priv, unsigned int target, return; } - hdmi_tx_div = DIV_ROUND_DOWN_ULL(vclk_freq, dac_freq); + hdmi_tx_div = vclk_freq / dac_freq; if (hdmi_tx_div == 0) { - pr_err("Fatal Error, invalid HDMI-TX freq %lluHz\n", + pr_err("Fatal Error, invalid HDMI-TX freq %d\n", dac_freq); return; } - venc_div = DIV_ROUND_DOWN_ULL(vclk_freq, venc_freq); + venc_div = vclk_freq / venc_freq; if (venc_div == 0) { - pr_err("Fatal Error, invalid HDMI venc freq %lluHz\n", + pr_err("Fatal Error, invalid HDMI venc freq %d\n", venc_freq); return; } for (freq = 0 ; params[freq].pixel_freq ; ++freq) { if ((phy_freq == params[freq].phy_freq || - phy_freq == PHY_FREQ_1000_1001(params[freq].phy_freq)) && + phy_freq == FREQ_1000_1001(params[freq].phy_freq/10)*10) && (vclk_freq == params[freq].vclk_freq || - vclk_freq == PIXEL_FREQ_1000_1001(params[freq].vclk_freq))) { + vclk_freq == FREQ_1000_1001(params[freq].vclk_freq))) { if (vclk_freq != params[freq].vclk_freq) vic_alternate_clock = true; else @@ -1104,8 +1098,7 @@ void meson_vclk_setup(struct meson_drm *priv, unsigned int target, } if (!params[freq].pixel_freq) { - pr_err("Fatal Error, invalid HDMI vclk freq %lluHz\n", - vclk_freq); + pr_err("Fatal Error, invalid HDMI vclk freq %d\n", vclk_freq); return; } diff --git a/drivers/gpu/drm/meson/meson_vclk.h b/drivers/gpu/drm/meson/meson_vclk.h index 7ac55744e574..60617aaf18dd 100644 --- a/drivers/gpu/drm/meson/meson_vclk.h +++ b/drivers/gpu/drm/meson/meson_vclk.h @@ -20,18 +20,17 @@ enum { }; /* 27MHz is the CVBS Pixel Clock */ -#define MESON_VCLK_CVBS (27 * 1000 * 1000) +#define MESON_VCLK_CVBS 27000 enum drm_mode_status -meson_vclk_dmt_supported_freq(struct meson_drm *priv, unsigned long long freq); +meson_vclk_dmt_supported_freq(struct meson_drm *priv, unsigned int freq); enum drm_mode_status -meson_vclk_vic_supported_freq(struct meson_drm *priv, - unsigned long long phy_freq, - unsigned long long vclk_freq); +meson_vclk_vic_supported_freq(struct meson_drm *priv, unsigned int phy_freq, + unsigned int vclk_freq); void meson_vclk_setup(struct meson_drm *priv, unsigned int target, - unsigned long long phy_freq, unsigned long long vclk_freq, - unsigned long long venc_freq, unsigned long long dac_freq, + unsigned int phy_freq, unsigned int vclk_freq, + unsigned int venc_freq, unsigned int dac_freq, bool hdmi_use_enci); #endif /* __MESON_VCLK_H */ -- Gitee From 40f12b99805503f947e5710d6df47b47a17e3855 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:17 +0800 Subject: [PATCH 0909/1421] Revert "powerpc/vas: Return -EINVAL if the offset is non-zero in mmap()" This reverts commit 2177f38a322822c9cf35983df2894e3c883df5b0. --- arch/powerpc/platforms/book3s/vas-api.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/arch/powerpc/platforms/book3s/vas-api.c b/arch/powerpc/platforms/book3s/vas-api.c index dc6f75d3ac6e..0b6365d85d11 100644 --- a/arch/powerpc/platforms/book3s/vas-api.c +++ b/arch/powerpc/platforms/book3s/vas-api.c @@ -521,15 +521,6 @@ static int coproc_mmap(struct file *fp, struct vm_area_struct *vma) return -EINVAL; } - /* - * Map complete page to the paste address. So the user - * space should pass 0ULL to the offset parameter. - */ - if (vma->vm_pgoff) { - pr_debug("Page offset unsupported to map paste address\n"); - return -EINVAL; - } - /* Ensure instance has an open send window */ if (!txwin) { pr_err("No send window open?\n"); -- Gitee From 488a292bfa7779fdcd57526f02de829730b370e6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:17 +0800 Subject: [PATCH 0910/1421] Revert "powerpc/powernv/memtrace: Fix out of bounds issue in memtrace mmap" This reverts commit 684dc4736e9b253c658d2eea3eef404627bad452. --- arch/powerpc/platforms/powernv/memtrace.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c index 35471b679638..877720c64515 100644 --- a/arch/powerpc/platforms/powernv/memtrace.c +++ b/arch/powerpc/platforms/powernv/memtrace.c @@ -48,15 +48,11 @@ static ssize_t memtrace_read(struct file *filp, char __user *ubuf, static int memtrace_mmap(struct file *filp, struct vm_area_struct *vma) { struct memtrace_entry *ent = filp->private_data; - unsigned long ent_nrpages = ent->size >> PAGE_SHIFT; - unsigned long vma_nrpages = vma_pages(vma); - /* The requested page offset should be within object's page count */ - if (vma->vm_pgoff >= ent_nrpages) + if (ent->size < vma->vm_end - vma->vm_start) return -EINVAL; - /* The requested mapping range should remain within the bounds */ - if (vma_nrpages > ent_nrpages - vma->vm_pgoff) + if (vma->vm_pgoff << PAGE_SHIFT >= ent->size) return -EINVAL; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); -- Gitee From fd2f5405317ce8f16a9dbe8a2333cc6e97fa5127 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:17 +0800 Subject: [PATCH 0911/1421] Revert "net_sched: sch_sfq: fix a potential crash on gso_skb handling" This reverts commit b265e4292e07d2e3e957924eafc47fa851dfdd28. --- net/sched/sch_sfq.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c index d564675a8be4..002941d35b64 100644 --- a/net/sched/sch_sfq.c +++ b/net/sched/sch_sfq.c @@ -310,10 +310,7 @@ static unsigned int sfq_drop(struct Qdisc *sch, struct sk_buff **to_free) /* It is difficult to believe, but ALL THE SLOTS HAVE LENGTH 1. */ x = q->tail->next; slot = &q->slots[x]; - if (slot->next == x) - q->tail = NULL; /* no more active slots */ - else - q->tail->next = slot->next; + q->tail->next = slot->next; q->ht[slot->hash] = SFQ_EMPTY_SLOT; goto drop; } -- Gitee From 700147040433f9373cf1d72783e53bfc3aed8d50 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:18 +0800 Subject: [PATCH 0912/1421] Revert "scsi: iscsi: Fix incorrect error path labels for flashnode operations" This reverts commit aea103110c33db812b8c02b5c2d203c88be83d0a. --- drivers/scsi/scsi_transport_iscsi.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index f2c31e74d8ed..0c30fec55547 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c @@ -3525,7 +3525,7 @@ static int iscsi_new_flashnode(struct iscsi_transport *transport, pr_err("%s could not find host no %u\n", __func__, ev->u.new_flashnode.host_no); err = -ENODEV; - goto exit_new_fnode; + goto put_host; } index = transport->new_flashnode(shost, data, len); @@ -3535,6 +3535,7 @@ static int iscsi_new_flashnode(struct iscsi_transport *transport, else err = -EIO; +put_host: scsi_host_put(shost); exit_new_fnode: @@ -3559,7 +3560,7 @@ static int iscsi_del_flashnode(struct iscsi_transport *transport, pr_err("%s could not find host no %u\n", __func__, ev->u.del_flashnode.host_no); err = -ENODEV; - goto exit_del_fnode; + goto put_host; } idx = ev->u.del_flashnode.flashnode_idx; @@ -3601,7 +3602,7 @@ static int iscsi_login_flashnode(struct iscsi_transport *transport, pr_err("%s could not find host no %u\n", __func__, ev->u.login_flashnode.host_no); err = -ENODEV; - goto exit_login_fnode; + goto put_host; } idx = ev->u.login_flashnode.flashnode_idx; @@ -3653,7 +3654,7 @@ static int iscsi_logout_flashnode(struct iscsi_transport *transport, pr_err("%s could not find host no %u\n", __func__, ev->u.logout_flashnode.host_no); err = -ENODEV; - goto exit_logout_fnode; + goto put_host; } idx = ev->u.logout_flashnode.flashnode_idx; @@ -3703,7 +3704,7 @@ static int iscsi_logout_flashnode_sid(struct iscsi_transport *transport, pr_err("%s could not find host no %u\n", __func__, ev->u.logout_flashnode.host_no); err = -ENODEV; - goto exit_logout_sid; + goto put_host; } session = iscsi_session_lookup(ev->u.logout_flashnode_sid.sid); -- Gitee From 7ec728552254ced103c0d4aeba7e113b02bb52c9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:18 +0800 Subject: [PATCH 0913/1421] Revert "pinctrl: qcom: pinctrl-qcm2290: Add missing pins" This reverts commit 0f502267d21894f3261aebdbc077462ba4780048. --- drivers/pinctrl/qcom/pinctrl-qcm2290.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/pinctrl/qcom/pinctrl-qcm2290.c b/drivers/pinctrl/qcom/pinctrl-qcm2290.c index 61b7c22e963c..f5c1c427b44e 100644 --- a/drivers/pinctrl/qcom/pinctrl-qcm2290.c +++ b/drivers/pinctrl/qcom/pinctrl-qcm2290.c @@ -165,10 +165,6 @@ static const struct pinctrl_pin_desc qcm2290_pins[] = { PINCTRL_PIN(62, "GPIO_62"), PINCTRL_PIN(63, "GPIO_63"), PINCTRL_PIN(64, "GPIO_64"), - PINCTRL_PIN(65, "GPIO_65"), - PINCTRL_PIN(66, "GPIO_66"), - PINCTRL_PIN(67, "GPIO_67"), - PINCTRL_PIN(68, "GPIO_68"), PINCTRL_PIN(69, "GPIO_69"), PINCTRL_PIN(70, "GPIO_70"), PINCTRL_PIN(71, "GPIO_71"), @@ -183,17 +179,12 @@ static const struct pinctrl_pin_desc qcm2290_pins[] = { PINCTRL_PIN(80, "GPIO_80"), PINCTRL_PIN(81, "GPIO_81"), PINCTRL_PIN(82, "GPIO_82"), - PINCTRL_PIN(83, "GPIO_83"), - PINCTRL_PIN(84, "GPIO_84"), - PINCTRL_PIN(85, "GPIO_85"), PINCTRL_PIN(86, "GPIO_86"), PINCTRL_PIN(87, "GPIO_87"), PINCTRL_PIN(88, "GPIO_88"), PINCTRL_PIN(89, "GPIO_89"), PINCTRL_PIN(90, "GPIO_90"), PINCTRL_PIN(91, "GPIO_91"), - PINCTRL_PIN(92, "GPIO_92"), - PINCTRL_PIN(93, "GPIO_93"), PINCTRL_PIN(94, "GPIO_94"), PINCTRL_PIN(95, "GPIO_95"), PINCTRL_PIN(96, "GPIO_96"), -- Gitee From 6d32bd53c883c602a9c43f836eb4e409b9d6a63e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:18 +0800 Subject: [PATCH 0914/1421] Revert "regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()" This reverts commit 2bf2566e45a10e76f731ffc7d6fe4d6d955b8f1d. --- drivers/regulator/max20086-regulator.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/max20086-regulator.c b/drivers/regulator/max20086-regulator.c index 1cf04d1efb33..ebfbcadbca52 100644 --- a/drivers/regulator/max20086-regulator.c +++ b/drivers/regulator/max20086-regulator.c @@ -5,7 +5,6 @@ // Copyright (C) 2022 Laurent Pinchart // Copyright (C) 2018 Avnet, Inc. -#include #include #include #include @@ -134,11 +133,11 @@ static int max20086_regulators_register(struct max20086 *chip) static int max20086_parse_regulators_dt(struct max20086 *chip, bool *boot_on) { struct of_regulator_match *matches; + struct device_node *node; unsigned int i; int ret; - struct device_node *node __free(device_node) = - of_get_child_by_name(chip->dev->of_node, "regulators"); + node = of_get_child_by_name(chip->dev->of_node, "regulators"); if (!node) { dev_err(chip->dev, "regulators node not found\n"); return -ENODEV; @@ -154,6 +153,7 @@ static int max20086_parse_regulators_dt(struct max20086 *chip, bool *boot_on) ret = of_regulator_match(chip->dev, node, matches, chip->info->num_outputs); + of_node_put(node); if (ret < 0) { dev_err(chip->dev, "Failed to match regulators\n"); return -EINVAL; -- Gitee From 434c697bd36bb10743e78a5637a9ddf9367e4b6f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:18 +0800 Subject: [PATCH 0915/1421] Revert "wifi: ath11k: validate ath11k_crypto_mode on top of ath11k_core_qmi_firmware_ready" This reverts commit 4f7747027942f71b383a2f8517f18def696531e0. --- drivers/net/wireless/ath/ath11k/core.c | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c index 609d8387c41f..12c5f50f61f9 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -1638,20 +1638,6 @@ int ath11k_core_qmi_firmware_ready(struct ath11k_base *ab) { int ret; - switch (ath11k_crypto_mode) { - case ATH11K_CRYPT_MODE_SW: - set_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ab->dev_flags); - set_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags); - break; - case ATH11K_CRYPT_MODE_HW: - clear_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ab->dev_flags); - clear_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags); - break; - default: - ath11k_info(ab, "invalid crypto_mode: %d\n", ath11k_crypto_mode); - return -EINVAL; - } - ret = ath11k_core_start_firmware(ab, ab->fw_mode); if (ret) { ath11k_err(ab, "failed to start firmware: %d\n", ret); @@ -1670,6 +1656,20 @@ int ath11k_core_qmi_firmware_ready(struct ath11k_base *ab) goto err_firmware_stop; } + switch (ath11k_crypto_mode) { + case ATH11K_CRYPT_MODE_SW: + set_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ab->dev_flags); + set_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags); + break; + case ATH11K_CRYPT_MODE_HW: + clear_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ab->dev_flags); + clear_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags); + break; + default: + ath11k_info(ab, "invalid crypto_mode: %d\n", ath11k_crypto_mode); + return -EINVAL; + } + if (ath11k_frame_mode == ATH11K_HW_TXRX_RAW) set_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags); -- Gitee From ff8e86b2b98bd8220b919549a6f61e36fe0fadfd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:18 +0800 Subject: [PATCH 0916/1421] Revert "wifi: ath11k: don't wait when there is no vdev started" This reverts commit b8b2acca64e3c19fdb77f81611f5915cb8e6bb23. --- drivers/net/wireless/ath/ath11k/debugfs.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c b/drivers/net/wireless/ath/ath11k/debugfs.c index 50bc17127e68..5a375d668059 100644 --- a/drivers/net/wireless/ath/ath11k/debugfs.c +++ b/drivers/net/wireless/ath/ath11k/debugfs.c @@ -107,7 +107,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * { struct ath11k_base *ab = ar->ab; struct ath11k_pdev *pdev; - bool is_end = true; + bool is_end; size_t total_vdevs_started = 0; int i; @@ -132,9 +132,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * total_vdevs_started += ar->num_started_vdevs; } - if (total_vdevs_started) - is_end = ((++ar->fw_stats.num_vdev_recvd) == - total_vdevs_started); + is_end = ((++ar->fw_stats.num_vdev_recvd) == total_vdevs_started); list_splice_tail_init(&stats->vdevs, &ar->fw_stats.vdevs); @@ -153,9 +151,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * /* Mark end until we reached the count of all started VDEVs * within the PDEV */ - if (ar->num_started_vdevs) - is_end = ((++ar->fw_stats.num_bcn_recvd) == - ar->num_started_vdevs); + is_end = ((++ar->fw_stats.num_bcn_recvd) == ar->num_started_vdevs); list_splice_tail_init(&stats->bcn, &ar->fw_stats.bcn); -- Gitee From 7a19e1a5c1d2d844b8c3645d158ee222e467afd1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:19 +0800 Subject: [PATCH 0917/1421] Revert "wifi: ath11k: don't use static variables in ath11k_debugfs_fw_stats_process()" This reverts commit 612ce5a70224b9e731f3c36a971428e195bd0813. --- drivers/net/wireless/ath/ath11k/core.h | 2 -- drivers/net/wireless/ath/ath11k/debugfs.c | 16 +++++++++------- drivers/net/wireless/ath/ath11k/mac.c | 2 -- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h index 555deafd8399..41ccf59a4fd9 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -550,8 +550,6 @@ struct ath11k_fw_stats { struct list_head pdevs; struct list_head vdevs; struct list_head bcn; - u32 num_vdev_recvd; - u32 num_bcn_recvd; }; struct ath11k_dbg_htt_stats { diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c b/drivers/net/wireless/ath/ath11k/debugfs.c index 5a375d668059..a5791155fe06 100644 --- a/drivers/net/wireless/ath/ath11k/debugfs.c +++ b/drivers/net/wireless/ath/ath11k/debugfs.c @@ -98,8 +98,6 @@ static void ath11k_debugfs_fw_stats_reset(struct ath11k *ar) spin_lock_bh(&ar->data_lock); ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); ath11k_fw_stats_vdevs_free(&ar->fw_stats.vdevs); - ar->fw_stats.num_vdev_recvd = 0; - ar->fw_stats.num_bcn_recvd = 0; spin_unlock_bh(&ar->data_lock); } @@ -108,6 +106,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * struct ath11k_base *ab = ar->ab; struct ath11k_pdev *pdev; bool is_end; + static unsigned int num_vdev, num_bcn; size_t total_vdevs_started = 0; int i; @@ -132,14 +131,15 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * total_vdevs_started += ar->num_started_vdevs; } - is_end = ((++ar->fw_stats.num_vdev_recvd) == total_vdevs_started); + is_end = ((++num_vdev) == total_vdevs_started); list_splice_tail_init(&stats->vdevs, &ar->fw_stats.vdevs); - if (is_end) + if (is_end) { complete(&ar->fw_stats_done); - + num_vdev = 0; + } return; } @@ -151,13 +151,15 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * /* Mark end until we reached the count of all started VDEVs * within the PDEV */ - is_end = ((++ar->fw_stats.num_bcn_recvd) == ar->num_started_vdevs); + is_end = ((++num_bcn) == ar->num_started_vdevs); list_splice_tail_init(&stats->bcn, &ar->fw_stats.bcn); - if (is_end) + if (is_end) { complete(&ar->fw_stats_done); + num_bcn = 0; + } } } diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 9df3f6449f76..c3bfbc40273d 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -9011,8 +9011,6 @@ static int ath11k_fw_stats_request(struct ath11k *ar, spin_lock_bh(&ar->data_lock); ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); - ar->fw_stats.num_vdev_recvd = 0; - ar->fw_stats.num_bcn_recvd = 0; spin_unlock_bh(&ar->data_lock); reinit_completion(&ar->fw_stats_complete); -- Gitee From 5149126894e718691624c6a20942158df8cc6986 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:19 +0800 Subject: [PATCH 0918/1421] Revert "wifi: ath11k: avoid burning CPU in ath11k_debugfs_fw_stats_request()" This reverts commit 135c6d21bbd4ee57beffcfa292f624741ee3241e. --- drivers/net/wireless/ath/ath11k/core.c | 1 - drivers/net/wireless/ath/ath11k/core.h | 2 +- drivers/net/wireless/ath/ath11k/debugfs.c | 38 ++++++++++++++--------- drivers/net/wireless/ath/ath11k/mac.c | 2 +- drivers/net/wireless/ath/ath11k/wmi.c | 2 +- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c index 12c5f50f61f9..f9870ba651d8 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -748,7 +748,6 @@ void ath11k_fw_stats_init(struct ath11k *ar) INIT_LIST_HEAD(&ar->fw_stats.bcn); init_completion(&ar->fw_stats_complete); - init_completion(&ar->fw_stats_done); } void ath11k_fw_stats_free(struct ath11k_fw_stats *stats) diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h index 41ccf59a4fd9..b04447762483 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -732,7 +732,7 @@ struct ath11k { u8 alpha2[REG_ALPHA2_LEN + 1]; struct ath11k_fw_stats fw_stats; struct completion fw_stats_complete; - struct completion fw_stats_done; + bool fw_stats_done; /* protected by conf_mutex */ bool ps_state_enable; diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c b/drivers/net/wireless/ath/ath11k/debugfs.c index a5791155fe06..a8bd944f76d9 100644 --- a/drivers/net/wireless/ath/ath11k/debugfs.c +++ b/drivers/net/wireless/ath/ath11k/debugfs.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -96,6 +96,7 @@ void ath11k_debugfs_add_dbring_entry(struct ath11k *ar, static void ath11k_debugfs_fw_stats_reset(struct ath11k *ar) { spin_lock_bh(&ar->data_lock); + ar->fw_stats_done = false; ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); ath11k_fw_stats_vdevs_free(&ar->fw_stats.vdevs); spin_unlock_bh(&ar->data_lock); @@ -113,7 +114,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * /* WMI_REQUEST_PDEV_STAT request has been already processed */ if (stats->stats_id == WMI_REQUEST_RSSI_PER_CHAIN_STAT) { - complete(&ar->fw_stats_done); + ar->fw_stats_done = true; return; } @@ -137,7 +138,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * &ar->fw_stats.vdevs); if (is_end) { - complete(&ar->fw_stats_done); + ar->fw_stats_done = true; num_vdev = 0; } return; @@ -157,7 +158,7 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats * &ar->fw_stats.bcn); if (is_end) { - complete(&ar->fw_stats_done); + ar->fw_stats_done = true; num_bcn = 0; } } @@ -167,15 +168,21 @@ static int ath11k_debugfs_fw_stats_request(struct ath11k *ar, struct stats_request_params *req_param) { struct ath11k_base *ab = ar->ab; - unsigned long time_left; + unsigned long timeout, time_left; int ret; lockdep_assert_held(&ar->conf_mutex); + /* FW stats can get split when exceeding the stats data buffer limit. + * In that case, since there is no end marking for the back-to-back + * received 'update stats' event, we keep a 3 seconds timeout in case, + * fw_stats_done is not marked yet + */ + timeout = jiffies + secs_to_jiffies(3); + ath11k_debugfs_fw_stats_reset(ar); reinit_completion(&ar->fw_stats_complete); - reinit_completion(&ar->fw_stats_done); ret = ath11k_wmi_send_stats_request_cmd(ar, req_param); @@ -186,18 +193,21 @@ static int ath11k_debugfs_fw_stats_request(struct ath11k *ar, } time_left = wait_for_completion_timeout(&ar->fw_stats_complete, 1 * HZ); - if (!time_left) - return -ETIMEDOUT; - /* FW stats can get split when exceeding the stats data buffer limit. - * In that case, since there is no end marking for the back-to-back - * received 'update stats' event, we keep a 3 seconds timeout in case, - * fw_stats_done is not marked yet - */ - time_left = wait_for_completion_timeout(&ar->fw_stats_done, 3 * HZ); if (!time_left) return -ETIMEDOUT; + for (;;) { + if (time_after(jiffies, timeout)) + break; + + spin_lock_bh(&ar->data_lock); + if (ar->fw_stats_done) { + spin_unlock_bh(&ar->data_lock); + break; + } + spin_unlock_bh(&ar->data_lock); + } return 0; } diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index c3bfbc40273d..4247c0f840a4 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -9010,11 +9010,11 @@ static int ath11k_fw_stats_request(struct ath11k *ar, lockdep_assert_held(&ar->conf_mutex); spin_lock_bh(&ar->data_lock); + ar->fw_stats_done = false; ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); spin_unlock_bh(&ar->data_lock); reinit_completion(&ar->fw_stats_complete); - reinit_completion(&ar->fw_stats_done); ret = ath11k_wmi_send_stats_request_cmd(ar, req_param); if (ret) { diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index 9a829b828242..2cc13e60f422 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -8183,7 +8183,7 @@ static void ath11k_update_stats_event(struct ath11k_base *ab, struct sk_buff *sk */ if (stats.stats_id == WMI_REQUEST_PDEV_STAT) { list_splice_tail_init(&stats.pdevs, &ar->fw_stats.pdevs); - complete(&ar->fw_stats_done); + ar->fw_stats_done = true; goto complete; } -- Gitee From 2f55bd79c10ac9269c62531a25b636bfd23c182a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:19 +0800 Subject: [PATCH 0919/1421] Revert "wifi: ath11k: convert timeouts to secs_to_jiffies()" This reverts commit ee5641ac38a986b5a992f956bba570e02dd27591. --- drivers/net/wireless/ath/ath11k/debugfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c b/drivers/net/wireless/ath/ath11k/debugfs.c index a8bd944f76d9..34aa04d27a1d 100644 --- a/drivers/net/wireless/ath/ath11k/debugfs.c +++ b/drivers/net/wireless/ath/ath11k/debugfs.c @@ -178,7 +178,7 @@ static int ath11k_debugfs_fw_stats_request(struct ath11k *ar, * received 'update stats' event, we keep a 3 seconds timeout in case, * fw_stats_done is not marked yet */ - timeout = jiffies + secs_to_jiffies(3); + timeout = jiffies + msecs_to_jiffies(3 * 1000); ath11k_debugfs_fw_stats_reset(ar); -- Gitee From 66cc31160cab5205ff7c14e7d883011f877318c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:19 +0800 Subject: [PATCH 0920/1421] Revert "wifi: ath11k: fix soc_dp_stats debugfs file permission" This reverts commit 5388c55b8234f52bd5e7cfd1a11d8b58ad7b6dab. --- drivers/net/wireless/ath/ath11k/debugfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c b/drivers/net/wireless/ath/ath11k/debugfs.c index 34aa04d27a1d..8cda73b78ebf 100644 --- a/drivers/net/wireless/ath/ath11k/debugfs.c +++ b/drivers/net/wireless/ath/ath11k/debugfs.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -980,7 +980,7 @@ int ath11k_debugfs_pdev_create(struct ath11k_base *ab) debugfs_create_file("simulate_fw_crash", 0600, ab->debugfs_soc, ab, &fops_simulate_fw_crash); - debugfs_create_file("soc_dp_stats", 0400, ab->debugfs_soc, ab, + debugfs_create_file("soc_dp_stats", 0600, ab->debugfs_soc, ab, &fops_soc_dp_stats); if (ab->hw_params.sram_dump.start != 0) -- Gitee From 6b67a70d572f8941ff0eb005dcd3545d566f852b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:19 +0800 Subject: [PATCH 0921/1421] Revert "ath10k: snoc: fix unbalanced IRQ enable in crash recovery" This reverts commit 93b6164da374488adc09063597b9ccc1301a1824. --- drivers/net/wireless/ath/ath10k/snoc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c index 1d06d4125992..2c39bad7ebfb 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -937,9 +937,7 @@ static int ath10k_snoc_hif_start(struct ath10k *ar) dev_set_threaded(&ar->napi_dev, true); ath10k_core_napi_enable(ar); - /* IRQs are left enabled when we restart due to a firmware crash */ - if (!test_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags)) - ath10k_snoc_irq_enable(ar); + ath10k_snoc_irq_enable(ar); ath10k_snoc_rx_post(ar); clear_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags); -- Gitee From c8cccc04fdcea1b0481bc4795e9c3ed8503aa206 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:20 +0800 Subject: [PATCH 0922/1421] Revert "ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use()" This reverts commit 3954e62754b25f8cd9fcc1e267ca919726866117. --- drivers/ptp/ptp_private.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h index d0eb4555720e..b8d4f61f14be 100644 --- a/drivers/ptp/ptp_private.h +++ b/drivers/ptp/ptp_private.h @@ -89,7 +89,17 @@ static inline int queue_cnt(const struct timestamp_event_queue *q) /* Check if ptp virtual clock is in use */ static inline bool ptp_vclock_in_use(struct ptp_clock *ptp) { - return !ptp->is_virtual_clock; + bool in_use = false; + + if (mutex_lock_interruptible(&ptp->n_vclocks_mux)) + return true; + + if (!ptp->is_virtual_clock && ptp->n_vclocks) + in_use = true; + + mutex_unlock(&ptp->n_vclocks_mux); + + return in_use; } /* Check if ptp clock shall be free running */ -- Gitee From 9b33db17285cc408f360ac028a6785a544f3c10a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:20 +0800 Subject: [PATCH 0923/1421] Revert "Bluetooth: MGMT: Protect mgmt_pending list with its own lock" This reverts commit 4baef18dcbfafa41a6bebedc2507e3d39269744f. --- include/net/bluetooth/hci_core.h | 1 - net/bluetooth/hci_core.c | 1 - net/bluetooth/mgmt.c | 101 ++++++++++++++++--------------- net/bluetooth/mgmt_util.c | 32 ++-------- net/bluetooth/mgmt_util.h | 4 +- 5 files changed, 59 insertions(+), 80 deletions(-) diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index d63af08c6cdc..130487781313 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -542,7 +542,6 @@ struct hci_dev { struct hci_conn_hash conn_hash; struct list_head mesh_pending; - struct mutex mgmt_pending_lock; struct list_head mgmt_pending; struct list_head reject_list; struct list_head accept_list; diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 32f7bd0e8916..023ad47a385b 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -2490,7 +2490,6 @@ struct hci_dev *hci_alloc_dev_priv(int sizeof_priv) mutex_init(&hdev->lock); mutex_init(&hdev->req_lock); - mutex_init(&hdev->mgmt_pending_lock); ida_init(&hdev->unset_handle_ida); diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 44174f59b31e..fda492bf0cd4 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -1433,17 +1433,22 @@ static void settings_rsp(struct mgmt_pending_cmd *cmd, void *data) send_settings_rsp(cmd->sk, cmd->opcode, match->hdev); + list_del(&cmd->list); + if (match->sk == NULL) { match->sk = cmd->sk; sock_hold(match->sk); } + + mgmt_pending_free(cmd); } static void cmd_status_rsp(struct mgmt_pending_cmd *cmd, void *data) { u8 *status = data; - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, *status); + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, *status); + mgmt_pending_remove(cmd); } static void cmd_complete_rsp(struct mgmt_pending_cmd *cmd, void *data) @@ -1457,6 +1462,8 @@ static void cmd_complete_rsp(struct mgmt_pending_cmd *cmd, void *data) if (cmd->cmd_complete) { cmd->cmd_complete(cmd, match->mgmt_status); + mgmt_pending_remove(cmd); + return; } @@ -1465,13 +1472,13 @@ static void cmd_complete_rsp(struct mgmt_pending_cmd *cmd, void *data) static int generic_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) { - return mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, status, + return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, cmd->param, cmd->param_len); } static int addr_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) { - return mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, status, + return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, cmd->param, sizeof(struct mgmt_addr_info)); } @@ -1511,7 +1518,7 @@ static void mgmt_set_discoverable_complete(struct hci_dev *hdev, void *data, if (err) { u8 mgmt_err = mgmt_status(err); - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_err); + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); hci_dev_clear_flag(hdev, HCI_LIMITED_DISCOVERABLE); goto done; } @@ -1686,7 +1693,7 @@ static void mgmt_set_connectable_complete(struct hci_dev *hdev, void *data, if (err) { u8 mgmt_err = mgmt_status(err); - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_err); + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); goto done; } @@ -1923,8 +1930,8 @@ static void set_ssp_complete(struct hci_dev *hdev, void *data, int err) new_settings(hdev, NULL); } - mgmt_pending_foreach(MGMT_OP_SET_SSP, hdev, true, - cmd_status_rsp, &mgmt_err); + mgmt_pending_foreach(MGMT_OP_SET_SSP, hdev, cmd_status_rsp, + &mgmt_err); return; } @@ -1934,7 +1941,7 @@ static void set_ssp_complete(struct hci_dev *hdev, void *data, int err) changed = hci_dev_test_and_clear_flag(hdev, HCI_SSP_ENABLED); } - mgmt_pending_foreach(MGMT_OP_SET_SSP, hdev, true, settings_rsp, &match); + mgmt_pending_foreach(MGMT_OP_SET_SSP, hdev, settings_rsp, &match); if (changed) new_settings(hdev, match.sk); @@ -2054,12 +2061,12 @@ static void set_le_complete(struct hci_dev *hdev, void *data, int err) bt_dev_dbg(hdev, "err %d", err); if (status) { - mgmt_pending_foreach(MGMT_OP_SET_LE, hdev, true, cmd_status_rsp, - &status); + mgmt_pending_foreach(MGMT_OP_SET_LE, hdev, cmd_status_rsp, + &status); return; } - mgmt_pending_foreach(MGMT_OP_SET_LE, hdev, true, settings_rsp, &match); + mgmt_pending_foreach(MGMT_OP_SET_LE, hdev, settings_rsp, &match); new_settings(hdev, match.sk); @@ -2118,7 +2125,7 @@ static void set_mesh_complete(struct hci_dev *hdev, void *data, int err) struct sock *sk = cmd->sk; if (status) { - mgmt_pending_foreach(MGMT_OP_SET_MESH_RECEIVER, hdev, true, + mgmt_pending_foreach(MGMT_OP_SET_MESH_RECEIVER, hdev, cmd_status_rsp, &status); return; } @@ -2559,7 +2566,7 @@ static void mgmt_class_complete(struct hci_dev *hdev, void *data, int err) bt_dev_dbg(hdev, "err %d", err); - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), hdev->dev_class, 3); mgmt_pending_free(cmd); @@ -3347,7 +3354,7 @@ static int pairing_complete(struct mgmt_pending_cmd *cmd, u8 status) bacpy(&rp.addr.bdaddr, &conn->dst); rp.addr.type = link_to_bdaddr(conn->type, conn->dst_type); - err = mgmt_cmd_complete(cmd->sk, cmd->hdev->id, MGMT_OP_PAIR_DEVICE, + err = mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_PAIR_DEVICE, status, &rp, sizeof(rp)); /* So we don't get further callbacks for this connection */ @@ -5236,7 +5243,7 @@ static void mgmt_add_adv_patterns_monitor_complete(struct hci_dev *hdev, hci_update_passive_scan(hdev); } - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(status), &rp, sizeof(rp)); mgmt_pending_remove(cmd); @@ -5451,7 +5458,7 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev, hci_update_passive_scan(hdev); } - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(status), &rp, sizeof(rp)); mgmt_pending_free(cmd); @@ -5850,7 +5857,7 @@ static void start_discovery_complete(struct hci_dev *hdev, void *data, int err) cmd != pending_find(MGMT_OP_START_SERVICE_DISCOVERY, hdev)) return; - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_status(err), + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), cmd->param, 1); mgmt_pending_remove(cmd); @@ -6088,7 +6095,7 @@ static void stop_discovery_complete(struct hci_dev *hdev, void *data, int err) bt_dev_dbg(hdev, "err %d", err); - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_status(err), + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), cmd->param, 1); mgmt_pending_remove(cmd); @@ -6313,7 +6320,7 @@ static void set_advertising_complete(struct hci_dev *hdev, void *data, int err) u8 status = mgmt_status(err); if (status) { - mgmt_pending_foreach(MGMT_OP_SET_ADVERTISING, hdev, true, + mgmt_pending_foreach(MGMT_OP_SET_ADVERTISING, hdev, cmd_status_rsp, &status); return; } @@ -6323,7 +6330,7 @@ static void set_advertising_complete(struct hci_dev *hdev, void *data, int err) else hci_dev_clear_flag(hdev, HCI_ADVERTISING); - mgmt_pending_foreach(MGMT_OP_SET_ADVERTISING, hdev, true, settings_rsp, + mgmt_pending_foreach(MGMT_OP_SET_ADVERTISING, hdev, settings_rsp, &match); new_settings(hdev, match.sk); @@ -6667,7 +6674,7 @@ static void set_bredr_complete(struct hci_dev *hdev, void *data, int err) */ hci_dev_clear_flag(hdev, HCI_BREDR_ENABLED); - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_err); + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); } else { send_settings_rsp(cmd->sk, MGMT_OP_SET_BREDR, hdev); new_settings(hdev, cmd->sk); @@ -6804,7 +6811,7 @@ static void set_secure_conn_complete(struct hci_dev *hdev, void *data, int err) if (err) { u8 mgmt_err = mgmt_status(err); - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_err); + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); goto done; } @@ -7251,7 +7258,7 @@ static void get_conn_info_complete(struct hci_dev *hdev, void *data, int err) rp.max_tx_power = HCI_TX_POWER_INVALID; } - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, MGMT_OP_GET_CONN_INFO, status, + mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_GET_CONN_INFO, status, &rp, sizeof(rp)); mgmt_pending_free(cmd); @@ -7411,7 +7418,7 @@ static void get_clock_info_complete(struct hci_dev *hdev, void *data, int err) } complete: - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, status, &rp, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, &rp, sizeof(rp)); mgmt_pending_free(cmd); @@ -8615,10 +8622,10 @@ static void add_advertising_complete(struct hci_dev *hdev, void *data, int err) rp.instance = cp->instance; if (err) - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err)); else - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), &rp, sizeof(rp)); add_adv_complete(hdev, cmd->sk, cp->instance, err); @@ -8806,10 +8813,10 @@ static void add_ext_adv_params_complete(struct hci_dev *hdev, void *data, hci_remove_adv_instance(hdev, cp->instance); - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err)); } else { - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), &rp, sizeof(rp)); } @@ -8957,10 +8964,10 @@ static void add_ext_adv_data_complete(struct hci_dev *hdev, void *data, int err) rp.instance = cp->instance; if (err) - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err)); else - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), &rp, sizeof(rp)); mgmt_pending_free(cmd); @@ -9119,10 +9126,10 @@ static void remove_advertising_complete(struct hci_dev *hdev, void *data, rp.instance = cp->instance; if (err) - mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err)); else - mgmt_cmd_complete(cmd->sk, cmd->hdev->id, cmd->opcode, + mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, MGMT_STATUS_SUCCESS, &rp, sizeof(rp)); mgmt_pending_free(cmd); @@ -9393,7 +9400,7 @@ void mgmt_index_removed(struct hci_dev *hdev) if (test_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks)) return; - mgmt_pending_foreach(0, hdev, true, cmd_complete_rsp, &match); + mgmt_pending_foreach(0, hdev, cmd_complete_rsp, &match); if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED)) { mgmt_index_event(MGMT_EV_UNCONF_INDEX_REMOVED, hdev, NULL, 0, @@ -9431,8 +9438,7 @@ void mgmt_power_on(struct hci_dev *hdev, int err) hci_update_passive_scan(hdev); } - mgmt_pending_foreach(MGMT_OP_SET_POWERED, hdev, true, settings_rsp, - &match); + mgmt_pending_foreach(MGMT_OP_SET_POWERED, hdev, settings_rsp, &match); new_settings(hdev, match.sk); @@ -9447,8 +9453,7 @@ void __mgmt_power_off(struct hci_dev *hdev) struct cmd_lookup match = { NULL, hdev }; u8 zero_cod[] = { 0, 0, 0 }; - mgmt_pending_foreach(MGMT_OP_SET_POWERED, hdev, true, settings_rsp, - &match); + mgmt_pending_foreach(MGMT_OP_SET_POWERED, hdev, settings_rsp, &match); /* If the power off is because of hdev unregistration let * use the appropriate INVALID_INDEX status. Otherwise use @@ -9462,7 +9467,7 @@ void __mgmt_power_off(struct hci_dev *hdev) else match.mgmt_status = MGMT_STATUS_NOT_POWERED; - mgmt_pending_foreach(0, hdev, true, cmd_complete_rsp, &match); + mgmt_pending_foreach(0, hdev, cmd_complete_rsp, &match); if (memcmp(hdev->dev_class, zero_cod, sizeof(zero_cod)) != 0) { mgmt_limited_event(MGMT_EV_CLASS_OF_DEV_CHANGED, hdev, @@ -9703,6 +9708,7 @@ static void unpair_device_rsp(struct mgmt_pending_cmd *cmd, void *data) device_unpaired(hdev, &cp->addr.bdaddr, cp->addr.type, cmd->sk); cmd->cmd_complete(cmd, 0); + mgmt_pending_remove(cmd); } bool mgmt_powering_down(struct hci_dev *hdev) @@ -9755,8 +9761,8 @@ void mgmt_disconnect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, struct mgmt_cp_disconnect *cp; struct mgmt_pending_cmd *cmd; - mgmt_pending_foreach(MGMT_OP_UNPAIR_DEVICE, hdev, true, - unpair_device_rsp, hdev); + mgmt_pending_foreach(MGMT_OP_UNPAIR_DEVICE, hdev, unpair_device_rsp, + hdev); cmd = pending_find(MGMT_OP_DISCONNECT, hdev); if (!cmd) @@ -9949,7 +9955,7 @@ void mgmt_auth_enable_complete(struct hci_dev *hdev, u8 status) if (status) { u8 mgmt_err = mgmt_status(status); - mgmt_pending_foreach(MGMT_OP_SET_LINK_SECURITY, hdev, true, + mgmt_pending_foreach(MGMT_OP_SET_LINK_SECURITY, hdev, cmd_status_rsp, &mgmt_err); return; } @@ -9959,8 +9965,8 @@ void mgmt_auth_enable_complete(struct hci_dev *hdev, u8 status) else changed = hci_dev_test_and_clear_flag(hdev, HCI_LINK_SECURITY); - mgmt_pending_foreach(MGMT_OP_SET_LINK_SECURITY, hdev, true, - settings_rsp, &match); + mgmt_pending_foreach(MGMT_OP_SET_LINK_SECURITY, hdev, settings_rsp, + &match); if (changed) new_settings(hdev, match.sk); @@ -9984,12 +9990,9 @@ void mgmt_set_class_of_dev_complete(struct hci_dev *hdev, u8 *dev_class, { struct cmd_lookup match = { NULL, hdev, mgmt_status(status) }; - mgmt_pending_foreach(MGMT_OP_SET_DEV_CLASS, hdev, false, sk_lookup, - &match); - mgmt_pending_foreach(MGMT_OP_ADD_UUID, hdev, false, sk_lookup, - &match); - mgmt_pending_foreach(MGMT_OP_REMOVE_UUID, hdev, false, sk_lookup, - &match); + mgmt_pending_foreach(MGMT_OP_SET_DEV_CLASS, hdev, sk_lookup, &match); + mgmt_pending_foreach(MGMT_OP_ADD_UUID, hdev, sk_lookup, &match); + mgmt_pending_foreach(MGMT_OP_REMOVE_UUID, hdev, sk_lookup, &match); if (!status) { mgmt_limited_event(MGMT_EV_CLASS_OF_DEV_CHANGED, hdev, dev_class, diff --git a/net/bluetooth/mgmt_util.c b/net/bluetooth/mgmt_util.c index 4ba500c377a4..dba6a0d66500 100644 --- a/net/bluetooth/mgmt_util.c +++ b/net/bluetooth/mgmt_util.c @@ -217,47 +217,30 @@ int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status, struct mgmt_pending_cmd *mgmt_pending_find(unsigned short channel, u16 opcode, struct hci_dev *hdev) { - struct mgmt_pending_cmd *cmd, *tmp; - - mutex_lock(&hdev->mgmt_pending_lock); + struct mgmt_pending_cmd *cmd; - list_for_each_entry_safe(cmd, tmp, &hdev->mgmt_pending, list) { + list_for_each_entry(cmd, &hdev->mgmt_pending, list) { if (hci_sock_get_channel(cmd->sk) != channel) continue; - - if (cmd->opcode == opcode) { - mutex_unlock(&hdev->mgmt_pending_lock); + if (cmd->opcode == opcode) return cmd; - } } - mutex_unlock(&hdev->mgmt_pending_lock); - return NULL; } -void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, bool remove, +void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, void (*cb)(struct mgmt_pending_cmd *cmd, void *data), void *data) { struct mgmt_pending_cmd *cmd, *tmp; - mutex_lock(&hdev->mgmt_pending_lock); - list_for_each_entry_safe(cmd, tmp, &hdev->mgmt_pending, list) { if (opcode > 0 && cmd->opcode != opcode) continue; - if (remove) - list_del(&cmd->list); - cb(cmd, data); - - if (remove) - mgmt_pending_free(cmd); } - - mutex_unlock(&hdev->mgmt_pending_lock); } struct mgmt_pending_cmd *mgmt_pending_new(struct sock *sk, u16 opcode, @@ -271,7 +254,7 @@ struct mgmt_pending_cmd *mgmt_pending_new(struct sock *sk, u16 opcode, return NULL; cmd->opcode = opcode; - cmd->hdev = hdev; + cmd->index = hdev->id; cmd->param = kmemdup(data, len, GFP_KERNEL); if (!cmd->param) { @@ -297,9 +280,7 @@ struct mgmt_pending_cmd *mgmt_pending_add(struct sock *sk, u16 opcode, if (!cmd) return NULL; - mutex_lock(&hdev->mgmt_pending_lock); list_add_tail(&cmd->list, &hdev->mgmt_pending); - mutex_unlock(&hdev->mgmt_pending_lock); return cmd; } @@ -313,10 +294,7 @@ void mgmt_pending_free(struct mgmt_pending_cmd *cmd) void mgmt_pending_remove(struct mgmt_pending_cmd *cmd) { - mutex_lock(&cmd->hdev->mgmt_pending_lock); list_del(&cmd->list); - mutex_unlock(&cmd->hdev->mgmt_pending_lock); - mgmt_pending_free(cmd); } diff --git a/net/bluetooth/mgmt_util.h b/net/bluetooth/mgmt_util.h index 024e51dd6937..f2ba994ab1d8 100644 --- a/net/bluetooth/mgmt_util.h +++ b/net/bluetooth/mgmt_util.h @@ -33,7 +33,7 @@ struct mgmt_mesh_tx { struct mgmt_pending_cmd { struct list_head list; u16 opcode; - struct hci_dev *hdev; + int index; void *param; size_t param_len; struct sock *sk; @@ -54,7 +54,7 @@ int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status, struct mgmt_pending_cmd *mgmt_pending_find(unsigned short channel, u16 opcode, struct hci_dev *hdev); -void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, bool remove, +void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, void (*cb)(struct mgmt_pending_cmd *cmd, void *data), void *data); struct mgmt_pending_cmd *mgmt_pending_add(struct sock *sk, u16 opcode, -- Gitee From 1f82e899c8865305c41fda79f4bdfc665ae9379b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:20 +0800 Subject: [PATCH 0924/1421] Revert "Bluetooth: MGMT: Remove unused mgmt_pending_find_data" This reverts commit 620e27dfd06eedcf68e1e2ed4fa1afae258ae629. --- net/bluetooth/mgmt_util.c | 17 +++++++++++++++++ net/bluetooth/mgmt_util.h | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/net/bluetooth/mgmt_util.c b/net/bluetooth/mgmt_util.c index dba6a0d66500..17e32605d9b0 100644 --- a/net/bluetooth/mgmt_util.c +++ b/net/bluetooth/mgmt_util.c @@ -229,6 +229,23 @@ struct mgmt_pending_cmd *mgmt_pending_find(unsigned short channel, u16 opcode, return NULL; } +struct mgmt_pending_cmd *mgmt_pending_find_data(unsigned short channel, + u16 opcode, + struct hci_dev *hdev, + const void *data) +{ + struct mgmt_pending_cmd *cmd; + + list_for_each_entry(cmd, &hdev->mgmt_pending, list) { + if (cmd->user_data != data) + continue; + if (cmd->opcode == opcode) + return cmd; + } + + return NULL; +} + void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, void (*cb)(struct mgmt_pending_cmd *cmd, void *data), void *data) diff --git a/net/bluetooth/mgmt_util.h b/net/bluetooth/mgmt_util.h index f2ba994ab1d8..bdf978605d5a 100644 --- a/net/bluetooth/mgmt_util.h +++ b/net/bluetooth/mgmt_util.h @@ -54,6 +54,10 @@ int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status, struct mgmt_pending_cmd *mgmt_pending_find(unsigned short channel, u16 opcode, struct hci_dev *hdev); +struct mgmt_pending_cmd *mgmt_pending_find_data(unsigned short channel, + u16 opcode, + struct hci_dev *hdev, + const void *data); void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev, void (*cb)(struct mgmt_pending_cmd *cmd, void *data), void *data); -- Gitee From 101b013c66bb0ee1c99a03eec4158eed5694a1ae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:20 +0800 Subject: [PATCH 0925/1421] Revert "Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete" This reverts commit dccac4b13a003284564b825be6a7c14d3cd7dcd0. --- include/net/bluetooth/hci_core.h | 1 + net/bluetooth/hci_core.c | 4 +++- net/bluetooth/mgmt.c | 37 ++++++++++++++++++++++---------- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 130487781313..e9214ccfde2d 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -2305,6 +2305,7 @@ void mgmt_advertising_added(struct sock *sk, struct hci_dev *hdev, u8 instance); void mgmt_advertising_removed(struct sock *sk, struct hci_dev *hdev, u8 instance); +void mgmt_adv_monitor_removed(struct hci_dev *hdev, u16 handle); int mgmt_phy_configuration_changed(struct hci_dev *hdev, struct sock *skip); void mgmt_adv_monitor_device_lost(struct hci_dev *hdev, u16 handle, bdaddr_t *bdaddr, u8 addr_type); diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 023ad47a385b..febfd389ecf4 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -1862,8 +1862,10 @@ void hci_free_adv_monitor(struct hci_dev *hdev, struct adv_monitor *monitor) if (monitor->handle) idr_remove(&hdev->adv_monitors_idr, monitor->handle); - if (monitor->state != ADV_MONITOR_STATE_NOT_REGISTERED) + if (monitor->state != ADV_MONITOR_STATE_NOT_REGISTERED) { hdev->adv_monitors_cnt--; + mgmt_adv_monitor_removed(hdev, monitor->handle); + } kfree(monitor); } diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index fda492bf0cd4..589c3a481e4c 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -5165,14 +5165,24 @@ static void mgmt_adv_monitor_added(struct sock *sk, struct hci_dev *hdev, mgmt_event(MGMT_EV_ADV_MONITOR_ADDED, hdev, &ev, sizeof(ev), sk); } -static void mgmt_adv_monitor_removed(struct sock *sk, struct hci_dev *hdev, - u16 handle) +void mgmt_adv_monitor_removed(struct hci_dev *hdev, u16 handle) { struct mgmt_ev_adv_monitor_removed ev; + struct mgmt_pending_cmd *cmd; + struct sock *sk_skip = NULL; + struct mgmt_cp_remove_adv_monitor *cp; + + cmd = pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev); + if (cmd) { + cp = cmd->param; + + if (cp->monitor_handle) + sk_skip = cmd->sk; + } ev.monitor_handle = cpu_to_le16(handle); - mgmt_event(MGMT_EV_ADV_MONITOR_REMOVED, hdev, &ev, sizeof(ev), sk); + mgmt_event(MGMT_EV_ADV_MONITOR_REMOVED, hdev, &ev, sizeof(ev), sk_skip); } static int read_adv_mon_features(struct sock *sk, struct hci_dev *hdev, @@ -5274,7 +5284,8 @@ static int __add_adv_patterns_monitor(struct sock *sk, struct hci_dev *hdev, if (pending_find(MGMT_OP_SET_LE, hdev) || pending_find(MGMT_OP_ADD_ADV_PATTERNS_MONITOR, hdev) || - pending_find(MGMT_OP_ADD_ADV_PATTERNS_MONITOR_RSSI, hdev)) { + pending_find(MGMT_OP_ADD_ADV_PATTERNS_MONITOR_RSSI, hdev) || + pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev)) { status = MGMT_STATUS_BUSY; goto unlock; } @@ -5444,7 +5455,8 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev, struct mgmt_pending_cmd *cmd = data; struct mgmt_cp_remove_adv_monitor *cp; - if (status == -ECANCELED) + if (status == -ECANCELED || + cmd != pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev)) return; hci_dev_lock(hdev); @@ -5453,14 +5465,12 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev, rp.monitor_handle = cp->monitor_handle; - if (!status) { - mgmt_adv_monitor_removed(cmd->sk, hdev, cp->monitor_handle); + if (!status) hci_update_passive_scan(hdev); - } mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(status), &rp, sizeof(rp)); - mgmt_pending_free(cmd); + mgmt_pending_remove(cmd); hci_dev_unlock(hdev); bt_dev_dbg(hdev, "remove monitor %d complete, status %d", @@ -5470,6 +5480,10 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev, static int mgmt_remove_adv_monitor_sync(struct hci_dev *hdev, void *data) { struct mgmt_pending_cmd *cmd = data; + + if (cmd != pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev)) + return -ECANCELED; + struct mgmt_cp_remove_adv_monitor *cp = cmd->param; u16 handle = __le16_to_cpu(cp->monitor_handle); @@ -5488,13 +5502,14 @@ static int remove_adv_monitor(struct sock *sk, struct hci_dev *hdev, hci_dev_lock(hdev); if (pending_find(MGMT_OP_SET_LE, hdev) || + pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev) || pending_find(MGMT_OP_ADD_ADV_PATTERNS_MONITOR, hdev) || pending_find(MGMT_OP_ADD_ADV_PATTERNS_MONITOR_RSSI, hdev)) { status = MGMT_STATUS_BUSY; goto unlock; } - cmd = mgmt_pending_new(sk, MGMT_OP_REMOVE_ADV_MONITOR, hdev, data, len); + cmd = mgmt_pending_add(sk, MGMT_OP_REMOVE_ADV_MONITOR, hdev, data, len); if (!cmd) { status = MGMT_STATUS_NO_RESOURCES; goto unlock; @@ -5504,7 +5519,7 @@ static int remove_adv_monitor(struct sock *sk, struct hci_dev *hdev, mgmt_remove_adv_monitor_complete); if (err) { - mgmt_pending_free(cmd); + mgmt_pending_remove(cmd); if (err == -ENOMEM) status = MGMT_STATUS_NO_RESOURCES; -- Gitee From 4ffce104419681af9d5bc9c0cc35a6b1f545bd7d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:21 +0800 Subject: [PATCH 0926/1421] Revert "Bluetooth: hci_core: fix list_for_each_entry_rcu usage" This reverts commit f1f805b1d73b2c8e498907ba605692dd4b67fd67. --- net/bluetooth/hci_core.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index febfd389ecf4..30519d47e8a6 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -3380,18 +3380,23 @@ static void hci_link_tx_to(struct hci_dev *hdev, __u8 type) bt_dev_err(hdev, "link tx timeout"); - hci_dev_lock(hdev); + rcu_read_lock(); /* Kill stalled connections */ - list_for_each_entry(c, &h->list, list) { + list_for_each_entry_rcu(c, &h->list, list) { if (c->type == type && c->sent) { bt_dev_err(hdev, "killing stalled connection %pMR", &c->dst); + /* hci_disconnect might sleep, so, we have to release + * the RCU read lock before calling it. + */ + rcu_read_unlock(); hci_disconnect(c, HCI_ERROR_REMOTE_USER_TERM); + rcu_read_lock(); } } - hci_dev_unlock(hdev); + rcu_read_unlock(); } static struct hci_chan *hci_chan_sent(struct hci_dev *hdev, __u8 type, -- Gitee From 9580b72b6b670ce4c1b6e48d235c4d86855b5e2f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:21 +0800 Subject: [PATCH 0927/1421] Revert "scsi: core: ufs: Fix a hang in the error handler" This reverts commit 28a0f7c8bf883dc6943f4adc875270b1bb119c42. --- drivers/ufs/core/ufshcd.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 9dabc03675b0..2346a1fc72b5 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -6500,14 +6500,9 @@ static void ufshcd_err_handler(struct work_struct *work) up(&hba->host_sem); return; } - spin_unlock_irqrestore(hba->host->host_lock, flags); - - ufshcd_err_handling_prepare(hba); - - spin_lock_irqsave(hba->host->host_lock, flags); ufshcd_set_eh_in_progress(hba); spin_unlock_irqrestore(hba->host->host_lock, flags); - + ufshcd_err_handling_prepare(hba); /* Complete requests that have door-bell cleared by h/w */ ufshcd_complete_requests(hba, false); spin_lock_irqsave(hba->host->host_lock, flags); -- Gitee From 1d623ce9fd28379ef6b72a3119d7ca1a4048d5c1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:21 +0800 Subject: [PATCH 0928/1421] Revert "serial: sh-sci: Clean sci_ports[0] after at earlycon exit" This reverts commit d97acbfaa7c139ab07bc80782a3173d0713db256. --- drivers/tty/serial/sh-sci.c | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 0ea347ccd644..596250aeb559 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -183,7 +183,6 @@ static struct sci_port sci_ports[SCI_NPORTS]; static unsigned long sci_ports_in_use; static struct uart_driver sci_uart_driver; static bool sci_uart_earlycon; -static bool sci_uart_earlycon_dev_probing; static inline struct sci_port * to_sci_port(struct uart_port *uart) @@ -3375,8 +3374,7 @@ static struct plat_sci_port *sci_parse_dt(struct platform_device *pdev, static int sci_probe_single(struct platform_device *dev, unsigned int index, struct plat_sci_port *p, - struct sci_port *sciport, - struct resource *sci_res) + struct sci_port *sciport) { int ret; @@ -3423,14 +3421,6 @@ static int sci_probe_single(struct platform_device *dev, sciport->port.flags |= UPF_HARD_FLOW; } - if (sci_uart_earlycon && sci_ports[0].port.mapbase == sci_res->start) { - /* - * Skip cleanup the sci_port[0] in early_console_exit(), this - * port is the same as the earlycon one. - */ - sci_uart_earlycon_dev_probing = true; - } - return uart_add_one_port(&sci_uart_driver, &sciport->port); } @@ -3489,7 +3479,7 @@ static int sci_probe(struct platform_device *dev) platform_set_drvdata(dev, sp); - ret = sci_probe_single(dev, dev_id, p, sp, res); + ret = sci_probe_single(dev, dev_id, p, sp); if (ret) return ret; @@ -3646,22 +3636,6 @@ sh_early_platform_init_buffer("earlyprintk", &sci_driver, #ifdef CONFIG_SERIAL_SH_SCI_EARLYCON static struct plat_sci_port port_cfg; -static int early_console_exit(struct console *co) -{ - struct sci_port *sci_port = &sci_ports[0]; - - /* - * Clean the slot used by earlycon. A new SCI device might - * map to this slot. - */ - if (!sci_uart_earlycon_dev_probing) { - memset(sci_port, 0, sizeof(*sci_port)); - sci_uart_earlycon = false; - } - - return 0; -} - static int __init early_console_setup(struct earlycon_device *device, int type) { @@ -3681,8 +3655,6 @@ static int __init early_console_setup(struct earlycon_device *device, SCSCR_RE | SCSCR_TE | port_cfg.scscr); device->con->write = serial_console_write; - device->con->exit = early_console_exit; - return 0; } static int __init sci_early_console_setup(struct earlycon_device *device, -- Gitee From 380779d83aceb6187d45a325a16881f134ef03d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:21 +0800 Subject: [PATCH 0929/1421] Revert "serial: sh-sci: Move runtime PM enable to sci_probe_single()" This reverts commit d7a7ee8dc05c62b84848acee9fdf38bde476253a. --- drivers/tty/serial/sh-sci.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 596250aeb559..4d1fdf03b6b7 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -3043,6 +3043,10 @@ static int sci_init_single(struct platform_device *dev, ret = sci_init_clocks(sci_port, &dev->dev); if (ret < 0) return ret; + + port->dev = &dev->dev; + + pm_runtime_enable(&dev->dev); } port->type = p->type; @@ -3072,6 +3076,11 @@ static int sci_init_single(struct platform_device *dev, return 0; } +static void sci_cleanup_single(struct sci_port *port) +{ + pm_runtime_disable(port->port.dev); +} + #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) || \ defined(CONFIG_SERIAL_SH_SCI_EARLYCON) static void serial_console_putchar(struct uart_port *port, unsigned char ch) @@ -3241,6 +3250,8 @@ static int sci_remove(struct platform_device *dev) sci_ports_in_use &= ~BIT(port->port.line); uart_remove_one_port(&sci_uart_driver, &port->port); + sci_cleanup_single(port); + if (port->port.fifosize > 1) device_remove_file(&dev->dev, &dev_attr_rx_fifo_trigger); if (type == PORT_SCIFA || type == PORT_SCIFB || type == PORT_HSCIF) @@ -3403,11 +3414,6 @@ static int sci_probe_single(struct platform_device *dev, if (ret) return ret; - sciport->port.dev = &dev->dev; - ret = devm_pm_runtime_enable(&dev->dev); - if (ret) - return ret; - sciport->gpios = mctrl_gpio_init(&sciport->port, 0); if (IS_ERR(sciport->gpios)) return PTR_ERR(sciport->gpios); @@ -3421,7 +3427,13 @@ static int sci_probe_single(struct platform_device *dev, sciport->port.flags |= UPF_HARD_FLOW; } - return uart_add_one_port(&sci_uart_driver, &sciport->port); + ret = uart_add_one_port(&sci_uart_driver, &sciport->port); + if (ret) { + sci_cleanup_single(sciport); + return ret; + } + + return 0; } static int sci_probe(struct platform_device *dev) -- Gitee From d1647bc8aba1df7e9cef3deab6077590abe63d95 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:21 +0800 Subject: [PATCH 0930/1421] Revert "serial: sh-sci: Check if TX data was written to device in .tx_empty()" This reverts commit 7643f569ebefcd5c8324cfb50c2854403b48436f. --- drivers/tty/serial/sh-sci.c | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 4d1fdf03b6b7..cd38b28bbaf5 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -174,7 +174,6 @@ struct sci_port { bool has_rtscts; bool autorts; - bool tx_occurred; }; #define SCI_NPORTS CONFIG_SERIAL_SH_SCI_NR_UARTS @@ -839,7 +838,6 @@ static void sci_transmit_chars(struct uart_port *port) { struct circ_buf *xmit = &port->state->xmit; unsigned int stopped = uart_tx_stopped(port); - struct sci_port *s = to_sci_port(port); unsigned short status; unsigned short ctrl; int count; @@ -876,7 +874,6 @@ static void sci_transmit_chars(struct uart_port *port) } serial_port_out(port, SCxTDR, c); - s->tx_occurred = true; port->icount.tx++; } while (--count > 0); @@ -1233,8 +1230,6 @@ static void sci_dma_tx_complete(void *arg) if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) uart_write_wakeup(port); - s->tx_occurred = true; - if (!uart_circ_empty(xmit)) { s->cookie_tx = 0; schedule_work(&s->work_tx); @@ -1724,19 +1719,6 @@ static void sci_flush_buffer(struct uart_port *port) s->cookie_tx = -EINVAL; } } - -static void sci_dma_check_tx_occurred(struct sci_port *s) -{ - struct dma_tx_state state; - enum dma_status status; - - if (!s->chan_tx) - return; - - status = dmaengine_tx_status(s->chan_tx, s->cookie_tx, &state); - if (status == DMA_COMPLETE || status == DMA_IN_PROGRESS) - s->tx_occurred = true; -} #else /* !CONFIG_SERIAL_SH_SCI_DMA */ static inline void sci_request_dma(struct uart_port *port) { @@ -1746,10 +1728,6 @@ static inline void sci_free_dma(struct uart_port *port) { } -static void sci_dma_check_tx_occurred(struct sci_port *s) -{ -} - #define sci_flush_buffer NULL #endif /* !CONFIG_SERIAL_SH_SCI_DMA */ @@ -2086,12 +2064,6 @@ static unsigned int sci_tx_empty(struct uart_port *port) { unsigned short status = serial_port_in(port, SCxSR); unsigned short in_tx_fifo = sci_txfill(port); - struct sci_port *s = to_sci_port(port); - - sci_dma_check_tx_occurred(s); - - if (!s->tx_occurred) - return TIOCSER_TEMT; return (status & SCxSR_TEND(port)) && !in_tx_fifo ? TIOCSER_TEMT : 0; } @@ -2262,7 +2234,6 @@ static int sci_startup(struct uart_port *port) dev_dbg(port->dev, "%s(%d)\n", __func__, port->line); - s->tx_occurred = false; sci_request_dma(port); ret = sci_request_irq(s); -- Gitee From 070f1b496111634ff8706a3fda221e76333a5168 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:22 +0800 Subject: [PATCH 0931/1421] Revert "arm64: dts: ti: k3-j721e-sk: Add DT nodes for power regulators" This reverts commit e7a68372d946ebf58e16026c47775f8155c577ea. --- arch/arm64/boot/dts/ti/k3-j721e-sk.dts | 31 -------------------------- 1 file changed, 31 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts index 952d2c72628e..5e03a7f58faa 100644 --- a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts +++ b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts @@ -183,17 +183,6 @@ vsys_3v3: fixedregulator-vsys3v3 { regulator-boot-on; }; - vsys_5v0: fixedregulator-vsys5v0 { - /* Output of LM61460 */ - compatible = "regulator-fixed"; - regulator-name = "vsys_5v0"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - vin-supply = <&vusb_main>; - regulator-always-on; - regulator-boot-on; - }; - vdd_mmc1: fixedregulator-sd { compatible = "regulator-fixed"; pinctrl-names = "default"; @@ -221,20 +210,6 @@ vdd_sd_dv_alt: gpio-regulator-tps659411 { <3300000 0x1>; }; - vdd_sd_dv: gpio-regulator-TLV71033 { - compatible = "regulator-gpio"; - pinctrl-names = "default"; - pinctrl-0 = <&vdd_sd_dv_pins_default>; - regulator-name = "tlv71033"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - vin-supply = <&vsys_5v0>; - gpios = <&main_gpio0 118 GPIO_ACTIVE_HIGH>; - states = <1800000 0x0>, - <3300000 0x1>; - }; - transceiver1: can-phy1 { compatible = "ti,tcan1042"; #phy-cells = <0>; @@ -626,12 +601,6 @@ J721E_WKUP_IOPAD(0xd4, PIN_OUTPUT, 7) /* (G26) WKUP_GPIO0_9 */ >; }; - vdd_sd_dv_pins_default: vdd-sd-dv-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x1dc, PIN_OUTPUT, 7) /* (Y1) SPI1_CLK.GPIO0_118 */ - >; - }; - wkup_uart0_pins_default: wkup-uart0-default-pins { pinctrl-single,pins = < J721E_WKUP_IOPAD(0xa0, PIN_INPUT, 0) /* (J29) WKUP_UART0_RXD */ -- Gitee From 0c1a68c4af1119cfdf36101d6f8d9f89384a4a8e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:22 +0800 Subject: [PATCH 0932/1421] Revert "arm64: dts: ti: k3-j721e-sk: Add support for multiple CAN instances" This reverts commit 69449182f86af05fd6365b64af3381ad8e24258f. --- arch/arm64/boot/dts/ti/k3-j721e-sk.dts | 116 ------------------------- 1 file changed, 116 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts index 5e03a7f58faa..d967b384071c 100644 --- a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts +++ b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts @@ -210,42 +210,6 @@ vdd_sd_dv_alt: gpio-regulator-tps659411 { <3300000 0x1>; }; - transceiver1: can-phy1 { - compatible = "ti,tcan1042"; - #phy-cells = <0>; - max-bitrate = <5000000>; - pinctrl-names = "default"; - pinctrl-0 = <&mcu_mcan0_gpio_pins_default>; - standby-gpios = <&wkup_gpio0 3 GPIO_ACTIVE_HIGH>; - }; - - transceiver2: can-phy2 { - compatible = "ti,tcan1042"; - #phy-cells = <0>; - max-bitrate = <5000000>; - pinctrl-names = "default"; - pinctrl-0 = <&main_mcan0_gpio_pins_default>; - standby-gpios = <&main_gpio0 65 GPIO_ACTIVE_HIGH>; - }; - - transceiver3: can-phy3 { - compatible = "ti,tcan1042"; - #phy-cells = <0>; - max-bitrate = <5000000>; - pinctrl-names = "default"; - pinctrl-0 = <&main_mcan5_gpio_pins_default>; - standby-gpios = <&main_gpio0 66 GPIO_ACTIVE_HIGH>; - }; - - transceiver4: can-phy4 { - compatible = "ti,tcan1042"; - #phy-cells = <0>; - max-bitrate = <5000000>; - pinctrl-names = "default"; - pinctrl-0 = <&main_mcan9_gpio_pins_default>; - standby-gpios = <&main_gpio0 67 GPIO_ACTIVE_HIGH>; - }; - dp_pwr_3v3: fixedregulator-dp-prw { compatible = "regulator-fixed"; regulator-name = "dp-pwr"; @@ -403,45 +367,6 @@ J721E_IOPAD(0x164, PIN_OUTPUT, 7) /* (V29) RGMII5_TD2 */ >; }; - main_mcan0_pins_default: main-mcan0-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x208, PIN_INPUT, 0) /* (W5) MCAN0_RX */ - J721E_IOPAD(0x20c, PIN_OUTPUT, 0) /* (W6) MCAN0_TX */ - >; - }; - - main_mcan0_gpio_pins_default: main-mcan0-gpio-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x108, PIN_INPUT, 7) /* (AD27) PRG0_PRU1_GPO2.GPIO0_65 */ - >; - }; - - main_mcan5_pins_default: main-mcan5-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x050, PIN_INPUT, 6) /* (AE21) PRG1_PRU0_GPO18.MCAN5_RX */ - J721E_IOPAD(0x04c, PIN_OUTPUT, 6) /* (AJ21) PRG1_PRU0_GPO17.MCAN5_TX */ - >; - }; - - main_mcan5_gpio_pins_default: main-mcan5-gpio-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x10c, PIN_INPUT, 7) /* (AC25) PRG0_PRU1_GPO3.GPIO0_66 */ - >; - }; - - main_mcan9_pins_default: main-mcan9-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x0d0, PIN_INPUT, 6) /* (AC27) PRG0_PRU0_GPO8.MCAN9_RX */ - J721E_IOPAD(0x0cc, PIN_OUTPUT, 6) /* (AC28) PRG0_PRU0_GPO7.MCAN9_TX */ - >; - }; - - main_mcan9_gpio_pins_default: main-mcan9-gpio-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x110, PIN_INPUT, 7) /* (AD29) PRG0_PRU1_GPO4.GPIO0_67 */ - >; - }; - dp0_pins_default: dp0-default-pins { pinctrl-single,pins = < J721E_IOPAD(0x1c4, PIN_INPUT, 5) /* SPI0_CS1.DP0_HPD */ @@ -624,19 +549,6 @@ J721E_WKUP_IOPAD(0xfc, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SDA */ >; }; - mcu_mcan0_pins_default: mcu-mcan0-default-pins { - pinctrl-single,pins = < - J721E_WKUP_IOPAD(0x0ac, PIN_INPUT, 0) /* (C29) MCU_MCAN0_RX */ - J721E_WKUP_IOPAD(0x0a8, PIN_OUTPUT, 0) /* (D29) MCU_MCAN0_TX */ - >; - }; - - mcu_mcan0_gpio_pins_default: mcu-mcan0-gpio-default-pins { - pinctrl-single,pins = < - J721E_WKUP_IOPAD(0x0bc, PIN_INPUT, 7) /* (F27) WKUP_GPIO0_3 */ - >; - }; - /* Reset for M.2 M Key slot on PCIe1 */ mkey_reset_pins_default: mkey-reset-pns-default-pins { pinctrl-single,pins = < @@ -1045,34 +957,6 @@ &pcie1_rc { num-lanes = <2>; }; -&mcu_mcan0 { - pinctrl-names = "default"; - pinctrl-0 = <&mcu_mcan0_pins_default>; - phys = <&transceiver1>; - status = "okay"; -}; - -&main_mcan0 { - pinctrl-names = "default"; - pinctrl-0 = <&main_mcan0_pins_default>; - phys = <&transceiver2>; - status = "okay"; -}; - -&main_mcan5 { - pinctrl-names = "default"; - pinctrl-0 = <&main_mcan5_pins_default>; - phys = <&transceiver3>; - status = "okay"; -}; - -&main_mcan9 { - pinctrl-names = "default"; - pinctrl-0 = <&main_mcan9_pins_default>; - phys = <&transceiver4>; - status = "okay"; -}; - &ufs_wrapper { status = "disabled"; }; -- Gitee From 7219b01dea345de12d98b4b234f874b1c1f03fa3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:22 +0800 Subject: [PATCH 0933/1421] Revert "arm64: dts: ti: k3-j721e-sk: Model CSI2RX connector mux" This reverts commit 0674275e9005e7cdaebbe9b33513a0885d8bb39d. --- arch/arm64/boot/dts/ti/k3-j721e-sk.dts | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts index d967b384071c..ccacb65683b5 100644 --- a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts +++ b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts @@ -286,15 +286,6 @@ tfp410_out: endpoint { }; }; }; - - csi_mux: mux-controller { - compatible = "gpio-mux"; - #mux-state-cells = <1>; - mux-gpios = <&main_gpio0 88 GPIO_ACTIVE_HIGH>; - idle-state = <0>; - pinctrl-names = "default"; - pinctrl-0 = <&main_csi_mux_sel_pins_default>; - }; }; &main_pmx0 { @@ -361,12 +352,6 @@ J721E_IOPAD(0x214, PIN_OUTPUT, 4) /* (V4) MCAN1_TX.USB1_DRVVBUS */ >; }; - main_csi_mux_sel_pins_default: main-csi-mux-sel-default-pins { - pinctrl-single,pins = < - J721E_IOPAD(0x164, PIN_OUTPUT, 7) /* (V29) RGMII5_TD2 */ - >; - }; - dp0_pins_default: dp0-default-pins { pinctrl-single,pins = < J721E_IOPAD(0x1c4, PIN_INPUT, 5) /* SPI0_CS1.DP0_HPD */ @@ -722,14 +707,14 @@ i2c-mux@70 { reg = <0x70>; /* CSI0 I2C */ - cam0_i2c: i2c@0 { + i2c@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; }; /* CSI1 I2C */ - cam1_i2c: i2c@1 { + i2c@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; -- Gitee From 75a5d4e8041934e1fdf128fa1768cdd4285a5c62 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:22 +0800 Subject: [PATCH 0934/1421] Revert "arm64: dts: ti: k3-am65-main: Add missing taps to sdhci0" This reverts commit f1f025f56138d23a17c4ec58ae36c06ebbc73534. --- arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi index 0523bd0da80c..9c5de448351e 100644 --- a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi @@ -448,8 +448,6 @@ sdhci0: mmc@4f80000 { ti,otap-del-sel-ddr50 = <0x5>; ti,otap-del-sel-ddr52 = <0x5>; ti,otap-del-sel-hs200 = <0x5>; - ti,itap-del-sel-legacy = <0xa>; - ti,itap-del-sel-mmc-hs = <0x1>; ti,itap-del-sel-ddr52 = <0x0>; dma-coherent; }; -- Gitee From 6af62fb9a29060e5a1bfe5136c191ee139ced93b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:22 +0800 Subject: [PATCH 0935/1421] Revert "arm64: dts: ti: k3-am65-main: Fix sdhci node properties" This reverts commit a780fb68cf63ebe3b7359670b4224ce9b73edd59. --- arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi index 9c5de448351e..57befcce93b9 100644 --- a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi @@ -436,8 +436,6 @@ sdhci0: mmc@4f80000 { interrupts = ; mmc-ddr-1_8v; mmc-hs200-1_8v; - ti,clkbuf-sel = <0x7>; - ti,trm-icp = <0x8>; ti,otap-del-sel-legacy = <0x0>; ti,otap-del-sel-mmc-hs = <0x0>; ti,otap-del-sel-sd-hs = <0x0>; @@ -448,7 +446,8 @@ sdhci0: mmc@4f80000 { ti,otap-del-sel-ddr50 = <0x5>; ti,otap-del-sel-ddr52 = <0x5>; ti,otap-del-sel-hs200 = <0x5>; - ti,itap-del-sel-ddr52 = <0x0>; + ti,otap-del-sel-hs400 = <0x0>; + ti,trm-icp = <0x8>; dma-coherent; }; @@ -459,22 +458,18 @@ sdhci1: mmc@4fa0000 { clocks = <&k3_clks 48 0>, <&k3_clks 48 1>; clock-names = "clk_ahb", "clk_xin"; interrupts = ; - ti,clkbuf-sel = <0x7>; - ti,trm-icp = <0x8>; ti,otap-del-sel-legacy = <0x0>; ti,otap-del-sel-mmc-hs = <0x0>; ti,otap-del-sel-sd-hs = <0x0>; - ti,otap-del-sel-sdr12 = <0xf>; - ti,otap-del-sel-sdr25 = <0xf>; + ti,otap-del-sel-sdr12 = <0x0>; + ti,otap-del-sel-sdr25 = <0x0>; ti,otap-del-sel-sdr50 = <0x8>; ti,otap-del-sel-sdr104 = <0x7>; ti,otap-del-sel-ddr50 = <0x4>; ti,otap-del-sel-ddr52 = <0x4>; ti,otap-del-sel-hs200 = <0x7>; - ti,itap-del-sel-legacy = <0xa>; - ti,itap-del-sel-sd-hs = <0x1>; - ti,itap-del-sel-sdr12 = <0xa>; - ti,itap-del-sel-sdr25 = <0x1>; + ti,clkbuf-sel = <0x7>; + ti,trm-icp = <0x8>; dma-coherent; }; -- Gitee From 7e22a5f6eb84304c44cd38c89608db95e2d75f46 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:23 +0800 Subject: [PATCH 0936/1421] Revert "kasan: use unchecked __memset internally" This reverts commit dace00a48e906f5133d99e2e6ef161a1e80f2a3e. --- mm/kasan/report.c | 4 ++-- mm/kasan/shadow.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 465e6a53b3bf..ecced40e5103 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -538,7 +538,7 @@ void kasan_report_invalid_free(void *ptr, unsigned long ip, enum kasan_report_ty start_report(&flags, true); - __memset(&info, 0, sizeof(info)); + memset(&info, 0, sizeof(info)); info.type = type; info.access_addr = ptr; info.access_size = 0; @@ -576,7 +576,7 @@ bool kasan_report(const void *addr, size_t size, bool is_write, start_report(&irq_flags, true); - __memset(&info, 0, sizeof(info)); + memset(&info, 0, sizeof(info)); info.type = KASAN_REPORT_ACCESS; info.access_addr = addr; info.access_size = size; diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c index d687f09a7ae3..dd772f9d0f08 100644 --- a/mm/kasan/shadow.c +++ b/mm/kasan/shadow.c @@ -324,7 +324,7 @@ static int kasan_populate_vmalloc_pte(pte_t *ptep, unsigned long addr, if (!page) return -ENOMEM; - __memset((void *)page, KASAN_VMALLOC_INVALID, PAGE_SIZE); + memset((void *)page, KASAN_VMALLOC_INVALID, PAGE_SIZE); pte = pfn_pte(PFN_DOWN(__pa(page)), PAGE_KERNEL); spin_lock(&init_mm.page_table_lock); -- Gitee From 6c129714449e20ba44f87ce547f552d0b541555b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:23 +0800 Subject: [PATCH 0937/1421] Revert "Input: synaptics-rmi - fix crash with unsupported versions of F34" This reverts commit 61e4028ab20fa1ae8ee92cb71471c30c9548328f. --- drivers/input/rmi4/rmi_f34.c | 135 +++++++++++++++-------------------- 1 file changed, 59 insertions(+), 76 deletions(-) diff --git a/drivers/input/rmi4/rmi_f34.c b/drivers/input/rmi4/rmi_f34.c index cae1e4166492..0d9a5756e3f5 100644 --- a/drivers/input/rmi4/rmi_f34.c +++ b/drivers/input/rmi4/rmi_f34.c @@ -4,7 +4,6 @@ * Copyright (C) 2016 Zodiac Inflight Innovations */ -#include "linux/device.h" #include #include #include @@ -299,30 +298,39 @@ static int rmi_f34_update_firmware(struct f34_data *f34, return ret; } +static int rmi_f34_status(struct rmi_function *fn) +{ + struct f34_data *f34 = dev_get_drvdata(&fn->dev); + + /* + * The status is the percentage complete, or once complete, + * zero for success or a negative return code. + */ + return f34->update_status; +} + static ssize_t rmi_driver_bootloader_id_show(struct device *dev, struct device_attribute *dattr, char *buf) { struct rmi_driver_data *data = dev_get_drvdata(dev); - struct rmi_function *fn; + struct rmi_function *fn = data->f34_container; struct f34_data *f34; - fn = data->f34_container; - if (!fn) - return -ENODEV; - - f34 = dev_get_drvdata(&fn->dev); - if (!f34) - return -ENODEV; + if (fn) { + f34 = dev_get_drvdata(&fn->dev); + + if (f34->bl_version == 5) + return sysfs_emit(buf, "%c%c\n", + f34->bootloader_id[0], + f34->bootloader_id[1]); + else + return sysfs_emit(buf, "V%d.%d\n", + f34->bootloader_id[1], + f34->bootloader_id[0]); + } - if (f34->bl_version == 5) - return sysfs_emit(buf, "%c%c\n", - f34->bootloader_id[0], - f34->bootloader_id[1]); - else - return sysfs_emit(buf, "V%d.%d\n", - f34->bootloader_id[1], - f34->bootloader_id[0]); + return 0; } static DEVICE_ATTR(bootloader_id, 0444, rmi_driver_bootloader_id_show, NULL); @@ -335,16 +343,13 @@ static ssize_t rmi_driver_configuration_id_show(struct device *dev, struct rmi_function *fn = data->f34_container; struct f34_data *f34; - fn = data->f34_container; - if (!fn) - return -ENODEV; - - f34 = dev_get_drvdata(&fn->dev); - if (!f34) - return -ENODEV; + if (fn) { + f34 = dev_get_drvdata(&fn->dev); + return sysfs_emit(buf, "%s\n", f34->configuration_id); + } - return sysfs_emit(buf, "%s\n", f34->configuration_id); + return 0; } static DEVICE_ATTR(configuration_id, 0444, @@ -360,14 +365,10 @@ static int rmi_firmware_update(struct rmi_driver_data *data, if (!data->f34_container) { dev_warn(dev, "%s: No F34 present!\n", __func__); - return -ENODEV; + return -EINVAL; } f34 = dev_get_drvdata(&data->f34_container->dev); - if (!f34) { - dev_warn(dev, "%s: No valid F34 present!\n", __func__); - return -ENODEV; - } if (f34->bl_version >= 7) { if (data->pdt_props & HAS_BSR) { @@ -493,18 +494,10 @@ static ssize_t rmi_driver_update_fw_status_show(struct device *dev, char *buf) { struct rmi_driver_data *data = dev_get_drvdata(dev); - struct f34_data *f34; - int update_status = -ENODEV; + int update_status = 0; - /* - * The status is the percentage complete, or once complete, - * zero for success or a negative return code. - */ - if (data->f34_container) { - f34 = dev_get_drvdata(&data->f34_container->dev); - if (f34) - update_status = f34->update_status; - } + if (data->f34_container) + update_status = rmi_f34_status(data->f34_container); return sysfs_emit(buf, "%d\n", update_status); } @@ -524,21 +517,33 @@ static const struct attribute_group rmi_firmware_attr_group = { .attrs = rmi_firmware_attrs, }; -static int rmi_f34v5_probe(struct f34_data *f34) +static int rmi_f34_probe(struct rmi_function *fn) { - struct rmi_function *fn = f34->fn; - u8 f34_queries[9]; + struct f34_data *f34; + unsigned char f34_queries[9]; bool has_config_id; - int error; + u8 version = fn->fd.function_version; + int ret; + + f34 = devm_kzalloc(&fn->dev, sizeof(struct f34_data), GFP_KERNEL); + if (!f34) + return -ENOMEM; + + f34->fn = fn; + dev_set_drvdata(&fn->dev, f34); + + /* v5 code only supported version 0, try V7 probe */ + if (version > 0) + return rmi_f34v7_probe(f34); f34->bl_version = 5; - error = rmi_read_block(fn->rmi_dev, fn->fd.query_base_addr, - f34_queries, sizeof(f34_queries)); - if (error) { + ret = rmi_read_block(fn->rmi_dev, fn->fd.query_base_addr, + f34_queries, sizeof(f34_queries)); + if (ret) { dev_err(&fn->dev, "%s: Failed to query properties\n", __func__); - return error; + return ret; } snprintf(f34->bootloader_id, sizeof(f34->bootloader_id), @@ -564,11 +569,11 @@ static int rmi_f34v5_probe(struct f34_data *f34) f34->v5.config_blocks); if (has_config_id) { - error = rmi_read_block(fn->rmi_dev, fn->fd.control_base_addr, - f34_queries, sizeof(f34_queries)); - if (error) { + ret = rmi_read_block(fn->rmi_dev, fn->fd.control_base_addr, + f34_queries, sizeof(f34_queries)); + if (ret) { dev_err(&fn->dev, "Failed to read F34 config ID\n"); - return error; + return ret; } snprintf(f34->configuration_id, sizeof(f34->configuration_id), @@ -577,34 +582,12 @@ static int rmi_f34v5_probe(struct f34_data *f34) f34_queries[2], f34_queries[3]); rmi_dbg(RMI_DEBUG_FN, &fn->dev, "Configuration ID: %s\n", - f34->configuration_id); + f34->configuration_id); } return 0; } -static int rmi_f34_probe(struct rmi_function *fn) -{ - struct f34_data *f34; - u8 version = fn->fd.function_version; - int error; - - f34 = devm_kzalloc(&fn->dev, sizeof(struct f34_data), GFP_KERNEL); - if (!f34) - return -ENOMEM; - - f34->fn = fn; - - /* v5 code only supported version 0 */ - error = version == 0 ? rmi_f34v5_probe(f34) : rmi_f34v7_probe(f34); - if (error) - return error; - - dev_set_drvdata(&fn->dev, f34); - - return 0; -} - int rmi_f34_create_sysfs(struct rmi_device *rmi_dev) { return sysfs_create_group(&rmi_dev->dev.kobj, &rmi_firmware_attr_group); -- Gitee From e6a9269a8f13dff561ba4a624be3cf712c0799bc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:23 +0800 Subject: [PATCH 0938/1421] Revert "pmdomain: core: Fix error checking in genpd_dev_pm_attach_by_id()" This reverts commit edebca31f62a83aefb16a6061637eb4969c97a1e. --- drivers/base/power/domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index d1dae47f3534..d9d339b8b571 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -2856,7 +2856,7 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev, /* Verify that the index is within a valid range. */ num_domains = of_count_phandle_with_args(dev->of_node, "power-domains", "#power-domain-cells"); - if (num_domains < 0 || index >= num_domains) + if (index >= num_domains) return NULL; /* Allocate and register device on the genpd bus. */ -- Gitee From 5a1f234b9e848b1896a72cbf0ee382f14c44532c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:23 +0800 Subject: [PATCH 0939/1421] Revert "do_change_type(): refuse to operate on unmounted/not ours mounts" This reverts commit 92d0ba7c615c804c83495de56a3608bc655b4ebb. --- fs/namespace.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index eab9185e2285..4d8afd0e1eb8 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2557,10 +2557,6 @@ static int do_change_type(struct path *path, int ms_flags) return -EINVAL; namespace_lock(); - if (!check_mnt(mnt)) { - err = -EINVAL; - goto out_unlock; - } if (type == MS_SHARED) { err = invent_group_ids(mnt, recurse); if (err) -- Gitee From a1b7e998cac73caf2a1c77d9703568c77c2a91f0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:23 +0800 Subject: [PATCH 0940/1421] Revert "fix propagation graph breakage by MOVE_MOUNT_SET_GROUP move_mount(2)" This reverts commit 3b0407f31da1bf3c1dbb9e68f9c1e59cda9ed872. --- fs/namespace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/namespace.c b/fs/namespace.c index 4d8afd0e1eb8..7942a33451ba 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2995,7 +2995,7 @@ static int do_set_group(struct path *from_path, struct path *to_path) if (IS_MNT_SLAVE(from)) { struct mount *m = from->mnt_master; - list_add(&to->mnt_slave, &from->mnt_slave); + list_add(&to->mnt_slave, &m->mnt_slave_list); to->mnt_master = m; } -- Gitee From ac968f2a637edfa5ee9edf2c6b777f9ef4008221 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:24 +0800 Subject: [PATCH 0941/1421] Revert "path_overmount(): avoid false negatives" This reverts commit e4c3b6b6cc2915db13bafef31b717a60b4b52004. --- fs/namespace.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 7942a33451ba..ef3b2ae2957e 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -3020,25 +3020,18 @@ static int do_set_group(struct path *from_path, struct path *to_path) * Check if path is overmounted, i.e., if there's a mount on top of * @path->mnt with @path->dentry as mountpoint. * - * Context: namespace_sem must be held at least shared. - * MUST NOT be called under lock_mount_hash() (there one should just - * call __lookup_mnt() and check if it returns NULL). + * Context: This function expects namespace_lock() to be held. * Return: If path is overmounted true is returned, false if not. */ static inline bool path_overmounted(const struct path *path) { - unsigned seq = read_seqbegin(&mount_lock); - bool no_child; - rcu_read_lock(); - no_child = !__lookup_mnt(path->mnt, path->dentry); - rcu_read_unlock(); - if (need_seqretry(&mount_lock, seq)) { - read_seqlock_excl(&mount_lock); - no_child = !__lookup_mnt(path->mnt, path->dentry); - read_sequnlock_excl(&mount_lock); + if (unlikely(__lookup_mnt(path->mnt, path->dentry))) { + rcu_read_unlock(); + return true; } - return unlikely(!no_child); + rcu_read_unlock(); + return false; } /** -- Gitee From fc2d759a3228fbdcf58c8576320bd660b2ec014f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:24 +0800 Subject: [PATCH 0942/1421] Revert "ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init" This reverts commit 5c6271ca765e13c3fe68e6e359c4cc859023b31e. --- sound/soc/ti/omap-hdmi.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sound/soc/ti/omap-hdmi.c b/sound/soc/ti/omap-hdmi.c index 72fabf22a02e..0a731b21e5a5 100644 --- a/sound/soc/ti/omap-hdmi.c +++ b/sound/soc/ti/omap-hdmi.c @@ -361,20 +361,17 @@ static int omap_hdmi_audio_probe(struct platform_device *pdev) if (!card->dai_link) return -ENOMEM; - compnent = devm_kzalloc(dev, 2 * sizeof(*compnent), GFP_KERNEL); + compnent = devm_kzalloc(dev, sizeof(*compnent), GFP_KERNEL); if (!compnent) return -ENOMEM; - card->dai_link->cpus = &compnent[0]; + card->dai_link->cpus = compnent; card->dai_link->num_cpus = 1; card->dai_link->codecs = &asoc_dummy_dlc; card->dai_link->num_codecs = 1; - card->dai_link->platforms = &compnent[1]; - card->dai_link->num_platforms = 1; card->dai_link->name = card->name; card->dai_link->stream_name = card->name; card->dai_link->cpus->dai_name = dev_name(ad->dssdev); - card->dai_link->platforms->name = dev_name(ad->dssdev); card->num_links = 1; card->dev = dev; -- Gitee From 5dbd375b8896bbe7c176841f6d783967bb393c1a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:24 +0800 Subject: [PATCH 0943/1421] Revert "ASoC: Intel: avs: Verify content returned by parse_int_array()" This reverts commit 434832250e6924d56daa61b2a006aebfd9ead373. --- sound/soc/intel/avs/debugfs.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sound/soc/intel/avs/debugfs.c b/sound/soc/intel/avs/debugfs.c index 26d0c3a5a954..bdd388ec01ea 100644 --- a/sound/soc/intel/avs/debugfs.c +++ b/sound/soc/intel/avs/debugfs.c @@ -371,10 +371,7 @@ static ssize_t trace_control_write(struct file *file, const char __user *from, s return ret; num_elems = *array; - if (!num_elems) { - ret = -EINVAL; - goto free_array; - } + resource_mask = array[1]; /* * Disable if just resource mask is provided - no log priority flags. @@ -382,7 +379,6 @@ static ssize_t trace_control_write(struct file *file, const char __user *from, s * Enable input format: mask, prio1, .., prioN * Where 'N' equals number of bits set in the 'mask'. */ - resource_mask = array[1]; if (num_elems == 1) { ret = disable_logs(adev, resource_mask); } else { -- Gitee From fc67315c2a8272ddc0bf5e8776b2a50d167b1405 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:24 +0800 Subject: [PATCH 0944/1421] Revert "ASoC: Intel: avs: Fix deadlock when the failing IPC is SET_D0IX" This reverts commit c32f223048ab117459613f789c9f9596f7d3f067. --- sound/soc/intel/avs/ipc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sound/soc/intel/avs/ipc.c b/sound/soc/intel/avs/ipc.c index afd472906ede..74f676fdfba2 100644 --- a/sound/soc/intel/avs/ipc.c +++ b/sound/soc/intel/avs/ipc.c @@ -169,9 +169,7 @@ static void avs_dsp_exception_caught(struct avs_dev *adev, union avs_notify_msg dev_crit(adev->dev, "communication severed, rebooting dsp..\n"); - /* Avoid deadlock as the exception may be the response to SET_D0IX. */ - if (current_work() != &ipc->d0ix_work.work) - cancel_delayed_work_sync(&ipc->d0ix_work); + cancel_delayed_work_sync(&ipc->d0ix_work); ipc->in_d0ix = false; /* Re-enabled on recovery completion. */ pm_runtime_disable(adev->dev); -- Gitee From 427105b5ed07fca0013f39c499d6808af2aa543d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:25 +0800 Subject: [PATCH 0945/1421] Revert "ASoC: codecs: hda: Fix RPM usage count underflow" This reverts commit 70641d5e02eb2b39646c15040436368676a08eca. --- sound/soc/codecs/hda.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/hda.c b/sound/soc/codecs/hda.c index 42aca0a63c44..d57b043d6bfe 100644 --- a/sound/soc/codecs/hda.c +++ b/sound/soc/codecs/hda.c @@ -150,7 +150,7 @@ int hda_codec_probe_complete(struct hda_codec *codec) ret = snd_hda_codec_build_controls(codec); if (ret < 0) { dev_err(&hdev->dev, "unable to create controls %d\n", ret); - return ret; + goto out; } /* Bus suspended codecs as it does not manage their pm */ @@ -158,7 +158,7 @@ int hda_codec_probe_complete(struct hda_codec *codec) /* rpm was forbidden in snd_hda_codec_device_new() */ snd_hda_codec_set_power_save(codec, 2000); snd_hda_codec_register(codec); - +out: /* Complement pm_runtime_get_sync(bus) in probe */ pm_runtime_mark_last_busy(bus->dev); pm_runtime_put_autosuspend(bus->dev); -- Gitee From 4dd6837e661454e5b798b24e79f651b655540a7a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:25 +0800 Subject: [PATCH 0946/1421] Revert "scsi: ufs: qcom: Prevent calling phy_exit() before phy_init()" This reverts commit 6bd05d36f4b9a060b37bebd47a7e9a0ac05704ec. --- drivers/ufs/host/ufs-qcom.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index c94824c999cc..c6417ef074a4 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -453,9 +453,10 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba) dev_warn(hba->dev, "%s: host reset returned %d\n", __func__, ret); - if (phy->power_count) + if (phy->power_count) { phy_power_off(phy); - + phy_exit(phy); + } /* phy initialization - calibrate the phy */ ret = phy_init(phy); -- Gitee From 77599f67a2b3ed42ad54d381a0bc5e87f6fa5837 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:25 +0800 Subject: [PATCH 0947/1421] Revert "seg6: Fix validation of nexthop addresses" This reverts commit 03f9864b3f3c5d1e3477ed75da3a4c1a4938db06. --- net/ipv6/seg6_local.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/ipv6/seg6_local.c b/net/ipv6/seg6_local.c index 7f295b9c1374..c434940131b1 100644 --- a/net/ipv6/seg6_local.c +++ b/net/ipv6/seg6_local.c @@ -1638,8 +1638,10 @@ static const struct nla_policy seg6_local_policy[SEG6_LOCAL_MAX + 1] = { [SEG6_LOCAL_SRH] = { .type = NLA_BINARY }, [SEG6_LOCAL_TABLE] = { .type = NLA_U32 }, [SEG6_LOCAL_VRFTABLE] = { .type = NLA_U32 }, - [SEG6_LOCAL_NH4] = NLA_POLICY_EXACT_LEN(sizeof(struct in_addr)), - [SEG6_LOCAL_NH6] = NLA_POLICY_EXACT_LEN(sizeof(struct in6_addr)), + [SEG6_LOCAL_NH4] = { .type = NLA_BINARY, + .len = sizeof(struct in_addr) }, + [SEG6_LOCAL_NH6] = { .type = NLA_BINARY, + .len = sizeof(struct in6_addr) }, [SEG6_LOCAL_IIF] = { .type = NLA_U32 }, [SEG6_LOCAL_OIF] = { .type = NLA_U32 }, [SEG6_LOCAL_BPF] = { .type = NLA_NESTED }, -- Gitee From 2e4c2f342ebd6a136d89810fc343bf59aeefae1c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:25 +0800 Subject: [PATCH 0948/1421] Revert "wireguard: device: enable threaded NAPI" This reverts commit facca278e3d11564d0c8bf247c8101711224fdd5. --- drivers/net/wireguard/device.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/wireguard/device.c b/drivers/net/wireguard/device.c index f98e0f027a05..deb9636b0ecf 100644 --- a/drivers/net/wireguard/device.c +++ b/drivers/net/wireguard/device.c @@ -369,7 +369,6 @@ static int wg_newlink(struct net *src_net, struct net_device *dev, if (ret < 0) goto err_free_handshake_queue; - dev_set_threaded(dev, true); ret = register_netdevice(dev); if (ret < 0) goto err_uninit_ratelimiter; -- Gitee From 1412d533c9004c6d4c39aaed74e1390f849cdde1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:25 +0800 Subject: [PATCH 0949/1421] Revert "net: dsa: b53: allow RGMII for bcm63xx RGMII ports" This reverts commit cc9b46f6fe6af4521608ac89b21006e87978dd18. --- drivers/net/dsa/b53/b53_common.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 004d2c988ff0..7ca42170d866 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1377,10 +1377,6 @@ static void b53_phylink_get_caps(struct dsa_switch *ds, int port, __set_bit(PHY_INTERFACE_MODE_MII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_REVMII, config->supported_interfaces); - /* BCM63xx RGMII ports support RGMII */ - if (is63xx(dev) && in_range(port, B53_63XX_RGMII0, 4)) - phy_interface_set_rgmii(config->supported_interfaces); - config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | MAC_10 | MAC_100; -- Gitee From f15ff3aa3640a2833572797023074593156b9ef7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:26 +0800 Subject: [PATCH 0950/1421] Revert "net: dsa: b53: do not enable RGMII delay on bcm63xx" This reverts commit 6d7e16d5ab7af4d6b8e0dc634623eedcec363f2e. --- drivers/net/dsa/b53/b53_common.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 7ca42170d866..d2ff2c2fcbbf 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1237,7 +1237,24 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port, off = B53_RGMII_CTRL_P(port); b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl); - rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC); + + switch (interface) { + case PHY_INTERFACE_MODE_RGMII_ID: + rgmii_ctrl |= (RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC); + break; + case PHY_INTERFACE_MODE_RGMII_RXID: + rgmii_ctrl &= ~(RGMII_CTRL_DLL_TXC); + rgmii_ctrl |= RGMII_CTRL_DLL_RXC; + break; + case PHY_INTERFACE_MODE_RGMII_TXID: + rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC); + rgmii_ctrl |= RGMII_CTRL_DLL_TXC; + break; + case PHY_INTERFACE_MODE_RGMII: + default: + rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC); + break; + } if (port != dev->imp_port) { if (is63268(dev)) -- Gitee From 51f0f9c3f801cf3f8db2d1c6f720fb1166c9a2b8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:26 +0800 Subject: [PATCH 0951/1421] Revert "netfilter: nf_nat: also check reverse tuple to obtain clashing entry" This reverts commit 0b4dcb2feda7124f36dd6a2cf0f3723dac33b244. --- net/netfilter/nf_nat_core.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c index 9df883d79acc..ccca6e3848bc 100644 --- a/net/netfilter/nf_nat_core.c +++ b/net/netfilter/nf_nat_core.c @@ -248,7 +248,7 @@ static noinline bool nf_nat_used_tuple_new(const struct nf_conntrack_tuple *tuple, const struct nf_conn *ignored_ct) { - static const unsigned long uses_nat = IPS_NAT_MASK | IPS_SEQ_ADJUST; + static const unsigned long uses_nat = IPS_NAT_MASK | IPS_SEQ_ADJUST_BIT; const struct nf_conntrack_tuple_hash *thash; const struct nf_conntrack_zone *zone; struct nf_conn *ct; @@ -287,14 +287,8 @@ nf_nat_used_tuple_new(const struct nf_conntrack_tuple *tuple, zone = nf_ct_zone(ignored_ct); thash = nf_conntrack_find_get(net, zone, tuple); - if (unlikely(!thash)) { - struct nf_conntrack_tuple reply; - - nf_ct_invert_tuple(&reply, tuple); - thash = nf_conntrack_find_get(net, zone, &reply); - if (!thash) /* clashing entry went away */ - return false; - } + if (unlikely(!thash)) /* clashing entry went away */ + return false; ct = nf_ct_tuplehash_to_ctrack(thash); -- Gitee From be0423a1db79f65d95462ff481f37e61672e68c4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:26 +0800 Subject: [PATCH 0952/1421] Revert "netfilter: nf_set_pipapo_avx2: fix initial map fill" This reverts commit 184c913322b703db5214f56398618aec89a5adc6. --- net/netfilter/nft_set_pipapo_avx2.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/net/netfilter/nft_set_pipapo_avx2.c b/net/netfilter/nft_set_pipapo_avx2.c index be7c16c79f71..c15db28c5ebc 100644 --- a/net/netfilter/nft_set_pipapo_avx2.c +++ b/net/netfilter/nft_set_pipapo_avx2.c @@ -1113,25 +1113,6 @@ bool nft_pipapo_avx2_estimate(const struct nft_set_desc *desc, u32 features, return true; } -/** - * pipapo_resmap_init_avx2() - Initialise result map before first use - * @m: Matching data, including mapping table - * @res_map: Result map - * - * Like pipapo_resmap_init() but do not set start map bits covered by the first field. - */ -static inline void pipapo_resmap_init_avx2(const struct nft_pipapo_match *m, unsigned long *res_map) -{ - const struct nft_pipapo_field *f = m->f; - int i; - - /* Starting map doesn't need to be set to all-ones for this implementation, - * but we do need to zero the remaining bits, if any. - */ - for (i = f->bsize; i < m->bsize_max; i++) - res_map[i] = 0ul; -} - /** * nft_pipapo_avx2_lookup() - Lookup function for AVX2 implementation * @net: Network namespace @@ -1190,7 +1171,7 @@ bool nft_pipapo_avx2_lookup(const struct net *net, const struct nft_set *set, res = scratch->map + (map_index ? m->bsize_max : 0); fill = scratch->map + (map_index ? 0 : m->bsize_max); - pipapo_resmap_init_avx2(m, res); + /* Starting map doesn't need to be set for this implementation */ nft_pipapo_avx2_prepare(); -- Gitee From 6aa8d191dd6ad71ba48c56b2c830654b143f36af Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:26 +0800 Subject: [PATCH 0953/1421] Revert "gve: add missing NULL check for gve_alloc_pending_packet() in TX DQO" This reverts commit 4f0f447cb4bca4fb8d6d60696a858b0753f1e198. --- drivers/net/ethernet/google/gve/gve_tx_dqo.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_tx_dqo.c b/drivers/net/ethernet/google/gve/gve_tx_dqo.c index 857749fef37c..89b62b8d16e1 100644 --- a/drivers/net/ethernet/google/gve/gve_tx_dqo.c +++ b/drivers/net/ethernet/google/gve/gve_tx_dqo.c @@ -716,9 +716,6 @@ static int gve_tx_add_skb_dqo(struct gve_tx_ring *tx, s16 completion_tag; pkt = gve_alloc_pending_packet(tx); - if (!pkt) - return -ENOMEM; - pkt->skb = skb; completion_tag = pkt - tx->dqo.pending_packets; -- Gitee From 247330200183325143299b8bc32cc06eae52ca63 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:26 +0800 Subject: [PATCH 0954/1421] Revert "PM: sleep: Fix power.is_suspended cleanup for direct-complete devices" This reverts commit 4fb859c3993c176334ba056e88678ea51c2a714d. --- drivers/base/power/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index baa31194cf20..343d3c966e7a 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -897,8 +897,6 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async) if (!dev->power.is_suspended) goto Complete; - dev->power.is_suspended = false; - if (dev->power.direct_complete) { /* Match the pm_runtime_disable() in __device_suspend(). */ pm_runtime_enable(dev); @@ -954,6 +952,7 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async) End: error = dpm_run_callback(callback, dev, state, info); + dev->power.is_suspended = false; device_unlock(dev); dpm_watchdog_clear(&wd); -- Gitee From 1709c9093bd19b3b05e6130b8f920047663be53f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:27 +0800 Subject: [PATCH 0955/1421] Revert "vmxnet3: correctly report gso type for UDP tunnels" This reverts commit 7666fdef2d5cb076ac0e3950ae14576ec9a80074. --- drivers/net/vmxnet3/vmxnet3_drv.c | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index afd78324f3aa..beebe09eb88f 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -1499,30 +1499,6 @@ vmxnet3_get_hdr_len(struct vmxnet3_adapter *adapter, struct sk_buff *skb, return (hlen + (hdr.tcp->doff << 2)); } -static void -vmxnet3_lro_tunnel(struct sk_buff *skb, __be16 ip_proto) -{ - struct udphdr *uh = NULL; - - if (ip_proto == htons(ETH_P_IP)) { - struct iphdr *iph = (struct iphdr *)skb->data; - - if (iph->protocol == IPPROTO_UDP) - uh = (struct udphdr *)(iph + 1); - } else { - struct ipv6hdr *iph = (struct ipv6hdr *)skb->data; - - if (iph->nexthdr == IPPROTO_UDP) - uh = (struct udphdr *)(iph + 1); - } - if (uh) { - if (uh->check) - skb_shinfo(skb)->gso_type |= SKB_GSO_UDP_TUNNEL_CSUM; - else - skb_shinfo(skb)->gso_type |= SKB_GSO_UDP_TUNNEL; - } -} - static int vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, struct vmxnet3_adapter *adapter, int quota) @@ -1827,8 +1803,6 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, if (segCnt != 0 && mss != 0) { skb_shinfo(skb)->gso_type = rcd->v4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; - if (encap_lro) - vmxnet3_lro_tunnel(skb, skb->protocol); skb_shinfo(skb)->gso_size = mss; skb_shinfo(skb)->gso_segs = segCnt; } else if ((segCnt != 0 || skb->len > mtu) && !encap_lro) { -- Gitee From 9afbe7373267b8b8d9121743b3dd3ee796272c15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:27 +0800 Subject: [PATCH 0956/1421] Revert "net: wwan: t7xx: Fix napi rx poll issue" This reverts commit 5778bd3ea51d4d3f1e66a280dafebc224fda185f. --- drivers/net/wwan/t7xx/t7xx_netdev.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/net/wwan/t7xx/t7xx_netdev.c b/drivers/net/wwan/t7xx/t7xx_netdev.c index d879424093b7..3ef4a8a4f8fd 100644 --- a/drivers/net/wwan/t7xx/t7xx_netdev.c +++ b/drivers/net/wwan/t7xx/t7xx_netdev.c @@ -296,7 +296,7 @@ static int t7xx_ccmni_wwan_newlink(void *ctxt, struct net_device *dev, u32 if_id ccmni->ctlb = ctlb; ccmni->dev = dev; atomic_set(&ccmni->usage, 0); - WRITE_ONCE(ctlb->ccmni_inst[if_id], ccmni); + ctlb->ccmni_inst[if_id] = ccmni; ret = register_netdevice(dev); if (ret) @@ -318,7 +318,6 @@ static void t7xx_ccmni_wwan_dellink(void *ctxt, struct net_device *dev, struct l if (WARN_ON(ctlb->ccmni_inst[if_id] != ccmni)) return; - WRITE_ONCE(ctlb->ccmni_inst[if_id], NULL); unregister_netdevice(dev); } @@ -414,7 +413,7 @@ static void t7xx_ccmni_recv_skb(struct t7xx_ccmni_ctrl *ccmni_ctlb, struct sk_bu skb_cb = T7XX_SKB_CB(skb); netif_id = skb_cb->netif_idx; - ccmni = READ_ONCE(ccmni_ctlb->ccmni_inst[netif_id]); + ccmni = ccmni_ctlb->ccmni_inst[netif_id]; if (!ccmni) { dev_kfree_skb(skb); return; @@ -436,7 +435,7 @@ static void t7xx_ccmni_recv_skb(struct t7xx_ccmni_ctrl *ccmni_ctlb, struct sk_bu static void t7xx_ccmni_queue_tx_irq_notify(struct t7xx_ccmni_ctrl *ctlb, int qno) { - struct t7xx_ccmni *ccmni = READ_ONCE(ctlb->ccmni_inst[0]); + struct t7xx_ccmni *ccmni = ctlb->ccmni_inst[0]; struct netdev_queue *net_queue; if (netif_running(ccmni->dev) && atomic_read(&ccmni->usage) > 0) { @@ -448,7 +447,7 @@ static void t7xx_ccmni_queue_tx_irq_notify(struct t7xx_ccmni_ctrl *ctlb, int qno static void t7xx_ccmni_queue_tx_full_notify(struct t7xx_ccmni_ctrl *ctlb, int qno) { - struct t7xx_ccmni *ccmni = READ_ONCE(ctlb->ccmni_inst[0]); + struct t7xx_ccmni *ccmni = ctlb->ccmni_inst[0]; struct netdev_queue *net_queue; if (atomic_read(&ccmni->usage) > 0) { @@ -466,7 +465,7 @@ static void t7xx_ccmni_queue_state_notify(struct t7xx_pci_dev *t7xx_dev, if (ctlb->md_sta != MD_STATE_READY) return; - if (!READ_ONCE(ctlb->ccmni_inst[0])) { + if (!ctlb->ccmni_inst[0]) { dev_warn(&t7xx_dev->pdev->dev, "No netdev registered yet\n"); return; } -- Gitee From 4d41e16904277d7f0b86efabe396e768c1b648cd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:27 +0800 Subject: [PATCH 0957/1421] Revert "net: fix udp gso skb_segment after pull from frag_list" This reverts commit 0370309137e04cf76b1b817f5c1065b233032170. --- net/ipv4/udp_offload.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c index 3870b59f5400..132cfc3b2c84 100644 --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c @@ -332,7 +332,6 @@ struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb, bool copy_dtor; __sum16 check; __be16 newlen; - int ret = 0; mss = skb_shinfo(gso_skb)->gso_size; if (gso_skb->len <= sizeof(*uh) + mss) @@ -355,10 +354,6 @@ struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb, if (skb_pagelen(gso_skb) - sizeof(*uh) == skb_shinfo(gso_skb)->gso_size) return __udp_gso_segment_list(gso_skb, features, is_ipv6); - ret = __skb_linearize(gso_skb); - if (ret) - return ERR_PTR(ret); - /* Setup csum, as fraglist skips this in udp4_gro_receive. */ gso_skb->csum_start = skb_transport_header(gso_skb) - gso_skb->head; gso_skb->csum_offset = offsetof(struct udphdr, check); -- Gitee From ec288cb35ea9ae4ad6dce44bd1c1c730170d05a4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:27 +0800 Subject: [PATCH 0958/1421] Revert "net: stmmac: make sure that ptp_rate is not 0 before configuring timestamping" This reverts commit fb30efeb99a275d0bc68ec188fcd62a85d16df3e. --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 5 ----- drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 7bb530ab09e3..902d4c8da48d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -842,11 +842,6 @@ int stmmac_init_tstamp_counter(struct stmmac_priv *priv, u32 systime_flags) if (!(priv->dma_cap.time_stamp || priv->dma_cap.atime_stamp)) return -EOPNOTSUPP; - if (!priv->plat->clk_ptp_rate) { - netdev_err(priv->dev, "Invalid PTP clock rate"); - return -EINVAL; - } - stmmac_config_hw_tstamping(priv, priv->ptpaddr, systime_flags); priv->systime_flags = systime_flags; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c index 80ecbd73333d..a04bb2e42c4e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c @@ -295,7 +295,7 @@ void stmmac_ptp_register(struct stmmac_priv *priv) /* Calculate the clock domain crossing (CDC) error if necessary */ priv->plat->cdc_error_adj = 0; - if (priv->plat->has_gmac4) + if (priv->plat->has_gmac4 && priv->plat->clk_ptp_rate) priv->plat->cdc_error_adj = (2 * NSEC_PER_SEC) / priv->plat->clk_ptp_rate; stmmac_ptp_clock_ops.n_per_out = priv->dma_cap.pps_out_num; -- Gitee From c880cf6f1acfc6484f5d95dfc388220733a4a1bc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:28 +0800 Subject: [PATCH 0959/1421] Revert "net: dsa: tag_brcm: legacy: fix pskb_may_pull length" This reverts commit ae9b8252391abcae41f36a2bbc93ac976e5776bd. --- net/dsa/tag_brcm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c index 146c1dbd15a9..cacdafb41200 100644 --- a/net/dsa/tag_brcm.c +++ b/net/dsa/tag_brcm.c @@ -257,7 +257,7 @@ static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, int source_port; u8 *brcm_tag; - if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN))) + if (unlikely(!pskb_may_pull(skb, BRCM_LEG_PORT_ID))) return NULL; brcm_tag = dsa_etype_header_pos_rx(skb); -- Gitee From 086878023aa0f44932338501ca1735600e7a99ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:28 +0800 Subject: [PATCH 0960/1421] Revert "ice: fix rebuilding the Tx scheduler tree for large queue counts" This reverts commit 0ea9fc1a5180e1e28bcc84fd414e15c7f2df6161. --- drivers/net/ethernet/intel/ice/ice_sched.c | 170 ++++----------------- 1 file changed, 28 insertions(+), 142 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c index c2de166f0551..e40a5f9a893d 100644 --- a/drivers/net/ethernet/intel/ice/ice_sched.c +++ b/drivers/net/ethernet/intel/ice/ice_sched.c @@ -84,27 +84,6 @@ ice_sched_find_node_by_teid(struct ice_sched_node *start_node, u32 teid) return NULL; } -/** - * ice_sched_find_next_vsi_node - find the next node for a given VSI - * @vsi_node: VSI support node to start search with - * - * Return: Next VSI support node, or NULL. - * - * The function returns a pointer to the next node from the VSI layer - * assigned to the given VSI, or NULL if there is no such a node. - */ -static struct ice_sched_node * -ice_sched_find_next_vsi_node(struct ice_sched_node *vsi_node) -{ - unsigned int vsi_handle = vsi_node->vsi_handle; - - while ((vsi_node = vsi_node->sibling) != NULL) - if (vsi_node->vsi_handle == vsi_handle) - break; - - return vsi_node; -} - /** * ice_aqc_send_sched_elem_cmd - send scheduling elements cmd * @hw: pointer to the HW struct @@ -1117,10 +1096,8 @@ ice_sched_add_nodes_to_layer(struct ice_port_info *pi, if (parent->num_children < max_child_nodes) { new_num_nodes = max_child_nodes - parent->num_children; } else { - /* This parent is full, - * try the next available sibling. - */ - parent = ice_sched_find_next_vsi_node(parent); + /* This parent is full, try the next sibling */ + parent = parent->sibling; /* Don't modify the first node TEID memory if the * first node was added already in the above call. * Instead send some temp memory for all other @@ -1561,23 +1538,12 @@ ice_sched_get_free_qparent(struct ice_port_info *pi, u16 vsi_handle, u8 tc, /* get the first queue group node from VSI sub-tree */ qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); while (qgrp_node) { - struct ice_sched_node *next_vsi_node; - /* make sure the qgroup node is part of the VSI subtree */ if (ice_sched_find_node_in_subtree(pi->hw, vsi_node, qgrp_node)) if (qgrp_node->num_children < max_children && qgrp_node->owner == owner) break; qgrp_node = qgrp_node->sibling; - if (qgrp_node) - continue; - - next_vsi_node = ice_sched_find_next_vsi_node(vsi_node); - if (!next_vsi_node) - break; - - vsi_node = next_vsi_node; - qgrp_node = ice_sched_get_first_node(pi, vsi_node, qgrp_layer); } /* Select the best queue group */ @@ -1823,11 +1789,7 @@ ice_sched_add_vsi_support_nodes(struct ice_port_info *pi, u16 vsi_handle, if (!parent) return -EIO; - /* Do not modify the VSI handle for already existing VSI nodes, - * (if no new VSI node was added to the tree). - * Assign the VSI handle only to newly added VSI nodes. - */ - if (i == vsil && num_added) + if (i == vsil) parent->vsi_handle = vsi_handle; } @@ -1860,41 +1822,6 @@ ice_sched_add_vsi_to_topo(struct ice_port_info *pi, u16 vsi_handle, u8 tc) num_nodes); } -/** - * ice_sched_recalc_vsi_support_nodes - recalculate VSI support nodes count - * @hw: pointer to the HW struct - * @vsi_node: pointer to the leftmost VSI node that needs to be extended - * @new_numqs: new number of queues that has to be handled by the VSI - * @new_num_nodes: pointer to nodes count table to modify the VSI layer entry - * - * This function recalculates the number of supported nodes that need to - * be added after adding more Tx queues for a given VSI. - * The number of new VSI support nodes that shall be added will be saved - * to the @new_num_nodes table for the VSI layer. - */ -static void -ice_sched_recalc_vsi_support_nodes(struct ice_hw *hw, - struct ice_sched_node *vsi_node, - unsigned int new_numqs, u16 *new_num_nodes) -{ - u32 vsi_nodes_cnt = 1; - u32 max_queue_cnt = 1; - u32 qgl, vsil; - - qgl = ice_sched_get_qgrp_layer(hw); - vsil = ice_sched_get_vsi_layer(hw); - - for (u32 i = vsil; i <= qgl; i++) - max_queue_cnt *= hw->max_children[i]; - - while ((vsi_node = ice_sched_find_next_vsi_node(vsi_node)) != NULL) - vsi_nodes_cnt++; - - if (new_numqs > (max_queue_cnt * vsi_nodes_cnt)) - new_num_nodes[vsil] = DIV_ROUND_UP(new_numqs, max_queue_cnt) - - vsi_nodes_cnt; -} - /** * ice_sched_update_vsi_child_nodes - update VSI child nodes * @pi: port information structure @@ -1946,25 +1873,16 @@ ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, return status; } - ice_sched_recalc_vsi_support_nodes(hw, vsi_node, - new_numqs, new_num_nodes); ice_sched_calc_vsi_child_nodes(hw, new_numqs - prev_numqs, new_num_nodes); - /* Never decrease the number of queues in the tree. Update the tree - * only if number of queues > previous number of queues. This may + /* Keep the max number of queue configuration all the time. Update the + * tree only if number of queues > previous number of queues. This may * leave some extra nodes in the tree if number of queues < previous * number but that wouldn't harm anything. Removing those extra nodes * may complicate the code if those nodes are part of SRL or * individually rate limited. - * Also, add the required VSI support nodes if the existing ones cannot - * handle the requested new number of queues. */ - status = ice_sched_add_vsi_support_nodes(pi, vsi_handle, tc_node, - new_num_nodes); - if (status) - return status; - status = ice_sched_add_vsi_child_nodes(pi, vsi_handle, tc_node, new_num_nodes, owner); if (status) @@ -2105,58 +2023,6 @@ static bool ice_sched_is_leaf_node_present(struct ice_sched_node *node) return (node->info.data.elem_type == ICE_AQC_ELEM_TYPE_LEAF); } -/** - * ice_sched_rm_vsi_subtree - remove all nodes assigned to a given VSI - * @pi: port information structure - * @vsi_node: pointer to the leftmost node of the VSI to be removed - * @owner: LAN or RDMA - * @tc: TC number - * - * Return: Zero in case of success, or -EBUSY if the VSI has leaf nodes in TC. - * - * This function removes all the VSI support nodes associated with a given VSI - * and its LAN or RDMA children nodes from the scheduler tree. - */ -static int -ice_sched_rm_vsi_subtree(struct ice_port_info *pi, - struct ice_sched_node *vsi_node, u8 owner, u8 tc) -{ - u16 vsi_handle = vsi_node->vsi_handle; - bool all_vsi_nodes_removed = true; - int j = 0; - - while (vsi_node) { - struct ice_sched_node *next_vsi_node; - - if (ice_sched_is_leaf_node_present(vsi_node)) { - ice_debug(pi->hw, ICE_DBG_SCHED, "VSI has leaf nodes in TC %d\n", tc); - return -EBUSY; - } - while (j < vsi_node->num_children) { - if (vsi_node->children[j]->owner == owner) - ice_free_sched_node(pi, vsi_node->children[j]); - else - j++; - } - - next_vsi_node = ice_sched_find_next_vsi_node(vsi_node); - - /* remove the VSI if it has no children */ - if (!vsi_node->num_children) - ice_free_sched_node(pi, vsi_node); - else - all_vsi_nodes_removed = false; - - vsi_node = next_vsi_node; - } - - /* clean up aggregator related VSI info if any */ - if (all_vsi_nodes_removed) - ice_sched_rm_agg_vsi_info(pi, vsi_handle); - - return 0; -} - /** * ice_sched_rm_vsi_cfg - remove the VSI and its children nodes * @pi: port information structure @@ -2183,6 +2049,7 @@ ice_sched_rm_vsi_cfg(struct ice_port_info *pi, u16 vsi_handle, u8 owner) ice_for_each_traffic_class(i) { struct ice_sched_node *vsi_node, *tc_node; + u8 j = 0; tc_node = ice_sched_get_tc_node(pi, i); if (!tc_node) @@ -2192,12 +2059,31 @@ ice_sched_rm_vsi_cfg(struct ice_port_info *pi, u16 vsi_handle, u8 owner) if (!vsi_node) continue; - status = ice_sched_rm_vsi_subtree(pi, vsi_node, owner, i); - if (status) + if (ice_sched_is_leaf_node_present(vsi_node)) { + ice_debug(pi->hw, ICE_DBG_SCHED, "VSI has leaf nodes in TC %d\n", i); + status = -EBUSY; goto exit_sched_rm_vsi_cfg; + } + while (j < vsi_node->num_children) { + if (vsi_node->children[j]->owner == owner) { + ice_free_sched_node(pi, vsi_node->children[j]); - vsi_ctx->sched.vsi_node[i] = NULL; + /* reset the counter again since the num + * children will be updated after node removal + */ + j = 0; + } else { + j++; + } + } + /* remove the VSI if it has no children */ + if (!vsi_node->num_children) { + ice_free_sched_node(pi, vsi_node); + vsi_ctx->sched.vsi_node[i] = NULL; + /* clean up aggregator related VSI info if any */ + ice_sched_rm_agg_vsi_info(pi, vsi_handle); + } if (owner == ICE_SCHED_NODE_OWNER_LAN) vsi_ctx->sched.max_lanq[i] = 0; else -- Gitee From f30a284a83a5ac1b33825fb4e4df3f08bdb87a5b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:28 +0800 Subject: [PATCH 0961/1421] Revert "ice: create new Tx scheduler nodes for new queues only" This reverts commit ee80816f8868046a14da571b92fa0cbebbc4192d. --- drivers/net/ethernet/intel/ice/ice_sched.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c index e40a5f9a893d..908bcd073803 100644 --- a/drivers/net/ethernet/intel/ice/ice_sched.c +++ b/drivers/net/ethernet/intel/ice/ice_sched.c @@ -1614,16 +1614,16 @@ ice_sched_get_agg_node(struct ice_port_info *pi, struct ice_sched_node *tc_node, /** * ice_sched_calc_vsi_child_nodes - calculate number of VSI child nodes * @hw: pointer to the HW struct - * @num_new_qs: number of new queues that will be added to the tree + * @num_qs: number of queues * @num_nodes: num nodes array * * This function calculates the number of VSI child nodes based on the * number of queues. */ static void -ice_sched_calc_vsi_child_nodes(struct ice_hw *hw, u16 num_new_qs, u16 *num_nodes) +ice_sched_calc_vsi_child_nodes(struct ice_hw *hw, u16 num_qs, u16 *num_nodes) { - u16 num = num_new_qs; + u16 num = num_qs; u8 i, qgl, vsil; qgl = ice_sched_get_qgrp_layer(hw); @@ -1873,9 +1873,8 @@ ice_sched_update_vsi_child_nodes(struct ice_port_info *pi, u16 vsi_handle, return status; } - ice_sched_calc_vsi_child_nodes(hw, new_numqs - prev_numqs, - new_num_nodes); - + if (new_numqs) + ice_sched_calc_vsi_child_nodes(hw, new_numqs, new_num_nodes); /* Keep the max number of queue configuration all the time. Update the * tree only if number of queues > previous number of queues. This may * leave some extra nodes in the tree if number of queues < previous -- Gitee From f1854996098196b680aee4c2f959cf94948f1617 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:28 +0800 Subject: [PATCH 0962/1421] Revert "ice: fix Tx scheduler error handling in XDP callback" This reverts commit 229d60ff9be781e9ef91d56c1cae1dd225ea7a83. --- drivers/net/ethernet/intel/ice/ice_main.c | 47 +++++++---------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index e1a68fb5e9ff..0ae7bdfff83f 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -2650,27 +2650,6 @@ static void ice_vsi_assign_bpf_prog(struct ice_vsi *vsi, struct bpf_prog *prog) bpf_prog_put(old_prog); } -/** - * ice_unmap_xdp_rings - Unmap XDP rings from interrupt vectors - * @vsi: the VSI with XDP rings being unmapped - */ -static void ice_unmap_xdp_rings(struct ice_vsi *vsi) -{ - int v_idx; - - ice_for_each_q_vector(vsi, v_idx) { - struct ice_q_vector *q_vector = vsi->q_vectors[v_idx]; - struct ice_tx_ring *ring; - - ice_for_each_tx_ring(ring, q_vector->tx) - if (!ring->tx_buf || !ice_ring_is_xdp(ring)) - break; - - /* restore the value of last node prior to XDP setup */ - q_vector->tx.tx_ring = ring; - } -} - /** * ice_prepare_xdp_rings - Allocate, configure and setup Tx rings for XDP * @vsi: VSI to bring up Tx rings used by XDP @@ -2770,7 +2749,7 @@ int ice_prepare_xdp_rings(struct ice_vsi *vsi, struct bpf_prog *prog, if (status) { dev_err(dev, "Failed VSI LAN queue config for XDP, error: %d\n", status); - goto unmap_xdp_rings; + goto clear_xdp_rings; } /* assign the prog only when it's not already present on VSI; @@ -2786,8 +2765,6 @@ int ice_prepare_xdp_rings(struct ice_vsi *vsi, struct bpf_prog *prog, ice_vsi_assign_bpf_prog(vsi, prog); return 0; -unmap_xdp_rings: - ice_unmap_xdp_rings(vsi); clear_xdp_rings: ice_for_each_xdp_txq(vsi, i) if (vsi->xdp_rings[i]) { @@ -2804,8 +2781,6 @@ int ice_prepare_xdp_rings(struct ice_vsi *vsi, struct bpf_prog *prog, mutex_unlock(&pf->avail_q_mutex); devm_kfree(dev, vsi->xdp_rings); - vsi->xdp_rings = NULL; - return -ENOMEM; } @@ -2821,7 +2796,7 @@ int ice_destroy_xdp_rings(struct ice_vsi *vsi, enum ice_xdp_cfg cfg_type) { u16 max_txqs[ICE_MAX_TRAFFIC_CLASS] = { 0 }; struct ice_pf *pf = vsi->back; - int i; + int i, v_idx; /* q_vectors are freed in reset path so there's no point in detaching * rings @@ -2829,7 +2804,17 @@ int ice_destroy_xdp_rings(struct ice_vsi *vsi, enum ice_xdp_cfg cfg_type) if (cfg_type == ICE_XDP_CFG_PART) goto free_qmap; - ice_unmap_xdp_rings(vsi); + ice_for_each_q_vector(vsi, v_idx) { + struct ice_q_vector *q_vector = vsi->q_vectors[v_idx]; + struct ice_tx_ring *ring; + + ice_for_each_tx_ring(ring, q_vector->tx) + if (!ring->tx_buf || !ice_ring_is_xdp(ring)) + break; + + /* restore the value of last node prior to XDP setup */ + q_vector->tx.tx_ring = ring; + } free_qmap: mutex_lock(&pf->avail_q_mutex); @@ -2971,14 +2956,11 @@ ice_xdp_setup_prog(struct ice_vsi *vsi, struct bpf_prog *prog, xdp_ring_err = ice_vsi_determine_xdp_res(vsi); if (xdp_ring_err) { NL_SET_ERR_MSG_MOD(extack, "Not enough Tx resources for XDP"); - goto resume_if; } else { xdp_ring_err = ice_prepare_xdp_rings(vsi, prog, ICE_XDP_CFG_FULL); - if (xdp_ring_err) { + if (xdp_ring_err) NL_SET_ERR_MSG_MOD(extack, "Setting up XDP Tx resources failed"); - goto resume_if; - } } xdp_features_set_redirect_target(vsi->netdev, true); /* reallocate Rx queues that are used for zero-copy */ @@ -2996,7 +2978,6 @@ ice_xdp_setup_prog(struct ice_vsi *vsi, struct bpf_prog *prog, NL_SET_ERR_MSG_MOD(extack, "Freeing XDP Rx resources failed"); } -resume_if: if (if_running) ret = ice_up(vsi); -- Gitee From eef24218a8fa34f169345c08aa63e7f025d59bc1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:28 +0800 Subject: [PATCH 0963/1421] Revert "Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION" This reverts commit e9bb13eedf260a76d7ee01ad2f452a8bbcd87279. --- net/bluetooth/l2cap_core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 2744ad11687c..1c54e812ef1f 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -4833,8 +4833,7 @@ static int l2cap_le_connect_req(struct l2cap_conn *conn, if (!smp_sufficient_security(conn->hcon, pchan->sec_level, SMP_ALLOW_STK)) { - result = pchan->sec_level == BT_SECURITY_MEDIUM ? - L2CAP_CR_LE_ENCRYPTION : L2CAP_CR_LE_AUTHENTICATION; + result = L2CAP_CR_LE_AUTHENTICATION; chan = NULL; goto response_unlock; } -- Gitee From b1c8e2238ef5a43d0179890525ae447bdd4b7240 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:29 +0800 Subject: [PATCH 0964/1421] Revert "spi: bcm63xx-hsspi: fix shared reset" This reverts commit c30babaa03adeb9e0fb8003a75f5a0ea14f1218e. --- drivers/spi/spi-bcm63xx-hsspi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/spi-bcm63xx-hsspi.c b/drivers/spi/spi-bcm63xx-hsspi.c index 8df12efeea21..1ca857c2a4aa 100644 --- a/drivers/spi/spi-bcm63xx-hsspi.c +++ b/drivers/spi/spi-bcm63xx-hsspi.c @@ -745,7 +745,7 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev) if (IS_ERR(clk)) return PTR_ERR(clk); - reset = devm_reset_control_get_optional_shared(dev, NULL); + reset = devm_reset_control_get_optional_exclusive(dev, NULL); if (IS_ERR(reset)) return PTR_ERR(reset); -- Gitee From 696557b157cbbd997ff0851fd51a27c3cf761954 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:29 +0800 Subject: [PATCH 0965/1421] Revert "spi: bcm63xx-spi: fix shared reset" This reverts commit 90658237eab6773e92926f51cc9a5b9827ef2d53. --- drivers/spi/spi-bcm63xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c index a95badb7b711..ef3a7226db12 100644 --- a/drivers/spi/spi-bcm63xx.c +++ b/drivers/spi/spi-bcm63xx.c @@ -523,7 +523,7 @@ static int bcm63xx_spi_probe(struct platform_device *pdev) return PTR_ERR(clk); } - reset = devm_reset_control_get_optional_shared(dev, NULL); + reset = devm_reset_control_get_optional_exclusive(dev, NULL); if (IS_ERR(reset)) return PTR_ERR(reset); -- Gitee From c8fafbd8ee808a4e27614bbe370da4430902297f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:29 +0800 Subject: [PATCH 0966/1421] Revert "net: lan966x: Make sure to insert the vlan tags also in host mode" This reverts commit e97dddab6363d78ff27ce13107dabd378fe7aacd. --- .../ethernet/microchip/lan966x/lan966x_main.c | 1 - .../ethernet/microchip/lan966x/lan966x_main.h | 1 - .../microchip/lan966x/lan966x_switchdev.c | 1 - .../ethernet/microchip/lan966x/lan966x_vlan.c | 21 ------------------- 4 files changed, 24 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c index b424e75fd40c..05f6c9227583 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c @@ -881,7 +881,6 @@ static int lan966x_probe_port(struct lan966x *lan966x, u32 p, lan966x_vlan_port_set_vlan_aware(port, 0); lan966x_vlan_port_set_vid(port, HOST_PVID, false, false); lan966x_vlan_port_apply(port); - lan966x_vlan_port_rew_host(port); return 0; } diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h index 5a16d76eb000..b65d58a1552b 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h @@ -549,7 +549,6 @@ void lan966x_vlan_port_apply(struct lan966x_port *port); bool lan966x_vlan_cpu_member_cpu_vlan_mask(struct lan966x *lan966x, u16 vid); void lan966x_vlan_port_set_vlan_aware(struct lan966x_port *port, bool vlan_aware); -void lan966x_vlan_port_rew_host(struct lan966x_port *port); int lan966x_vlan_port_set_vid(struct lan966x_port *port, u16 vid, bool pvid, diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c b/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c index bcb4db76b75c..1c88120eb291 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c @@ -297,7 +297,6 @@ static void lan966x_port_bridge_leave(struct lan966x_port *port, lan966x_vlan_port_set_vlan_aware(port, false); lan966x_vlan_port_set_vid(port, HOST_PVID, false, false); lan966x_vlan_port_apply(port); - lan966x_vlan_port_rew_host(port); } int lan966x_port_changeupper(struct net_device *dev, diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c b/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c index ffb245fb7d67..3c44660128da 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c @@ -149,27 +149,6 @@ void lan966x_vlan_port_set_vlan_aware(struct lan966x_port *port, port->vlan_aware = vlan_aware; } -/* When the interface is in host mode, the interface should not be vlan aware - * but it should insert all the tags that it gets from the network stack. - * The tags are not in the data of the frame but actually in the skb and the ifh - * is configured already to get this tag. So what we need to do is to update the - * rewriter to insert the vlan tag for all frames which have a vlan tag - * different than 0. - */ -void lan966x_vlan_port_rew_host(struct lan966x_port *port) -{ - struct lan966x *lan966x = port->lan966x; - u32 val; - - /* Tag all frames except when VID=0*/ - val = REW_TAG_CFG_TAG_CFG_SET(2); - - /* Update only some bits in the register */ - lan_rmw(val, - REW_TAG_CFG_TAG_CFG, - lan966x, REW_TAG_CFG(port->chip_port)); -} - void lan966x_vlan_port_apply(struct lan966x_port *port) { struct lan966x *lan966x = port->lan966x; -- Gitee From bb16defdd9f34ff168dd301658472c6c4ede797f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:29 +0800 Subject: [PATCH 0967/1421] Revert "net/mlx4_en: Prevent potential integer overflow calculating Hz" This reverts commit cef6c55f982400a1947dec73120a9e8608b6cf9f. --- drivers/net/ethernet/mellanox/mlx4/en_clock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_clock.c b/drivers/net/ethernet/mellanox/mlx4/en_clock.c index 2d5b86207e07..9e3b76182088 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_clock.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_clock.c @@ -249,7 +249,7 @@ static const struct ptp_clock_info mlx4_en_ptp_clock_info = { static u32 freq_to_shift(u16 freq) { u32 freq_khz = freq * 1000; - u64 max_val_cycles = freq_khz * 1000ULL * MLX4_EN_WRAP_AROUND_SEC; + u64 max_val_cycles = freq_khz * 1000 * MLX4_EN_WRAP_AROUND_SEC; u64 max_val_cycles_rounded = 1ULL << fls64(max_val_cycles - 1); /* calculate max possible multiplier in order to fit in 64bit */ u64 max_mul = div64_u64(ULLONG_MAX, max_val_cycles_rounded); -- Gitee From c9556e99d4519d729c8b54e38f173706dd8d6e6b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:29 +0800 Subject: [PATCH 0968/1421] Revert "driver: net: ethernet: mtk_star_emac: fix suspend/resume issue" This reverts commit d24c1648a7a26c40be0bff059a6ceb04ac216681. --- drivers/net/ethernet/mediatek/mtk_star_emac.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_star_emac.c b/drivers/net/ethernet/mediatek/mtk_star_emac.c index 5eb7a97e7eb1..c2ab87828d85 100644 --- a/drivers/net/ethernet/mediatek/mtk_star_emac.c +++ b/drivers/net/ethernet/mediatek/mtk_star_emac.c @@ -1468,8 +1468,6 @@ static __maybe_unused int mtk_star_suspend(struct device *dev) if (netif_running(ndev)) mtk_star_disable(ndev); - netif_device_detach(ndev); - clk_bulk_disable_unprepare(MTK_STAR_NCLKS, priv->clks); return 0; @@ -1494,8 +1492,6 @@ static __maybe_unused int mtk_star_resume(struct device *dev) clk_bulk_disable_unprepare(MTK_STAR_NCLKS, priv->clks); } - netif_device_attach(ndev); - return ret; } -- Gitee From e548d25b6892f1ef8fc5cf281d86774b32741d7d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:30 +0800 Subject: [PATCH 0969/1421] Revert "net: tipc: fix refcount warning in tipc_aead_encrypt" This reverts commit 40370ccab522dff8a92f913d08b19d58ccdfb3e7. --- net/tipc/crypto.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c index 79f91b6ca8c8..8584893b4785 100644 --- a/net/tipc/crypto.c +++ b/net/tipc/crypto.c @@ -818,11 +818,7 @@ static int tipc_aead_encrypt(struct tipc_aead *aead, struct sk_buff *skb, } /* Get net to avoid freed tipc_crypto when delete namespace */ - if (!maybe_get_net(aead->crypto->net)) { - tipc_bearer_put(b); - rc = -ENODEV; - goto exit; - } + get_net(aead->crypto->net); /* Now, do encrypt */ rc = crypto_aead_encrypt(req); -- Gitee From 56e72c0db296bebe064e79987fafa324c91fed96 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:30 +0800 Subject: [PATCH 0970/1421] Revert "gve: Fix RX_BUFFERS_POSTED stat to report per-queue fill_cnt" This reverts commit dd53b08e2368ba3fcf95de0bffe10a7303184280. --- drivers/net/ethernet/google/gve/gve_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c index b4745d94cbbd..8cd098fe88ef 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -1992,7 +1992,7 @@ void gve_handle_report_stats(struct gve_priv *priv) }; stats[stats_idx++] = (struct stats) { .stat_name = cpu_to_be32(RX_BUFFERS_POSTED), - .value = cpu_to_be64(priv->rx[idx].fill_cnt), + .value = cpu_to_be64(priv->rx[0].fill_cnt), .queue_id = cpu_to_be32(idx), }; } -- Gitee From d4ff54bfdf2aba8b89f3b8229786782371c92762 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:30 +0800 Subject: [PATCH 0971/1421] Revert "net: stmmac: platform: guarantee uniqueness of bus_id" This reverts commit 0642a81a1a28b8e7e39130388013a8445f1172ae. --- drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 6c684f6ee84b..4d570efd9d4b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -419,7 +419,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) struct device_node *np = pdev->dev.of_node; struct plat_stmmacenet_data *plat; struct stmmac_dma_cfg *dma_cfg; - static int bus_id = -ENODEV; int phy_mode; void *ret; int rc; @@ -455,14 +454,8 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) of_property_read_u32(np, "max-speed", &plat->max_speed); plat->bus_id = of_alias_get_id(np, "ethernet"); - if (plat->bus_id < 0) { - if (bus_id < 0) - bus_id = of_alias_get_highest_id("ethernet"); - /* No ethernet alias found, init at -1 so first bus_id is 0 */ - if (bus_id < 0) - bus_id = -1; - plat->bus_id = ++bus_id; - } + if (plat->bus_id < 0) + plat->bus_id = 0; /* Default to phy auto-detection */ plat->phy_addr = -1; -- Gitee From 6fa38510370860bf41d92eb4632e94e4187ccf0e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:30 +0800 Subject: [PATCH 0972/1421] Revert "vt: remove VT_RESIZE and VT_RESIZEX from vt_compat_ioctl()" This reverts commit f77d5b21d509b77a21650872f9ec4637fe4f63fe. --- drivers/tty/vt/vt_ioctl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c index 5b21b60547da..8c685b501404 100644 --- a/drivers/tty/vt/vt_ioctl.c +++ b/drivers/tty/vt/vt_ioctl.c @@ -1105,6 +1105,8 @@ long vt_compat_ioctl(struct tty_struct *tty, case VT_WAITACTIVE: case VT_RELDISP: case VT_DISALLOCATE: + case VT_RESIZE: + case VT_RESIZEX: return vt_ioctl(tty, cmd, arg); /* -- Gitee From d177d1a06a1dde1503dce19bd09857dd50ecead7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:31 +0800 Subject: [PATCH 0973/1421] Revert "coresight: prevent deactivate active config while enabling the config" This reverts commit 9418356c59c174bacd52a2348b22c6b7c8a08c6a. --- .../hwtracing/coresight/coresight-config.h | 2 +- .../hwtracing/coresight/coresight-syscfg.c | 49 ++++++------------- 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-config.h b/drivers/hwtracing/coresight/coresight-config.h index 84cdde6f0e4d..6ba013975741 100644 --- a/drivers/hwtracing/coresight/coresight-config.h +++ b/drivers/hwtracing/coresight/coresight-config.h @@ -228,7 +228,7 @@ struct cscfg_feature_csdev { * @feats_csdev:references to the device features to enable. */ struct cscfg_config_csdev { - struct cscfg_config_desc *config_desc; + const struct cscfg_config_desc *config_desc; struct coresight_device *csdev; bool enabled; struct list_head node; diff --git a/drivers/hwtracing/coresight/coresight-syscfg.c b/drivers/hwtracing/coresight/coresight-syscfg.c index 30a561d87481..11138a9762b0 100644 --- a/drivers/hwtracing/coresight/coresight-syscfg.c +++ b/drivers/hwtracing/coresight/coresight-syscfg.c @@ -867,25 +867,6 @@ void cscfg_csdev_reset_feats(struct coresight_device *csdev) } EXPORT_SYMBOL_GPL(cscfg_csdev_reset_feats); -static bool cscfg_config_desc_get(struct cscfg_config_desc *config_desc) -{ - if (!atomic_fetch_inc(&config_desc->active_cnt)) { - /* must ensure that config cannot be unloaded in use */ - if (unlikely(cscfg_owner_get(config_desc->load_owner))) { - atomic_dec(&config_desc->active_cnt); - return false; - } - } - - return true; -} - -static void cscfg_config_desc_put(struct cscfg_config_desc *config_desc) -{ - if (!atomic_dec_return(&config_desc->active_cnt)) - cscfg_owner_put(config_desc->load_owner); -} - /* * This activate configuration for either perf or sysfs. Perf can have multiple * active configs, selected per event, sysfs is limited to one. @@ -909,17 +890,22 @@ static int _cscfg_activate_config(unsigned long cfg_hash) if (config_desc->available == false) return -EBUSY; - if (!cscfg_config_desc_get(config_desc)) { - err = -EINVAL; + /* must ensure that config cannot be unloaded in use */ + err = cscfg_owner_get(config_desc->load_owner); + if (err) break; - } - /* * increment the global active count - control changes to * active configurations */ atomic_inc(&cscfg_mgr->sys_active_cnt); + /* + * mark the descriptor as active so enable config on a + * device instance will use it + */ + atomic_inc(&config_desc->active_cnt); + err = 0; dev_dbg(cscfg_device(), "Activate config %s.\n", config_desc->name); break; @@ -934,8 +920,9 @@ static void _cscfg_deactivate_config(unsigned long cfg_hash) list_for_each_entry(config_desc, &cscfg_mgr->config_desc_list, item) { if ((unsigned long)config_desc->event_ea->var == cfg_hash) { + atomic_dec(&config_desc->active_cnt); atomic_dec(&cscfg_mgr->sys_active_cnt); - cscfg_config_desc_put(config_desc); + cscfg_owner_put(config_desc->load_owner); dev_dbg(cscfg_device(), "Deactivate config %s.\n", config_desc->name); break; } @@ -1060,7 +1047,7 @@ int cscfg_csdev_enable_active_config(struct coresight_device *csdev, unsigned long cfg_hash, int preset) { struct cscfg_config_csdev *config_csdev_active = NULL, *config_csdev_item; - struct cscfg_config_desc *config_desc; + const struct cscfg_config_desc *config_desc; unsigned long flags; int err = 0; @@ -1075,8 +1062,8 @@ int cscfg_csdev_enable_active_config(struct coresight_device *csdev, spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); list_for_each_entry(config_csdev_item, &csdev->config_csdev_list, node) { config_desc = config_csdev_item->config_desc; - if (((unsigned long)config_desc->event_ea->var == cfg_hash) && - cscfg_config_desc_get(config_desc)) { + if ((atomic_read(&config_desc->active_cnt)) && + ((unsigned long)config_desc->event_ea->var == cfg_hash)) { config_csdev_active = config_csdev_item; csdev->active_cscfg_ctxt = (void *)config_csdev_active; break; @@ -1110,11 +1097,7 @@ int cscfg_csdev_enable_active_config(struct coresight_device *csdev, err = -EBUSY; spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); } - - if (err) - cscfg_config_desc_put(config_desc); } - return err; } EXPORT_SYMBOL_GPL(cscfg_csdev_enable_active_config); @@ -1153,10 +1136,8 @@ void cscfg_csdev_disable_active_config(struct coresight_device *csdev) spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); /* true if there was an enabled active config */ - if (config_csdev) { + if (config_csdev) cscfg_csdev_disable_config(config_csdev); - cscfg_config_desc_put(config_csdev->config_desc); - } } EXPORT_SYMBOL_GPL(cscfg_csdev_disable_active_config); -- Gitee From c79ffce69cd56ee0b39ab81f1c9e23a2e5ff5256 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:31 +0800 Subject: [PATCH 0974/1421] Revert "fpga: fix potential null pointer deref in fpga_mgr_test_img_load_sgt()" This reverts commit ffb01c20509aefc451b4f72eaffd5d74743fede6. --- drivers/fpga/tests/fpga-mgr-test.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/fpga/tests/fpga-mgr-test.c b/drivers/fpga/tests/fpga-mgr-test.c index bfe25c0c0c1c..6acec55b60ce 100644 --- a/drivers/fpga/tests/fpga-mgr-test.c +++ b/drivers/fpga/tests/fpga-mgr-test.c @@ -253,7 +253,6 @@ static void fpga_mgr_test_img_load_sgt(struct kunit *test) img_buf = init_test_buffer(test, IMAGE_SIZE); sgt = kunit_kzalloc(test, sizeof(*sgt), GFP_KERNEL); - KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt); ret = sg_alloc_table(sgt, 1, GFP_KERNEL); KUNIT_ASSERT_EQ(test, ret, 0); sg_init_one(sgt->sgl, img_buf, IMAGE_SIZE); -- Gitee From 99deb43bcf1b3c042e3aa9ffb9ab2d34afc1a094 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:31 +0800 Subject: [PATCH 0975/1421] Revert "counter: interrupt-cnt: Protect enable/disable OPs with mutex" This reverts commit 7e5c8e58828aae6be3a4d515c874df8c69ef619e. --- drivers/counter/interrupt-cnt.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/counter/interrupt-cnt.c b/drivers/counter/interrupt-cnt.c index bc762ba87a19..229473855c5b 100644 --- a/drivers/counter/interrupt-cnt.c +++ b/drivers/counter/interrupt-cnt.c @@ -3,14 +3,12 @@ * Copyright (c) 2021 Pengutronix, Oleksij Rempel */ -#include #include #include #include #include #include #include -#include #include #include @@ -21,7 +19,6 @@ struct interrupt_cnt_priv { struct gpio_desc *gpio; int irq; bool enabled; - struct mutex lock; struct counter_signal signals; struct counter_synapse synapses; struct counter_count cnts; @@ -44,8 +41,6 @@ static int interrupt_cnt_enable_read(struct counter_device *counter, { struct interrupt_cnt_priv *priv = counter_priv(counter); - guard(mutex)(&priv->lock); - *enable = priv->enabled; return 0; @@ -56,8 +51,6 @@ static int interrupt_cnt_enable_write(struct counter_device *counter, { struct interrupt_cnt_priv *priv = counter_priv(counter); - guard(mutex)(&priv->lock); - if (priv->enabled == enable) return 0; @@ -234,8 +227,6 @@ static int interrupt_cnt_probe(struct platform_device *pdev) if (ret) return ret; - mutex_init(&priv->lock); - ret = devm_counter_add(dev, counter); if (ret < 0) return dev_err_probe(dev, ret, "Failed to add counter\n"); -- Gitee From 928952e1f1afbe77c107d0655331563311bd04fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:31 +0800 Subject: [PATCH 0976/1421] Revert "MIPS: Loongson64: Add missing '#interrupt-cells' for loongson64c_ls7a" This reverts commit 6925558951a9dba9c669199074408a80ca1d5f68. --- arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dts | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dts b/arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dts index 6c277ab83d4b..c7ea4f1c0bb2 100644 --- a/arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dts +++ b/arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dts @@ -29,7 +29,6 @@ msi: msi-controller@2ff00000 { compatible = "loongson,pch-msi-1.0"; reg = <0 0x2ff00000 0 0x8>; interrupt-controller; - #interrupt-cells = <1>; msi-controller; loongson,msi-base-vec = <64>; loongson,msi-num-vecs = <64>; -- Gitee From 169c8c00b80792281369aff78b3babdd5272e0d1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:31 +0800 Subject: [PATCH 0977/1421] Revert "iio: adc: ad7124: Fix 3dB filter frequency reading" This reverts commit df8faa7c2a4f5357a3b07e5ccf526f17c990616e. --- drivers/iio/adc/ad7124.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c index f631351eef97..0e6baf017bfd 100644 --- a/drivers/iio/adc/ad7124.c +++ b/drivers/iio/adc/ad7124.c @@ -300,9 +300,9 @@ static int ad7124_get_3db_filter_freq(struct ad7124_state *st, switch (st->channels[channel].cfg.filter_type) { case AD7124_SINC3_FILTER: - return DIV_ROUND_CLOSEST(fadc * 272, 1000); - case AD7124_SINC4_FILTER: return DIV_ROUND_CLOSEST(fadc * 230, 1000); + case AD7124_SINC4_FILTER: + return DIV_ROUND_CLOSEST(fadc * 262, 1000); default: return -EINVAL; } -- Gitee From 4e0cfc2d566ee0c8b2db8771d011f3b221888f55 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:32 +0800 Subject: [PATCH 0978/1421] Revert "iio: filter: admv8818: Support frequencies >= 2^32" This reverts commit ba39bcaf9991be90320ec6f610aaa6a78bb582e6. --- drivers/iio/filter/admv8818.c | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c index cc8ce0fe74e7..380e119b3cf5 100644 --- a/drivers/iio/filter/admv8818.c +++ b/drivers/iio/filter/admv8818.c @@ -402,19 +402,6 @@ static int admv8818_read_lpf_freq(struct admv8818_state *st, u64 *lpf_freq) return ret; } -static int admv8818_write_raw_get_fmt(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - long mask) -{ - switch (mask) { - case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: - case IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY: - return IIO_VAL_INT_64; - default: - return -EINVAL; - } -} - static int admv8818_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long info) @@ -423,9 +410,6 @@ static int admv8818_write_raw(struct iio_dev *indio_dev, u64 freq = ((u64)val2 << 32 | (u32)val); - if ((s64)freq < 0) - return -EINVAL; - switch (info) { case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: return admv8818_lpf_select(st, freq); @@ -587,7 +571,6 @@ static int admv8818_set_mode(struct iio_dev *indio_dev, static const struct iio_info admv8818_info = { .write_raw = admv8818_write_raw, - .write_raw_get_fmt = admv8818_write_raw_get_fmt, .read_raw = admv8818_read_raw, .debugfs_reg_access = &admv8818_reg_access, }; -- Gitee From fb77c2341d1b54ad6f552cd41be49f250ba9d0e8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:32 +0800 Subject: [PATCH 0979/1421] Revert "iio: filter: admv8818: fix range calculation" This reverts commit 6ae5824c03c3890be1e0f582308d4228853c34bd. --- drivers/iio/filter/admv8818.c | 205 +++++++++------------------------- 1 file changed, 53 insertions(+), 152 deletions(-) diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c index 380e119b3cf5..cd3aff9a2f7b 100644 --- a/drivers/iio/filter/admv8818.c +++ b/drivers/iio/filter/admv8818.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -71,16 +70,6 @@ #define ADMV8818_HPF_WR0_MSK GENMASK(7, 4) #define ADMV8818_LPF_WR0_MSK GENMASK(3, 0) -#define ADMV8818_BAND_BYPASS 0 -#define ADMV8818_BAND_MIN 1 -#define ADMV8818_BAND_MAX 4 -#define ADMV8818_BAND_CORNER_LOW 0 -#define ADMV8818_BAND_CORNER_HIGH 1 - -#define ADMV8818_STATE_MIN 0 -#define ADMV8818_STATE_MAX 15 -#define ADMV8818_NUM_STATES 16 - enum { ADMV8818_BW_FREQ, ADMV8818_CENTER_FREQ @@ -101,20 +90,16 @@ struct admv8818_state { struct mutex lock; unsigned int filter_mode; u64 cf_hz; - u64 lpf_margin_hz; - u64 hpf_margin_hz; }; -static const unsigned long long freq_range_hpf[5][2] = { - {0ULL, 0ULL}, /* bypass */ +static const unsigned long long freq_range_hpf[4][2] = { {1750000000ULL, 3550000000ULL}, {3400000000ULL, 7250000000ULL}, {6600000000, 12000000000}, {12500000000, 19900000000} }; -static const unsigned long long freq_range_lpf[5][2] = { - {U64_MAX, U64_MAX}, /* bypass */ +static const unsigned long long freq_range_lpf[4][2] = { {2050000000ULL, 3850000000ULL}, {3350000000ULL, 7250000000ULL}, {7000000000, 13000000000}, @@ -136,59 +121,44 @@ static const char * const admv8818_modes[] = { static int __admv8818_hpf_select(struct admv8818_state *st, u64 freq) { - int band, state, ret; - unsigned int hpf_state = ADMV8818_STATE_MIN, hpf_band = ADMV8818_BAND_BYPASS; - u64 freq_error, min_freq_error, freq_corner, freq_step; + unsigned int hpf_step = 0, hpf_band = 0, i, j; + u64 freq_step; + int ret; - if (freq < freq_range_hpf[ADMV8818_BAND_MIN][ADMV8818_BAND_CORNER_LOW]) + if (freq < freq_range_hpf[0][0]) goto hpf_write; - if (freq >= freq_range_hpf[ADMV8818_BAND_MAX][ADMV8818_BAND_CORNER_HIGH]) { - hpf_state = ADMV8818_STATE_MAX; - hpf_band = ADMV8818_BAND_MAX; - goto hpf_write; - } + if (freq > freq_range_hpf[3][1]) { + hpf_step = 15; + hpf_band = 4; - /* Close HPF frequency gap between 12 and 12.5 GHz */ - if (freq >= 12000ULL * HZ_PER_MHZ && freq < 12500ULL * HZ_PER_MHZ) { - hpf_state = ADMV8818_STATE_MAX; - hpf_band = 3; goto hpf_write; } - min_freq_error = U64_MAX; - for (band = ADMV8818_BAND_MIN; band <= ADMV8818_BAND_MAX; band++) { - /* - * This (and therefore all other ranges) have a corner - * frequency higher than the target frequency. - */ - if (freq_range_hpf[band][ADMV8818_BAND_CORNER_LOW] > freq) - break; + for (i = 0; i < 4; i++) { + freq_step = div_u64((freq_range_hpf[i][1] - + freq_range_hpf[i][0]), 15); - freq_step = freq_range_hpf[band][ADMV8818_BAND_CORNER_HIGH] - - freq_range_hpf[band][ADMV8818_BAND_CORNER_LOW]; - freq_step = div_u64(freq_step, ADMV8818_NUM_STATES - 1); - - for (state = ADMV8818_STATE_MIN; state <= ADMV8818_STATE_MAX; state++) { - freq_corner = freq_range_hpf[band][ADMV8818_BAND_CORNER_LOW] + - freq_step * state; - - /* - * This (and therefore all other states) have a corner - * frequency higher than the target frequency. - */ - if (freq_corner > freq) - break; - - freq_error = freq - freq_corner; - if (freq_error < min_freq_error) { - min_freq_error = freq_error; - hpf_state = state; - hpf_band = band; + if (freq > freq_range_hpf[i][0] && + (freq < freq_range_hpf[i][1] + freq_step)) { + hpf_band = i + 1; + + for (j = 1; j <= 16; j++) { + if (freq < (freq_range_hpf[i][0] + (freq_step * j))) { + hpf_step = j - 1; + break; + } } + break; } } + /* Close HPF frequency gap between 12 and 12.5 GHz */ + if (freq >= 12000ULL * HZ_PER_MHZ && freq < 12500ULL * HZ_PER_MHZ) { + hpf_band = 3; + hpf_step = 15; + } + hpf_write: ret = regmap_update_bits(st->regmap, ADMV8818_REG_WR0_SW, ADMV8818_SW_IN_SET_WR0_MSK | @@ -200,7 +170,7 @@ static int __admv8818_hpf_select(struct admv8818_state *st, u64 freq) return regmap_update_bits(st->regmap, ADMV8818_REG_WR0_FILTER, ADMV8818_HPF_WR0_MSK, - FIELD_PREP(ADMV8818_HPF_WR0_MSK, hpf_state)); + FIELD_PREP(ADMV8818_HPF_WR0_MSK, hpf_step)); } static int admv8818_hpf_select(struct admv8818_state *st, u64 freq) @@ -216,52 +186,31 @@ static int admv8818_hpf_select(struct admv8818_state *st, u64 freq) static int __admv8818_lpf_select(struct admv8818_state *st, u64 freq) { - int band, state, ret; - unsigned int lpf_state = ADMV8818_STATE_MIN, lpf_band = ADMV8818_BAND_BYPASS; - u64 freq_error, min_freq_error, freq_corner, freq_step; + unsigned int lpf_step = 0, lpf_band = 0, i, j; + u64 freq_step; + int ret; - if (freq > freq_range_lpf[ADMV8818_BAND_MAX][ADMV8818_BAND_CORNER_HIGH]) + if (freq > freq_range_lpf[3][1]) goto lpf_write; - if (freq < freq_range_lpf[ADMV8818_BAND_MIN][ADMV8818_BAND_CORNER_LOW]) { - lpf_state = ADMV8818_STATE_MIN; - lpf_band = ADMV8818_BAND_MIN; + if (freq < freq_range_lpf[0][0]) { + lpf_band = 1; + goto lpf_write; } - min_freq_error = U64_MAX; - for (band = ADMV8818_BAND_MAX; band >= ADMV8818_BAND_MIN; --band) { - /* - * At this point the highest corner frequency of - * all remaining ranges is below the target. - * LPF corner should be >= the target. - */ - if (freq > freq_range_lpf[band][ADMV8818_BAND_CORNER_HIGH]) - break; - - freq_step = freq_range_lpf[band][ADMV8818_BAND_CORNER_HIGH] - - freq_range_lpf[band][ADMV8818_BAND_CORNER_LOW]; - freq_step = div_u64(freq_step, ADMV8818_NUM_STATES - 1); - - for (state = ADMV8818_STATE_MAX; state >= ADMV8818_STATE_MIN; --state) { + for (i = 0; i < 4; i++) { + if (freq > freq_range_lpf[i][0] && freq < freq_range_lpf[i][1]) { + lpf_band = i + 1; + freq_step = div_u64((freq_range_lpf[i][1] - freq_range_lpf[i][0]), 15); - freq_corner = freq_range_lpf[band][ADMV8818_BAND_CORNER_LOW] + - state * freq_step; - - /* - * At this point all other states in range will - * place the corner frequency below the target - * LPF corner should >= the target. - */ - if (freq > freq_corner) - break; - - freq_error = freq_corner - freq; - if (freq_error < min_freq_error) { - min_freq_error = freq_error; - lpf_state = state; - lpf_band = band; + for (j = 0; j <= 15; j++) { + if (freq < (freq_range_lpf[i][0] + (freq_step * j))) { + lpf_step = j; + break; + } } + break; } } @@ -276,7 +225,7 @@ static int __admv8818_lpf_select(struct admv8818_state *st, u64 freq) return regmap_update_bits(st->regmap, ADMV8818_REG_WR0_FILTER, ADMV8818_LPF_WR0_MSK, - FIELD_PREP(ADMV8818_LPF_WR0_MSK, lpf_state)); + FIELD_PREP(ADMV8818_LPF_WR0_MSK, lpf_step)); } static int admv8818_lpf_select(struct admv8818_state *st, u64 freq) @@ -293,28 +242,16 @@ static int admv8818_lpf_select(struct admv8818_state *st, u64 freq) static int admv8818_rfin_band_select(struct admv8818_state *st) { int ret; - u64 hpf_corner_target, lpf_corner_target; st->cf_hz = clk_get_rate(st->clkin); - /* Check for underflow */ - if (st->cf_hz > st->hpf_margin_hz) - hpf_corner_target = st->cf_hz - st->hpf_margin_hz; - else - hpf_corner_target = 0; - - /* Check for overflow */ - lpf_corner_target = st->cf_hz + st->lpf_margin_hz; - if (lpf_corner_target < st->cf_hz) - lpf_corner_target = U64_MAX; - mutex_lock(&st->lock); - ret = __admv8818_hpf_select(st, hpf_corner_target); + ret = __admv8818_hpf_select(st, st->cf_hz); if (ret) goto exit; - ret = __admv8818_lpf_select(st, lpf_corner_target); + ret = __admv8818_lpf_select(st, st->cf_hz); exit: mutex_unlock(&st->lock); return ret; @@ -341,11 +278,8 @@ static int __admv8818_read_hpf_freq(struct admv8818_state *st, u64 *hpf_freq) hpf_state = FIELD_GET(ADMV8818_HPF_WR0_MSK, data); - *hpf_freq = freq_range_hpf[hpf_band][ADMV8818_BAND_CORNER_HIGH] - - freq_range_hpf[hpf_band][ADMV8818_BAND_CORNER_LOW]; - *hpf_freq = div_u64(*hpf_freq, ADMV8818_NUM_STATES - 1); - *hpf_freq = freq_range_hpf[hpf_band][ADMV8818_BAND_CORNER_LOW] + - (*hpf_freq * hpf_state); + *hpf_freq = div_u64(freq_range_hpf[hpf_band - 1][1] - freq_range_hpf[hpf_band - 1][0], 15); + *hpf_freq = freq_range_hpf[hpf_band - 1][0] + (*hpf_freq * hpf_state); return ret; } @@ -382,11 +316,8 @@ static int __admv8818_read_lpf_freq(struct admv8818_state *st, u64 *lpf_freq) lpf_state = FIELD_GET(ADMV8818_LPF_WR0_MSK, data); - *lpf_freq = freq_range_lpf[lpf_band][ADMV8818_BAND_CORNER_HIGH] - - freq_range_lpf[lpf_band][ADMV8818_BAND_CORNER_LOW]; - *lpf_freq = div_u64(*lpf_freq, ADMV8818_NUM_STATES - 1); - *lpf_freq = freq_range_lpf[lpf_band][ADMV8818_BAND_CORNER_LOW] + - (*lpf_freq * lpf_state); + *lpf_freq = div_u64(freq_range_lpf[lpf_band - 1][1] - freq_range_lpf[lpf_band - 1][0], 15); + *lpf_freq = freq_range_lpf[lpf_band - 1][0] + (*lpf_freq * lpf_state); return ret; } @@ -710,32 +641,6 @@ static int admv8818_clk_setup(struct admv8818_state *st) return devm_add_action_or_reset(&spi->dev, admv8818_clk_notifier_unreg, st); } -static int admv8818_read_properties(struct admv8818_state *st) -{ - struct spi_device *spi = st->spi; - u32 mhz; - int ret; - - ret = device_property_read_u32(&spi->dev, "adi,lpf-margin-mhz", &mhz); - if (ret == 0) - st->lpf_margin_hz = (u64)mhz * HZ_PER_MHZ; - else if (ret == -EINVAL) - st->lpf_margin_hz = 0; - else - return ret; - - - ret = device_property_read_u32(&spi->dev, "adi,hpf-margin-mhz", &mhz); - if (ret == 0) - st->hpf_margin_hz = (u64)mhz * HZ_PER_MHZ; - else if (ret == -EINVAL) - st->hpf_margin_hz = 0; - else if (ret < 0) - return ret; - - return 0; -} - static int admv8818_probe(struct spi_device *spi) { struct iio_dev *indio_dev; @@ -767,10 +672,6 @@ static int admv8818_probe(struct spi_device *spi) mutex_init(&st->lock); - ret = admv8818_read_properties(st); - if (ret) - return ret; - ret = admv8818_init(st); if (ret) return ret; -- Gitee From 513ae2de46c59d11d2385c679c6f4cb1ec3d5eac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:32 +0800 Subject: [PATCH 0980/1421] Revert "iio: filter: admv8818: fix integer overflow" This reverts commit 3f0cd5b1d89063f2ab71b221e11e888b8bc1e274. --- drivers/iio/filter/admv8818.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c index cd3aff9a2f7b..3d8740caa145 100644 --- a/drivers/iio/filter/admv8818.c +++ b/drivers/iio/filter/admv8818.c @@ -154,7 +154,7 @@ static int __admv8818_hpf_select(struct admv8818_state *st, u64 freq) } /* Close HPF frequency gap between 12 and 12.5 GHz */ - if (freq >= 12000ULL * HZ_PER_MHZ && freq < 12500ULL * HZ_PER_MHZ) { + if (freq >= 12000 * HZ_PER_MHZ && freq <= 12500 * HZ_PER_MHZ) { hpf_band = 3; hpf_step = 15; } -- Gitee From 0ad622ea7b7a77271edcf902f89c7dcd0a34175d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:32 +0800 Subject: [PATCH 0981/1421] Revert "iio: filter: admv8818: fix band 4, state 15" This reverts commit 21501f9686e58801055b044fa6f492bd4f4765e2. --- drivers/iio/filter/admv8818.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/filter/admv8818.c b/drivers/iio/filter/admv8818.c index 3d8740caa145..d85b7d3de866 100644 --- a/drivers/iio/filter/admv8818.c +++ b/drivers/iio/filter/admv8818.c @@ -103,7 +103,7 @@ static const unsigned long long freq_range_lpf[4][2] = { {2050000000ULL, 3850000000ULL}, {3350000000ULL, 7250000000ULL}, {7000000000, 13000000000}, - {12550000000, 18850000000} + {12550000000, 18500000000} }; static const struct regmap_config admv8818_regmap_config = { -- Gitee From 26d95e0d010e98a3a6fe5e4d1e52e9aaf9e147e8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:32 +0800 Subject: [PATCH 0982/1421] Revert "thunderbolt: Fix a logic error in wake on connect" This reverts commit 1991b69bda1aa97bc933a69543a01bb375a1e1fb. --- drivers/thunderbolt/usb4.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c index e445516290f9..8db9bd32f473 100644 --- a/drivers/thunderbolt/usb4.c +++ b/drivers/thunderbolt/usb4.c @@ -442,10 +442,10 @@ int usb4_switch_set_wake(struct tb_switch *sw, unsigned int flags) bool configured = val & PORT_CS_19_PC; usb4 = port->usb4; - if (((flags & TB_WAKE_ON_CONNECT) && + if (((flags & TB_WAKE_ON_CONNECT) | device_may_wakeup(&usb4->dev)) && !configured) val |= PORT_CS_19_WOC; - if (((flags & TB_WAKE_ON_DISCONNECT) && + if (((flags & TB_WAKE_ON_DISCONNECT) | device_may_wakeup(&usb4->dev)) && configured) val |= PORT_CS_19_WOD; if ((flags & TB_WAKE_ON_USB4) && configured) -- Gitee From ed6785d150473039cd477de7cb1625ab20949805 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:33 +0800 Subject: [PATCH 0983/1421] Revert "serial: Fix potential null-ptr-deref in mlb_usio_probe()" This reverts commit 8d296ccc6ea40f0dcb077c9c9b20c650b01c8dc4. --- drivers/tty/serial/milbeaut_usio.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/tty/serial/milbeaut_usio.c b/drivers/tty/serial/milbeaut_usio.c index 9de3883a4e0b..70a910085e93 100644 --- a/drivers/tty/serial/milbeaut_usio.c +++ b/drivers/tty/serial/milbeaut_usio.c @@ -522,10 +522,7 @@ static int mlb_usio_probe(struct platform_device *pdev) } port->membase = devm_ioremap(&pdev->dev, res->start, resource_size(res)); - if (!port->membase) { - ret = -ENOMEM; - goto failed; - } + ret = platform_get_irq_byname(pdev, "rx"); mlb_usio_irq[index][RX] = ret; -- Gitee From a081794892c506211b430c59c2d0aa8061755df9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:33 +0800 Subject: [PATCH 0984/1421] Revert "usb: renesas_usbhs: Reorder clock handling and power management in probe" This reverts commit 818d0f0a25cf411afbfa043454f51f94e50984fb. --- drivers/usb/renesas_usbhs/common.c | 50 +++++++----------------------- 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c index b720899725e5..205820544f6f 100644 --- a/drivers/usb/renesas_usbhs/common.c +++ b/drivers/usb/renesas_usbhs/common.c @@ -674,29 +674,10 @@ static int usbhs_probe(struct platform_device *pdev) INIT_DELAYED_WORK(&priv->notify_hotplug_work, usbhsc_notify_hotplug); spin_lock_init(usbhs_priv_to_lock(priv)); - /* - * Acquire clocks and enable power management (PM) early in the - * probe process, as the driver accesses registers during - * initialization. Ensure the device is active before proceeding. - */ - pm_runtime_enable(dev); - - ret = usbhsc_clk_get(dev, priv); - if (ret) - goto probe_pm_disable; - - ret = pm_runtime_resume_and_get(dev); - if (ret) - goto probe_clk_put; - - ret = usbhsc_clk_prepare_enable(priv); - if (ret) - goto probe_pm_put; - /* call pipe and module init */ ret = usbhs_pipe_probe(priv); if (ret < 0) - goto probe_clk_dis_unprepare; + return ret; ret = usbhs_fifo_probe(priv); if (ret < 0) @@ -713,6 +694,10 @@ static int usbhs_probe(struct platform_device *pdev) if (ret) goto probe_fail_rst; + ret = usbhsc_clk_get(dev, priv); + if (ret) + goto probe_fail_clks; + /* * deviece reset here because * USB device might be used in boot loader. @@ -725,7 +710,7 @@ static int usbhs_probe(struct platform_device *pdev) if (ret) { dev_warn(dev, "USB function not selected (GPIO)\n"); ret = -ENOTSUPP; - goto probe_assert_rest; + goto probe_end_mod_exit; } } @@ -739,19 +724,14 @@ static int usbhs_probe(struct platform_device *pdev) ret = usbhs_platform_call(priv, hardware_init, pdev); if (ret < 0) { dev_err(dev, "platform init failed.\n"); - goto probe_assert_rest; + goto probe_end_mod_exit; } /* reset phy for connection */ usbhs_platform_call(priv, phy_reset, pdev); - /* - * Disable the clocks that were enabled earlier in the probe path, - * and let the driver handle the clocks beyond this point. - */ - usbhsc_clk_disable_unprepare(priv); - pm_runtime_put(dev); - + /* power control */ + pm_runtime_enable(dev); if (!usbhs_get_dparam(priv, runtime_pwctrl)) { usbhsc_power_ctrl(priv, 1); usbhs_mod_autonomy_mode(priv); @@ -768,7 +748,9 @@ static int usbhs_probe(struct platform_device *pdev) return ret; -probe_assert_rest: +probe_end_mod_exit: + usbhsc_clk_put(priv); +probe_fail_clks: reset_control_assert(priv->rsts); probe_fail_rst: usbhs_mod_remove(priv); @@ -776,14 +758,6 @@ static int usbhs_probe(struct platform_device *pdev) usbhs_fifo_remove(priv); probe_end_pipe_exit: usbhs_pipe_remove(priv); -probe_clk_dis_unprepare: - usbhsc_clk_disable_unprepare(priv); -probe_pm_put: - pm_runtime_put(dev); -probe_clk_put: - usbhsc_clk_put(priv); -probe_pm_disable: - pm_runtime_disable(dev); dev_info(dev, "probe failed (%d)\n", ret); -- Gitee From 45bac84d3b0c67d947ab3c18d1208f1712d14dcf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:33 +0800 Subject: [PATCH 0985/1421] Revert "rtc: loongson: Add missing alarm notifications for ACPI RTC events" This reverts commit f7a4adad34af4f80e9f69136f1b0efdf0fda8766. --- drivers/rtc/rtc-loongson.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/rtc/rtc-loongson.c b/drivers/rtc/rtc-loongson.c index c9d5b91a6544..90e9d97a86b4 100644 --- a/drivers/rtc/rtc-loongson.c +++ b/drivers/rtc/rtc-loongson.c @@ -129,14 +129,6 @@ static u32 loongson_rtc_handler(void *id) { struct loongson_rtc_priv *priv = (struct loongson_rtc_priv *)id; - rtc_update_irq(priv->rtcdev, 1, RTC_AF | RTC_IRQF); - - /* - * The TOY_MATCH0_REG should be cleared 0 here, - * otherwise the interrupt cannot be cleared. - */ - regmap_write(priv->regmap, TOY_MATCH0_REG, 0); - spin_lock(&priv->lock); /* Disable RTC alarm wakeup and interrupt */ writel(readl(priv->pm_base + PM1_EN_REG) & ~RTC_EN, -- Gitee From 2ef405487aff32aa3bc6f6fbb672f94b4ea29bea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:33 +0800 Subject: [PATCH 0986/1421] Revert "PCI/DPC: Initialize aer_err_info before using it" This reverts commit ce78496eefe05af6a2a89bc37ee10b66fb4cbc71. --- drivers/pci/pcie/dpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 3c3ecb9cf57a..a5cec2a4e057 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -263,7 +263,7 @@ static int dpc_get_aer_uncorrect_severity(struct pci_dev *dev, void dpc_process_error(struct pci_dev *pdev) { u16 cap = pdev->dpc_cap, status, source, reason, ext_reason; - struct aer_err_info info = {}; + struct aer_err_info info; pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &status); pci_read_config_word(pdev, cap + PCI_EXP_DPC_SOURCE_ID, &source); -- Gitee From 07fd79240ba7c46767b1dd5c6871d2523accd962 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:33 +0800 Subject: [PATCH 0987/1421] Revert "dmaengine: ti: Add NULL check in udma_probe()" This reverts commit aed03022438fd0892e080a75cd47233b63d6b903. --- drivers/dma/ti/k3-udma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index d99cf81358c5..418e1774af1e 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -5537,8 +5537,7 @@ static int udma_probe(struct platform_device *pdev) uc->config.dir = DMA_MEM_TO_MEM; uc->name = devm_kasprintf(dev, GFP_KERNEL, "%s chan%d", dev_name(dev), i); - if (!uc->name) - return -ENOMEM; + vchan_init(&uc->vc, &ud->ddev); /* Use custom vchan completion handling */ tasklet_setup(&uc->vc.task, udma_vchan_complete); -- Gitee From 721cc8e272eaf136dea5be7d37e63b8dc6759d18 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:34 +0800 Subject: [PATCH 0988/1421] Revert "phy: qcom-qmp-usb: Fix an NULL vs IS_ERR() bug" This reverts commit b83ad8662e22ea62ba6ca30a4a671103f8fa476f. --- drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c index 5072bca0af7c..c697d01b2a2a 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c @@ -2044,16 +2044,12 @@ static void __iomem *qmp_usb_iomap(struct device *dev, struct device_node *np, int index, bool exclusive) { struct resource res; - void __iomem *mem; if (!exclusive) { if (of_address_to_resource(np, index, &res)) return IOMEM_ERR_PTR(-EINVAL); - mem = devm_ioremap(dev, res.start, resource_size(&res)); - if (!mem) - return IOMEM_ERR_PTR(-ENOMEM); - return mem; + return devm_ioremap(dev, res.start, resource_size(&res)); } return devm_of_iomap(dev, np, index, NULL); -- Gitee From bdd636444a31b56d852829bfaed5417fd923b89e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:34 +0800 Subject: [PATCH 0989/1421] Revert "PCI: apple: Use gpiod_set_value_cansleep in probe flow" This reverts commit 5557eaf694f024165f0ce886fd1e5a4f3c284259. --- drivers/pci/controller/pcie-apple.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c index 7e6bd63a6425..f7a248393a8f 100644 --- a/drivers/pci/controller/pcie-apple.c +++ b/drivers/pci/controller/pcie-apple.c @@ -541,7 +541,7 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie, rmw_set(PORT_APPCLK_EN, port->base + PORT_APPCLK); /* Assert PERST# before setting up the clock */ - gpiod_set_value_cansleep(reset, 1); + gpiod_set_value(reset, 1); ret = apple_pcie_setup_refclk(pcie, port); if (ret < 0) @@ -552,7 +552,7 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie, /* Deassert PERST# */ rmw_set(PORT_PERST_OFF, port->base + PORT_PERST); - gpiod_set_value_cansleep(reset, 0); + gpiod_set_value(reset, 0); /* Wait for 100ms after PERST# deassertion (PCIe r5.0, 6.6.1) */ msleep(100); -- Gitee From 722101d94ca75b190058905d9375772324f7a5b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:34 +0800 Subject: [PATCH 0990/1421] Revert "PCI: cadence: Fix runtime atomic count underflow" This reverts commit f2e14f9c983429d6ff587dc2e1325dcd3bb6178a. --- drivers/pci/controller/cadence/pcie-cadence-host.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/cadence/pcie-cadence-host.c b/drivers/pci/controller/cadence/pcie-cadence-host.c index 741e10a575ec..8af95e9da7ce 100644 --- a/drivers/pci/controller/cadence/pcie-cadence-host.c +++ b/drivers/pci/controller/cadence/pcie-cadence-host.c @@ -570,5 +570,14 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc) if (!bridge->ops) bridge->ops = &cdns_pcie_host_ops; - return pci_host_probe(bridge); + ret = pci_host_probe(bridge); + if (ret < 0) + goto err_init; + + return 0; + + err_init: + pm_runtime_put_sync(dev); + + return ret; } -- Gitee From 40827c165c4ae979ea0b13bc845c63b055304fe4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:34 +0800 Subject: [PATCH 0991/1421] Revert "PCI: Print the actual delay time in pci_bridge_wait_for_secondary_bus()" This reverts commit 06de34dc57a7cf3c312145c8303be9a358a9ed11. --- drivers/pci/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 503304aba9ea..095fa1910d36 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5221,7 +5221,7 @@ int pci_bridge_wait_for_secondary_bus(struct pci_dev *dev, char *reset_type) delay); if (!pcie_wait_for_link_delay(dev, true, delay)) { /* Did not train, no need to wait any further */ - pci_info(dev, "Data Link Layer Link Active not set in %d msec\n", delay); + pci_info(dev, "Data Link Layer Link Active not set in 1000 msec\n"); return -ENOTTY; } -- Gitee From 6d89b624b813e0c5dcf4c1887269f76d3f960f8f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:34 +0800 Subject: [PATCH 0992/1421] Revert "rtc: sh: assign correct interrupts with DT" This reverts commit 7987a67a7d9e85d9f2e39b3c96fde246f55ee18b. --- drivers/rtc/rtc-sh.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c index 341b1b776e1a..cd146b574143 100644 --- a/drivers/rtc/rtc-sh.c +++ b/drivers/rtc/rtc-sh.c @@ -485,15 +485,9 @@ static int __init sh_rtc_probe(struct platform_device *pdev) return -ENOENT; } - if (!pdev->dev.of_node) { - rtc->periodic_irq = ret; - rtc->carry_irq = platform_get_irq(pdev, 1); - rtc->alarm_irq = platform_get_irq(pdev, 2); - } else { - rtc->alarm_irq = ret; - rtc->periodic_irq = platform_get_irq(pdev, 1); - rtc->carry_irq = platform_get_irq(pdev, 2); - } + rtc->periodic_irq = ret; + rtc->carry_irq = platform_get_irq(pdev, 1); + rtc->alarm_irq = platform_get_irq(pdev, 2); res = platform_get_resource(pdev, IORESOURCE_IO, 0); if (!res) -- Gitee From 8f7166682992d3f6124463cc698599e0edfa83f9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:35 +0800 Subject: [PATCH 0993/1421] Revert "cifs: Fix validation of SMB1 query reparse point response" This reverts commit 7366b1034cf64e56df1d4ab9f939851a2a552fd1. --- fs/smb/client/cifssmb.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c index c36ab20050c1..b91184ebce02 100644 --- a/fs/smb/client/cifssmb.c +++ b/fs/smb/client/cifssmb.c @@ -2738,10 +2738,10 @@ int cifs_query_reparse_point(const unsigned int xid, io_req->TotalParameterCount = 0; io_req->TotalDataCount = 0; - io_req->MaxParameterCount = cpu_to_le32(0); + io_req->MaxParameterCount = cpu_to_le32(2); /* BB find exact data count max from sess structure BB */ io_req->MaxDataCount = cpu_to_le32(CIFSMaxBufSize & 0xFFFFFF00); - io_req->MaxSetupCount = 1; + io_req->MaxSetupCount = 4; io_req->Reserved = 0; io_req->ParameterOffset = 0; io_req->DataCount = 0; @@ -2768,22 +2768,6 @@ int cifs_query_reparse_point(const unsigned int xid, goto error; } - /* SetupCount must be 1, otherwise offset to ByteCount is incorrect. */ - if (io_rsp->SetupCount != 1) { - rc = -EIO; - goto error; - } - - /* - * ReturnedDataLen is output length of executed IOCTL. - * DataCount is output length transferred over network. - * Check that we have full FSCTL_GET_REPARSE_POINT buffer. - */ - if (data_count != le16_to_cpu(io_rsp->ReturnedDataLen)) { - rc = -EIO; - goto error; - } - end = 2 + get_bcc(&io_rsp->hdr) + (__u8 *)&io_rsp->ByteCount; start = (__u8 *)&io_rsp->hdr.Protocol + data_offset; if (start >= end) { -- Gitee From 44cad3e85225f40460674319df25ada6ede6aa63 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:35 +0800 Subject: [PATCH 0994/1421] Revert "nfs: ignore SB_RDONLY when remounting nfs" This reverts commit 53520cd7be4188f6021b28d213f116ce17cf00ea. --- fs/nfs/super.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 4e72ee57fc8f..59bf4b2c0f86 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -1020,16 +1020,6 @@ int nfs_reconfigure(struct fs_context *fc) sync_filesystem(sb); - /* - * The SB_RDONLY flag has been removed from the superblock during - * mounts to prevent interference between different filesystems. - * Similarly, it is also necessary to ignore the SB_RDONLY flag - * during reconfiguration; otherwise, it may also result in the - * creation of redundant superblocks when mounting a directory with - * different rw and ro flags multiple times. - */ - fc->sb_flags_mask &= ~SB_RDONLY; - /* * Userspace mount programs that send binary options generally send * them populated with default values. We have no way to know which -- Gitee From 28614c08739a89b43a64a533b95c14ae34a634ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:35 +0800 Subject: [PATCH 0995/1421] Revert "nfs: clear SB_RDONLY before getting superblock" This reverts commit a4c3dd882d57b26fac8299148a9dbb8eadd58bc6. --- fs/nfs/super.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 59bf4b2c0f86..e1bcad5906ae 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -1277,17 +1277,8 @@ int nfs_get_tree_common(struct fs_context *fc) if (IS_ERR(server)) return PTR_ERR(server); - /* - * When NFS_MOUNT_UNSHARED is not set, NFS forces the sharing of a - * superblock among each filesystem that mounts sub-directories - * belonging to a single exported root path. - * To prevent interference between different filesystems, the - * SB_RDONLY flag should be removed from the superblock. - */ if (server->flags & NFS_MOUNT_UNSHARED) compare_super = NULL; - else - fc->sb_flags &= ~SB_RDONLY; /* -o noac implies -o sync */ if (server->flags & NFS_MOUNT_NOAC) -- Gitee From eba9455d2a6e283fa1f5a81197f0c8b698344f58 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:35 +0800 Subject: [PATCH 0996/1421] Revert "perf trace: Always print return value for syscalls returning a pid" This reverts commit dd56fd5e4c2a076fea65420fbb3997ae0b1d00b2. --- tools/perf/builtin-trace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 7ee3285af10c..908509df007b 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2586,8 +2586,8 @@ errno_print: { else if (sc->fmt->errpid) { struct thread *child = machine__find_thread(trace->host, ret, ret); - fprintf(trace->output, "%ld", ret); if (child != NULL) { + fprintf(trace->output, "%ld", ret); if (thread__comm_set(child)) fprintf(trace->output, " (%s)", thread__comm_str(child)); thread__put(child); -- Gitee From 59d83476c958bc98246d9dd794b2eaf5e0d77bcd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:35 +0800 Subject: [PATCH 0997/1421] Revert "perf record: Fix incorrect --user-regs comments" This reverts commit fa8bf3835b9d8bb1cac5800ab3f4b33915a4254d. --- tools/perf/builtin-record.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 81f77c0505fd..b94ae33a343c 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -3427,7 +3427,7 @@ static struct option __record_options[] = { "sample selected machine registers on interrupt," " use '-I?' to list register names", parse_intr_regs), OPT_CALLBACK_OPTARG(0, "user-regs", &record.opts.sample_user_regs, NULL, "any register", - "sample selected machine registers in user space," + "sample selected machine registers on interrupt," " use '--user-regs=?' to list register names", parse_user_regs), OPT_BOOLEAN(0, "running-time", &record.opts.running_time, "Record running/enabled time of read (:S) events"), -- Gitee From d92497fc077c5f90bcc84aaacea1e3d03932ff6b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:36 +0800 Subject: [PATCH 0998/1421] Revert "perf tests switch-tracking: Fix timestamp comparison" This reverts commit 79592f08a5fe5f580b44d9fc7bb76bf0987013b8. --- tools/perf/tests/switch-tracking.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/tests/switch-tracking.c b/tools/perf/tests/switch-tracking.c index 2c7bdf4fd55e..e52b031bedc5 100644 --- a/tools/perf/tests/switch-tracking.c +++ b/tools/perf/tests/switch-tracking.c @@ -258,7 +258,7 @@ static int compar(const void *a, const void *b) const struct event_node *nodeb = b; s64 cmp = nodea->event_time - nodeb->event_time; - return cmp < 0 ? -1 : (cmp > 0 ? 1 : 0); + return cmp; } static int process_events(struct evlist *evlist, -- Gitee From 16a9b77245bdd84a64b4ace7826852c33229935a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:36 +0800 Subject: [PATCH 0999/1421] Revert "mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE" This reverts commit 1431d7dd8db955177f2903a78b0a20773a79b98f. --- drivers/mfd/stmpe-spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mfd/stmpe-spi.c b/drivers/mfd/stmpe-spi.c index b9cc85ea2c40..792236f56399 100644 --- a/drivers/mfd/stmpe-spi.c +++ b/drivers/mfd/stmpe-spi.c @@ -129,7 +129,7 @@ static const struct spi_device_id stmpe_spi_id[] = { { "stmpe2403", STMPE2403 }, { } }; -MODULE_DEVICE_TABLE(spi, stmpe_spi_id); +MODULE_DEVICE_TABLE(spi, stmpe_id); static struct spi_driver stmpe_spi_driver = { .driver = { -- Gitee From 267e3ddca0cc488b29629ef9764a78511f5fb425 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:36 +0800 Subject: [PATCH 1000/1421] Revert "mfd: exynos-lpass: Avoid calling exynos_lpass_disable() twice in exynos_lpass_remove()" This reverts commit 9a17226ed884d6e32dd1c95a8a3c035070356c7a. --- drivers/mfd/exynos-lpass.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/mfd/exynos-lpass.c b/drivers/mfd/exynos-lpass.c index 5e39d91b728f..1506d8d352b1 100644 --- a/drivers/mfd/exynos-lpass.c +++ b/drivers/mfd/exynos-lpass.c @@ -141,6 +141,7 @@ static int exynos_lpass_remove(struct platform_device *pdev) { struct exynos_lpass *lpass = platform_get_drvdata(pdev); + exynos_lpass_disable(lpass); pm_runtime_disable(&pdev->dev); if (!pm_runtime_status_suspended(&pdev->dev)) exynos_lpass_disable(lpass); -- Gitee From 58da4a6ddb66582b21a591f4284cae374398f880 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:36 +0800 Subject: [PATCH 1001/1421] Revert "rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send()" This reverts commit 893730fd9b8387f6c205958a4d43626211023c87. --- drivers/rpmsg/qcom_smd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c index 79d35ab43729..43f601c84b4f 100644 --- a/drivers/rpmsg/qcom_smd.c +++ b/drivers/rpmsg/qcom_smd.c @@ -746,7 +746,7 @@ static int __qcom_smd_send(struct qcom_smd_channel *channel, const void *data, __le32 hdr[5] = { cpu_to_le32(len), }; int tlen = sizeof(hdr) + len; unsigned long flags; - int ret = 0; + int ret; /* Word aligned channels only accept word size aligned data */ if (channel->info_word && len % 4) -- Gitee From 8e7c073bdb0544710bbdbcd0c88cb3a97e5756ba Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:37 +0800 Subject: [PATCH 1002/1421] Revert "remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick}" This reverts commit 5ec41dbd6ba7fbe2744bdae3865b7f918ac8e14b. --- drivers/remoteproc/ti_k3_r5_remoteproc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c index 37005640c784..5491b1b17ca3 100644 --- a/drivers/remoteproc/ti_k3_r5_remoteproc.c +++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c @@ -194,6 +194,10 @@ static void k3_r5_rproc_mbox_callback(struct mbox_client *client, void *data) const char *name = kproc->rproc->name; u32 msg = omap_mbox_message(data); + /* Do not forward message from a detached core */ + if (kproc->rproc->state == RPROC_DETACHED) + return; + dev_dbg(dev, "mbox msg: 0x%x\n", msg); switch (msg) { @@ -229,6 +233,10 @@ static void k3_r5_rproc_kick(struct rproc *rproc, int vqid) mbox_msg_t msg = (mbox_msg_t)vqid; int ret; + /* Do not forward message to a detached core */ + if (kproc->rproc->state == RPROC_DETACHED) + return; + /* send the index of the triggered virtqueue in the mailbox payload */ ret = mbox_send_message(kproc->mbox, (void *)msg); if (ret < 0) -- Gitee From f94d4b9191d1d23146e8e5a2d8c9ccb2ac0eb138 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:37 +0800 Subject: [PATCH 1003/1421] Revert "remoteproc: qcom_wcnss_iris: Add missing put_device() on error in probe" This reverts commit 0a598f736436c6db6e8c2d9bc584f15823fb2146. --- drivers/remoteproc/qcom_wcnss_iris.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/remoteproc/qcom_wcnss_iris.c b/drivers/remoteproc/qcom_wcnss_iris.c index 1e197f773474..dd36fd077911 100644 --- a/drivers/remoteproc/qcom_wcnss_iris.c +++ b/drivers/remoteproc/qcom_wcnss_iris.c @@ -197,7 +197,6 @@ struct qcom_iris *qcom_iris_probe(struct device *parent, bool *use_48mhz_xo) err_device_del: device_del(&iris->dev); - put_device(&iris->dev); return ERR_PTR(ret); } @@ -205,5 +204,4 @@ struct qcom_iris *qcom_iris_probe(struct device *parent, bool *use_48mhz_xo) void qcom_iris_remove(struct qcom_iris *iris) { device_del(&iris->dev); - put_device(&iris->dev); } -- Gitee From 3141048ff2a5de2c3d266d84fc0fbcd922625746 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:37 +0800 Subject: [PATCH 1004/1421] Revert "perf scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3" This reverts commit 1fd92a50424c12381da84ecfe010824906ef3b2f. --- tools/perf/scripts/python/exported-sql-viewer.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/perf/scripts/python/exported-sql-viewer.py b/tools/perf/scripts/python/exported-sql-viewer.py index 99742013676b..13f2d8a81610 100755 --- a/tools/perf/scripts/python/exported-sql-viewer.py +++ b/tools/perf/scripts/python/exported-sql-viewer.py @@ -680,10 +680,7 @@ class CallGraphModelBase(TreeModel): s = value.replace("%", "\%") s = s.replace("_", "\_") # Translate * and ? into SQL LIKE pattern characters % and _ - if sys.version_info[0] == 3: - trans = str.maketrans("*?", "%_") - else: - trans = string.maketrans("*?", "%_") + trans = string.maketrans("*?", "%_") match = " LIKE '" + str(s).translate(trans) + "'" else: match = " GLOB '" + str(value) + "'" -- Gitee From 5d44e91df9156b674705a20446a951d446745a79 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:37 +0800 Subject: [PATCH 1005/1421] Revert "perf intel-pt: Fix PEBS-via-PT data_src" This reverts commit 76f260310a08617d575afd7cf3ddd4594896a657. --- tools/perf/util/intel-pt.c | 205 +------------------------------------ 1 file changed, 3 insertions(+), 202 deletions(-) diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index e9f97c0c3358..4db9a098f592 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -127,7 +127,6 @@ struct intel_pt { bool single_pebs; bool sample_pebs; - int pebs_data_src_fmt; struct evsel *pebs_evsel; u64 evt_sample_type; @@ -176,7 +175,6 @@ enum switch_state { struct intel_pt_pebs_event { struct evsel *evsel; u64 id; - int data_src_fmt; }; struct intel_pt_queue { @@ -2234,146 +2232,7 @@ static void intel_pt_add_lbrs(struct branch_stack *br_stack, } } -#define P(a, b) PERF_MEM_S(a, b) -#define OP_LH (P(OP, LOAD) | P(LVL, HIT)) -#define LEVEL(x) P(LVLNUM, x) -#define REM P(REMOTE, REMOTE) -#define SNOOP_NONE_MISS (P(SNOOP, NONE) | P(SNOOP, MISS)) - -#define PERF_PEBS_DATA_SOURCE_GRT_MAX 0x10 -#define PERF_PEBS_DATA_SOURCE_GRT_MASK (PERF_PEBS_DATA_SOURCE_GRT_MAX - 1) - -/* Based on kernel __intel_pmu_pebs_data_source_grt() and pebs_data_source */ -static const u64 pebs_data_source_grt[PERF_PEBS_DATA_SOURCE_GRT_MAX] = { - P(OP, LOAD) | P(LVL, MISS) | LEVEL(L3) | P(SNOOP, NA), /* L3 miss|SNP N/A */ - OP_LH | P(LVL, L1) | LEVEL(L1) | P(SNOOP, NONE), /* L1 hit|SNP None */ - OP_LH | P(LVL, LFB) | LEVEL(LFB) | P(SNOOP, NONE), /* LFB/MAB hit|SNP None */ - OP_LH | P(LVL, L2) | LEVEL(L2) | P(SNOOP, NONE), /* L2 hit|SNP None */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, NONE), /* L3 hit|SNP None */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HIT), /* L3 hit|SNP Hit */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HITM), /* L3 hit|SNP HitM */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HITM), /* L3 hit|SNP HitM */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOPX, FWD), /* L3 hit|SNP Fwd */ - OP_LH | P(LVL, REM_CCE1) | REM | LEVEL(L3) | P(SNOOP, HITM), /* Remote L3 hit|SNP HitM */ - OP_LH | P(LVL, LOC_RAM) | LEVEL(RAM) | P(SNOOP, HIT), /* RAM hit|SNP Hit */ - OP_LH | P(LVL, REM_RAM1) | REM | LEVEL(L3) | P(SNOOP, HIT), /* Remote L3 hit|SNP Hit */ - OP_LH | P(LVL, LOC_RAM) | LEVEL(RAM) | SNOOP_NONE_MISS, /* RAM hit|SNP None or Miss */ - OP_LH | P(LVL, REM_RAM1) | LEVEL(RAM) | REM | SNOOP_NONE_MISS, /* Remote RAM hit|SNP None or Miss */ - OP_LH | P(LVL, IO) | LEVEL(NA) | P(SNOOP, NONE), /* I/O hit|SNP None */ - OP_LH | P(LVL, UNC) | LEVEL(NA) | P(SNOOP, NONE), /* Uncached hit|SNP None */ -}; - -/* Based on kernel __intel_pmu_pebs_data_source_cmt() and pebs_data_source */ -static const u64 pebs_data_source_cmt[PERF_PEBS_DATA_SOURCE_GRT_MAX] = { - P(OP, LOAD) | P(LVL, MISS) | LEVEL(L3) | P(SNOOP, NA), /* L3 miss|SNP N/A */ - OP_LH | P(LVL, L1) | LEVEL(L1) | P(SNOOP, NONE), /* L1 hit|SNP None */ - OP_LH | P(LVL, LFB) | LEVEL(LFB) | P(SNOOP, NONE), /* LFB/MAB hit|SNP None */ - OP_LH | P(LVL, L2) | LEVEL(L2) | P(SNOOP, NONE), /* L2 hit|SNP None */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, NONE), /* L3 hit|SNP None */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, MISS), /* L3 hit|SNP Hit */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HIT), /* L3 hit|SNP HitM */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOPX, FWD), /* L3 hit|SNP HitM */ - OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HITM), /* L3 hit|SNP Fwd */ - OP_LH | P(LVL, REM_CCE1) | REM | LEVEL(L3) | P(SNOOP, HITM), /* Remote L3 hit|SNP HitM */ - OP_LH | P(LVL, LOC_RAM) | LEVEL(RAM) | P(SNOOP, NONE), /* RAM hit|SNP Hit */ - OP_LH | LEVEL(RAM) | REM | P(SNOOP, NONE), /* Remote L3 hit|SNP Hit */ - OP_LH | LEVEL(RAM) | REM | P(SNOOPX, FWD), /* RAM hit|SNP None or Miss */ - OP_LH | LEVEL(RAM) | REM | P(SNOOP, HITM), /* Remote RAM hit|SNP None or Miss */ - OP_LH | P(LVL, IO) | LEVEL(NA) | P(SNOOP, NONE), /* I/O hit|SNP None */ - OP_LH | P(LVL, UNC) | LEVEL(NA) | P(SNOOP, NONE), /* Uncached hit|SNP None */ -}; - -/* Based on kernel pebs_set_tlb_lock() */ -static inline void pebs_set_tlb_lock(u64 *val, bool tlb, bool lock) -{ - /* - * TLB access - * 0 = did not miss 2nd level TLB - * 1 = missed 2nd level TLB - */ - if (tlb) - *val |= P(TLB, MISS) | P(TLB, L2); - else - *val |= P(TLB, HIT) | P(TLB, L1) | P(TLB, L2); - - /* locked prefix */ - if (lock) - *val |= P(LOCK, LOCKED); -} - -/* Based on kernel __grt_latency_data() */ -static u64 intel_pt_grt_latency_data(u8 dse, bool tlb, bool lock, bool blk, - const u64 *pebs_data_source) -{ - u64 val; - - dse &= PERF_PEBS_DATA_SOURCE_GRT_MASK; - val = pebs_data_source[dse]; - - pebs_set_tlb_lock(&val, tlb, lock); - - if (blk) - val |= P(BLK, DATA); - else - val |= P(BLK, NA); - - return val; -} - -/* Default value for data source */ -#define PERF_MEM_NA (PERF_MEM_S(OP, NA) |\ - PERF_MEM_S(LVL, NA) |\ - PERF_MEM_S(SNOOP, NA) |\ - PERF_MEM_S(LOCK, NA) |\ - PERF_MEM_S(TLB, NA) |\ - PERF_MEM_S(LVLNUM, NA)) - -enum DATA_SRC_FORMAT { - DATA_SRC_FORMAT_ERR = -1, - DATA_SRC_FORMAT_NA = 0, - DATA_SRC_FORMAT_GRT = 1, - DATA_SRC_FORMAT_CMT = 2, -}; - -/* Based on kernel grt_latency_data() and cmt_latency_data */ -static u64 intel_pt_get_data_src(u64 mem_aux_info, int data_src_fmt) -{ - switch (data_src_fmt) { - case DATA_SRC_FORMAT_GRT: { - union { - u64 val; - struct { - unsigned int dse:4; - unsigned int locked:1; - unsigned int stlb_miss:1; - unsigned int fwd_blk:1; - unsigned int reserved:25; - }; - } x = {.val = mem_aux_info}; - return intel_pt_grt_latency_data(x.dse, x.stlb_miss, x.locked, x.fwd_blk, - pebs_data_source_grt); - } - case DATA_SRC_FORMAT_CMT: { - union { - u64 val; - struct { - unsigned int dse:5; - unsigned int locked:1; - unsigned int stlb_miss:1; - unsigned int fwd_blk:1; - unsigned int reserved:24; - }; - } x = {.val = mem_aux_info}; - return intel_pt_grt_latency_data(x.dse, x.stlb_miss, x.locked, x.fwd_blk, - pebs_data_source_cmt); - } - default: - return PERF_MEM_NA; - } -} - -static int intel_pt_do_synth_pebs_sample(struct intel_pt_queue *ptq, struct evsel *evsel, - u64 id, int data_src_fmt) +static int intel_pt_do_synth_pebs_sample(struct intel_pt_queue *ptq, struct evsel *evsel, u64 id) { const struct intel_pt_blk_items *items = &ptq->state->items; struct perf_sample sample = { .ip = 0, }; @@ -2491,18 +2350,6 @@ static int intel_pt_do_synth_pebs_sample(struct intel_pt_queue *ptq, struct evse } } - if (sample_type & PERF_SAMPLE_DATA_SRC) { - if (items->has_mem_aux_info && data_src_fmt) { - if (data_src_fmt < 0) { - pr_err("Intel PT missing data_src info\n"); - return -1; - } - sample.data_src = intel_pt_get_data_src(items->mem_aux_info, data_src_fmt); - } else { - sample.data_src = PERF_MEM_NA; - } - } - if (sample_type & PERF_SAMPLE_TRANSACTION && items->has_tsx_aux_info) { u64 ax = items->has_rax ? items->rax : 0; /* Refer kernel's intel_hsw_transaction() */ @@ -2521,10 +2368,9 @@ static int intel_pt_synth_single_pebs_sample(struct intel_pt_queue *ptq) { struct intel_pt *pt = ptq->pt; struct evsel *evsel = pt->pebs_evsel; - int data_src_fmt = pt->pebs_data_src_fmt; u64 id = evsel->core.id[0]; - return intel_pt_do_synth_pebs_sample(ptq, evsel, id, data_src_fmt); + return intel_pt_do_synth_pebs_sample(ptq, evsel, id); } static int intel_pt_synth_pebs_sample(struct intel_pt_queue *ptq) @@ -2549,7 +2395,7 @@ static int intel_pt_synth_pebs_sample(struct intel_pt_queue *ptq) hw_id); return intel_pt_synth_single_pebs_sample(ptq); } - err = intel_pt_do_synth_pebs_sample(ptq, pe->evsel, pe->id, pe->data_src_fmt); + err = intel_pt_do_synth_pebs_sample(ptq, pe->evsel, pe->id); if (err) return err; } @@ -3509,49 +3355,6 @@ static int intel_pt_process_itrace_start(struct intel_pt *pt, event->itrace_start.tid); } -/* - * Events with data_src are identified by L1_Hit_Indication - * refer https://github.com/intel/perfmon - */ -static int intel_pt_data_src_fmt(struct intel_pt *pt, struct evsel *evsel) -{ - struct perf_env *env = pt->machine->env; - int fmt = DATA_SRC_FORMAT_NA; - - if (!env->cpuid) - return DATA_SRC_FORMAT_ERR; - - /* - * PEBS-via-PT is only supported on E-core non-hybrid. Of those only - * Gracemont and Crestmont have data_src. Check for: - * Alderlake N (Gracemont) - * Sierra Forest (Crestmont) - * Grand Ridge (Crestmont) - */ - - if (!strncmp(env->cpuid, "GenuineIntel,6,190,", 19)) - fmt = DATA_SRC_FORMAT_GRT; - - if (!strncmp(env->cpuid, "GenuineIntel,6,175,", 19) || - !strncmp(env->cpuid, "GenuineIntel,6,182,", 19)) - fmt = DATA_SRC_FORMAT_CMT; - - if (fmt == DATA_SRC_FORMAT_NA) - return fmt; - - /* - * Only data_src events are: - * mem-loads event=0xd0,umask=0x5 - * mem-stores event=0xd0,umask=0x6 - */ - if (evsel->core.attr.type == PERF_TYPE_RAW && - ((evsel->core.attr.config & 0xffff) == 0x5d0 || - (evsel->core.attr.config & 0xffff) == 0x6d0)) - return fmt; - - return DATA_SRC_FORMAT_NA; -} - static int intel_pt_process_aux_output_hw_id(struct intel_pt *pt, union perf_event *event, struct perf_sample *sample) @@ -3572,7 +3375,6 @@ static int intel_pt_process_aux_output_hw_id(struct intel_pt *pt, ptq->pebs[hw_id].evsel = evsel; ptq->pebs[hw_id].id = sample->id; - ptq->pebs[hw_id].data_src_fmt = intel_pt_data_src_fmt(pt, evsel); return 0; } @@ -4144,7 +3946,6 @@ static void intel_pt_setup_pebs_events(struct intel_pt *pt) } pt->single_pebs = true; pt->sample_pebs = true; - pt->pebs_data_src_fmt = intel_pt_data_src_fmt(pt, evsel); pt->pebs_evsel = evsel; } } -- Gitee From d79b85f78e6c889940a3f94a4a7d9a4da6db7b4b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:37 +0800 Subject: [PATCH 1006/1421] Revert "perf trace: Fix leaks of 'struct thread' in set_filter_loop_pids()" This reverts commit e77c46e811a7d746d281997917a175983a3422cf. --- tools/perf/builtin-trace.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 908509df007b..12bdbf3ecc6a 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -3589,13 +3589,10 @@ static int trace__set_filter_loop_pids(struct trace *trace) if (!strcmp(thread__comm_str(parent), "sshd") || strstarts(thread__comm_str(parent), "gnome-terminal")) { pids[nr++] = thread__tid(parent); - thread__put(parent); break; } - thread__put(thread); thread = parent; } - thread__put(thread); err = evlist__append_tp_filter_pids(trace->evlist, nr, pids); if (!err && trace->filter_pids.map) -- Gitee From f9506a38f25a54b36ecce8d36696ef4a0a810664 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:38 +0800 Subject: [PATCH 1007/1421] Revert "dm-flakey: make corrupting read bios work" This reverts commit 425a08bb7835a6055950afeb092126c3f6180a3b. --- drivers/md/dm-flakey.c | 54 ++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c index ada679f4fca6..aeb9ecaf9a20 100644 --- a/drivers/md/dm-flakey.c +++ b/drivers/md/dm-flakey.c @@ -47,8 +47,7 @@ enum feature_flag_bits { }; struct per_bio_data { - bool bio_can_corrupt; - struct bvec_iter saved_iter; + bool bio_submitted; }; static int parse_features(struct dm_arg_set *as, struct flakey_c *fc, @@ -340,8 +339,7 @@ static void flakey_map_bio(struct dm_target *ti, struct bio *bio) } static void corrupt_bio_common(struct bio *bio, unsigned int corrupt_bio_byte, - unsigned char corrupt_bio_value, - struct bvec_iter start) + unsigned char corrupt_bio_value) { struct bvec_iter iter; struct bio_vec bvec; @@ -350,7 +348,7 @@ static void corrupt_bio_common(struct bio *bio, unsigned int corrupt_bio_byte, * Overwrite the Nth byte of the bio's data, on whichever page * it falls. */ - __bio_for_each_segment(bvec, bio, iter, start) { + bio_for_each_segment(bvec, bio, iter) { if (bio_iter_len(bio, iter) > corrupt_bio_byte) { unsigned char *segment = bvec_kmap_local(&bvec); segment[corrupt_bio_byte] = corrupt_bio_value; @@ -359,31 +357,36 @@ static void corrupt_bio_common(struct bio *bio, unsigned int corrupt_bio_byte, "(rw=%c bi_opf=%u bi_sector=%llu size=%u)\n", bio, corrupt_bio_value, corrupt_bio_byte, (bio_data_dir(bio) == WRITE) ? 'w' : 'r', bio->bi_opf, - (unsigned long long)start.bi_sector, - start.bi_size); + (unsigned long long)bio->bi_iter.bi_sector, + bio->bi_iter.bi_size); break; } corrupt_bio_byte -= bio_iter_len(bio, iter); } } -static void corrupt_bio_data(struct bio *bio, struct flakey_c *fc, - struct bvec_iter start) +static void corrupt_bio_data(struct bio *bio, struct flakey_c *fc) { unsigned int corrupt_bio_byte = fc->corrupt_bio_byte - 1; - corrupt_bio_common(bio, corrupt_bio_byte, fc->corrupt_bio_value, start); + if (!bio_has_data(bio)) + return; + + corrupt_bio_common(bio, corrupt_bio_byte, fc->corrupt_bio_value); } -static void corrupt_bio_random(struct bio *bio, struct bvec_iter start) +static void corrupt_bio_random(struct bio *bio) { unsigned int corrupt_byte; unsigned char corrupt_value; - corrupt_byte = get_random_u32() % start.bi_size; + if (!bio_has_data(bio)) + return; + + corrupt_byte = get_random_u32() % bio->bi_iter.bi_size; corrupt_value = get_random_u8(); - corrupt_bio_common(bio, corrupt_byte, corrupt_value, start); + corrupt_bio_common(bio, corrupt_byte, corrupt_value); } static void clone_free(struct bio *clone) @@ -478,7 +481,7 @@ static int flakey_map(struct dm_target *ti, struct bio *bio) unsigned int elapsed; struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); - pb->bio_can_corrupt = false; + pb->bio_submitted = false; if (op_is_zone_mgmt(bio_op(bio))) goto map_bio; @@ -487,11 +490,10 @@ static int flakey_map(struct dm_target *ti, struct bio *bio) elapsed = (jiffies - fc->start_time) / HZ; if (elapsed % (fc->up_interval + fc->down_interval) >= fc->up_interval) { bool corrupt_fixed, corrupt_random; - - if (bio_has_data(bio)) { - pb->bio_can_corrupt = true; - pb->saved_iter = bio->bi_iter; - } + /* + * Flag this bio as submitted while down. + */ + pb->bio_submitted = true; /* * Error reads if neither corrupt_bio_byte or drop_writes or error_writes are set. @@ -514,8 +516,6 @@ static int flakey_map(struct dm_target *ti, struct bio *bio) return DM_MAPIO_SUBMITTED; } - if (!pb->bio_can_corrupt) - goto map_bio; /* * Corrupt matching writes. */ @@ -535,11 +535,9 @@ static int flakey_map(struct dm_target *ti, struct bio *bio) struct bio *clone = clone_bio(ti, fc, bio); if (clone) { if (corrupt_fixed) - corrupt_bio_data(clone, fc, - clone->bi_iter); + corrupt_bio_data(clone, fc); if (corrupt_random) - corrupt_bio_random(clone, - clone->bi_iter); + corrupt_bio_random(clone); submit_bio(clone); return DM_MAPIO_SUBMITTED; } @@ -561,21 +559,21 @@ static int flakey_end_io(struct dm_target *ti, struct bio *bio, if (op_is_zone_mgmt(bio_op(bio))) return DM_ENDIO_DONE; - if (!*error && pb->bio_can_corrupt && (bio_data_dir(bio) == READ)) { + if (!*error && pb->bio_submitted && (bio_data_dir(bio) == READ)) { if (fc->corrupt_bio_byte) { if ((fc->corrupt_bio_rw == READ) && all_corrupt_bio_flags_match(bio, fc)) { /* * Corrupt successful matching READs while in down state. */ - corrupt_bio_data(bio, fc, pb->saved_iter); + corrupt_bio_data(bio, fc); } } if (fc->random_read_corrupt) { u64 rnd = get_random_u64(); u32 rem = do_div(rnd, PROBABILITY_BASE); if (rem < fc->random_read_corrupt) - corrupt_bio_random(bio, pb->saved_iter); + corrupt_bio_random(bio); } if (test_bit(ERROR_READS, &fc->flags)) { /* -- Gitee From c7c2185172851c3c0b9ebe18e1a4aa1c66c508af Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:38 +0800 Subject: [PATCH 1008/1421] Revert "dm-flakey: error all IOs when num_features is absent" This reverts commit 032bfde3aecdf6418a2c914e62616becf44f164b. --- drivers/md/dm-flakey.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c index aeb9ecaf9a20..dc491dc771d7 100644 --- a/drivers/md/dm-flakey.c +++ b/drivers/md/dm-flakey.c @@ -53,8 +53,8 @@ struct per_bio_data { static int parse_features(struct dm_arg_set *as, struct flakey_c *fc, struct dm_target *ti) { - int r = 0; - unsigned int argc = 0; + int r; + unsigned int argc; const char *arg_name; static const struct dm_arg _args[] = { @@ -65,12 +65,13 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc, {0, PROBABILITY_BASE, "Invalid random corrupt argument"}, }; - if (as->argc && (r = dm_read_arg_group(_args, as, &argc, &ti->error))) - return r; - /* No feature arguments supplied. */ - if (!argc) - goto error_all_io; + if (!as->argc) + return 0; + + r = dm_read_arg_group(_args, as, &argc, &ti->error); + if (r) + return r; while (argc) { arg_name = dm_shift_arg(as); @@ -216,7 +217,6 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc, if (!fc->corrupt_bio_byte && !test_bit(ERROR_READS, &fc->flags) && !test_bit(DROP_WRITES, &fc->flags) && !test_bit(ERROR_WRITES, &fc->flags) && !fc->random_read_corrupt && !fc->random_write_corrupt) { -error_all_io: set_bit(ERROR_WRITES, &fc->flags); set_bit(ERROR_READS, &fc->flags); } -- Gitee From f228a26a7d18d8f2ba8b7a65ad99867e2d13f840 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:38 +0800 Subject: [PATCH 1009/1421] Revert "hwmon: (asus-ec-sensors) check sensor index in read_string()" This reverts commit 6399b33f474972be5246b7c58d553e610ea07b59. --- drivers/hwmon/asus-ec-sensors.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/hwmon/asus-ec-sensors.c b/drivers/hwmon/asus-ec-sensors.c index ce2f14a62754..f20b864c1bb2 100644 --- a/drivers/hwmon/asus-ec-sensors.c +++ b/drivers/hwmon/asus-ec-sensors.c @@ -888,10 +888,6 @@ static int asus_ec_hwmon_read_string(struct device *dev, { struct ec_sensors_data *state = dev_get_drvdata(dev); int sensor_index = find_ec_sensor_index(state, type, channel); - - if (sensor_index < 0) - return sensor_index; - *str = get_sensor_info(state, sensor_index)->label; return 0; -- Gitee From acafd901e1bbdcdd4a304309f948c5655c618b01 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:38 +0800 Subject: [PATCH 1010/1421] Revert "mtd: nand: ecc-mxic: Fix use of uninitialized variable ret" This reverts commit 5ca6f13115c92cfdd26eeefe810aa0c3bf87d33a. --- drivers/mtd/nand/ecc-mxic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mtd/nand/ecc-mxic.c b/drivers/mtd/nand/ecc-mxic.c index 63cb206269dd..47e10945b8d2 100644 --- a/drivers/mtd/nand/ecc-mxic.c +++ b/drivers/mtd/nand/ecc-mxic.c @@ -614,7 +614,7 @@ static int mxic_ecc_finish_io_req_external(struct nand_device *nand, { struct mxic_ecc_engine *mxic = nand_to_mxic(nand); struct mxic_ecc_ctx *ctx = nand_to_ecc_ctx(nand); - int nents, step, ret = 0; + int nents, step, ret; if (req->mode == MTD_OPS_RAW) return 0; -- Gitee From 3f9ad84aae2783a0a39ccf8e9dfbe1f82772a1f2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:39 +0800 Subject: [PATCH 1011/1421] Revert "backlight: pm8941: Add NULL check in wled_configure()" This reverts commit dd8a62ac6300e785faa26c3f24cc785b48d99ac2. --- drivers/video/backlight/qcom-wled.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c index b19e5f73de8b..10129095a4c1 100644 --- a/drivers/video/backlight/qcom-wled.c +++ b/drivers/video/backlight/qcom-wled.c @@ -1406,11 +1406,9 @@ static int wled_configure(struct wled *wled) wled->ctrl_addr = be32_to_cpu(*prop_addr); rc = of_property_read_string(dev->of_node, "label", &wled->name); - if (rc) { + if (rc) wled->name = devm_kasprintf(dev, GFP_KERNEL, "%pOFn", dev->of_node); - if (!wled->name) - return -ENOMEM; - } + switch (wled->version) { case 3: u32_opts = wled3_opts; -- Gitee From 2b9166acdf1efbb66fde32c5fab953a4b2eb9055 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:39 +0800 Subject: [PATCH 1012/1421] Revert "dm: free table mempools if not used in __bind" This reverts commit 9e9f9e49a3b5dad2824b15cd29314a334412d197. --- drivers/md/dm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 44424554e6b5..d154c89305fb 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -2235,10 +2235,10 @@ static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t, * requests in the queue may refer to bio from the old bioset, * so you must walk through the queue to unprep. */ - if (!md->mempools) + if (!md->mempools) { md->mempools = t->mempools; - else - dm_free_md_mempools(t->mempools); + t->mempools = NULL; + } } else { /* * The md may already have mempools that need changing. @@ -2247,8 +2247,8 @@ static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t, */ dm_free_md_mempools(md->mempools); md->mempools = t->mempools; + t->mempools = NULL; } - t->mempools = NULL; old_map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock)); rcu_assign_pointer(md->map, (void *)t); -- Gitee From 86457f32635f7dc77dba75172d1be1d159ce925b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:39 +0800 Subject: [PATCH 1013/1421] Revert "dm: don't change md if dm_table_set_restrictions() fails" This reverts commit fe81eed8b20bfd9b12689cf831c64d188f0e5d2a. --- drivers/md/dm.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/md/dm.c b/drivers/md/dm.c index d154c89305fb..9ea868bd0d12 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -2195,29 +2195,21 @@ static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t, struct queue_limits *limits) { struct dm_table *old_map; - sector_t size, old_size; + sector_t size; int ret; lockdep_assert_held(&md->suspend_lock); size = dm_table_get_size(t); - old_size = dm_get_size(md); - set_capacity(md->disk, size); - - ret = dm_table_set_restrictions(t, md->queue, limits); - if (ret) { - set_capacity(md->disk, old_size); - old_map = ERR_PTR(ret); - goto out; - } - /* * Wipe any geometry if the size of the table changed. */ - if (size != old_size) + if (size != dm_get_size(md)) memset(&md->geometry, 0, sizeof(md->geometry)); + set_capacity(md->disk, size); + dm_table_event_callback(t, event_callback, md); if (dm_table_request_based(t)) { @@ -2250,6 +2242,12 @@ static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t, t->mempools = NULL; } + ret = dm_table_set_restrictions(t, md->queue, limits); + if (ret) { + old_map = ERR_PTR(ret); + goto out; + } + old_map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock)); rcu_assign_pointer(md->map, (void *)t); md->immutable_target_type = dm_table_get_immutable_target_type(t); -- Gitee From 2b1b45dea3e5dca3dfb4fee68fa7cb5dcd71546e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:39 +0800 Subject: [PATCH 1014/1421] Revert "perf ui browser hists: Set actions->thread before calling do_zoom_thread()" This reverts commit 24a2c6239832d4221c7e27abf03a3fdf853d447a. --- tools/perf/ui/browsers/hists.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index a53a0257a4bc..bb59d27642cc 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -3239,10 +3239,10 @@ static int evsel__hists_browse(struct evsel *evsel, int nr_events, const char *h /* * No need to set actions->dso here since * it's just to remove the current filter. + * Ditto for thread below. */ do_zoom_dso(browser, actions); } else if (top == &browser->hists->thread_filter) { - actions->thread = thread; do_zoom_thread(browser, actions); } else if (top == &browser->hists->socket_filter) { do_zoom_socket(browser, actions); -- Gitee From da82d9cef9b0a2d86be248bc21860538baf4dbe6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:39 +0800 Subject: [PATCH 1015/1421] Revert "perf build: Warn when libdebuginfod devel files are not available" This reverts commit 50c2725ba963659238dff1921e91bc8cfb0cbfea. --- tools/perf/Makefile.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index 9da9f878f50f..d66b52407e19 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -554,8 +554,6 @@ ifndef NO_LIBELF ifeq ($(feature-libdebuginfod), 1) CFLAGS += -DHAVE_DEBUGINFOD_SUPPORT EXTLIBS += -ldebuginfod - else - $(warning No elfutils/debuginfod.h found, no debuginfo server support, please install libdebuginfod-dev/elfutils-debuginfod-client-devel or equivalent) endif endif -- Gitee From 516110decabc4dd0358b4c058f9ef0274d43c669 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:40 +0800 Subject: [PATCH 1016/1421] Revert "randstruct: gcc-plugin: Fix attribute addition" This reverts commit c69ee56fbe9ead90cc0e38dc6158f430166c8bc6. --- scripts/gcc-plugins/gcc-common.h | 32 ------------------- scripts/gcc-plugins/randomize_layout_plugin.c | 22 ++++++------- 2 files changed, 11 insertions(+), 43 deletions(-) diff --git a/scripts/gcc-plugins/gcc-common.h b/scripts/gcc-plugins/gcc-common.h index 90e83d62adb5..1ae39b9f4a95 100644 --- a/scripts/gcc-plugins/gcc-common.h +++ b/scripts/gcc-plugins/gcc-common.h @@ -128,38 +128,6 @@ static inline tree build_const_char_string(int len, const char *str) return cstr; } -static inline void __add_type_attr(tree type, const char *attr, tree args) -{ - tree oldattr; - - if (type == NULL_TREE) - return; - oldattr = lookup_attribute(attr, TYPE_ATTRIBUTES(type)); - if (oldattr != NULL_TREE) { - gcc_assert(TREE_VALUE(oldattr) == args || TREE_VALUE(TREE_VALUE(oldattr)) == TREE_VALUE(args)); - return; - } - - TYPE_ATTRIBUTES(type) = copy_list(TYPE_ATTRIBUTES(type)); - TYPE_ATTRIBUTES(type) = tree_cons(get_identifier(attr), args, TYPE_ATTRIBUTES(type)); -} - -static inline void add_type_attr(tree type, const char *attr, tree args) -{ - tree main_variant = TYPE_MAIN_VARIANT(type); - - __add_type_attr(TYPE_CANONICAL(type), attr, args); - __add_type_attr(TYPE_CANONICAL(main_variant), attr, args); - __add_type_attr(main_variant, attr, args); - - for (type = TYPE_NEXT_VARIANT(main_variant); type; type = TYPE_NEXT_VARIANT(type)) { - if (!lookup_attribute(attr, TYPE_ATTRIBUTES(type))) - TYPE_ATTRIBUTES(type) = TYPE_ATTRIBUTES(main_variant); - - __add_type_attr(TYPE_CANONICAL(type), attr, args); - } -} - #define PASS_INFO(NAME, REF, ID, POS) \ struct register_pass_info NAME##_pass_info = { \ .pass = make_##NAME##_pass(), \ diff --git a/scripts/gcc-plugins/randomize_layout_plugin.c b/scripts/gcc-plugins/randomize_layout_plugin.c index e70eef049ada..bb8c6631971d 100644 --- a/scripts/gcc-plugins/randomize_layout_plugin.c +++ b/scripts/gcc-plugins/randomize_layout_plugin.c @@ -77,9 +77,6 @@ static tree handle_randomize_layout_attr(tree *node, tree name, tree args, int f if (TYPE_P(*node)) { type = *node; - } else if (TREE_CODE(*node) == FIELD_DECL) { - *no_add_attrs = false; - return NULL_TREE; } else { gcc_assert(TREE_CODE(*node) == TYPE_DECL); type = TREE_TYPE(*node); @@ -355,14 +352,15 @@ static int relayout_struct(tree type) TREE_CHAIN(newtree[i]) = newtree[i+1]; TREE_CHAIN(newtree[num_fields - 1]) = NULL_TREE; - add_type_attr(type, "randomize_performed", NULL_TREE); - add_type_attr(type, "designated_init", NULL_TREE); - if (has_flexarray) - add_type_attr(type, "has_flexarray", NULL_TREE); - main_variant = TYPE_MAIN_VARIANT(type); - for (variant = main_variant; variant; variant = TYPE_NEXT_VARIANT(variant)) + for (variant = main_variant; variant; variant = TYPE_NEXT_VARIANT(variant)) { TYPE_FIELDS(variant) = newtree[0]; + TYPE_ATTRIBUTES(variant) = copy_list(TYPE_ATTRIBUTES(variant)); + TYPE_ATTRIBUTES(variant) = tree_cons(get_identifier("randomize_performed"), NULL_TREE, TYPE_ATTRIBUTES(variant)); + TYPE_ATTRIBUTES(variant) = tree_cons(get_identifier("designated_init"), NULL_TREE, TYPE_ATTRIBUTES(variant)); + if (has_flexarray) + TYPE_ATTRIBUTES(type) = tree_cons(get_identifier("has_flexarray"), NULL_TREE, TYPE_ATTRIBUTES(type)); + } /* * force a re-layout of the main variant @@ -430,8 +428,10 @@ static void randomize_type(tree type) if (lookup_attribute("randomize_layout", TYPE_ATTRIBUTES(TYPE_MAIN_VARIANT(type))) || is_pure_ops_struct(type)) relayout_struct(type); - add_type_attr(type, "randomize_considered", NULL_TREE); - + for (variant = TYPE_MAIN_VARIANT(type); variant; variant = TYPE_NEXT_VARIANT(variant)) { + TYPE_ATTRIBUTES(type) = copy_list(TYPE_ATTRIBUTES(type)); + TYPE_ATTRIBUTES(type) = tree_cons(get_identifier("randomize_considered"), NULL_TREE, TYPE_ATTRIBUTES(type)); + } #ifdef __DEBUG_PLUGIN fprintf(stderr, "Marking randomize_considered on struct %s\n", ORIG_TYPE_NAME(type)); #ifdef __DEBUG_VERBOSE -- Gitee From cf4a3f4113995dfb95f09847cd0041b5c2835769 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:40 +0800 Subject: [PATCH 1017/1421] Revert "randstruct: gcc-plugin: Remove bogus void member" This reverts commit b136c6c4d6a576811cf84f29224010c023786f1c. --- scripts/gcc-plugins/randomize_layout_plugin.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/scripts/gcc-plugins/randomize_layout_plugin.c b/scripts/gcc-plugins/randomize_layout_plugin.c index bb8c6631971d..746ff2d272f2 100644 --- a/scripts/gcc-plugins/randomize_layout_plugin.c +++ b/scripts/gcc-plugins/randomize_layout_plugin.c @@ -348,13 +348,29 @@ static int relayout_struct(tree type) shuffle(type, (tree *)newtree, shuffle_length); + /* + * set up a bogus anonymous struct field designed to error out on unnamed struct initializers + * as gcc provides no other way to detect such code + */ + list = make_node(FIELD_DECL); + TREE_CHAIN(list) = newtree[0]; + TREE_TYPE(list) = void_type_node; + DECL_SIZE(list) = bitsize_zero_node; + DECL_NONADDRESSABLE_P(list) = 1; + DECL_FIELD_BIT_OFFSET(list) = bitsize_zero_node; + DECL_SIZE_UNIT(list) = size_zero_node; + DECL_FIELD_OFFSET(list) = size_zero_node; + DECL_CONTEXT(list) = type; + // to satisfy the constify plugin + TREE_READONLY(list) = 1; + for (i = 0; i < num_fields - 1; i++) TREE_CHAIN(newtree[i]) = newtree[i+1]; TREE_CHAIN(newtree[num_fields - 1]) = NULL_TREE; main_variant = TYPE_MAIN_VARIANT(type); for (variant = main_variant; variant; variant = TYPE_NEXT_VARIANT(variant)) { - TYPE_FIELDS(variant) = newtree[0]; + TYPE_FIELDS(variant) = list; TYPE_ATTRIBUTES(variant) = copy_list(TYPE_ATTRIBUTES(variant)); TYPE_ATTRIBUTES(variant) = tree_cons(get_identifier("randomize_performed"), NULL_TREE, TYPE_ATTRIBUTES(variant)); TYPE_ATTRIBUTES(variant) = tree_cons(get_identifier("designated_init"), NULL_TREE, TYPE_ATTRIBUTES(variant)); -- Gitee From 854358645dae73d04fdbba0d9192e4ddddd5c800 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:40 +0800 Subject: [PATCH 1018/1421] Revert "fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod()" This reverts commit 00a84386ef45dcb1c37d77e26b1a10bbd3199885. --- drivers/video/fbdev/core/fbcvt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/fbdev/core/fbcvt.c b/drivers/video/fbdev/core/fbcvt.c index cd3821bd82e5..64843464c661 100644 --- a/drivers/video/fbdev/core/fbcvt.c +++ b/drivers/video/fbdev/core/fbcvt.c @@ -312,7 +312,7 @@ int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb) cvt.f_refresh = cvt.refresh; cvt.interlace = 1; - if (!cvt.xres || !cvt.yres || !cvt.refresh || cvt.f_refresh > INT_MAX) { + if (!cvt.xres || !cvt.yres || !cvt.refresh) { printk(KERN_INFO "fbcvt: Invalid input parameters\n"); return 1; } -- Gitee From e220f0d934c2c1fafb26a21bae3707cd4fec1b34 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:40 +0800 Subject: [PATCH 1019/1421] Revert "soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop()" This reverts commit 380ae85e289b65aec60fe5c52af743bfe8d62e6a. --- drivers/soc/aspeed/aspeed-lpc-snoop.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c index 0f2ffee321dd..8cb3a0b4692c 100644 --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c @@ -200,15 +200,11 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, lpc_snoop->chan[channel].miscdev.minor = MISC_DYNAMIC_MINOR; lpc_snoop->chan[channel].miscdev.name = devm_kasprintf(dev, GFP_KERNEL, "%s%d", DEVICE_NAME, channel); - if (!lpc_snoop->chan[channel].miscdev.name) { - rc = -ENOMEM; - goto err_free_fifo; - } lpc_snoop->chan[channel].miscdev.fops = &snoop_fops; lpc_snoop->chan[channel].miscdev.parent = dev; rc = misc_register(&lpc_snoop->chan[channel].miscdev); if (rc) - goto err_free_fifo; + return rc; /* Enable LPC snoop channel at requested port */ switch (channel) { @@ -225,8 +221,7 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, hicrb_en = HICRB_ENSNP1D; break; default: - rc = -EINVAL; - goto err_misc_deregister; + return -EINVAL; } regmap_update_bits(lpc_snoop->regmap, HICR5, hicr5_en, hicr5_en); @@ -236,12 +231,6 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, regmap_update_bits(lpc_snoop->regmap, HICRB, hicrb_en, hicrb_en); - return 0; - -err_misc_deregister: - misc_deregister(&lpc_snoop->chan[channel].miscdev); -err_free_fifo: - kfifo_free(&lpc_snoop->chan[channel].fifo); return rc; } -- Gitee From d9a0748a9c8f2f7d4b5b7b654b02f157af452728 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:40 +0800 Subject: [PATCH 1020/1421] Revert "soc: aspeed: lpc: Fix impossible judgment condition" This reverts commit b8d32a74f1b3ff48e17e35b4db1155cf29a8c782. --- drivers/soc/aspeed/aspeed-lpc-snoop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c index 8cb3a0b4692c..773dbcbc03a6 100644 --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c @@ -166,7 +166,7 @@ static int aspeed_lpc_snoop_config_irq(struct aspeed_lpc_snoop *lpc_snoop, int rc; lpc_snoop->irq = platform_get_irq(pdev, 0); - if (lpc_snoop->irq < 0) + if (!lpc_snoop->irq) return -ENODEV; rc = devm_request_irq(dev, lpc_snoop->irq, -- Gitee From 9e849acc96a74846a34a9660edaedd10d36b3eeb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:41 +0800 Subject: [PATCH 1021/1421] Revert "ARM: aspeed: Don't select SRAM" This reverts commit 8a5e5742b55ace9537bea99cb55b170d045c54d4. --- arch/arm/mach-aspeed/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/mach-aspeed/Kconfig b/arch/arm/mach-aspeed/Kconfig index fcf287edd0e5..080019aa6fcd 100644 --- a/arch/arm/mach-aspeed/Kconfig +++ b/arch/arm/mach-aspeed/Kconfig @@ -2,6 +2,7 @@ menuconfig ARCH_ASPEED bool "Aspeed BMC architectures" depends on (CPU_LITTLE_ENDIAN && ARCH_MULTI_V5) || ARCH_MULTI_V6 || ARCH_MULTI_V7 + select SRAM select WATCHDOG select ASPEED_WATCHDOG select MFD_SYSCON -- Gitee From 0d45586ff4725f75444e129eb2315b355bf2b232 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:41 +0800 Subject: [PATCH 1022/1421] Revert "arm64: dts: mt6359: Rename RTC node to match binding expectations" This reverts commit 6aa0cd02b9fb6af628a2fa476360fcaf656c22dc. --- arch/arm64/boot/dts/mediatek/mt6359.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/mediatek/mt6359.dtsi b/arch/arm64/boot/dts/mediatek/mt6359.dtsi index 779d6dfb55c0..57af3e789984 100644 --- a/arch/arm64/boot/dts/mediatek/mt6359.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt6359.dtsi @@ -298,7 +298,7 @@ mt6359_vsram_others_sshub_ldo: ldo_vsram_others_sshub { }; }; - mt6359rtc: rtc { + mt6359rtc: mt6359rtc { compatible = "mediatek,mt6358-rtc"; }; }; -- Gitee From b8cf20c347f31a82f2cab7fb900878f5a06737e7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:41 +0800 Subject: [PATCH 1023/1421] Revert "arm64: dts: renesas: white-hawk-ard-audio: Fix TPU0 groups" This reverts commit 497e07a9ed3518045f62783aef303afc2d0c2031. --- .../boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso b/arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso index 99f62574bc3c..e6f53377ecd9 100644 --- a/arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso +++ b/arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso @@ -108,7 +108,7 @@ sound_clk_pins: sound-clk { }; tpu0_pins: tpu0 { - groups = "tpu_to0_b"; + groups = "tpu_to0_a"; function = "tpu"; }; }; -- Gitee From 00b92ca4ef281d7380b1cdb81aa2ee4756e3cd34 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:41 +0800 Subject: [PATCH 1024/1421] Revert "arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou" This reverts commit cf198455a5f9cbc133321cb07f82c9b748961550. --- arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts index 396a6636073b..115c14c0a3c6 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts @@ -251,6 +251,14 @@ &uart2 { status = "okay"; }; +&usb_host0_ehci { + status = "okay"; +}; + +&usb_host0_ohci { + status = "okay"; +}; + &vopb { status = "okay"; }; -- Gitee From 79992dc0a503e307a38bf8b56e80024db789ea4e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:41 +0800 Subject: [PATCH 1025/1421] Revert "arm64: defconfig: mediatek: enable PHY drivers" This reverts commit faa5a1b3491d9bba6f5cb1da4503ca4c3d60d33e. --- arch/arm64/configs/defconfig | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index a4fc913d1e49..60af93c04b45 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -1412,9 +1412,6 @@ CONFIG_PHY_HISTB_COMBPHY=y CONFIG_PHY_HISI_INNO_USB2=y CONFIG_PHY_MVEBU_CP110_COMPHY=y CONFIG_PHY_MTK_TPHY=y -CONFIG_PHY_MTK_HDMI=m -CONFIG_PHY_MTK_MIPI_DSI=m -CONFIG_PHY_MTK_DP=m CONFIG_PHY_QCOM_EDP=m CONFIG_PHY_QCOM_EUSB2_REPEATER=m CONFIG_PHY_QCOM_PCIE2=m -- Gitee From 07051cc5d192fc90dfb157c49cd24fdcb622f710 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:41 +0800 Subject: [PATCH 1026/1421] Revert "ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device" This reverts commit 752e0af249387a824e78187dc30936a25cf6878a. --- arch/arm/boot/dts/qcom/qcom-apq8064.dtsi | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi index b8f160cfe8e1..06251aba80d8 100644 --- a/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi @@ -213,6 +213,12 @@ sleep_clk: sleep_clk { }; }; + sfpb_mutex: hwmutex { + compatible = "qcom,sfpb-mutex"; + syscon = <&sfpb_wrapper_mutex 0x604 0x4>; + #hwlock-cells = <1>; + }; + smem { compatible = "qcom,smem"; memory-region = <&smem_region>; @@ -316,10 +322,9 @@ tlmm_pinmux: pinctrl@800000 { pinctrl-0 = <&ps_hold>; }; - sfpb_mutex: hwmutex@1200600 { - compatible = "qcom,sfpb-mutex"; - reg = <0x01200600 0x100>; - #hwlock-cells = <1>; + sfpb_wrapper_mutex: syscon@1200000 { + compatible = "syscon"; + reg = <0x01200000 0x8000>; }; intc: interrupt-controller@2000000 { -- Gitee From 27023e92922b6400c8a077fe2c332be0bd53a835 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:42 +0800 Subject: [PATCH 1027/1421] Revert "ARM: dts: qcom: apq8064: add missing clocks to the timer node" This reverts commit b2cd373f14d24b5e3a59b56489ca92cf6970d2b8. --- arch/arm/boot/dts/qcom/qcom-apq8064.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi index 06251aba80d8..950adb63af70 100644 --- a/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi @@ -343,8 +343,6 @@ timer@200a000 { <1 3 0x301>; reg = <0x0200a000 0x100>; clock-frequency = <27000000>; - clocks = <&sleep_clk>; - clock-names = "sleep"; cpu-offset = <0x80000>; }; -- Gitee From 0a751a7eb1c76a52d85a582513a5ce49c8dab7aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:42 +0800 Subject: [PATCH 1028/1421] Revert "dt-bindings: vendor-prefixes: Add Liontron name" This reverts commit 4b66364be8ab30cc08bf81bba8cb4c5462a2f5d6. --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 7376a924e9ac..dc275ab60e53 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -773,8 +773,6 @@ patternProperties: description: Linux-specific binding "^linx,.*": description: Linx Technologies - "^liontron,.*": - description: Shenzhen Liontron Technology Co., Ltd "^liteon,.*": description: LITE-ON Technology Corp. "^litex,.*": -- Gitee From b5fb33ff7ca058ed628063fe2d009afba85bdb8e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:42 +0800 Subject: [PATCH 1029/1421] Revert "bus: fsl-mc: fix double-free on mc_dev" This reverts commit f3b4dfb5fdca934f90b82274ef702eb634945909. --- drivers/bus/fsl-mc/fsl-mc-bus.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c b/drivers/bus/fsl-mc/fsl-mc-bus.c index b405ee330af1..2f6d5002e43d 100644 --- a/drivers/bus/fsl-mc/fsl-mc-bus.c +++ b/drivers/bus/fsl-mc/fsl-mc-bus.c @@ -905,10 +905,8 @@ int fsl_mc_device_add(struct fsl_mc_obj_desc *obj_desc, error_cleanup_dev: kfree(mc_dev->regions); - if (mc_bus) - kfree(mc_bus); - else - kfree(mc_dev); + kfree(mc_bus); + kfree(mc_dev); return error; } -- Gitee From 49932ee9924c02196aa51a8b28c7e5d8d63dca54 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:42 +0800 Subject: [PATCH 1030/1421] Revert "nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()" This reverts commit 1a7f4cada8199cb10fd6c5c7c2449693513e351c. --- fs/nilfs2/btree.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index 5e70a3478afe..dbd27a44632f 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c @@ -2094,13 +2094,11 @@ static int nilfs_btree_propagate(struct nilfs_bmap *btree, ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); if (ret < 0) { - if (unlikely(ret == -ENOENT)) { + if (unlikely(ret == -ENOENT)) nilfs_crit(btree->b_inode->i_sb, "writing node/leaf block does not appear in b-tree (ino=%lu) at key=%llu, level=%d", btree->b_inode->i_ino, (unsigned long long)key, level); - ret = -EINVAL; - } goto out; } -- Gitee From 04327a845c67baabdbd0e3d5c785651eebd2009e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:43 +0800 Subject: [PATCH 1031/1421] Revert "nilfs2: add pointer check for nilfs_direct_propagate()" This reverts commit 8d91728136c69882a5e14c1942d26a390f25f2da. --- fs/nilfs2/direct.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/fs/nilfs2/direct.c b/fs/nilfs2/direct.c index 2d8dc6b35b54..893ab36824cc 100644 --- a/fs/nilfs2/direct.c +++ b/fs/nilfs2/direct.c @@ -273,9 +273,6 @@ static int nilfs_direct_propagate(struct nilfs_bmap *bmap, dat = nilfs_bmap_get_dat(bmap); key = nilfs_bmap_data_get_key(bmap, bh); ptr = nilfs_direct_get_ptr(bmap, key); - if (ptr == NILFS_BMAP_INVALID_PTR) - return -EINVAL; - if (!buffer_nilfs_volatile(bh)) { oldreq.pr_entry_nr = ptr; newreq.pr_entry_nr = ptr; -- Gitee From 1af8eff76df370db37a02bdfd7090b4e36644ca3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:43 +0800 Subject: [PATCH 1032/1421] Revert "ocfs2: fix possible memory leak in ocfs2_finish_quota_recovery" This reverts commit 6eb7bf2e18d2799db09a5dfa1bd4fa4712f3b976. --- fs/ocfs2/quota_local.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c index c7bda48b5fb2..0ca8975a1df4 100644 --- a/fs/ocfs2/quota_local.c +++ b/fs/ocfs2/quota_local.c @@ -671,7 +671,7 @@ int ocfs2_finish_quota_recovery(struct ocfs2_super *osb, break; } out: - ocfs2_free_quota_recovery(rec); + kfree(rec); return status; } -- Gitee From f8a784f30db91f11ccb97e71ea09232558fc3053 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:43 +0800 Subject: [PATCH 1033/1421] Revert "Squashfs: check return result of sb_min_blocksize" This reverts commit d1037ae3673b672cb79960d89451ea7da77abc68. --- fs/squashfs/super.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index 3a27d4268b3c..22e812808e5c 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c @@ -202,11 +202,6 @@ static int squashfs_fill_super(struct super_block *sb, struct fs_context *fc) msblk->panic_on_errors = (opts->errors == Opt_errors_panic); msblk->devblksize = sb_min_blocksize(sb, SQUASHFS_DEVBLK_SIZE); - if (!msblk->devblksize) { - errorf(fc, "squashfs: unable to set blocksize\n"); - return -EINVAL; - } - msblk->devblksize_log2 = ffz(~msblk->devblksize); mutex_init(&msblk->meta_index_mutex); -- Gitee From c6f37669eb1a2f2bfcdde0471fce175f780db180 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:43 +0800 Subject: [PATCH 1034/1421] Revert "arm64: dts: ti: k3-j721e-common-proc-board: Enable OSPI1 on J721E" This reverts commit 90a4e5007ac1342861c0235c44d85847a6e0582d. --- arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts index 90ae8e948671..fe5207ac7d85 100644 --- a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +++ b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts @@ -557,7 +557,6 @@ &usb1 { &ospi1 { pinctrl-names = "default"; pinctrl-0 = <&mcu_fss0_ospi1_pins_default>; - status = "okay"; flash@0 { compatible = "jedec,spi-nor"; -- Gitee From c8b44e39f3c76a031ef7ee252e7d13e65b6ee369 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:43 +0800 Subject: [PATCH 1035/1421] Revert "arm64: tegra: Drop remaining serial clock-names and reset-names" This reverts commit 807451fcd3bf30e3db5baf014c764e7bf6328f08. --- arch/arm64/boot/dts/nvidia/tegra186.dtsi | 12 ++++++++++++ arch/arm64/boot/dts/nvidia/tegra194.dtsi | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/arch/arm64/boot/dts/nvidia/tegra186.dtsi b/arch/arm64/boot/dts/nvidia/tegra186.dtsi index f0b7949df92c..2b3bb5d0af17 100644 --- a/arch/arm64/boot/dts/nvidia/tegra186.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra186.dtsi @@ -621,7 +621,9 @@ uartb: serial@3110000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA186_CLK_UARTB>; + clock-names = "serial"; resets = <&bpmp TEGRA186_RESET_UARTB>; + reset-names = "serial"; status = "disabled"; }; @@ -631,7 +633,9 @@ uartd: serial@3130000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA186_CLK_UARTD>; + clock-names = "serial"; resets = <&bpmp TEGRA186_RESET_UARTD>; + reset-names = "serial"; status = "disabled"; }; @@ -641,7 +645,9 @@ uarte: serial@3140000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA186_CLK_UARTE>; + clock-names = "serial"; resets = <&bpmp TEGRA186_RESET_UARTE>; + reset-names = "serial"; status = "disabled"; }; @@ -651,7 +657,9 @@ uartf: serial@3150000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA186_CLK_UARTF>; + clock-names = "serial"; resets = <&bpmp TEGRA186_RESET_UARTF>; + reset-names = "serial"; status = "disabled"; }; @@ -1228,7 +1236,9 @@ uartc: serial@c280000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA186_CLK_UARTC>; + clock-names = "serial"; resets = <&bpmp TEGRA186_RESET_UARTC>; + reset-names = "serial"; status = "disabled"; }; @@ -1238,7 +1248,9 @@ uartg: serial@c290000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA186_CLK_UARTG>; + clock-names = "serial"; resets = <&bpmp TEGRA186_RESET_UARTG>; + reset-names = "serial"; status = "disabled"; }; diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi index c36950774785..33f92b77cd9d 100644 --- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi @@ -766,7 +766,9 @@ uartd: serial@3130000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTD>; + clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTD>; + reset-names = "serial"; status = "disabled"; }; @@ -776,7 +778,9 @@ uarte: serial@3140000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTE>; + clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTE>; + reset-names = "serial"; status = "disabled"; }; @@ -786,7 +790,9 @@ uartf: serial@3150000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTF>; + clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTF>; + reset-names = "serial"; status = "disabled"; }; @@ -811,7 +817,9 @@ uarth: serial@3170000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTH>; + clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTH>; + reset-names = "serial"; status = "disabled"; }; @@ -1608,7 +1616,9 @@ uartc: serial@c280000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTC>; + clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTC>; + reset-names = "serial"; status = "disabled"; }; @@ -1618,7 +1628,9 @@ uartg: serial@c290000 { reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTG>; + clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTG>; + reset-names = "serial"; status = "disabled"; }; -- Gitee From d135888b493274bb141b0fa5af5f299e56de55aa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:44 +0800 Subject: [PATCH 1036/1421] Revert "arm64: dts: rockchip: Update eMMC for NanoPi R5 series" This reverts commit c37eaa265c065559822f11c1e60493dfc923b576. --- arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dtsi | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dtsi index c30354268c8f..93189f830640 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dtsi @@ -486,12 +486,9 @@ &saradc { &sdhci { bus-width = <8>; max-frequency = <200000000>; - mmc-hs200-1_8v; non-removable; pinctrl-names = "default"; - pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; - vmmc-supply = <&vcc_3v3>; - vqmmc-supply = <&vcc_1v8>; + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; status = "okay"; }; -- Gitee From ed256addd1b1fb29b3c3a27a9425018078cf7180 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:44 +0800 Subject: [PATCH 1037/1421] Revert "arm64: dts: qcom: sda660-ifc6560: Fix dt-validate warning" This reverts commit cf016b943a1283615f6ce32ed8be8d37abbd36f7. --- arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts b/arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts index d687cfadee6a..2ed39d402d3f 100644 --- a/arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts +++ b/arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts @@ -155,7 +155,6 @@ &blsp1_dma { * BAM DMA interconnects support is in place. */ /delete-property/ clocks; - /delete-property/ clock-names; }; &blsp1_uart2 { @@ -168,7 +167,6 @@ &blsp2_dma { * BAM DMA interconnects support is in place. */ /delete-property/ clocks; - /delete-property/ clock-names; }; &blsp2_uart1 { -- Gitee From a0d0d9f445ce98e3980a6773923b16d68c0e4cc3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:44 +0800 Subject: [PATCH 1038/1421] Revert "arm64: dts: qcom: sdm660-lavender: Add missing USB phy supply" This reverts commit bf52e057b9d48b4ace892f71f2b51170686b50db. --- arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts index 8221da390e1a..ec4245bbfffa 100644 --- a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts +++ b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts @@ -107,7 +107,6 @@ &qusb2phy0 { status = "okay"; vdd-supply = <&vreg_l1b_0p925>; - vdda-pll-supply = <&vreg_l10a_1p8>; vdda-phy-dpdm-supply = <&vreg_l7b_3p125>; }; -- Gitee From 039bc8f6033dbcd51e45d4029886ccc226b60048 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:44 +0800 Subject: [PATCH 1039/1421] Revert "arm64: dts: mt6359: Add missing 'compatible' property to regulators node" This reverts commit fd8d6aa7966cfeb5e8ac4d372ff5097cf3fe3758. --- arch/arm64/boot/dts/mediatek/mt6359.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt6359.dtsi b/arch/arm64/boot/dts/mediatek/mt6359.dtsi index 57af3e789984..8e1b8c85c6ed 100644 --- a/arch/arm64/boot/dts/mediatek/mt6359.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt6359.dtsi @@ -18,8 +18,6 @@ mt6359codec: mt6359codec { }; regulators { - compatible = "mediatek,mt6359-regulator"; - mt6359_vs1_buck_reg: buck_vs1 { regulator-name = "vs1"; regulator-min-microvolt = <800000>; -- Gitee From e3cc7d0bf40978266dca895bc81df75a1c5f03bf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:44 +0800 Subject: [PATCH 1040/1421] Revert "arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles" This reverts commit 418098c0dde9cb5ae7162615b16fa29018f745fd. --- arch/arm64/boot/dts/mediatek/mt6357.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/mediatek/mt6357.dtsi b/arch/arm64/boot/dts/mediatek/mt6357.dtsi index dca4e5c3d8e2..5fafa842d312 100644 --- a/arch/arm64/boot/dts/mediatek/mt6357.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt6357.dtsi @@ -60,6 +60,7 @@ mt6357_vpa_reg: buck-vpa { }; mt6357_vfe28_reg: ldo-vfe28 { + compatible = "regulator-fixed"; regulator-name = "vfe28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -74,6 +75,7 @@ mt6357_vxo22_reg: ldo-vxo22 { }; mt6357_vrf18_reg: ldo-vrf18 { + compatible = "regulator-fixed"; regulator-name = "vrf18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -81,6 +83,7 @@ mt6357_vrf18_reg: ldo-vrf18 { }; mt6357_vrf12_reg: ldo-vrf12 { + compatible = "regulator-fixed"; regulator-name = "vrf12"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; @@ -109,6 +112,7 @@ mt6357_vcn33_wifi_reg: ldo-vcn33-wifi { }; mt6357_vcn28_reg: ldo-vcn28 { + compatible = "regulator-fixed"; regulator-name = "vcn28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -116,6 +120,7 @@ mt6357_vcn28_reg: ldo-vcn28 { }; mt6357_vcn18_reg: ldo-vcn18 { + compatible = "regulator-fixed"; regulator-name = "vcn18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -137,6 +142,7 @@ mt6357_vcamd_reg: ldo-vcamd { }; mt6357_vcamio_reg: ldo-vcamio18 { + compatible = "regulator-fixed"; regulator-name = "vcamio"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -169,6 +175,7 @@ mt6357_vsram_proc_reg: ldo-vsram-proc { }; mt6357_vaux18_reg: ldo-vaux18 { + compatible = "regulator-fixed"; regulator-name = "vaux18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -176,6 +183,7 @@ mt6357_vaux18_reg: ldo-vaux18 { }; mt6357_vaud28_reg: ldo-vaud28 { + compatible = "regulator-fixed"; regulator-name = "vaud28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -183,6 +191,7 @@ mt6357_vaud28_reg: ldo-vaud28 { }; mt6357_vio28_reg: ldo-vio28 { + compatible = "regulator-fixed"; regulator-name = "vio28"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; @@ -190,6 +199,7 @@ mt6357_vio28_reg: ldo-vio28 { }; mt6357_vio18_reg: ldo-vio18 { + compatible = "regulator-fixed"; regulator-name = "vio18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; -- Gitee From 631174cb470632c7535c7a717a81df52d43f22c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:45 +0800 Subject: [PATCH 1041/1421] Revert "arm64: dts: imx8mn-beacon: Set SAI5 MCLK direction to output for HDMI audio" This reverts commit eb18a717cc8c5454e7d19e4295202bf2fe355a95. --- arch/arm64/boot/dts/freescale/imx8mn-beacon-kit.dts | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mn-beacon-kit.dts b/arch/arm64/boot/dts/freescale/imx8mn-beacon-kit.dts index dfa08be33a4f..35b8d2060cd9 100644 --- a/arch/arm64/boot/dts/freescale/imx8mn-beacon-kit.dts +++ b/arch/arm64/boot/dts/freescale/imx8mn-beacon-kit.dts @@ -126,7 +126,6 @@ &sai5 { assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>; assigned-clock-rates = <24576000>; #sound-dai-cells = <0>; - fsl,sai-mclk-direction-output; status = "okay"; }; -- Gitee From e0b5c17cd49f04efbf8636bb39e03a753d603c4c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:45 +0800 Subject: [PATCH 1042/1421] Revert "arm64: dts: imx8mm-beacon: Set SAI5 MCLK direction to output for HDMI audio" This reverts commit d3fd63d59980494df0f954d917bbaa648bf49bae. --- arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts b/arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts index a6e6860bf018..905c98cb080d 100644 --- a/arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts +++ b/arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts @@ -124,7 +124,6 @@ &sai5 { assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>; assigned-clock-rates = <24576000>; #sound-dai-cells = <0>; - fsl,sai-mclk-direction-output; status = "okay"; }; -- Gitee From 6d3be79959176242a2dec4017f37f0cada6f4d0a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:45 +0800 Subject: [PATCH 1043/1421] Revert "arm64: dts: imx8mp-beacon: Fix RTC capacitive load" This reverts commit 9ce1933dbabb60b4b87ea650df5a40ac403c1685. --- arch/arm64/boot/dts/freescale/imx8mp-beacon-som.dtsi | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mp-beacon-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-beacon-som.dtsi index 24380f8a0085..e5da90804780 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-beacon-som.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mp-beacon-som.dtsi @@ -192,7 +192,6 @@ eeprom@50 { rtc: rtc@51 { compatible = "nxp,pcf85263"; reg = <0x51>; - quartz-load-femtofarads = <12500>; }; }; -- Gitee From f58c59fa2f5d01400c80432e584f57f441d99ae2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:45 +0800 Subject: [PATCH 1044/1421] Revert "arm64: dts: imx8mn-beacon: Fix RTC capacitive load" This reverts commit f5828a28bb0894b8572f23bcb0e26fce9196ad00. --- arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi index 1760062e6ffc..90073b16536f 100644 --- a/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi @@ -240,7 +240,6 @@ eeprom@50 { rtc: rtc@51 { compatible = "nxp,pcf85263"; reg = <0x51>; - quartz-load-femtofarads = <12500>; }; }; -- Gitee From bae7eb99b42f4ce6c1703b28065e011e6e48d3d1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:45 +0800 Subject: [PATCH 1045/1421] Revert "arm64: dts: imx8mm-beacon: Fix RTC capacitive load" This reverts commit 3e1fe8f5b9ae6e77b4b8176a920d9ad05565a2e1. --- arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi index 8ab0e45f2ad3..f264102bdb27 100644 --- a/arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi @@ -231,7 +231,6 @@ eeprom@50 { rtc: rtc@51 { compatible = "nxp,pcf85263"; reg = <0x51>; - quartz-load-femtofarads = <12500>; }; }; -- Gitee From 06b32aa6bd9211fc09fba355c12020a969027113 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:46 +0800 Subject: [PATCH 1046/1421] Revert "arm64: dts: qcom: sdm660-xiaomi-lavender: Add missing SD card detect GPIO" This reverts commit eb409835a7855b863026045bb53a1e30e4d32d93. --- arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts index ec4245bbfffa..3c47410ba94c 100644 --- a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts +++ b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts @@ -404,8 +404,6 @@ &sdhc_1 { &sdhc_2 { status = "okay"; - cd-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; - vmmc-supply = <&vreg_l5b_2p95>; vqmmc-supply = <&vreg_l2b_2p95>; }; -- Gitee From 29aecc27caf7fc85d0e696cc1029d47197febcf2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:46 +0800 Subject: [PATCH 1047/1421] Revert "arm64: dts: mediatek: mt8195: Reparent vdec1/2 and venc1 power domains" This reverts commit f53605c0c9dc9a2de1628b9eeb738bdd099638e3. --- arch/arm64/boot/dts/mediatek/mt8195.dtsi | 50 +++++++++++------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt8195.dtsi b/arch/arm64/boot/dts/mediatek/mt8195.dtsi index 22604d3abde3..7ba30209ba9a 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8195.dtsi @@ -617,6 +617,22 @@ power-domain@MT8195_POWER_DOMAIN_VPPSYS0 { #size-cells = <0>; #power-domain-cells = <1>; + power-domain@MT8195_POWER_DOMAIN_VDEC1 { + reg = ; + clocks = <&vdecsys CLK_VDEC_LARB1>; + clock-names = "vdec1-0"; + mediatek,infracfg = <&infracfg_ao>; + #power-domain-cells = <0>; + }; + + power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 { + reg = ; + clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>; + clock-names = "venc1-larb"; + mediatek,infracfg = <&infracfg_ao>; + #power-domain-cells = <0>; + }; + power-domain@MT8195_POWER_DOMAIN_VDOSYS0 { reg = ; clocks = <&topckgen CLK_TOP_CFG_VDO0>, @@ -662,25 +678,15 @@ power-domain@MT8195_POWER_DOMAIN_VDEC0 { clocks = <&vdecsys_soc CLK_VDEC_SOC_LARB1>; clock-names = "vdec0-0"; mediatek,infracfg = <&infracfg_ao>; - #address-cells = <1>; - #size-cells = <0>; #power-domain-cells = <0>; + }; - power-domain@MT8195_POWER_DOMAIN_VDEC1 { - reg = ; - clocks = <&vdecsys CLK_VDEC_LARB1>; - clock-names = "vdec1-0"; - mediatek,infracfg = <&infracfg_ao>; - #power-domain-cells = <0>; - }; - - power-domain@MT8195_POWER_DOMAIN_VDEC2 { - reg = ; - clocks = <&vdecsys_core1 CLK_VDEC_CORE1_LARB1>; - clock-names = "vdec2-0"; - mediatek,infracfg = <&infracfg_ao>; - #power-domain-cells = <0>; - }; + power-domain@MT8195_POWER_DOMAIN_VDEC2 { + reg = ; + clocks = <&vdecsys_core1 CLK_VDEC_CORE1_LARB1>; + clock-names = "vdec2-0"; + mediatek,infracfg = <&infracfg_ao>; + #power-domain-cells = <0>; }; power-domain@MT8195_POWER_DOMAIN_VENC { @@ -688,17 +694,7 @@ power-domain@MT8195_POWER_DOMAIN_VENC { clocks = <&vencsys CLK_VENC_LARB>; clock-names = "venc0-larb"; mediatek,infracfg = <&infracfg_ao>; - #address-cells = <1>; - #size-cells = <0>; #power-domain-cells = <0>; - - power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 { - reg = ; - clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>; - clock-names = "venc1-larb"; - mediatek,infracfg = <&infracfg_ao>; - #power-domain-cells = <0>; - }; }; power-domain@MT8195_POWER_DOMAIN_VDOSYS1 { -- Gitee From 9903ef089808a3afa72bb0a4c05d9de46388eea0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:46 +0800 Subject: [PATCH 1048/1421] Revert "ARM: dts: at91: at91sam9263: fix NAND chip selects" This reverts commit ab3789dc7cf2f1727c0e5effe6c63e6365467bdb. --- arch/arm/boot/dts/microchip/at91sam9263ek.dts | 2 +- arch/arm/boot/dts/microchip/tny_a9263.dts | 2 +- arch/arm/boot/dts/microchip/usb_a9263.dts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/microchip/at91sam9263ek.dts b/arch/arm/boot/dts/microchip/at91sam9263ek.dts index e42e1a75a715..ce8baff6a9f4 100644 --- a/arch/arm/boot/dts/microchip/at91sam9263ek.dts +++ b/arch/arm/boot/dts/microchip/at91sam9263ek.dts @@ -152,7 +152,7 @@ nand_controller: nand-controller { nand@3 { reg = <0x3 0x0 0x800000>; rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; - cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>; + cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; nand-bus-width = <8>; nand-ecc-mode = "soft"; nand-on-flash-bbt; diff --git a/arch/arm/boot/dts/microchip/tny_a9263.dts b/arch/arm/boot/dts/microchip/tny_a9263.dts index c8b6318aaa83..62b7d9f9a926 100644 --- a/arch/arm/boot/dts/microchip/tny_a9263.dts +++ b/arch/arm/boot/dts/microchip/tny_a9263.dts @@ -64,7 +64,7 @@ nand_controller: nand-controller { nand@3 { reg = <0x3 0x0 0x800000>; rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; - cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>; + cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; nand-bus-width = <8>; nand-ecc-mode = "soft"; nand-on-flash-bbt; diff --git a/arch/arm/boot/dts/microchip/usb_a9263.dts b/arch/arm/boot/dts/microchip/usb_a9263.dts index 454176ce6d3f..25c643067b2e 100644 --- a/arch/arm/boot/dts/microchip/usb_a9263.dts +++ b/arch/arm/boot/dts/microchip/usb_a9263.dts @@ -84,7 +84,7 @@ nand_controller: nand-controller { nand@3 { reg = <0x3 0x0 0x800000>; rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; - cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>; + cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; nand-bus-width = <8>; nand-ecc-mode = "soft"; nand-on-flash-bbt; -- Gitee From be04c83700a53540283f3c0b5e4c2b2ff98636e0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:46 +0800 Subject: [PATCH 1049/1421] Revert "ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select" This reverts commit 3d05a9956c5b48513798592ca3cc195b369804c8. --- arch/arm/boot/dts/microchip/usb_a9263.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/microchip/usb_a9263.dts b/arch/arm/boot/dts/microchip/usb_a9263.dts index 25c643067b2e..45745915b2e1 100644 --- a/arch/arm/boot/dts/microchip/usb_a9263.dts +++ b/arch/arm/boot/dts/microchip/usb_a9263.dts @@ -58,7 +58,7 @@ usb1: gadget@fff78000 { }; spi0: spi@fffa4000 { - cs-gpios = <&pioA 5 GPIO_ACTIVE_LOW>; + cs-gpios = <&pioB 15 GPIO_ACTIVE_HIGH>; status = "okay"; flash@0 { compatible = "atmel,at45", "atmel,dataflash"; -- Gitee From 3e29897301d2f16ef8edd8d06539d687a46de194 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:46 +0800 Subject: [PATCH 1050/1421] Revert "arm64: dts: qcom: sc8280xp-x13s: Drop duplicate DMIC supplies" This reverts commit c1391035dadfa53818b5bb40e7b26196ec65cef7. --- arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts index 5498e84bfead..5c2894fcfa4a 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts @@ -985,6 +985,9 @@ &sound { "VA DMIC0", "MIC BIAS1", "VA DMIC1", "MIC BIAS1", "VA DMIC2", "MIC BIAS3", + "VA DMIC0", "VA MIC BIAS1", + "VA DMIC1", "VA MIC BIAS1", + "VA DMIC2", "VA MIC BIAS3", "TX SWR_ADC1", "ADC2_OUTPUT"; wcd-playback-dai-link { -- Gitee From 339e4df5d4f76cb4812f05ba0d0743bb0e86dc01 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:47 +0800 Subject: [PATCH 1051/1421] Revert "arm64: dts: qcom: sm8250: Fix CPU7 opp table" This reverts commit d5f140cfbadae2f0a62e420fe09868b44e22057a. --- arch/arm64/boot/dts/qcom/sm8250.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi index c9a7d1b75c65..21bbffc4e5a2 100644 --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi @@ -601,7 +601,7 @@ cpu7_opp8: opp-1632000000 { }; cpu7_opp9: opp-1747200000 { - opp-hz = /bits/ 64 <1747200000>; + opp-hz = /bits/ 64 <1708800000>; opp-peak-kBps = <5412000 42393600>; }; -- Gitee From d063bb7ec9824a989111c907295d72d55b0bc62b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:47 +0800 Subject: [PATCH 1052/1421] Revert "arm64: dts: qcom: sm8350: Reenable crypto & cryptobam" This reverts commit 1a19126aab2f1357df06a01deacaea0716987524. --- arch/arm64/boot/dts/qcom/sm8350.dtsi | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi index 215782b1970d..5376c0a00fab 100644 --- a/arch/arm64/boot/dts/qcom/sm8350.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi @@ -1754,11 +1754,11 @@ cryptobam: dma-controller@1dc4000 { interrupts = ; #dma-cells = <1>; qcom,ee = <0>; - qcom,num-ees = <4>; - num-channels = <16>; qcom,controlled-remotely; iommus = <&apps_smmu 0x594 0x0011>, <&apps_smmu 0x596 0x0011>; + /* FIXME: Probing BAM DMA causes some abort and system hang */ + status = "fail"; }; crypto: crypto@1dfa000 { @@ -1770,6 +1770,8 @@ crypto: crypto@1dfa000 { <&apps_smmu 0x596 0x0011>; interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>; interconnect-names = "memory"; + /* FIXME: dependency BAM DMA is disabled */ + status = "disabled"; }; ipa: ipa@1e40000 { -- Gitee From ac91d02e5f3945ab89b1c5e22dc052b7a9372c99 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:47 +0800 Subject: [PATCH 1053/1421] Revert "arm64: dts: qcom: sdm845-starqltechn: remove excess reserved gpios" This reverts commit 9a7acc76c16b068b887cfae5b7a3efd1c133ee9d. --- arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts index 5948b401165c..8a0d63bd594b 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts @@ -418,8 +418,7 @@ &usb_1_qmpphy { }; &tlmm { - gpio-reserved-ranges = <27 4>, /* SPI (eSE - embedded Secure Element) */ - <85 4>; /* SPI (fingerprint reader) */ + gpio-reserved-ranges = <0 4>, <27 4>, <81 4>, <85 4>; sdc2_clk_state: sdc2-clk-state { pins = "sdc2_clk"; -- Gitee From 5ed5c2b9f0e533db7d3c9502efdb0764ce3b6aee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:47 +0800 Subject: [PATCH 1054/1421] Revert "arm64: dts: qcom: sdm845-starqltechn: refactor node order" This reverts commit ad8aa3dc7bbdde9a47797f21c5e8dbcce9587441. --- arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts index 8a0d63bd594b..f3f2b25883d8 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts @@ -382,8 +382,8 @@ &ufs_mem_phy { }; &sdhc_2 { - pinctrl-0 = <&sdc2_clk_state &sdc2_cmd_state &sdc2_data_state &sd_card_det_n_state>; pinctrl-names = "default"; + pinctrl-0 = <&sdc2_clk_state &sdc2_cmd_state &sdc2_data_state &sd_card_det_n_state>; cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>; vmmc-supply = <&vreg_l21a_2p95>; vqmmc-supply = <&vddpx_2>; -- Gitee From fe578410c4d1116974cb33cbf1f7a78ee144d2c1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:47 +0800 Subject: [PATCH 1055/1421] Revert "arm64: dts: qcom: sdm845-starqltechn: fix usb regulator mistake" This reverts commit a0f426c8d785ed1adcd8d247b2c2b37ddb40a337. --- arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts index f3f2b25883d8..6fc30fd1262b 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts @@ -135,6 +135,8 @@ vdda_pll_cc_ebi23: vdda_sp_sensor: vdda_ufs1_core: vdda_ufs2_core: + vdda_usb1_ss_core: + vdda_usb2_ss_core: vreg_l1a_0p875: ldo1 { regulator-min-microvolt = <880000>; regulator-max-microvolt = <880000>; @@ -155,7 +157,6 @@ vreg_l3a_1p0: ldo3 { regulator-initial-mode = ; }; - vdda_usb1_ss_core: vdd_wcss_cx: vdd_wcss_mx: vdda_wcss_pll: -- Gitee From 00ea2b64c4fabf5e0caaa257bf5859b33568715a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:48 +0800 Subject: [PATCH 1056/1421] Revert "arm64: dts: qcom: sdm845-starqltechn: remove wifi" This reverts commit 5bf7c7c9ea31172b2ba4f2b3e0dde3576ce8f692. --- arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts index 6fc30fd1262b..d37a433130b9 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts @@ -418,6 +418,14 @@ &usb_1_qmpphy { status = "okay"; }; +&wifi { + vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>; + vdd-1.8-xo-supply = <&vreg_l7a_1p8>; + vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; + vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; + status = "okay"; +}; + &tlmm { gpio-reserved-ranges = <0 4>, <27 4>, <81 4>, <85 4>; -- Gitee From 6cb7247e3a44955d722f6f6bd70c5f11cdc7d131 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:48 +0800 Subject: [PATCH 1057/1421] Revert "f2fs: fix to correct check conditions in f2fs_cross_rename" This reverts commit f30e4145dcdfba55f2937caad7cc0ea5952ab826. --- fs/f2fs/namei.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 4d6f0a6365fe..58ab04aff6bf 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -1102,7 +1102,7 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry, if ((is_inode_flag_set(new_dir, FI_PROJ_INHERIT) && !projid_eq(F2FS_I(new_dir)->i_projid, F2FS_I(old_inode)->i_projid)) || - (is_inode_flag_set(old_dir, FI_PROJ_INHERIT) && + (is_inode_flag_set(new_dir, FI_PROJ_INHERIT) && !projid_eq(F2FS_I(old_dir)->i_projid, F2FS_I(new_inode)->i_projid))) return -EXDEV; -- Gitee From 0252e89134f0e28f422cd67335f545b5cef1e2e6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:48 +0800 Subject: [PATCH 1058/1421] Revert "f2fs: use d_inode(dentry) cleanup dentry->d_inode" This reverts commit 7223907a773e9c9a296a2b6271034b784d629f11. --- fs/f2fs/namei.c | 8 ++++---- fs/f2fs/super.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 58ab04aff6bf..2e08e1fdf485 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -411,7 +411,7 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir, if (is_inode_flag_set(dir, FI_PROJ_INHERIT) && (!projid_eq(F2FS_I(dir)->i_projid, - F2FS_I(inode)->i_projid))) + F2FS_I(old_dentry->d_inode)->i_projid))) return -EXDEV; err = f2fs_dquot_initialize(dir); @@ -905,7 +905,7 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir, if (is_inode_flag_set(new_dir, FI_PROJ_INHERIT) && (!projid_eq(F2FS_I(new_dir)->i_projid, - F2FS_I(old_inode)->i_projid))) + F2FS_I(old_dentry->d_inode)->i_projid))) return -EXDEV; /* @@ -1101,10 +1101,10 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry, if ((is_inode_flag_set(new_dir, FI_PROJ_INHERIT) && !projid_eq(F2FS_I(new_dir)->i_projid, - F2FS_I(old_inode)->i_projid)) || + F2FS_I(old_dentry->d_inode)->i_projid)) || (is_inode_flag_set(new_dir, FI_PROJ_INHERIT) && !projid_eq(F2FS_I(old_dir)->i_projid, - F2FS_I(new_inode)->i_projid))) + F2FS_I(new_dentry->d_inode)->i_projid))) return -EXDEV; err = f2fs_dquot_initialize(old_dir); diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 6b3cafbe9867..4cc87921aac3 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1849,9 +1849,9 @@ static int f2fs_statfs(struct dentry *dentry, struct kstatfs *buf) buf->f_fsid = u64_to_fsid(id); #ifdef CONFIG_QUOTA - if (is_inode_flag_set(d_inode(dentry), FI_PROJ_INHERIT) && + if (is_inode_flag_set(dentry->d_inode, FI_PROJ_INHERIT) && sb_has_quota_limits_enabled(sb, PRJQUOTA)) { - f2fs_statfs_project(sb, F2FS_I(d_inode(dentry))->i_projid, buf); + f2fs_statfs_project(sb, F2FS_I(dentry->d_inode)->i_projid, buf); } #endif return 0; -- Gitee From 917f2528a0aa3b5f10a653419496bc24c07a3ac9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:48 +0800 Subject: [PATCH 1059/1421] Revert "net: phy: mscc: Stop clearing the the UDPv4 checksum for L2 frames" This reverts commit 5e0c082f0480acd019435413848335dc6305d4df. --- drivers/net/phy/mscc/mscc_ptp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/phy/mscc/mscc_ptp.c b/drivers/net/phy/mscc/mscc_ptp.c index 7e7ce79eadff..af44b01f3d38 100644 --- a/drivers/net/phy/mscc/mscc_ptp.c +++ b/drivers/net/phy/mscc/mscc_ptp.c @@ -943,9 +943,7 @@ static int vsc85xx_ip1_conf(struct phy_device *phydev, enum ts_blk blk, /* UDP checksum offset in IPv4 packet * according to: https://tools.ietf.org/html/rfc768 */ - val |= IP1_NXT_PROT_UDP_CHKSUM_OFF(26); - if (enable) - val |= IP1_NXT_PROT_UDP_CHKSUM_CLEAR; + val |= IP1_NXT_PROT_UDP_CHKSUM_OFF(26) | IP1_NXT_PROT_UDP_CHKSUM_CLEAR; vsc85xx_ts_write_csr(phydev, blk, MSCC_ANA_IP1_NXT_PROT_UDP_CHKSUM, val); -- Gitee From a92173f8a365884d196752c97a2944cc99972622 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:48 +0800 Subject: [PATCH 1060/1421] Revert "net: openvswitch: Fix the dead loop of MPLS parse" This reverts commit b5cfe93cd6eabd2dc7b812398d1cc2c45b75bd3d. --- net/openvswitch/flow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/openvswitch/flow.c b/net/openvswitch/flow.c index b80bd3a90773..8a848ce72e29 100644 --- a/net/openvswitch/flow.c +++ b/net/openvswitch/flow.c @@ -788,7 +788,7 @@ static int key_extract_l3l4(struct sk_buff *skb, struct sw_flow_key *key) memset(&key->ipv4, 0, sizeof(key->ipv4)); } } else if (eth_p_mpls(key->eth.type)) { - size_t label_count = 1; + u8 label_count = 1; memset(&key->mpls, 0, sizeof(key->mpls)); skb_set_inner_network_header(skb, skb->mac_len); -- Gitee From 124e8d2fd620c40190349b82316a0e5360e6bed0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:49 +0800 Subject: [PATCH 1061/1421] Revert "calipso: Don't call calipso functions for AF_INET sk." This reverts commit 1f1d1ec7bbb9604369b3ea6f920f3d1be70f5f32. --- net/netlabel/netlabel_kapi.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/netlabel/netlabel_kapi.c b/net/netlabel/netlabel_kapi.c index 75b645c1928d..27511c90a26f 100644 --- a/net/netlabel/netlabel_kapi.c +++ b/net/netlabel/netlabel_kapi.c @@ -1140,9 +1140,6 @@ int netlbl_conn_setattr(struct sock *sk, break; #if IS_ENABLED(CONFIG_IPV6) case AF_INET6: - if (sk->sk_family != AF_INET6) - return -EAFNOSUPPORT; - addr6 = (struct sockaddr_in6 *)addr; entry = netlbl_domhsh_getentry_af6(secattr->domain, &addr6->sin6_addr); -- Gitee From d2f8d1494519be3b17acfd57b2d2544e77bfecee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:49 +0800 Subject: [PATCH 1062/1421] Revert "octeontx2-pf: QOS: Refactor TC_HTB_LEAF_DEL_LAST callback" This reverts commit 1cb4826d72ae47c45dfa4d4ffcfe4da6488033ec. --- drivers/net/ethernet/marvell/octeontx2/nic/qos.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/qos.c b/drivers/net/ethernet/marvell/octeontx2/nic/qos.c index 92861f102590..37db19584c14 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/qos.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/qos.c @@ -1560,7 +1560,6 @@ static int otx2_qos_leaf_del_last(struct otx2_nic *pfvf, u16 classid, bool force if (!node->is_static) dwrr_del_node = true; - WRITE_ONCE(node->qid, OTX2_QOS_QID_INNER); /* destroy the leaf node */ otx2_qos_disable_sq(pfvf, qid); otx2_qos_destroy_node(pfvf, node); @@ -1605,6 +1604,9 @@ static int otx2_qos_leaf_del_last(struct otx2_nic *pfvf, u16 classid, bool force } kfree(new_cfg); + /* update tx_real_queues */ + otx2_qos_update_tx_netdev_queues(pfvf); + return 0; } -- Gitee From 8c9b3c388234b76630da64e86a7a970f313f3fcb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:49 +0800 Subject: [PATCH 1063/1421] Revert "net: phy: mscc: Fix memory leak when using one step timestamping" This reverts commit 28f6e932172480449faf6b5263e09f264b87cd92. --- drivers/net/phy/mscc/mscc_ptp.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/net/phy/mscc/mscc_ptp.c b/drivers/net/phy/mscc/mscc_ptp.c index af44b01f3d38..cf728bfd83e2 100644 --- a/drivers/net/phy/mscc/mscc_ptp.c +++ b/drivers/net/phy/mscc/mscc_ptp.c @@ -1165,24 +1165,18 @@ static void vsc85xx_txtstamp(struct mii_timestamper *mii_ts, container_of(mii_ts, struct vsc8531_private, mii_ts); if (!vsc8531->ptp->configured) - goto out; - - if (vsc8531->ptp->tx_type == HWTSTAMP_TX_OFF) - goto out; + return; - if (vsc8531->ptp->tx_type == HWTSTAMP_TX_ONESTEP_SYNC) - if (ptp_msg_is_sync(skb, type)) - goto out; + if (vsc8531->ptp->tx_type == HWTSTAMP_TX_OFF) { + kfree_skb(skb); + return; + } skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; mutex_lock(&vsc8531->ts_lock); __skb_queue_tail(&vsc8531->ptp->tx_queue, skb); mutex_unlock(&vsc8531->ts_lock); - return; - -out: - kfree_skb(skb); } static bool vsc85xx_rxtstamp(struct mii_timestamper *mii_ts, -- Gitee From ba5ae8914fcb6fb264298de6e93dcacc88687272 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:49 +0800 Subject: [PATCH 1064/1421] Revert "net: lan743x: rename lan743x_reset_phy to lan743x_hw_reset_phy" This reverts commit b26b3d106428f81126d77295366141e89b9407c2. --- drivers/net/ethernet/microchip/lan743x_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c index 781440d5756f..f971d60484f0 100644 --- a/drivers/net/ethernet/microchip/lan743x_main.c +++ b/drivers/net/ethernet/microchip/lan743x_main.c @@ -1373,7 +1373,7 @@ static int lan743x_mac_set_mtu(struct lan743x_adapter *adapter, int new_mtu) } /* PHY */ -static int lan743x_hw_reset_phy(struct lan743x_adapter *adapter) +static int lan743x_phy_reset(struct lan743x_adapter *adapter) { u32 data; @@ -1407,7 +1407,7 @@ static void lan743x_phy_update_flowcontrol(struct lan743x_adapter *adapter, static int lan743x_phy_init(struct lan743x_adapter *adapter) { - return lan743x_hw_reset_phy(adapter); + return lan743x_phy_reset(adapter); } static void lan743x_phy_link_status_change(struct net_device *netdev) -- Gitee From de9422e5869f6459ef70bbf3bd102a184f7d3161 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:49 +0800 Subject: [PATCH 1065/1421] Revert "net: phy: fix up const issues in to_mdio_device() and to_phy_device()" This reverts commit a874d7212a362a6182304ca4fc63d2e5c7358bce. --- include/linux/mdio.h | 5 ++++- include/linux/phy.h | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/linux/mdio.h b/include/linux/mdio.h index 0bca1a960853..8fa23bdcedbf 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -44,7 +44,10 @@ struct mdio_device { unsigned int reset_deassert_delay; }; -#define to_mdio_device(__dev) container_of_const(__dev, struct mdio_device, dev) +static inline struct mdio_device *to_mdio_device(const struct device *dev) +{ + return container_of(dev, struct mdio_device, dev); +} /* struct mdio_driver_common: Common to all MDIO drivers */ struct mdio_driver_common { diff --git a/include/linux/phy.h b/include/linux/phy.h index a57e799b1de1..5aa30ee99810 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -766,7 +766,10 @@ struct phy_device { /* Generic phy_device::dev_flags */ #define PHY_F_NO_IRQ 0x80000000 -#define to_phy_device(__dev) container_of_const(to_mdio_device(__dev), struct phy_device, mdio) +static inline struct phy_device *to_phy_device(const struct device *dev) +{ + return container_of(to_mdio_device(dev), struct phy_device, mdio); +} /** * struct phy_tdr_config - Configuration of a TDR raw test -- Gitee From 94d5a7cd10b3fac35166da110a63b869ababdbce Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:50 +0800 Subject: [PATCH 1066/1421] Revert "net: phy: clear phydev->devlink when the link is deleted" This reverts commit 5c198d563da5a5606f0872bfa3fea21a78e3287b. --- drivers/net/phy/phy_device.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 14da8fdb1413..ee43f4dbf6a7 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1833,10 +1833,8 @@ void phy_detach(struct phy_device *phydev) struct module *ndev_owner = NULL; struct mii_bus *bus; - if (phydev->devlink) { + if (phydev->devlink) device_link_del(phydev->devlink); - phydev->devlink = NULL; - } if (phydev->sysfs_links) { if (dev) -- Gitee From 5022803ed902dc061815e444573c31a721f77215 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:50 +0800 Subject: [PATCH 1067/1421] Revert "bpf: Avoid __bpf_prog_ret0_warn when jit fails" This reverts commit fadcfe7108e6b80fe3719b565b89ad01b21698a0. --- kernel/bpf/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 94470ea4d17a..d7dd49d8b828 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -2365,7 +2365,7 @@ struct bpf_prog *bpf_prog_select_runtime(struct bpf_prog *fp, int *err) /* In case of BPF to BPF calls, verifier did all the prep * work with regards to JITing, etc. */ - bool jit_needed = fp->jit_requested; + bool jit_needed = false; if (fp->bpf_func) goto finalize; -- Gitee From ea64c16afba9859a90b5b2d8d3aecb551d694cbb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:50 +0800 Subject: [PATCH 1068/1421] Revert "net: lan966x: Fix 1-step timestamping over ipv4 or ipv6" This reverts commit 82895ac3cc47fbce045e81bff57b341aa1eda205. --- .../ethernet/microchip/lan966x/lan966x_main.c | 6 --- .../ethernet/microchip/lan966x/lan966x_main.h | 5 -- .../ethernet/microchip/lan966x/lan966x_ptp.c | 49 +++++-------------- 3 files changed, 13 insertions(+), 47 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c index 05f6c9227583..c3f6c10bc239 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c @@ -353,11 +353,6 @@ static void lan966x_ifh_set_rew_op(void *ifh, u64 rew_op) lan966x_ifh_set(ifh, rew_op, IFH_POS_REW_CMD, IFH_WID_REW_CMD); } -static void lan966x_ifh_set_oam_type(void *ifh, u64 oam_type) -{ - lan966x_ifh_set(ifh, oam_type, IFH_POS_PDU_TYPE, IFH_WID_PDU_TYPE); -} - static void lan966x_ifh_set_timestamp(void *ifh, u64 timestamp) { lan966x_ifh_set(ifh, timestamp, IFH_POS_TIMESTAMP, IFH_WID_TIMESTAMP); @@ -385,7 +380,6 @@ static netdev_tx_t lan966x_port_xmit(struct sk_buff *skb, return err; lan966x_ifh_set_rew_op(ifh, LAN966X_SKB_CB(skb)->rew_op); - lan966x_ifh_set_oam_type(ifh, LAN966X_SKB_CB(skb)->pdu_type); lan966x_ifh_set_timestamp(ifh, LAN966X_SKB_CB(skb)->ts_id); } diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h index b65d58a1552b..caa9e0533c96 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h @@ -74,10 +74,6 @@ #define IFH_REW_OP_ONE_STEP_PTP 0x3 #define IFH_REW_OP_TWO_STEP_PTP 0x4 -#define IFH_PDU_TYPE_NONE 0 -#define IFH_PDU_TYPE_IPV4 7 -#define IFH_PDU_TYPE_IPV6 8 - #define FDMA_RX_DCB_MAX_DBS 1 #define FDMA_TX_DCB_MAX_DBS 1 #define FDMA_DCB_INFO_DATAL(x) ((x) & GENMASK(15, 0)) @@ -310,7 +306,6 @@ struct lan966x_phc { struct lan966x_skb_cb { u8 rew_op; - u8 pdu_type; u16 ts_id; unsigned long jiffies; }; diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_ptp.c b/drivers/net/ethernet/microchip/lan966x/lan966x_ptp.c index 87e5e81d40dc..63905bb5a63a 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_ptp.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_ptp.c @@ -322,55 +322,34 @@ void lan966x_ptp_hwtstamp_get(struct lan966x_port *port, *cfg = phc->hwtstamp_config; } -static void lan966x_ptp_classify(struct lan966x_port *port, struct sk_buff *skb, - u8 *rew_op, u8 *pdu_type) +static int lan966x_ptp_classify(struct lan966x_port *port, struct sk_buff *skb) { struct ptp_header *header; u8 msgtype; int type; - if (port->ptp_tx_cmd == IFH_REW_OP_NOOP) { - *rew_op = IFH_REW_OP_NOOP; - *pdu_type = IFH_PDU_TYPE_NONE; - return; - } + if (port->ptp_tx_cmd == IFH_REW_OP_NOOP) + return IFH_REW_OP_NOOP; type = ptp_classify_raw(skb); - if (type == PTP_CLASS_NONE) { - *rew_op = IFH_REW_OP_NOOP; - *pdu_type = IFH_PDU_TYPE_NONE; - return; - } + if (type == PTP_CLASS_NONE) + return IFH_REW_OP_NOOP; header = ptp_parse_header(skb, type); - if (!header) { - *rew_op = IFH_REW_OP_NOOP; - *pdu_type = IFH_PDU_TYPE_NONE; - return; - } + if (!header) + return IFH_REW_OP_NOOP; - if (type & PTP_CLASS_L2) - *pdu_type = IFH_PDU_TYPE_NONE; - if (type & PTP_CLASS_IPV4) - *pdu_type = IFH_PDU_TYPE_IPV4; - if (type & PTP_CLASS_IPV6) - *pdu_type = IFH_PDU_TYPE_IPV6; - - if (port->ptp_tx_cmd == IFH_REW_OP_TWO_STEP_PTP) { - *rew_op = IFH_REW_OP_TWO_STEP_PTP; - return; - } + if (port->ptp_tx_cmd == IFH_REW_OP_TWO_STEP_PTP) + return IFH_REW_OP_TWO_STEP_PTP; /* If it is sync and run 1 step then set the correct operation, * otherwise run as 2 step */ msgtype = ptp_get_msgtype(header, type); - if ((msgtype & 0xf) == 0) { - *rew_op = IFH_REW_OP_ONE_STEP_PTP; - return; - } + if ((msgtype & 0xf) == 0) + return IFH_REW_OP_ONE_STEP_PTP; - *rew_op = IFH_REW_OP_TWO_STEP_PTP; + return IFH_REW_OP_TWO_STEP_PTP; } static void lan966x_ptp_txtstamp_old_release(struct lan966x_port *port) @@ -395,12 +374,10 @@ int lan966x_ptp_txtstamp_request(struct lan966x_port *port, { struct lan966x *lan966x = port->lan966x; unsigned long flags; - u8 pdu_type; u8 rew_op; - lan966x_ptp_classify(port, skb, &rew_op, &pdu_type); + rew_op = lan966x_ptp_classify(port, skb); LAN966X_SKB_CB(skb)->rew_op = rew_op; - LAN966X_SKB_CB(skb)->pdu_type = pdu_type; if (rew_op != IFH_REW_OP_TWO_STEP_PTP) return 0; -- Gitee From f36d7e0089cc141b75ae0bd9e7d7fbf7605a82b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:50 +0800 Subject: [PATCH 1069/1421] Revert "RDMA/cma: Fix hang when cma_netevent_callback fails to queue_work" This reverts commit 10c7badeb9c9d830b51e3e710350f2fd129cdd38. --- drivers/infiniband/core/cma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index a5ceae2e075a..348527cf1e7b 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -5215,8 +5215,7 @@ static int cma_netevent_callback(struct notifier_block *self, neigh->ha, ETH_ALEN)) continue; cma_id_get(current_id); - if (!queue_work(cma_wq, ¤t_id->id.net_work)) - cma_id_put(current_id); + queue_work(cma_wq, ¤t_id->id.net_work); } out: spin_unlock_irqrestore(&id_table_lock, flags); -- Gitee From 23b0a7d062ba35e82beee5eb1f92a33a1e360350 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:50 +0800 Subject: [PATCH 1070/1421] Revert "net: usb: aqc111: fix error handling of usbnet read calls" This reverts commit 5c31155bc9a120f93484bc638f9195a30c8627b4. --- drivers/net/usb/aqc111.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c index 04d5573123be..284375f662f1 100644 --- a/drivers/net/usb/aqc111.c +++ b/drivers/net/usb/aqc111.c @@ -30,13 +30,10 @@ static int aqc111_read_cmd_nopm(struct usbnet *dev, u8 cmd, u16 value, ret = usbnet_read_cmd_nopm(dev, cmd, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, value, index, data, size); - if (unlikely(ret < size)) { - ret = ret < 0 ? ret : -ENODATA; - + if (unlikely(ret < 0)) netdev_warn(dev->net, "Failed to read(0x%x) reg index 0x%04x: %d\n", cmd, index, ret); - } return ret; } @@ -49,13 +46,10 @@ static int aqc111_read_cmd(struct usbnet *dev, u8 cmd, u16 value, ret = usbnet_read_cmd(dev, cmd, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, value, index, data, size); - if (unlikely(ret < size)) { - ret = ret < 0 ? ret : -ENODATA; - + if (unlikely(ret < 0)) netdev_warn(dev->net, "Failed to read(0x%x) reg index 0x%04x: %d\n", cmd, index, ret); - } return ret; } -- Gitee From 25f0e55940f6b75b955cc0a8922069f40e660084 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:51 +0800 Subject: [PATCH 1071/1421] Revert "RISC-V: KVM: lock the correct mp_state during reset" This reverts commit 526645319fe6bb6240dc1c857859a2e91233cf55. --- arch/riscv/kvm/vcpu_sbi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kvm/vcpu_sbi.c b/arch/riscv/kvm/vcpu_sbi.c index a71d33cd81d3..be43278109f4 100644 --- a/arch/riscv/kvm/vcpu_sbi.c +++ b/arch/riscv/kvm/vcpu_sbi.c @@ -103,9 +103,9 @@ void kvm_riscv_vcpu_sbi_system_reset(struct kvm_vcpu *vcpu, struct kvm_vcpu *tmp; kvm_for_each_vcpu(i, tmp, vcpu->kvm) { - spin_lock(&tmp->arch.mp_state_lock); + spin_lock(&vcpu->arch.mp_state_lock); WRITE_ONCE(tmp->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED); - spin_unlock(&tmp->arch.mp_state_lock); + spin_unlock(&vcpu->arch.mp_state_lock); } kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_SLEEP); -- Gitee From d19c1565eb0ee854df7bb29660c6d9387f0227d5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:51 +0800 Subject: [PATCH 1072/1421] Revert "netfilter: nft_tunnel: fix geneve_opt dump" This reverts commit 71d175fd2d9cc9b6d0c02abb0ae56e7bd618c200. --- net/netfilter/nft_tunnel.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/netfilter/nft_tunnel.c b/net/netfilter/nft_tunnel.c index 3e3ae29dde33..d499eb3f4f29 100644 --- a/net/netfilter/nft_tunnel.c +++ b/net/netfilter/nft_tunnel.c @@ -617,10 +617,10 @@ static int nft_tunnel_opts_dump(struct sk_buff *skb, struct geneve_opt *opt; int offset = 0; + inner = nla_nest_start_noflag(skb, NFTA_TUNNEL_KEY_OPTS_GENEVE); + if (!inner) + goto failure; while (opts->len > offset) { - inner = nla_nest_start_noflag(skb, NFTA_TUNNEL_KEY_OPTS_GENEVE); - if (!inner) - goto failure; opt = (struct geneve_opt *)(opts->u.data + offset); if (nla_put_be16(skb, NFTA_TUNNEL_KEY_GENEVE_CLASS, opt->opt_class) || @@ -630,8 +630,8 @@ static int nft_tunnel_opts_dump(struct sk_buff *skb, opt->length * 4, opt->opt_data)) goto inner_failure; offset += sizeof(*opt) + opt->length * 4; - nla_nest_end(skb, inner); } + nla_nest_end(skb, inner); } nla_nest_end(skb, nest); return 0; -- Gitee From d2b8cb27aa93b271c03296c58c75dfd8d4b9588e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:51 +0800 Subject: [PATCH 1073/1421] Revert "bpf, sockmap: Avoid using sk_socket after free when sending" This reverts commit e8e9478121feb1a7afee749a9d71f45f2ee52f71. --- net/core/skmsg.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/net/core/skmsg.c b/net/core/skmsg.c index 2076db464e93..c7edf77fd6fd 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c @@ -655,13 +655,6 @@ static void sk_psock_backlog(struct work_struct *work) bool ingress; int ret; - /* Increment the psock refcnt to synchronize with close(fd) path in - * sock_map_close(), ensuring we wait for backlog thread completion - * before sk_socket freed. If refcnt increment fails, it indicates - * sock_map_close() completed with sk_socket potentially already freed. - */ - if (!sk_psock_get(psock->sk)) - return; mutex_lock(&psock->work_mutex); while ((skb = skb_peek(&psock->ingress_skb))) { len = skb->len; @@ -713,7 +706,6 @@ static void sk_psock_backlog(struct work_struct *work) } end: mutex_unlock(&psock->work_mutex); - sk_psock_put(psock->sk, psock); } struct sk_psock *sk_psock_init(struct sock *sk, int node) -- Gitee From 27c5375a5dd475a27ca2d39fad92e52c5f8e67c2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:51 +0800 Subject: [PATCH 1074/1421] Revert "Bluetooth: MGMT: iterate over mesh commands in mgmt_mesh_foreach()" This reverts commit a8a7c3500535ffcf22b9ff23c0dcd4a46adc2fb6. --- net/bluetooth/mgmt_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/bluetooth/mgmt_util.c b/net/bluetooth/mgmt_util.c index 17e32605d9b0..0115f783bde8 100644 --- a/net/bluetooth/mgmt_util.c +++ b/net/bluetooth/mgmt_util.c @@ -321,7 +321,7 @@ void mgmt_mesh_foreach(struct hci_dev *hdev, { struct mgmt_mesh_tx *mesh_tx, *tmp; - list_for_each_entry_safe(mesh_tx, tmp, &hdev->mesh_pending, list) { + list_for_each_entry_safe(mesh_tx, tmp, &hdev->mgmt_pending, list) { if (!sk || mesh_tx->sk == sk) cb(mesh_tx, data); } -- Gitee From 76933fd2b1fd5ebad873c76fb8ece081948330c9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:51 +0800 Subject: [PATCH 1075/1421] Revert "vfio/type1: Fix error unwind in migration dirty bitmap allocation" This reverts commit 2e52dd7f132473d5db667871607e787016c28881. --- drivers/vfio/vfio_iommu_type1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index 5fe7aed3672e..eacd6ec04de5 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -294,7 +294,7 @@ static int vfio_dma_bitmap_alloc_all(struct vfio_iommu *iommu, size_t pgsize) struct rb_node *p; for (p = rb_prev(n); p; p = rb_prev(p)) { - struct vfio_dma *dma = rb_entry(p, + struct vfio_dma *dma = rb_entry(n, struct vfio_dma, node); vfio_dma_bitmap_free(dma); -- Gitee From c846df4d403a0634228c22b8246f5f02fa88f786 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:52 +0800 Subject: [PATCH 1076/1421] Revert "netfilter: nf_tables: nft_fib_ipv6: fix VRF ipv4/ipv6 result discrepancy" This reverts commit d6c4d584f5ba191a19a7167b25e9a1477415bc3f. --- net/ipv6/netfilter/nft_fib_ipv6.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/net/ipv6/netfilter/nft_fib_ipv6.c b/net/ipv6/netfilter/nft_fib_ipv6.c index a89ce0fbfe4b..c9f1634b3838 100644 --- a/net/ipv6/netfilter/nft_fib_ipv6.c +++ b/net/ipv6/netfilter/nft_fib_ipv6.c @@ -158,7 +158,6 @@ void nft_fib6_eval(const struct nft_expr *expr, struct nft_regs *regs, { const struct nft_fib *priv = nft_expr_priv(expr); int noff = skb_network_offset(pkt->skb); - const struct net_device *found = NULL; const struct net_device *oif = NULL; u32 *dest = ®s->data[priv->dreg]; struct ipv6hdr *iph, _iph; @@ -203,15 +202,11 @@ void nft_fib6_eval(const struct nft_expr *expr, struct nft_regs *regs, if (rt->rt6i_flags & (RTF_REJECT | RTF_ANYCAST | RTF_LOCAL)) goto put_rt_err; - if (!oif) { - found = rt->rt6i_idev->dev; - } else { - if (oif == rt->rt6i_idev->dev || - l3mdev_master_ifindex_rcu(rt->rt6i_idev->dev) == oif->ifindex) - found = oif; - } + if (oif && oif != rt->rt6i_idev->dev && + l3mdev_master_ifindex_rcu(rt->rt6i_idev->dev) != oif->ifindex) + goto put_rt_err; - nft_fib_store_result(dest, priv, found); + nft_fib_store_result(dest, priv, rt->rt6i_idev->dev); put_rt_err: ip6_rt_put(rt); } -- Gitee From b081600eb9216f6acde16da4c31d5c07710af874 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:52 +0800 Subject: [PATCH 1077/1421] Revert "wifi: mt76: mt7996: fix RX buffer size of MCU event" This reverts commit 22f63c263a4ec6669a719616ccfa10e685bf4ebe. --- drivers/net/wireless/mediatek/mt76/mt7996/dma.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/dma.c b/drivers/net/wireless/mediatek/mt76/mt7996/dma.c index 04c9fd0e6b00..586e247a1e06 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/dma.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/dma.c @@ -300,7 +300,7 @@ int mt7996_dma_init(struct mt7996_dev *dev) ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU], MT_RXQ_ID(MT_RXQ_MCU), MT7996_RX_MCU_RING_SIZE, - MT7996_RX_MCU_BUF_SIZE, + MT_RX_BUF_SIZE, MT_RXQ_RING_BASE(MT_RXQ_MCU)); if (ret) return ret; @@ -309,7 +309,7 @@ int mt7996_dma_init(struct mt7996_dev *dev) ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU_WA], MT_RXQ_ID(MT_RXQ_MCU_WA), MT7996_RX_MCU_RING_SIZE_WA, - MT7996_RX_MCU_BUF_SIZE, + MT_RX_BUF_SIZE, MT_RXQ_RING_BASE(MT_RXQ_MCU_WA)); if (ret) return ret; diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h b/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h index 7d2074e2b635..25bb36561231 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h +++ b/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h @@ -27,9 +27,6 @@ #define MT7996_RX_RING_SIZE 1536 #define MT7996_RX_MCU_RING_SIZE 512 #define MT7996_RX_MCU_RING_SIZE_WA 1024 -/* scatter-gather of mcu event is not supported in connac3 */ -#define MT7996_RX_MCU_BUF_SIZE (2048 + \ - SKB_DATA_ALIGN(sizeof(struct skb_shared_info))) #define MT7996_FIRMWARE_WA "mediatek/mt7996/mt7996_wa.bin" #define MT7996_FIRMWARE_WM "mediatek/mt7996/mt7996_wm.bin" -- Gitee From 2ae11985f7796271a20dc6c0044b4d487c7f0f29 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:52 +0800 Subject: [PATCH 1078/1421] Revert "wifi: mt76: mt7996: set EHT max ampdu length capability" This reverts commit 86c7307cbd1b6998050d2d0a0d07bacc60a306fb. --- drivers/net/wireless/mediatek/mt76/mt7996/init.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/init.c b/drivers/net/wireless/mediatek/mt76/mt7996/init.c index 375a3d6f4b38..0a701dcb8a92 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/init.c @@ -735,9 +735,6 @@ mt7996_init_eht_caps(struct mt7996_phy *phy, enum nl80211_band band, u8_encode_bits(IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_11454, IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_MASK); - eht_cap_elem->mac_cap_info[1] |= - IEEE80211_EHT_MAC_CAP1_MAX_AMPDU_LEN_MASK; - eht_cap_elem->phy_cap_info[0] = IEEE80211_EHT_PHY_CAP0_NDP_4_EHT_LFT_32_GI | IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMER | -- Gitee From 6c5694a73b9d4ccf5b64c01687b32d76b18828d1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:52 +0800 Subject: [PATCH 1079/1421] Revert "wifi: mt76: mt7915: Fix null-ptr-deref in mt7915_mmio_wed_init()" This reverts commit ed5643e138204d32c93e0667c062221ef00c9368. --- drivers/net/wireless/mediatek/mt76/mt7915/mmio.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mmio.c b/drivers/net/wireless/mediatek/mt76/mt7915/mmio.c index f4850c6daeb7..7db436d908a3 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/mmio.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mmio.c @@ -755,9 +755,6 @@ int mt7915_mmio_wed_init(struct mt7915_dev *dev, void *pdev_ptr, wed->wlan.base = devm_ioremap(dev->mt76.dev, pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0)); - if (!wed->wlan.base) - return -ENOMEM; - wed->wlan.phy_base = pci_resource_start(pci_dev, 0); wed->wlan.wpdma_int = pci_resource_start(pci_dev, 0) + MT_INT_WED_SOURCE_CSR; @@ -785,9 +782,6 @@ int mt7915_mmio_wed_init(struct mt7915_dev *dev, void *pdev_ptr, wed->wlan.bus_type = MTK_WED_BUS_AXI; wed->wlan.base = devm_ioremap(dev->mt76.dev, res->start, resource_size(res)); - if (!wed->wlan.base) - return -ENOMEM; - wed->wlan.phy_base = res->start; wed->wlan.wpdma_int = res->start + MT_INT_SOURCE_CSR; wed->wlan.wpdma_mask = res->start + MT_INT_MASK_CSR; -- Gitee From 24562b2473c130660535135c9e1a23c2ee54a1f9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:53 +0800 Subject: [PATCH 1080/1421] Revert "kernfs: Relax constraint in draining guard" This reverts commit 02777f9e41e3d5a59be1f7ef436418736ebd1573. --- fs/kernfs/dir.c | 5 ++--- fs/kernfs/file.c | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c index f6e2a4523f7e..b068ed32d7b3 100644 --- a/fs/kernfs/dir.c +++ b/fs/kernfs/dir.c @@ -1560,9 +1560,8 @@ void kernfs_break_active_protection(struct kernfs_node *kn) * invoked before finishing the kernfs operation. Note that while this * function restores the active reference, it doesn't and can't actually * restore the active protection - @kn may already or be in the process of - * being drained and removed. Once kernfs_break_active_protection() is - * invoked, that protection is irreversibly gone for the kernfs operation - * instance. + * being removed. Once kernfs_break_active_protection() is invoked, that + * protection is irreversibly gone for the kernfs operation instance. * * While this function may be called at any point after * kernfs_break_active_protection() is invoked, its most useful location diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c index 6b90fea6cca2..332d08d2fe0d 100644 --- a/fs/kernfs/file.c +++ b/fs/kernfs/file.c @@ -820,9 +820,8 @@ bool kernfs_should_drain_open_files(struct kernfs_node *kn) /* * @kn being deactivated guarantees that @kn->attr.open can't change * beneath us making the lockless test below safe. - * Callers post kernfs_unbreak_active_protection may be counted in - * kn->active by now, do not WARN_ON because of them. */ + WARN_ON_ONCE(atomic_read(&kn->active) != KN_DEACTIVATED_BIAS); rcu_read_lock(); on = rcu_dereference(kn->attr.open); -- Gitee From 4b9bfe4fd0f75309ab2dac6da765145811a35ee9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:53 +0800 Subject: [PATCH 1081/1421] Revert "scsi: ufs: mcq: Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort()" This reverts commit 0c5966cf348202de621c56f812f26f8367f012cf. --- drivers/ufs/core/ufs-mcq.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c index 14864cfc2422..411109a5ebbf 100644 --- a/drivers/ufs/core/ufs-mcq.c +++ b/drivers/ufs/core/ufs-mcq.c @@ -629,6 +629,7 @@ int ufshcd_mcq_abort(struct scsi_cmnd *cmd) int tag = scsi_cmd_to_rq(cmd)->tag; struct ufshcd_lrb *lrbp = &hba->lrb[tag]; struct ufs_hw_queue *hwq; + unsigned long flags; int err; /* Skip task abort in case previous aborts failed and report failure */ @@ -667,5 +668,10 @@ int ufshcd_mcq_abort(struct scsi_cmnd *cmd) return FAILED; } + spin_lock_irqsave(&hwq->cq_lock, flags); + if (ufshcd_cmd_inflight(lrbp->cmd)) + ufshcd_release_scsi_cmd(hba, lrbp); + spin_unlock_irqrestore(&hwq->cq_lock, flags); + return SUCCESS; } -- Gitee From 8523d587093fe17a788614b614e841b6d2ea373a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:53 +0800 Subject: [PATCH 1082/1421] Revert "wifi: ath9k_htc: Abort software beacon handling if disabled" This reverts commit 7f05839b82cc48ec5c42bef9215496d9b154e347. --- drivers/net/wireless/ath/ath9k/htc_drv_beacon.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c index 18c7654bc539..533471e69400 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_beacon.c @@ -290,9 +290,6 @@ void ath9k_htc_swba(struct ath9k_htc_priv *priv, struct ath_common *common = ath9k_hw_common(priv->ah); int slot; - if (!priv->cur_beacon_conf.enable_beacon) - return; - if (swba->beacon_pending != 0) { priv->beacon.bmisscnt++; if (priv->beacon.bmisscnt > BSTUCK_THRESHOLD) { -- Gitee From a7fef5cdcd56067f32d66bcaa8db855d55247c10 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:53 +0800 Subject: [PATCH 1083/1421] Revert "hisi_acc_vfio_pci: bugfix live migration function without VF device driver" This reverts commit a9162bc55761c1c99a0670874278c73d4b928a1b. --- .../vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c index 712b178c42aa..521f969e1c60 100644 --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c @@ -426,6 +426,13 @@ static int vf_qm_check_match(struct hisi_acc_vf_core_device *hisi_acc_vdev, return -EINVAL; } + ret = qm_write_regs(vf_qm, QM_VF_STATE, &vf_data->vf_qm_state, 1); + if (ret) { + dev_err(dev, "failed to write QM_VF_STATE\n"); + return ret; + } + + hisi_acc_vdev->vf_qm_state = vf_data->vf_qm_state; hisi_acc_vdev->match_done = true; return 0; } @@ -491,20 +498,6 @@ static int vf_qm_load_data(struct hisi_acc_vf_core_device *hisi_acc_vdev, if (migf->total_length < sizeof(struct acc_vf_data)) return -EINVAL; - if (!vf_data->eqe_dma || !vf_data->aeqe_dma || - !vf_data->sqc_dma || !vf_data->cqc_dma) { - dev_info(dev, "resume dma addr is NULL!\n"); - hisi_acc_vdev->vf_qm_state = QM_NOT_READY; - return 0; - } - - ret = qm_write_regs(qm, QM_VF_STATE, &vf_data->vf_qm_state, 1); - if (ret) { - dev_err(dev, "failed to write QM_VF_STATE\n"); - return -EINVAL; - } - hisi_acc_vdev->vf_qm_state = vf_data->vf_qm_state; - qm->eqe_dma = vf_data->eqe_dma; qm->aeqe_dma = vf_data->aeqe_dma; qm->sqc_dma = vf_data->sqc_dma; @@ -1404,7 +1397,6 @@ static int hisi_acc_vfio_pci_migrn_init_dev(struct vfio_device *core_vdev) hisi_acc_vdev->vf_id = pci_iov_vf_id(pdev) + 1; hisi_acc_vdev->pf_qm = pf_qm; hisi_acc_vdev->vf_dev = pdev; - hisi_acc_vdev->vf_qm_state = QM_NOT_READY; mutex_init(&hisi_acc_vdev->state_mutex); core_vdev->migration_flags = VFIO_MIGRATION_STOP_COPY | VFIO_MIGRATION_PRE_COPY; -- Gitee From e69d7655c5102842c214f8193a9a88f4edabcd4d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:53 +0800 Subject: [PATCH 1084/1421] Revert "hisi_acc_vfio_pci: add eq and aeq interruption restore" This reverts commit fc4739e133deae79c7d95afe2d70747117f8af7c. --- drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c index 521f969e1c60..d09e7d295625 100644 --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c @@ -470,19 +470,6 @@ static int vf_qm_get_match_data(struct hisi_acc_vf_core_device *hisi_acc_vdev, return 0; } -static void vf_qm_xeqc_save(struct hisi_qm *qm, - struct hisi_acc_vf_migration_file *migf) -{ - struct acc_vf_data *vf_data = &migf->vf_data; - u16 eq_head, aeq_head; - - eq_head = vf_data->qm_eqc_dw[0] & 0xFFFF; - qm_db(qm, 0, QM_DOORBELL_CMD_EQ, eq_head, 0); - - aeq_head = vf_data->qm_aeqc_dw[0] & 0xFFFF; - qm_db(qm, 0, QM_DOORBELL_CMD_AEQ, aeq_head, 0); -} - static int vf_qm_load_data(struct hisi_acc_vf_core_device *hisi_acc_vdev, struct hisi_acc_vf_migration_file *migf) { @@ -579,9 +566,6 @@ static int vf_qm_state_save(struct hisi_acc_vf_core_device *hisi_acc_vdev, } migf->total_length = sizeof(struct acc_vf_data); - /* Save eqc and aeqc interrupt information */ - vf_qm_xeqc_save(vf_qm, migf); - return 0; } -- Gitee From a16c432e05930c05fd4f3f40ed4abab640134de1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:54 +0800 Subject: [PATCH 1085/1421] Revert "hisi_acc_vfio_pci: fix XQE dma address error" This reverts commit 37181497a17c430973bb214535d291dcda1d896c. --- .../vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 41 +++---------------- .../vfio/pci/hisilicon/hisi_acc_vfio_pci.h | 14 +------ 2 files changed, 8 insertions(+), 47 deletions(-) diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c index d09e7d295625..4d27465c8f1a 100644 --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c @@ -350,32 +350,6 @@ static int vf_qm_func_stop(struct hisi_qm *qm) return hisi_qm_mb(qm, QM_MB_CMD_PAUSE_QM, 0, 0, 0); } -static int vf_qm_version_check(struct acc_vf_data *vf_data, struct device *dev) -{ - switch (vf_data->acc_magic) { - case ACC_DEV_MAGIC_V2: - if (vf_data->major_ver != ACC_DRV_MAJOR_VER) { - dev_info(dev, "migration driver version<%u.%u> not match!\n", - vf_data->major_ver, vf_data->minor_ver); - return -EINVAL; - } - break; - case ACC_DEV_MAGIC_V1: - /* Correct dma address */ - vf_data->eqe_dma = vf_data->qm_eqc_dw[QM_XQC_ADDR_HIGH]; - vf_data->eqe_dma <<= QM_XQC_ADDR_OFFSET; - vf_data->eqe_dma |= vf_data->qm_eqc_dw[QM_XQC_ADDR_LOW]; - vf_data->aeqe_dma = vf_data->qm_aeqc_dw[QM_XQC_ADDR_HIGH]; - vf_data->aeqe_dma <<= QM_XQC_ADDR_OFFSET; - vf_data->aeqe_dma |= vf_data->qm_aeqc_dw[QM_XQC_ADDR_LOW]; - break; - default: - return -EINVAL; - } - - return 0; -} - static int vf_qm_check_match(struct hisi_acc_vf_core_device *hisi_acc_vdev, struct hisi_acc_vf_migration_file *migf) { @@ -389,8 +363,7 @@ static int vf_qm_check_match(struct hisi_acc_vf_core_device *hisi_acc_vdev, if (migf->total_length < QM_MATCH_SIZE || hisi_acc_vdev->match_done) return 0; - ret = vf_qm_version_check(vf_data, dev); - if (ret) { + if (vf_data->acc_magic != ACC_DEV_MAGIC) { dev_err(dev, "failed to match ACC_DEV_MAGIC\n"); return -EINVAL; } @@ -445,9 +418,7 @@ static int vf_qm_get_match_data(struct hisi_acc_vf_core_device *hisi_acc_vdev, int vf_id = hisi_acc_vdev->vf_id; int ret; - vf_data->acc_magic = ACC_DEV_MAGIC_V2; - vf_data->major_ver = ACC_DRV_MAJOR_VER; - vf_data->minor_ver = ACC_DRV_MINOR_VER; + vf_data->acc_magic = ACC_DEV_MAGIC; /* Save device id */ vf_data->dev_id = hisi_acc_vdev->vf_dev->device; @@ -545,12 +516,12 @@ static int vf_qm_state_save(struct hisi_acc_vf_core_device *hisi_acc_vdev, return -EINVAL; /* Every reg is 32 bit, the dma address is 64 bit. */ - vf_data->eqe_dma = vf_data->qm_eqc_dw[QM_XQC_ADDR_HIGH]; + vf_data->eqe_dma = vf_data->qm_eqc_dw[1]; vf_data->eqe_dma <<= QM_XQC_ADDR_OFFSET; - vf_data->eqe_dma |= vf_data->qm_eqc_dw[QM_XQC_ADDR_LOW]; - vf_data->aeqe_dma = vf_data->qm_aeqc_dw[QM_XQC_ADDR_HIGH]; + vf_data->eqe_dma |= vf_data->qm_eqc_dw[0]; + vf_data->aeqe_dma = vf_data->qm_aeqc_dw[1]; vf_data->aeqe_dma <<= QM_XQC_ADDR_OFFSET; - vf_data->aeqe_dma |= vf_data->qm_aeqc_dw[QM_XQC_ADDR_LOW]; + vf_data->aeqe_dma |= vf_data->qm_aeqc_dw[0]; /* Through SQC_BT/CQC_BT to get sqc and cqc address */ ret = qm_get_sqc(vf_qm, &vf_data->sqc_dma); diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.h b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.h index f1d8fe86b6eb..dcabfeec6ca1 100644 --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.h +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.h @@ -38,9 +38,6 @@ #define QM_REG_ADDR_OFFSET 0x0004 #define QM_XQC_ADDR_OFFSET 32U -#define QM_XQC_ADDR_LOW 0x1 -#define QM_XQC_ADDR_HIGH 0x2 - #define QM_VF_AEQ_INT_MASK 0x0004 #define QM_VF_EQ_INT_MASK 0x000c #define QM_IFC_INT_SOURCE_V 0x0020 @@ -52,15 +49,10 @@ #define QM_EQC_DW0 0X8000 #define QM_AEQC_DW0 0X8020 -#define ACC_DRV_MAJOR_VER 1 -#define ACC_DRV_MINOR_VER 0 - -#define ACC_DEV_MAGIC_V1 0XCDCDCDCDFEEDAACC -#define ACC_DEV_MAGIC_V2 0xAACCFEEDDECADEDE - struct acc_vf_data { #define QM_MATCH_SIZE offsetofend(struct acc_vf_data, qm_rsv_state) /* QM match information */ +#define ACC_DEV_MAGIC 0XCDCDCDCDFEEDAACC u64 acc_magic; u32 qp_num; u32 dev_id; @@ -68,9 +60,7 @@ struct acc_vf_data { u32 qp_base; u32 vf_qm_state; /* QM reserved match information */ - u16 major_ver; - u16 minor_ver; - u32 qm_rsv_state[2]; + u32 qm_rsv_state[3]; /* QM RW regs */ u32 aeq_int_mask; -- Gitee From a611e38bbf46db2be42d5299b9f900f2aebe819e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:54 +0800 Subject: [PATCH 1086/1421] Revert "wifi: ath12k: fix memory leak in ath12k_service_ready_ext_event" This reverts commit 1b6b02351f940db9c1f7ade4954cc5ff697a9b42. --- drivers/net/wireless/ath/ath12k/wmi.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c index a0ac2f350934..a96bf261a3f7 100644 --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c @@ -4128,7 +4128,6 @@ static int ath12k_service_ready_ext_event(struct ath12k_base *ab, return 0; err: - kfree(svc_rdy_ext.mac_phy_caps); ath12k_wmi_free_dbring_caps(ab); return ret; } -- Gitee From fc91f7cf19d5909145645e73334634c32d079d51 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:54 +0800 Subject: [PATCH 1087/1421] Revert "iommu: remove duplicate selection of DMAR_TABLE" This reverts commit b3c3b702b30a9f8c0a60d9b0b7c6e75f55b30580. --- drivers/iommu/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index 20aa5ed80aa3..d57c5adf932e 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig @@ -191,6 +191,7 @@ source "drivers/iommu/iommufd/Kconfig" config IRQ_REMAP bool "Support for Interrupt Remapping" depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI + select DMAR_TABLE if INTEL_IOMMU help Supports Interrupt remapping for IO-APIC and MSI devices. To use x2apic mode in the CPU's which support x2APIC enhancements or -- Gitee From 2d0d8985dcb25bb962c82e8c280a92c125720b23 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:54 +0800 Subject: [PATCH 1088/1421] Revert "wifi: rtw88: fix the 'para' buffer size to avoid reading out of bounds" This reverts commit 60b4285d88bf91eb9394fea2716e3f9f0edc8474. --- drivers/net/wireless/realtek/rtw88/coex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/coex.c b/drivers/net/wireless/realtek/rtw88/coex.c index c45c7b596ffe..d35f26919806 100644 --- a/drivers/net/wireless/realtek/rtw88/coex.c +++ b/drivers/net/wireless/realtek/rtw88/coex.c @@ -309,7 +309,7 @@ static void rtw_coex_tdma_timer_base(struct rtw_dev *rtwdev, u8 type) { struct rtw_coex *coex = &rtwdev->coex; struct rtw_coex_stat *coex_stat = &coex->stat; - u8 para[6] = {}; + u8 para[2] = {0}; u8 times; u16 tbtt_interval = coex_stat->wl_beacon_interval; -- Gitee From cd6be29518c2ddbea1f1745206979d3bb30a9eee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:54 +0800 Subject: [PATCH 1089/1421] Revert "s390/bpf: Store backchain even for leaf progs" This reverts commit 81abdb5d6b662cd39fc3312a1a51dc436270a253. --- arch/s390/net/bpf_jit_comp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c index a40c7ff91caf..62ee557d4b49 100644 --- a/arch/s390/net/bpf_jit_comp.c +++ b/arch/s390/net/bpf_jit_comp.c @@ -587,15 +587,17 @@ static void bpf_jit_prologue(struct bpf_jit *jit, struct bpf_prog *fp, } /* Setup stack and backchain */ if (is_first_pass(jit) || (jit->seen & SEEN_STACK)) { - /* lgr %w1,%r15 (backchain) */ - EMIT4(0xb9040000, REG_W1, REG_15); + if (is_first_pass(jit) || (jit->seen & SEEN_FUNC)) + /* lgr %w1,%r15 (backchain) */ + EMIT4(0xb9040000, REG_W1, REG_15); /* la %bfp,STK_160_UNUSED(%r15) (BPF frame pointer) */ EMIT4_DISP(0x41000000, BPF_REG_FP, REG_15, STK_160_UNUSED); /* aghi %r15,-STK_OFF */ EMIT4_IMM(0xa70b0000, REG_15, -(STK_OFF + stack_depth)); - /* stg %w1,152(%r15) (backchain) */ - EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0, - REG_15, 152); + if (is_first_pass(jit) || (jit->seen & SEEN_FUNC)) + /* stg %w1,152(%r15) (backchain) */ + EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0, + REG_15, 152); } } -- Gitee From b3ed8c3dfc7afc87a50cc6a21a52ecc6a35e485b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:55 +0800 Subject: [PATCH 1090/1421] Revert "clk: qcom: gcc-msm8939: Fix mclk0 & mclk1 for 24 MHz" This reverts commit 7b3b1a99fdcb659b54ee94aa5c14af24953a11f9. --- drivers/clk/qcom/gcc-msm8939.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/clk/qcom/gcc-msm8939.c b/drivers/clk/qcom/gcc-msm8939.c index e4a44377b75f..b45f97c07eeb 100644 --- a/drivers/clk/qcom/gcc-msm8939.c +++ b/drivers/clk/qcom/gcc-msm8939.c @@ -432,7 +432,7 @@ static const struct parent_map gcc_xo_gpll0_gpll1a_gpll6_sleep_map[] = { { P_XO, 0 }, { P_GPLL0, 1 }, { P_GPLL1_AUX, 2 }, - { P_GPLL6, 3 }, + { P_GPLL6, 2 }, { P_SLEEP_CLK, 6 }, }; @@ -1100,7 +1100,7 @@ static struct clk_rcg2 jpeg0_clk_src = { }; static const struct freq_tbl ftbl_gcc_camss_mclk0_1_clk[] = { - F(24000000, P_GPLL6, 1, 1, 45), + F(24000000, P_GPLL0, 1, 1, 45), F(66670000, P_GPLL0, 12, 0, 0), { } }; -- Gitee From 4e782da174aa746a78c4823a811e9fa1d28adb80 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:55 +0800 Subject: [PATCH 1091/1421] Revert "bpf: Fix WARN() in get_bpf_raw_tp_regs" This reverts commit e1ba5495be66ce30b0ca3b6267e7ff42cc1ceb41. --- kernel/trace/bpf_trace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index 8903db0b5960..97f660a8ddc7 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -1834,7 +1834,7 @@ static struct pt_regs *get_bpf_raw_tp_regs(void) struct bpf_raw_tp_regs *tp_regs = this_cpu_ptr(&bpf_raw_tp_regs); int nest_level = this_cpu_inc_return(bpf_raw_tp_nest_level); - if (nest_level > ARRAY_SIZE(tp_regs->regs)) { + if (WARN_ON_ONCE(nest_level > ARRAY_SIZE(tp_regs->regs))) { this_cpu_dec(bpf_raw_tp_nest_level); return ERR_PTR(-EBUSY); } -- Gitee From 4bf14d240218b1a16c9e94e046444117dc4054e0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:55 +0800 Subject: [PATCH 1092/1421] Revert "pinctrl: at91: Fix possible out-of-boundary access" This reverts commit a6adf7764ff6d811e3f29db25158db82595d6523. --- drivers/pinctrl/pinctrl-at91.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c index 3c09f743b68c..d7b66928a4e5 100644 --- a/drivers/pinctrl/pinctrl-at91.c +++ b/drivers/pinctrl/pinctrl-at91.c @@ -1825,16 +1825,12 @@ static int at91_gpio_probe(struct platform_device *pdev) struct at91_gpio_chip *at91_chip = NULL; struct gpio_chip *chip; struct pinctrl_gpio_range *range; - int alias_idx; int ret = 0; int irq, i; + int alias_idx = of_alias_get_id(np, "gpio"); uint32_t ngpio; char **names; - alias_idx = of_alias_get_id(np, "gpio"); - if (alias_idx < 0) - return alias_idx; - BUG_ON(alias_idx >= ARRAY_SIZE(gpio_chips)); if (gpio_chips[alias_idx]) return dev_err_probe(dev, -EBUSY, "%d slot is occupied.\n", alias_idx); -- Gitee From 2f1ec163bfa18bfa7748da7c1eb369c800536392 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:55 +0800 Subject: [PATCH 1093/1421] Revert "libbpf: Use proper errno value in nlattr" This reverts commit e765e34ccaac20696a6061d7814054d42dc8b369. --- tools/lib/bpf/nlattr.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/lib/bpf/nlattr.c b/tools/lib/bpf/nlattr.c index 06663f9ea581..975e265eab3b 100644 --- a/tools/lib/bpf/nlattr.c +++ b/tools/lib/bpf/nlattr.c @@ -63,16 +63,16 @@ static int validate_nla(struct nlattr *nla, int maxtype, minlen = nla_attr_minlen[pt->type]; if (libbpf_nla_len(nla) < minlen) - return -EINVAL; + return -1; if (pt->maxlen && libbpf_nla_len(nla) > pt->maxlen) - return -EINVAL; + return -1; if (pt->type == LIBBPF_NLA_STRING) { char *data = libbpf_nla_data(nla); if (data[libbpf_nla_len(nla) - 1] != '\0') - return -EINVAL; + return -1; } return 0; @@ -118,18 +118,19 @@ int libbpf_nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, if (policy) { err = validate_nla(nla, maxtype, policy); if (err < 0) - return err; + goto errout; } - if (tb[type]) { + if (tb[type]) pr_warn("Attribute of type %#x found multiple times in message, " "previous attribute is being ignored.\n", type); - } tb[type] = nla; } - return 0; + err = 0; +errout: + return err; } /** -- Gitee From 4a2f66aff778bb4b216c4266ebe29e3e9eeaf659 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:56 +0800 Subject: [PATCH 1094/1421] Revert "ktls, sockmap: Fix missing uncharge operation" This reverts commit 36fb3f4e492eec6ee20dfededa159827b2bb18e3. --- net/tls/tls_sw.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 4a9a3aed5d6d..bf445a518883 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -908,13 +908,6 @@ static int bpf_exec_tx_verdict(struct sk_msg *msg, struct sock *sk, &msg_redir, send, flags); lock_sock(sk); if (err < 0) { - /* Regardless of whether the data represented by - * msg_redir is sent successfully, we have already - * uncharged it via sk_msg_return_zero(). The - * msg->sg.size represents the remaining unprocessed - * data, which needs to be uncharged here. - */ - sk_mem_uncharge(sk, msg->sg.size); *copied -= sk_msg_free_nocharge(sk, &msg_redir); msg->sg.size = 0; } -- Gitee From 6c52209258f8482b764284ff206daff647514b25 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:56 +0800 Subject: [PATCH 1095/1421] Revert "tracing: Fix error handling in event_trigger_parse()" This reverts commit 8f9f4cbbb20a8b3aca95ec73a332f3603e1eef71. --- kernel/trace/trace_events_trigger.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c index fe079ff82ef1..4c92def8b114 100644 --- a/kernel/trace/trace_events_trigger.c +++ b/kernel/trace/trace_events_trigger.c @@ -1000,7 +1000,7 @@ event_trigger_parse(struct event_command *cmd_ops, if (remove) { event_trigger_unregister(cmd_ops, file, glob+1, trigger_data); - trigger_data_free(trigger_data); + kfree(trigger_data); ret = 0; goto out; } @@ -1027,7 +1027,7 @@ event_trigger_parse(struct event_command *cmd_ops, out_free: event_trigger_reset_filter(cmd_ops, trigger_data); - trigger_data_free(trigger_data); + kfree(trigger_data); goto out; } -- Gitee From 3dc7edbbb446e382faf2f29f1dce1dd87f69a386 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:56 +0800 Subject: [PATCH 1096/1421] Revert "tracing: Rename event_trigger_alloc() to trigger_data_alloc()" This reverts commit 4013ae290d5efb2fd1acdee9ebfa6d7195ffa5ef. --- kernel/trace/trace.h | 8 +++++--- kernel/trace/trace_events_hist.c | 2 +- kernel/trace/trace_events_trigger.c | 16 ++++++++-------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index e3afb830fbcc..faf892aecdf4 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1643,9 +1643,6 @@ extern int event_enable_register_trigger(char *glob, extern void event_enable_unregister_trigger(char *glob, struct event_trigger_data *test, struct trace_event_file *file); -extern struct event_trigger_data * -trigger_data_alloc(struct event_command *cmd_ops, char *cmd, char *param, - void *private_data); extern void trigger_data_free(struct event_trigger_data *data); extern int event_trigger_init(struct event_trigger_data *data); extern int trace_event_trigger_enable_disable(struct trace_event_file *file, @@ -1672,6 +1669,11 @@ extern bool event_trigger_check_remove(const char *glob); extern bool event_trigger_empty_param(const char *param); extern int event_trigger_separate_filter(char *param_and_filter, char **param, char **filter, bool param_required); +extern struct event_trigger_data * +event_trigger_alloc(struct event_command *cmd_ops, + char *cmd, + char *param, + void *private_data); extern int event_trigger_parse_num(char *trigger, struct event_trigger_data *trigger_data); extern int event_trigger_set_filter(struct event_command *cmd_ops, diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index 88985aefb71f..29fcd8787344 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -6806,7 +6806,7 @@ static int event_hist_trigger_parse(struct event_command *cmd_ops, return PTR_ERR(hist_data); } - trigger_data = trigger_data_alloc(cmd_ops, cmd, param, hist_data); + trigger_data = event_trigger_alloc(cmd_ops, cmd, param, hist_data); if (!trigger_data) { ret = -ENOMEM; goto out_free; diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c index 4c92def8b114..2c233c0d38fa 100644 --- a/kernel/trace/trace_events_trigger.c +++ b/kernel/trace/trace_events_trigger.c @@ -809,7 +809,7 @@ int event_trigger_separate_filter(char *param_and_filter, char **param, } /** - * trigger_data_alloc - allocate and init event_trigger_data for a trigger + * event_trigger_alloc - allocate and init event_trigger_data for a trigger * @cmd_ops: The event_command operations for the trigger * @cmd: The cmd string * @param: The param string @@ -820,14 +820,14 @@ int event_trigger_separate_filter(char *param_and_filter, char **param, * trigger_ops to assign to the event_trigger_data. @private_data can * also be passed in and associated with the event_trigger_data. * - * Use trigger_data_free() to free an event_trigger_data object. + * Use event_trigger_free() to free an event_trigger_data object. * * Return: The trigger_data object success, NULL otherwise */ -struct event_trigger_data *trigger_data_alloc(struct event_command *cmd_ops, - char *cmd, - char *param, - void *private_data) +struct event_trigger_data *event_trigger_alloc(struct event_command *cmd_ops, + char *cmd, + char *param, + void *private_data) { struct event_trigger_data *trigger_data; struct event_trigger_ops *trigger_ops; @@ -994,7 +994,7 @@ event_trigger_parse(struct event_command *cmd_ops, return ret; ret = -ENOMEM; - trigger_data = trigger_data_alloc(cmd_ops, cmd, param, file); + trigger_data = event_trigger_alloc(cmd_ops, cmd, param, file); if (!trigger_data) goto out; @@ -1787,7 +1787,7 @@ int event_enable_trigger_parse(struct event_command *cmd_ops, enable_data->enable = enable; enable_data->file = event_enable_file; - trigger_data = trigger_data_alloc(cmd_ops, cmd, param, enable_data); + trigger_data = event_trigger_alloc(cmd_ops, cmd, param, enable_data); if (!trigger_data) { kfree(enable_data); goto out; -- Gitee From 43163904627445f5ce81499bfbaa16c5516e7beb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:56 +0800 Subject: [PATCH 1097/1421] Revert "efi/libstub: Describe missing 'out' parameter in efi_load_initrd" This reverts commit 2d936829d596e1f268f9df9a28a4c55c2a1c26c6. --- drivers/firmware/efi/libstub/efi-stub-helper.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c index 492d09b6048b..3dc2f9aaf08d 100644 --- a/drivers/firmware/efi/libstub/efi-stub-helper.c +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -561,7 +561,6 @@ efi_status_t efi_load_initrd_cmdline(efi_loaded_image_t *image, * @image: EFI loaded image protocol * @soft_limit: preferred address for loading the initrd * @hard_limit: upper limit address for loading the initrd - * @out: pointer to store the address of the initrd table * * Return: status code */ -- Gitee From f4d11ac4f2fe4f3eda8d0973a0ebea421d86c22e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:56 +0800 Subject: [PATCH 1098/1421] Revert "clk: bcm: rpi: Add NULL check in raspberrypi_clk_register()" This reverts commit 3e8c816e3a954371ee8c35e2bceb9efe4ee746b6. --- drivers/clk/bcm/clk-raspberrypi.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c index cc4ca336ac13..4d411408e4af 100644 --- a/drivers/clk/bcm/clk-raspberrypi.c +++ b/drivers/clk/bcm/clk-raspberrypi.c @@ -271,8 +271,6 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi, init.name = devm_kasprintf(rpi->dev, GFP_KERNEL, "fw-clk-%s", rpi_firmware_clk_names[id]); - if (!init.name) - return ERR_PTR(-ENOMEM); init.ops = &raspberrypi_firmware_clk_ops; init.flags = CLK_GET_RATE_NOCACHE; -- Gitee From 28455f6d042549b00e69ce6f20593aa8add37316 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:57 +0800 Subject: [PATCH 1099/1421] Revert "clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs" This reverts commit a062724e8de89081e4e2967f5c3e1b31a07b12e1. --- drivers/clk/qcom/gpucc-sm6350.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/clk/qcom/gpucc-sm6350.c b/drivers/clk/qcom/gpucc-sm6350.c index 86c8ad5b55ba..0bcbba2a2943 100644 --- a/drivers/clk/qcom/gpucc-sm6350.c +++ b/drivers/clk/qcom/gpucc-sm6350.c @@ -412,9 +412,6 @@ static struct clk_branch gpu_cc_gx_vsense_clk = { static struct gdsc gpu_cx_gdsc = { .gdscr = 0x106c, .gds_hw_ctrl = 0x1540, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0x8, .pd = { .name = "gpu_cx_gdsc", }, @@ -425,9 +422,6 @@ static struct gdsc gpu_cx_gdsc = { static struct gdsc gpu_gx_gdsc = { .gdscr = 0x100c, .clamp_io_ctrl = 0x1508, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0x2, .pd = { .name = "gpu_gx_gdsc", .power_on = gdsc_gx_do_nothing_enable, -- Gitee From c667f5d63916d74563f92ba6dbc0221fdba44ec4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:57 +0800 Subject: [PATCH 1100/1421] Revert "clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs" This reverts commit 879cb89621aa85b3152aae2faf0c112186738559. --- drivers/clk/qcom/gcc-sm6350.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/clk/qcom/gcc-sm6350.c b/drivers/clk/qcom/gcc-sm6350.c index 4031613c6236..428cd99dcdcb 100644 --- a/drivers/clk/qcom/gcc-sm6350.c +++ b/drivers/clk/qcom/gcc-sm6350.c @@ -2320,9 +2320,6 @@ static struct clk_branch gcc_video_xo_clk = { static struct gdsc usb30_prim_gdsc = { .gdscr = 0x1a004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "usb30_prim_gdsc", }, @@ -2331,9 +2328,6 @@ static struct gdsc usb30_prim_gdsc = { static struct gdsc ufs_phy_gdsc = { .gdscr = 0x3a004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "ufs_phy_gdsc", }, -- Gitee From 9b9bedd3690dedd0562593bc4a727f661cda28ea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:57 +0800 Subject: [PATCH 1101/1421] Revert "clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs" This reverts commit 6bb8cd9569e50bffaf28bad92a20dcea58a94086. --- drivers/clk/qcom/dispcc-sm6350.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/clk/qcom/dispcc-sm6350.c b/drivers/clk/qcom/dispcc-sm6350.c index ea98a63746f0..ddacb4f76eca 100644 --- a/drivers/clk/qcom/dispcc-sm6350.c +++ b/drivers/clk/qcom/dispcc-sm6350.c @@ -680,9 +680,6 @@ static struct clk_branch disp_cc_xo_clk = { static struct gdsc mdss_gdsc = { .gdscr = 0x1004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "mdss_gdsc", }, -- Gitee From 5d71c1230034cd1a584d71eb4733a81fc823ed5a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:57 +0800 Subject: [PATCH 1102/1421] Revert "clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs" This reverts commit be26ef57edee50d70ef5814785f5b157ff22743a. --- drivers/clk/qcom/camcc-sm6350.c | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/drivers/clk/qcom/camcc-sm6350.c b/drivers/clk/qcom/camcc-sm6350.c index eca36bd3ba5c..acba9f99d960 100644 --- a/drivers/clk/qcom/camcc-sm6350.c +++ b/drivers/clk/qcom/camcc-sm6350.c @@ -1694,9 +1694,6 @@ static struct clk_branch camcc_sys_tmr_clk = { static struct gdsc bps_gdsc = { .gdscr = 0x6004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "bps_gdsc", }, @@ -1706,9 +1703,6 @@ static struct gdsc bps_gdsc = { static struct gdsc ipe_0_gdsc = { .gdscr = 0x7004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "ipe_0_gdsc", }, @@ -1718,9 +1712,6 @@ static struct gdsc ipe_0_gdsc = { static struct gdsc ife_0_gdsc = { .gdscr = 0x9004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "ife_0_gdsc", }, @@ -1729,9 +1720,6 @@ static struct gdsc ife_0_gdsc = { static struct gdsc ife_1_gdsc = { .gdscr = 0xa004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "ife_1_gdsc", }, @@ -1740,9 +1728,6 @@ static struct gdsc ife_1_gdsc = { static struct gdsc ife_2_gdsc = { .gdscr = 0xb004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "ife_2_gdsc", }, @@ -1751,9 +1736,6 @@ static struct gdsc ife_2_gdsc = { static struct gdsc titan_top_gdsc = { .gdscr = 0x14004, - .en_rest_wait_val = 0x2, - .en_few_wait_val = 0x2, - .clk_dis_wait_val = 0xf, .pd = { .name = "titan_top_gdsc", }, -- Gitee From a8ac0c50f8e4690c2fc191a7a6e8cd95a89d4723 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:58 +0800 Subject: [PATCH 1103/1421] Revert "tracing: Move histogram trigger variables from stack to per CPU structure" This reverts commit 85d56f70aadaf181d03be85c0574a651125126bf. --- kernel/trace/trace_events_hist.c | 120 ++++--------------------------- 1 file changed, 15 insertions(+), 105 deletions(-) diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index 29fcd8787344..e6f9cbc622c7 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -5257,94 +5257,17 @@ hist_trigger_actions(struct hist_trigger_data *hist_data, } } -/* - * The hist_pad structure is used to save information to create - * a histogram from the histogram trigger. It's too big to store - * on the stack, so when the histogram trigger is initialized - * a percpu array of 4 hist_pad structures is allocated. - * This will cover every context from normal, softirq, irq and NMI - * in the very unlikely event that a tigger happens at each of - * these contexts and interrupts a currently active trigger. - */ -struct hist_pad { - unsigned long entries[HIST_STACKTRACE_DEPTH]; - u64 var_ref_vals[TRACING_MAP_VARS_MAX]; - char compound_key[HIST_KEY_SIZE_MAX]; -}; - -static struct hist_pad __percpu *hist_pads; -static DEFINE_PER_CPU(int, hist_pad_cnt); -static refcount_t hist_pad_ref; - -/* One hist_pad for every context (normal, softirq, irq, NMI) */ -#define MAX_HIST_CNT 4 - -static int alloc_hist_pad(void) -{ - lockdep_assert_held(&event_mutex); - - if (refcount_read(&hist_pad_ref)) { - refcount_inc(&hist_pad_ref); - return 0; - } - - hist_pads = __alloc_percpu(sizeof(struct hist_pad) * MAX_HIST_CNT, - __alignof__(struct hist_pad)); - if (!hist_pads) - return -ENOMEM; - - refcount_set(&hist_pad_ref, 1); - return 0; -} - -static void free_hist_pad(void) -{ - lockdep_assert_held(&event_mutex); - - if (!refcount_dec_and_test(&hist_pad_ref)) - return; - - free_percpu(hist_pads); - hist_pads = NULL; -} - -static struct hist_pad *get_hist_pad(void) -{ - struct hist_pad *hist_pad; - int cnt; - - if (WARN_ON_ONCE(!hist_pads)) - return NULL; - - preempt_disable(); - - hist_pad = per_cpu_ptr(hist_pads, smp_processor_id()); - - if (this_cpu_read(hist_pad_cnt) == MAX_HIST_CNT) { - preempt_enable(); - return NULL; - } - - cnt = this_cpu_inc_return(hist_pad_cnt) - 1; - - return &hist_pad[cnt]; -} - -static void put_hist_pad(void) -{ - this_cpu_dec(hist_pad_cnt); - preempt_enable(); -} - static void event_hist_trigger(struct event_trigger_data *data, struct trace_buffer *buffer, void *rec, struct ring_buffer_event *rbe) { struct hist_trigger_data *hist_data = data->private_data; bool use_compound_key = (hist_data->n_keys > 1); + unsigned long entries[HIST_STACKTRACE_DEPTH]; + u64 var_ref_vals[TRACING_MAP_VARS_MAX]; + char compound_key[HIST_KEY_SIZE_MAX]; struct tracing_map_elt *elt = NULL; struct hist_field *key_field; - struct hist_pad *hist_pad; u64 field_contents; void *key = NULL; unsigned int i; @@ -5352,18 +5275,12 @@ static void event_hist_trigger(struct event_trigger_data *data, if (unlikely(!rbe)) return; - hist_pad = get_hist_pad(); - if (!hist_pad) - return; - - memset(hist_pad->compound_key, 0, hist_data->key_size); + memset(compound_key, 0, hist_data->key_size); for_each_hist_key_field(i, hist_data) { key_field = hist_data->fields[i]; if (key_field->flags & HIST_FIELD_FL_STACKTRACE) { - unsigned long *entries = hist_pad->entries; - memset(entries, 0, HIST_STACKTRACE_SIZE); if (key_field->field) { unsigned long *stack, n_entries; @@ -5387,31 +5304,26 @@ static void event_hist_trigger(struct event_trigger_data *data, } if (use_compound_key) - add_to_key(hist_pad->compound_key, key, key_field, rec); + add_to_key(compound_key, key, key_field, rec); } if (use_compound_key) - key = hist_pad->compound_key; + key = compound_key; if (hist_data->n_var_refs && - !resolve_var_refs(hist_data, key, hist_pad->var_ref_vals, false)) - goto out; + !resolve_var_refs(hist_data, key, var_ref_vals, false)) + return; elt = tracing_map_insert(hist_data->map, key); if (!elt) - goto out; + return; - hist_trigger_elt_update(hist_data, elt, buffer, rec, rbe, hist_pad->var_ref_vals); + hist_trigger_elt_update(hist_data, elt, buffer, rec, rbe, var_ref_vals); - if (resolve_var_refs(hist_data, key, hist_pad->var_ref_vals, true)) { - hist_trigger_actions(hist_data, elt, buffer, rec, rbe, - key, hist_pad->var_ref_vals); - } + if (resolve_var_refs(hist_data, key, var_ref_vals, true)) + hist_trigger_actions(hist_data, elt, buffer, rec, rbe, key, var_ref_vals); hist_poll_wakeup(); - - out: - put_hist_pad(); } static void hist_trigger_stacktrace_print(struct seq_file *m, @@ -6256,9 +6168,6 @@ static int event_hist_trigger_init(struct event_trigger_data *data) { struct hist_trigger_data *hist_data = data->private_data; - if (alloc_hist_pad() < 0) - return -ENOMEM; - if (!data->ref && hist_data->attrs->name) save_named_trigger(hist_data->attrs->name, data); @@ -6303,7 +6212,6 @@ static void event_hist_trigger_free(struct event_trigger_data *data) destroy_hist_data(hist_data); } - free_hist_pad(); } static struct event_trigger_ops event_hist_trigger_ops = { @@ -6319,7 +6227,9 @@ static int event_hist_trigger_named_init(struct event_trigger_data *data) save_named_trigger(data->named_data->name, data); - return event_hist_trigger_init(data->named_data); + event_hist_trigger_init(data->named_data); + + return 0; } static void event_hist_trigger_named_free(struct event_trigger_data *data) -- Gitee From 4950750a45fc3e7fe65861b4b56295051db24447 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:58 +0800 Subject: [PATCH 1104/1421] Revert "bpf: Fix uninitialized values in BPF_{CORE,PROBE}_READ" This reverts commit 51cde81c282de9e259e65156e5e0a4fcebfd07a8. --- tools/lib/bpf/bpf_core_read.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tools/lib/bpf/bpf_core_read.h b/tools/lib/bpf/bpf_core_read.h index b3fc384595a9..e2b9e8415c04 100644 --- a/tools/lib/bpf/bpf_core_read.h +++ b/tools/lib/bpf/bpf_core_read.h @@ -312,13 +312,7 @@ enum bpf_enum_value_kind { #define ___arrow10(a, b, c, d, e, f, g, h, i, j) a->b->c->d->e->f->g->h->i->j #define ___arrow(...) ___apply(___arrow, ___narg(__VA_ARGS__))(__VA_ARGS__) -#if defined(__clang__) && (__clang_major__ >= 19) -#define ___type(...) __typeof_unqual__(___arrow(__VA_ARGS__)) -#elif defined(__GNUC__) && (__GNUC__ >= 14) -#define ___type(...) __typeof_unqual__(___arrow(__VA_ARGS__)) -#else #define ___type(...) typeof(___arrow(__VA_ARGS__)) -#endif #define ___read(read_fn, dst, src_type, src, accessor) \ read_fn((void *)(dst), sizeof(*(dst)), &((src_type)(src))->accessor) -- Gitee From 4f64f41d5f377fb718309cdde883885fb408c4b6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:58 +0800 Subject: [PATCH 1105/1421] Revert "RDMA/mlx5: Fix error flow upon firmware failure for RQ destruction" This reverts commit 7a615e4b0f8e33a10a728aef580bae607d633535. --- drivers/infiniband/hw/mlx5/qpc.c | 30 ++---------------------------- include/linux/mlx5/driver.h | 1 - 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/drivers/infiniband/hw/mlx5/qpc.c b/drivers/infiniband/hw/mlx5/qpc.c index 9de9bea1025e..d9cf6982d645 100644 --- a/drivers/infiniband/hw/mlx5/qpc.c +++ b/drivers/infiniband/hw/mlx5/qpc.c @@ -21,10 +21,8 @@ mlx5_get_rsc(struct mlx5_qp_table *table, u32 rsn) spin_lock_irqsave(&table->lock, flags); common = radix_tree_lookup(&table->tree, rsn); - if (common && !common->invalid) + if (common) refcount_inc(&common->refcount); - else - common = NULL; spin_unlock_irqrestore(&table->lock, flags); @@ -180,18 +178,6 @@ static int create_resource_common(struct mlx5_ib_dev *dev, return 0; } -static void modify_resource_common_state(struct mlx5_ib_dev *dev, - struct mlx5_core_qp *qp, - bool invalid) -{ - struct mlx5_qp_table *table = &dev->qp_table; - unsigned long flags; - - spin_lock_irqsave(&table->lock, flags); - qp->common.invalid = invalid; - spin_unlock_irqrestore(&table->lock, flags); -} - static void destroy_resource_common(struct mlx5_ib_dev *dev, struct mlx5_core_qp *qp) { @@ -618,20 +604,8 @@ int mlx5_core_create_rq_tracked(struct mlx5_ib_dev *dev, u32 *in, int inlen, int mlx5_core_destroy_rq_tracked(struct mlx5_ib_dev *dev, struct mlx5_core_qp *rq) { - int ret; - - /* The rq destruction can be called again in case it fails, hence we - * mark the common resource as invalid and only once FW destruction - * is completed successfully we actually destroy the resources. - */ - modify_resource_common_state(dev, rq, true); - ret = destroy_rq_tracked(dev, rq->qpn, rq->uid); - if (ret) { - modify_resource_common_state(dev, rq, false); - return ret; - } destroy_resource_common(dev, rq); - return 0; + return destroy_rq_tracked(dev, rq->qpn, rq->uid); } static void destroy_sq_tracked(struct mlx5_ib_dev *dev, u32 sqn, u16 uid) diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 696a2227869f..69d844b34da0 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h @@ -390,7 +390,6 @@ struct mlx5_core_rsc_common { enum mlx5_res_type res; refcount_t refcount; struct completion free; - bool invalid; }; struct mlx5_uars_page { -- Gitee From b55fad0b0626752648c81bc3bffef7f0ed170018 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:58 +0800 Subject: [PATCH 1106/1421] Revert "netfilter: nft_quota: match correctly when the quota just depleted" This reverts commit fe7e86755bf0e5c07a079d261941598c8de2b406. --- net/netfilter/nft_quota.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/net/netfilter/nft_quota.c b/net/netfilter/nft_quota.c index df0798da2329..9b2d7463d3d3 100644 --- a/net/netfilter/nft_quota.c +++ b/net/netfilter/nft_quota.c @@ -19,16 +19,10 @@ struct nft_quota { }; static inline bool nft_overquota(struct nft_quota *priv, - const struct sk_buff *skb, - bool *report) + const struct sk_buff *skb) { - u64 consumed = atomic64_add_return(skb->len, priv->consumed); - u64 quota = atomic64_read(&priv->quota); - - if (report) - *report = consumed >= quota; - - return consumed > quota; + return atomic64_add_return(skb->len, priv->consumed) >= + atomic64_read(&priv->quota); } static inline bool nft_quota_invert(struct nft_quota *priv) @@ -40,7 +34,7 @@ static inline void nft_quota_do_eval(struct nft_quota *priv, struct nft_regs *regs, const struct nft_pktinfo *pkt) { - if (nft_overquota(priv, pkt->skb, NULL) ^ nft_quota_invert(priv)) + if (nft_overquota(priv, pkt->skb) ^ nft_quota_invert(priv)) regs->verdict.code = NFT_BREAK; } @@ -57,13 +51,13 @@ static void nft_quota_obj_eval(struct nft_object *obj, const struct nft_pktinfo *pkt) { struct nft_quota *priv = nft_obj_data(obj); - bool overquota, report; + bool overquota; - overquota = nft_overquota(priv, pkt->skb, &report); + overquota = nft_overquota(priv, pkt->skb); if (overquota ^ nft_quota_invert(priv)) regs->verdict.code = NFT_BREAK; - if (report && + if (overquota && !test_and_set_bit(NFT_QUOTA_DEPLETED_BIT, &priv->flags)) nft_obj_notify(nft_net(pkt), obj->key.table, obj, 0, 0, NFT_MSG_NEWOBJ, 0, nft_pf(pkt), 0, GFP_ATOMIC); -- Gitee From 96d0b665dec11fcc050d88c6d41b78a153aac1a6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:58 +0800 Subject: [PATCH 1107/1421] Revert "netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it" This reverts commit 0b0522d863dae9936504069c5e2cf734d73c054b. --- net/bridge/netfilter/nf_conntrack_bridge.c | 12 ++++++------ net/ipv6/netfilter.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/net/bridge/netfilter/nf_conntrack_bridge.c b/net/bridge/netfilter/nf_conntrack_bridge.c index 4b4a396d9722..4fbfbafdfa02 100644 --- a/net/bridge/netfilter/nf_conntrack_bridge.c +++ b/net/bridge/netfilter/nf_conntrack_bridge.c @@ -60,19 +60,19 @@ static int nf_br_ip_fragment(struct net *net, struct sock *sk, struct ip_fraglist_iter iter; struct sk_buff *frag; - if (first_len - hlen > mtu) + if (first_len - hlen > mtu || + skb_headroom(skb) < ll_rs) goto blackhole; - if (skb_cloned(skb) || - skb_headroom(skb) < ll_rs) + if (skb_cloned(skb)) goto slow_path; skb_walk_frags(skb, frag) { - if (frag->len > mtu) + if (frag->len > mtu || + skb_headroom(frag) < hlen + ll_rs) goto blackhole; - if (skb_shared(frag) || - skb_headroom(frag) < hlen + ll_rs) + if (skb_shared(frag)) goto slow_path; } diff --git a/net/ipv6/netfilter.c b/net/ipv6/netfilter.c index 606aae4e78a9..7c4af48d529e 100644 --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c @@ -163,20 +163,20 @@ int br_ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, struct ip6_fraglist_iter iter; struct sk_buff *frag2; - if (first_len - hlen > mtu) + if (first_len - hlen > mtu || + skb_headroom(skb) < (hroom + sizeof(struct frag_hdr))) goto blackhole; - if (skb_cloned(skb) || - skb_headroom(skb) < (hroom + sizeof(struct frag_hdr))) + if (skb_cloned(skb)) goto slow_path; skb_walk_frags(skb, frag2) { - if (frag2->len > mtu) + if (frag2->len > mtu || + skb_headroom(frag2) < (hlen + hroom + sizeof(struct frag_hdr))) goto blackhole; /* Partially cloned skb? */ - if (skb_shared(frag2) || - skb_headroom(frag2) < (hlen + hroom + sizeof(struct frag_hdr))) + if (skb_shared(frag2)) goto slow_path; } -- Gitee From da174cb3a64b54f61aca0c8ee18d8243877435e8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:59 +0800 Subject: [PATCH 1108/1421] Revert "bpf: Allow XDP dev-bound programs to perform XDP_REDIRECT into maps" This reverts commit 227040703fb9070c423038e6ca06b43dd39af4d6. --- kernel/bpf/core.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index d7dd49d8b828..12b42de56693 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -2259,8 +2259,8 @@ static unsigned int __bpf_prog_ret0_warn(const void *ctx, } #endif -static bool __bpf_prog_map_compatible(struct bpf_map *map, - const struct bpf_prog *fp) +bool bpf_prog_map_compatible(struct bpf_map *map, + const struct bpf_prog *fp) { enum bpf_prog_type prog_type = resolve_prog_type(fp); bool ret; @@ -2269,6 +2269,14 @@ static bool __bpf_prog_map_compatible(struct bpf_map *map, if (fp->kprobe_override) return false; + /* XDP programs inserted into maps are not guaranteed to run on + * a particular netdev (and can run outside driver context entirely + * in the case of devmap and cpumap). Until device checks + * are implemented, prohibit adding dev-bound programs to program maps. + */ + if (bpf_prog_is_dev_bound(aux)) + return false; + spin_lock(&map->owner.lock); if (!map->owner.type) { /* There's no owner yet where we could check for @@ -2302,19 +2310,6 @@ static bool __bpf_prog_map_compatible(struct bpf_map *map, return ret; } -bool bpf_prog_map_compatible(struct bpf_map *map, const struct bpf_prog *fp) -{ - /* XDP programs inserted into maps are not guaranteed to run on - * a particular netdev (and can run outside driver context entirely - * in the case of devmap and cpumap). Until device checks - * are implemented, prohibit adding dev-bound programs to program maps. - */ - if (bpf_prog_is_dev_bound(fp->aux)) - return false; - - return __bpf_prog_map_compatible(map, fp); -} - static int bpf_check_tail_call(const struct bpf_prog *fp) { struct bpf_prog_aux *aux = fp->aux; @@ -2327,7 +2322,7 @@ static int bpf_check_tail_call(const struct bpf_prog *fp) if (!map_type_contains_progs(map)) continue; - if (!__bpf_prog_map_compatible(map, fp)) { + if (!bpf_prog_map_compatible(map, fp)) { ret = -EINVAL; goto out; } -- Gitee From fbbfda94e0558ffbb9bb707ab6af25fc3c9c2ede Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:59 +0800 Subject: [PATCH 1109/1421] Revert "libbpf: Use proper errno value in linker" This reverts commit 0186cdc898b3eecc28211390ef5c1de6d9257396. --- tools/lib/bpf/linker.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/lib/bpf/linker.c b/tools/lib/bpf/linker.c index e1b3136643aa..a3a190d13db8 100644 --- a/tools/lib/bpf/linker.c +++ b/tools/lib/bpf/linker.c @@ -1187,7 +1187,7 @@ static int linker_append_sec_data(struct bpf_linker *linker, struct src_obj *obj } else { if (!secs_match(dst_sec, src_sec)) { pr_warn("ELF sections %s are incompatible\n", src_sec->sec_name); - return -EINVAL; + return -1; } /* "license" and "version" sections are deduped */ @@ -2034,7 +2034,7 @@ static int linker_append_elf_relos(struct bpf_linker *linker, struct src_obj *ob } } else if (!secs_match(dst_sec, src_sec)) { pr_warn("sections %s are not compatible\n", src_sec->sec_name); - return -EINVAL; + return -1; } /* shdr->sh_link points to SYMTAB */ -- Gitee From 41867801d1206243d6c6aec6745294080553e2a7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:59 +0800 Subject: [PATCH 1110/1421] Revert "f2fs: fix to detect gcing page in f2fs_is_cp_guaranteed()" This reverts commit dbd62475c0fa8aeba30a870041bf3ef3309ec752. --- fs/f2fs/data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index a123bb26acd8..5a3fa2f887a7 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -55,7 +55,7 @@ bool f2fs_is_cp_guaranteed(struct page *page) struct f2fs_sb_info *sbi; if (fscrypt_is_bounce_page(page)) - return page_private_gcing(fscrypt_pagecache_page(page)); + return false; inode = mapping->host; sbi = F2FS_I_SB(inode); -- Gitee From 01295440b9bed2ea05992acb7dbcc29b750796a0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:59 +0800 Subject: [PATCH 1111/1421] Revert "f2fs: clean up w/ fscrypt_is_bounce_page()" This reverts commit 4b2a9337e5e4788bd33c2b15239259c1dda1ba6a. --- fs/f2fs/data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 5a3fa2f887a7..acd0764b0286 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -54,7 +54,7 @@ bool f2fs_is_cp_guaranteed(struct page *page) struct inode *inode; struct f2fs_sb_info *sbi; - if (fscrypt_is_bounce_page(page)) + if (!mapping) return false; inode = mapping->host; -- Gitee From 8e957fb83ac69375ac274629f78fc8061c68b6df Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:38:59 +0800 Subject: [PATCH 1112/1421] Revert "bonding: assign random address if device address is same as bond" This reverts commit 672f22e65b29483d4562a41acefd179ca22595eb. --- drivers/net/bonding/bond_main.c | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 85ab69257162..56c241246d1a 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2040,26 +2040,15 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev, * set the master's mac address to that of the first slave */ memcpy(ss.__data, bond_dev->dev_addr, bond_dev->addr_len); - } else if (bond->params.fail_over_mac == BOND_FOM_FOLLOW && - BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP && - memcmp(slave_dev->dev_addr, bond_dev->dev_addr, bond_dev->addr_len) == 0) { - /* Set slave to random address to avoid duplicate mac - * address in later fail over. - */ - eth_random_addr(ss.__data); - } else { - goto skip_mac_set; - } - - ss.ss_family = slave_dev->type; - res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, extack); - if (res) { - slave_err(bond_dev, slave_dev, "Error %d calling set_mac_address\n", res); - goto err_restore_mtu; + ss.ss_family = slave_dev->type; + res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, + extack); + if (res) { + slave_err(bond_dev, slave_dev, "Error %d calling set_mac_address\n", res); + goto err_restore_mtu; + } } -skip_mac_set: - /* set no_addrconf flag before open to prevent IPv6 addrconf */ slave_dev->priv_flags |= IFF_NO_ADDRCONF; -- Gitee From 9c295581dfbaa110d58c24444422e26e2c2cb73b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:00 +0800 Subject: [PATCH 1113/1421] Revert "iommu: Protect against overflow in iommu_pgsize()" This reverts commit 3df10c64214fa78abf9b3693b6b2837f07803b3d. --- drivers/iommu/iommu.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 3fa5699b9ff1..f2b3a4e2e54f 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2382,7 +2382,6 @@ static size_t iommu_pgsize(struct iommu_domain *domain, unsigned long iova, unsigned int pgsize_idx, pgsize_idx_next; unsigned long pgsizes; size_t offset, pgsize, pgsize_next; - size_t offset_end; unsigned long addr_merge = paddr | iova; /* Page sizes supported by the hardware and small enough for @size */ @@ -2423,8 +2422,7 @@ static size_t iommu_pgsize(struct iommu_domain *domain, unsigned long iova, * If size is big enough to accommodate the larger page, reduce * the number of smaller pages. */ - if (!check_add_overflow(offset, pgsize_next, &offset_end) && - offset_end <= size) + if (offset + pgsize_next <= size) size = offset; out_set_count: -- Gitee From 0db5dd1ba32619644c19e612b6faed166335e493 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:00 +0800 Subject: [PATCH 1114/1421] Revert "Use thread-safe function pointer in libbpf_print" This reverts commit 7a999942db7d24e826e2e0dd48c184140bfe3a4a. --- tools/lib/bpf/libbpf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 5dc2e5555335..18e96375dc31 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -246,7 +246,7 @@ void libbpf_print(enum libbpf_print_level level, const char *format, ...) old_errno = errno; va_start(args, format); - print_fn(level, format, args); + __libbpf_pr(level, format, args); va_end(args); errno = old_errno; -- Gitee From 169360b3d9bdb410040a3ef7d372926d7c508977 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:00 +0800 Subject: [PATCH 1115/1421] Revert "libbpf: Remove sample_period init in perf_buffer" This reverts commit 285540e54a42e070ba79a99c08b7222b4f627d33. --- tools/lib/bpf/libbpf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 18e96375dc31..ca764ed3aaa9 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -12453,6 +12453,7 @@ struct perf_buffer *perf_buffer__new(int map_fd, size_t page_cnt, attr.config = PERF_COUNT_SW_BPF_OUTPUT; attr.type = PERF_TYPE_SOFTWARE; attr.sample_type = PERF_SAMPLE_RAW; + attr.sample_period = sample_period; attr.wakeup_events = sample_period; p.attr = &attr; -- Gitee From 12be4a4f933f70172a271bc80133a0656dddd2c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:00 +0800 Subject: [PATCH 1116/1421] Revert "scsi: hisi_sas: Call I_T_nexus after soft reset for SATA disk" This reverts commit f01f7a45edc2b2e1fefc8241eb409939c865383a. --- drivers/scsi/hisi_sas/hisi_sas_main.c | 29 ++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c index 3ad58250bf6b..7e64661d215b 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_main.c +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c @@ -1844,14 +1844,33 @@ static int hisi_sas_I_T_nexus_reset(struct domain_device *device) } hisi_sas_dereg_device(hisi_hba, device); - if (dev_is_sata(device)) { + rc = hisi_sas_debug_I_T_nexus_reset(device); + if (rc == TMF_RESP_FUNC_COMPLETE && dev_is_sata(device)) { + struct sas_phy *local_phy; + rc = hisi_sas_softreset_ata_disk(device); - if (rc == TMF_RESP_FUNC_FAILED) - dev_err(dev, "ata disk %016llx reset (%d)\n", - SAS_ADDR(device->sas_addr), rc); + switch (rc) { + case -ECOMM: + rc = -ENODEV; + break; + case TMF_RESP_FUNC_FAILED: + case -EMSGSIZE: + case -EIO: + local_phy = sas_get_local_phy(device); + rc = sas_phy_enable(local_phy, 0); + if (!rc) { + local_phy->enabled = 0; + dev_err(dev, "Disabled local phy of ATA disk %016llx due to softreset fail (%d)\n", + SAS_ADDR(device->sas_addr), rc); + rc = -ENODEV; + } + sas_put_local_phy(local_phy); + break; + default: + break; + } } - rc = hisi_sas_debug_I_T_nexus_reset(device); if ((rc == TMF_RESP_FUNC_COMPLETE) || (rc == -ENODEV)) hisi_sas_release_task(hisi_hba, device); -- Gitee From c0ebdeca288983929ab74972aa23739120b0d9cc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:00 +0800 Subject: [PATCH 1117/1421] Revert "RDMA/hns: Include hnae3.h in hns_roce_hw_v2.h" This reverts commit 5df5494922b9f14235381f528c04d87c10396a42. --- drivers/infiniband/hw/hns/hns_roce_ah.c | 1 + drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 1 + drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 1 - drivers/infiniband/hw/hns/hns_roce_main.c | 1 + drivers/infiniband/hw/hns/hns_roce_restrack.c | 1 + 5 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/hns/hns_roce_ah.c b/drivers/infiniband/hw/hns/hns_roce_ah.c index e99890e0c8c3..3df032ddda18 100644 --- a/drivers/infiniband/hw/hns/hns_roce_ah.c +++ b/drivers/infiniband/hw/hns/hns_roce_ah.c @@ -33,6 +33,7 @@ #include #include #include +#include "hnae3.h" #include "hns_roce_device.h" #include "hns_roce_hw_v2.h" diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c index 9d23d4b5c128..aded0a7f4283 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c @@ -42,6 +42,7 @@ #include #include +#include "hnae3.h" #include "hns_roce_common.h" #include "hns_roce_device.h" #include "hns_roce_cmd.h" diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h index 7875283eb9d6..b8e17721f6fd 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h @@ -34,7 +34,6 @@ #define _HNS_ROCE_HW_V2_H #include -#include "hnae3.h" #define HNS_ROCE_V2_MAX_RC_INL_INN_SZ 32 #define HNS_ROCE_V2_MTT_ENTRY_SZ 64 diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c index 5f39a25064d1..a7e4c951f8fe 100644 --- a/drivers/infiniband/hw/hns/hns_roce_main.c +++ b/drivers/infiniband/hw/hns/hns_roce_main.c @@ -37,6 +37,7 @@ #include #include #include +#include "hnae3.h" #include "hns_roce_common.h" #include "hns_roce_device.h" #include "hns_roce_hem.h" diff --git a/drivers/infiniband/hw/hns/hns_roce_restrack.c b/drivers/infiniband/hw/hns/hns_roce_restrack.c index 1fb5e2468364..081a01de3055 100644 --- a/drivers/infiniband/hw/hns/hns_roce_restrack.c +++ b/drivers/infiniband/hw/hns/hns_roce_restrack.c @@ -4,6 +4,7 @@ #include #include #include +#include "hnae3.h" #include "hns_roce_common.h" #include "hns_roce_device.h" #include "hns_roce_hw_v2.h" -- Gitee From ac7ab619f65d388e89a33193ba5217e0f600c7ef Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:01 +0800 Subject: [PATCH 1118/1421] Revert "wifi: ath12k: fix node corruption in ar->arvifs list" This reverts commit 853bfc74917a7eaf0833e35872ea1c60a28ec344. --- drivers/net/wireless/ath/ath12k/core.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c index 1b07a183aaed..3df8059d5512 100644 --- a/drivers/net/wireless/ath/ath12k/core.c +++ b/drivers/net/wireless/ath/ath12k/core.c @@ -657,7 +657,6 @@ static int ath12k_core_reconfigure_on_crash(struct ath12k_base *ab) void ath12k_core_halt(struct ath12k *ar) { - struct list_head *pos, *n; struct ath12k_base *ab = ar->ab; lockdep_assert_held(&ar->conf_mutex); @@ -672,12 +671,7 @@ void ath12k_core_halt(struct ath12k *ar) rcu_assign_pointer(ab->pdevs_active[ar->pdev_idx], NULL); synchronize_rcu(); - - spin_lock_bh(&ar->data_lock); - list_for_each_safe(pos, n, &ar->arvifs) - list_del_init(pos); - spin_unlock_bh(&ar->data_lock); - + INIT_LIST_HEAD(&ar->arvifs); idr_init(&ar->txmgmt_idr); } -- Gitee From d5bd5fcccca4b5076c78c5fc497e2044b601a088 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:01 +0800 Subject: [PATCH 1119/1421] Revert "wifi: ath12k: Add MSDU length validation for TKIP MIC error" This reverts commit a337db2110358e6adbbb0cab9788cdb86718f443. --- drivers/net/wireless/ath/ath12k/dp_rx.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c index 56dda76d066c..8d9315038a75 100644 --- a/drivers/net/wireless/ath/ath12k/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c @@ -3683,15 +3683,6 @@ static bool ath12k_dp_rx_h_tkip_mic_err(struct ath12k *ar, struct sk_buff *msdu, l3pad_bytes = ath12k_dp_rx_h_l3pad(ab, desc); msdu_len = ath12k_dp_rx_h_msdu_len(ab, desc); - - if ((hal_rx_desc_sz + l3pad_bytes + msdu_len) > DP_RX_BUFFER_SIZE) { - ath12k_dbg(ab, ATH12K_DBG_DATA, - "invalid msdu len in tkip mic err %u\n", msdu_len); - ath12k_dbg_dump(ab, ATH12K_DBG_DATA, NULL, "", desc, - sizeof(*desc)); - return true; - } - skb_put(msdu, hal_rx_desc_sz + l3pad_bytes + msdu_len); skb_pull(msdu, hal_rx_desc_sz + l3pad_bytes); -- Gitee From faa34193d52c05b7d0cb2e0e27a196c51d705418 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:01 +0800 Subject: [PATCH 1120/1421] Revert "wifi: rtw88: do not ignore hardware read error during DPK" This reverts commit 168855c78ba6a379dcbf6af0a0e6509ce251c548. --- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c index f9b2527fbeee..3fe5c70ce731 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -3991,8 +3991,7 @@ static void rtw8822c_dpk_cal_coef1(struct rtw_dev *rtwdev) rtw_write32(rtwdev, REG_NCTL0, 0x00001148); rtw_write32(rtwdev, REG_NCTL0, 0x00001149); - if (!check_hw_ready(rtwdev, 0x2d9c, MASKBYTE0, 0x55)) - rtw_warn(rtwdev, "DPK stuck, performance may be suboptimal"); + check_hw_ready(rtwdev, 0x2d9c, MASKBYTE0, 0x55); rtw_write8(rtwdev, 0x1b10, 0x0); rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x0000000c); -- Gitee From 84ed88f7448072f38c5628a6b7cf82a151e59876 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:01 +0800 Subject: [PATCH 1121/1421] Revert "wifi: rtw88: sdio: call rtw_sdio_indicate_tx_status unconditionally" This reverts commit ff9ee594eb771a3c8ca8681834c521d2fb09c637. --- drivers/net/wireless/realtek/rtw88/sdio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c index 832a427279b4..4df04579e2e7 100644 --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c @@ -1223,7 +1223,10 @@ static void rtw_sdio_process_tx_queue(struct rtw_dev *rtwdev, return; } - rtw_sdio_indicate_tx_status(rtwdev, skb); + if (queue <= RTW_TX_QUEUE_VO) + rtw_sdio_indicate_tx_status(rtwdev, skb); + else + dev_kfree_skb_any(skb); } static void rtw_sdio_tx_handler(struct work_struct *work) -- Gitee From ef6303c21a172ed03c4e656e48d2509a29492a14 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:02 +0800 Subject: [PATCH 1122/1421] Revert "wifi: rtw88: sdio: map mgmt frames to queue TX_DESC_QSEL_MGMT" This reverts commit a8479821e2471a7c251e69a79dc8d3354f3501cc. --- drivers/net/wireless/realtek/rtw88/sdio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c index 4df04579e2e7..904356993579 100644 --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c @@ -718,7 +718,10 @@ static u8 rtw_sdio_get_tx_qsel(struct rtw_dev *rtwdev, struct sk_buff *skb, case RTW_TX_QUEUE_H2C: return TX_DESC_QSEL_H2C; case RTW_TX_QUEUE_MGMT: - return TX_DESC_QSEL_MGMT; + if (rtw_chip_wcpu_11n(rtwdev)) + return TX_DESC_QSEL_HIGH; + else + return TX_DESC_QSEL_MGMT; case RTW_TX_QUEUE_HI0: return TX_DESC_QSEL_HIGH; default: -- Gitee From 66e8b120ac48f38ea638334df45f3b29fad39d52 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:02 +0800 Subject: [PATCH 1123/1421] Revert "xfrm: Use xdo.dev instead of xdo.real_dev" This reverts commit f377c9778f934b3b306912d137feec867240115d. --- drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 2 +- net/xfrm/xfrm_device.c | 2 ++ net/xfrm/xfrm_state.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c index 5161bf51fa11..463c23ae0ad1 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c @@ -1093,7 +1093,7 @@ mlx5e_ipsec_build_accel_pol_attrs(struct mlx5e_ipsec_pol_entry *pol_entry, static int mlx5e_xfrm_add_policy(struct xfrm_policy *x, struct netlink_ext_ack *extack) { - struct net_device *netdev = x->xdo.dev; + struct net_device *netdev = x->xdo.real_dev; struct mlx5e_ipsec_pol_entry *pol_entry; struct mlx5e_priv *priv; int err; diff --git a/net/xfrm/xfrm_device.c b/net/xfrm/xfrm_device.c index 7188d3592dde..04dc0c8a8370 100644 --- a/net/xfrm/xfrm_device.c +++ b/net/xfrm/xfrm_device.c @@ -371,6 +371,7 @@ int xfrm_dev_policy_add(struct net *net, struct xfrm_policy *xp, xdo->dev = dev; netdev_tracker_alloc(dev, &xdo->dev_tracker, GFP_ATOMIC); + xdo->real_dev = dev; xdo->type = XFRM_DEV_OFFLOAD_PACKET; switch (dir) { case XFRM_POLICY_IN: @@ -392,6 +393,7 @@ int xfrm_dev_policy_add(struct net *net, struct xfrm_policy *xp, err = dev->xfrmdev_ops->xdo_dev_policy_add(xp, extack); if (err) { xdo->dev = NULL; + xdo->real_dev = NULL; xdo->type = XFRM_DEV_OFFLOAD_UNSPECIFIED; xdo->dir = 0; netdev_put(dev, &xdo->dev_tracker); diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index d2bd5bddfb05..86029cf5358c 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -1326,6 +1326,7 @@ xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr, xso->type = XFRM_DEV_OFFLOAD_PACKET; xso->dir = xdo->dir; xso->dev = xdo->dev; + xso->real_dev = xdo->real_dev; xso->flags = XFRM_DEV_OFFLOAD_FLAG_ACQ; netdev_hold(xso->dev, &xso->dev_tracker, GFP_ATOMIC); error = xso->dev->xfrmdev_ops->xdo_dev_state_add(x, NULL); @@ -1333,6 +1334,7 @@ xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr, xso->dir = 0; netdev_put(xso->dev, &xso->dev_tracker); xso->dev = NULL; + xso->real_dev = NULL; xso->type = XFRM_DEV_OFFLOAD_UNSPECIFIED; x->km.state = XFRM_STATE_DEAD; to_put = x; -- Gitee From f706376a3ef0a5594691042b0af7a13a451a98b4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:02 +0800 Subject: [PATCH 1124/1421] Revert "libbpf: Fix buffer overflow in bpf_object__init_prog" This reverts commit 27409461e236e9f7153de4271ebdd68c639f192e. --- tools/lib/bpf/libbpf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index ca764ed3aaa9..fa2abe56e845 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -838,7 +838,7 @@ bpf_object__add_programs(struct bpf_object *obj, Elf_Data *sec_data, return -LIBBPF_ERRNO__FORMAT; } - if (sec_off + prog_sz > sec_sz || sec_off + prog_sz < sec_off) { + if (sec_off + prog_sz > sec_sz) { pr_warn("sec '%s': program at offset %zu crosses section boundary\n", sec_name, sec_off); return -LIBBPF_ERRNO__FORMAT; -- Gitee From 887aece994c1a2b0d332b3834e0f6d911b1010d0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:02 +0800 Subject: [PATCH 1125/1421] Revert "net: ncsi: Fix GCPS 64-bit member variables" This reverts commit 7862325edd07f400187cc066ed4653ebeb03609f. --- net/ncsi/internal.h | 21 +++++++++++---------- net/ncsi/ncsi-pkt.h | 23 ++++++++++++----------- net/ncsi/ncsi-rsp.c | 21 +++++++++++---------- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/net/ncsi/internal.h b/net/ncsi/internal.h index 2c260f33b55c..4e0842df5234 100644 --- a/net/ncsi/internal.h +++ b/net/ncsi/internal.h @@ -143,15 +143,16 @@ struct ncsi_channel_vlan_filter { }; struct ncsi_channel_stats { - u64 hnc_cnt; /* Counter cleared */ - u64 hnc_rx_bytes; /* Rx bytes */ - u64 hnc_tx_bytes; /* Tx bytes */ - u64 hnc_rx_uc_pkts; /* Rx UC packets */ - u64 hnc_rx_mc_pkts; /* Rx MC packets */ - u64 hnc_rx_bc_pkts; /* Rx BC packets */ - u64 hnc_tx_uc_pkts; /* Tx UC packets */ - u64 hnc_tx_mc_pkts; /* Tx MC packets */ - u64 hnc_tx_bc_pkts; /* Tx BC packets */ + u32 hnc_cnt_hi; /* Counter cleared */ + u32 hnc_cnt_lo; /* Counter cleared */ + u32 hnc_rx_bytes; /* Rx bytes */ + u32 hnc_tx_bytes; /* Tx bytes */ + u32 hnc_rx_uc_pkts; /* Rx UC packets */ + u32 hnc_rx_mc_pkts; /* Rx MC packets */ + u32 hnc_rx_bc_pkts; /* Rx BC packets */ + u32 hnc_tx_uc_pkts; /* Tx UC packets */ + u32 hnc_tx_mc_pkts; /* Tx MC packets */ + u32 hnc_tx_bc_pkts; /* Tx BC packets */ u32 hnc_fcs_err; /* FCS errors */ u32 hnc_align_err; /* Alignment errors */ u32 hnc_false_carrier; /* False carrier detection */ @@ -180,7 +181,7 @@ struct ncsi_channel_stats { u32 hnc_tx_1023_frames; /* Tx 512-1023 bytes frames */ u32 hnc_tx_1522_frames; /* Tx 1024-1522 bytes frames */ u32 hnc_tx_9022_frames; /* Tx 1523-9022 bytes frames */ - u64 hnc_rx_valid_bytes; /* Rx valid bytes */ + u32 hnc_rx_valid_bytes; /* Rx valid bytes */ u32 hnc_rx_runt_pkts; /* Rx error runt packets */ u32 hnc_rx_jabber_pkts; /* Rx error jabber packets */ u32 ncsi_rx_cmds; /* Rx NCSI commands */ diff --git a/net/ncsi/ncsi-pkt.h b/net/ncsi/ncsi-pkt.h index 24edb2737972..f2f3b5c1b941 100644 --- a/net/ncsi/ncsi-pkt.h +++ b/net/ncsi/ncsi-pkt.h @@ -252,15 +252,16 @@ struct ncsi_rsp_gp_pkt { /* Get Controller Packet Statistics */ struct ncsi_rsp_gcps_pkt { struct ncsi_rsp_pkt_hdr rsp; /* Response header */ - __be64 cnt; /* Counter cleared */ - __be64 rx_bytes; /* Rx bytes */ - __be64 tx_bytes; /* Tx bytes */ - __be64 rx_uc_pkts; /* Rx UC packets */ - __be64 rx_mc_pkts; /* Rx MC packets */ - __be64 rx_bc_pkts; /* Rx BC packets */ - __be64 tx_uc_pkts; /* Tx UC packets */ - __be64 tx_mc_pkts; /* Tx MC packets */ - __be64 tx_bc_pkts; /* Tx BC packets */ + __be32 cnt_hi; /* Counter cleared */ + __be32 cnt_lo; /* Counter cleared */ + __be32 rx_bytes; /* Rx bytes */ + __be32 tx_bytes; /* Tx bytes */ + __be32 rx_uc_pkts; /* Rx UC packets */ + __be32 rx_mc_pkts; /* Rx MC packets */ + __be32 rx_bc_pkts; /* Rx BC packets */ + __be32 tx_uc_pkts; /* Tx UC packets */ + __be32 tx_mc_pkts; /* Tx MC packets */ + __be32 tx_bc_pkts; /* Tx BC packets */ __be32 fcs_err; /* FCS errors */ __be32 align_err; /* Alignment errors */ __be32 false_carrier; /* False carrier detection */ @@ -289,11 +290,11 @@ struct ncsi_rsp_gcps_pkt { __be32 tx_1023_frames; /* Tx 512-1023 bytes frames */ __be32 tx_1522_frames; /* Tx 1024-1522 bytes frames */ __be32 tx_9022_frames; /* Tx 1523-9022 bytes frames */ - __be64 rx_valid_bytes; /* Rx valid bytes */ + __be32 rx_valid_bytes; /* Rx valid bytes */ __be32 rx_runt_pkts; /* Rx error runt packets */ __be32 rx_jabber_pkts; /* Rx error jabber packets */ __be32 checksum; /* Checksum */ -} __packed __aligned(4); +}; /* Get NCSI Statistics */ struct ncsi_rsp_gns_pkt { diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c index 8668888c5a2f..4a8ce2949fae 100644 --- a/net/ncsi/ncsi-rsp.c +++ b/net/ncsi/ncsi-rsp.c @@ -926,15 +926,16 @@ static int ncsi_rsp_handler_gcps(struct ncsi_request *nr) /* Update HNC's statistics */ ncs = &nc->stats; - ncs->hnc_cnt = be64_to_cpu(rsp->cnt); - ncs->hnc_rx_bytes = be64_to_cpu(rsp->rx_bytes); - ncs->hnc_tx_bytes = be64_to_cpu(rsp->tx_bytes); - ncs->hnc_rx_uc_pkts = be64_to_cpu(rsp->rx_uc_pkts); - ncs->hnc_rx_mc_pkts = be64_to_cpu(rsp->rx_mc_pkts); - ncs->hnc_rx_bc_pkts = be64_to_cpu(rsp->rx_bc_pkts); - ncs->hnc_tx_uc_pkts = be64_to_cpu(rsp->tx_uc_pkts); - ncs->hnc_tx_mc_pkts = be64_to_cpu(rsp->tx_mc_pkts); - ncs->hnc_tx_bc_pkts = be64_to_cpu(rsp->tx_bc_pkts); + ncs->hnc_cnt_hi = ntohl(rsp->cnt_hi); + ncs->hnc_cnt_lo = ntohl(rsp->cnt_lo); + ncs->hnc_rx_bytes = ntohl(rsp->rx_bytes); + ncs->hnc_tx_bytes = ntohl(rsp->tx_bytes); + ncs->hnc_rx_uc_pkts = ntohl(rsp->rx_uc_pkts); + ncs->hnc_rx_mc_pkts = ntohl(rsp->rx_mc_pkts); + ncs->hnc_rx_bc_pkts = ntohl(rsp->rx_bc_pkts); + ncs->hnc_tx_uc_pkts = ntohl(rsp->tx_uc_pkts); + ncs->hnc_tx_mc_pkts = ntohl(rsp->tx_mc_pkts); + ncs->hnc_tx_bc_pkts = ntohl(rsp->tx_bc_pkts); ncs->hnc_fcs_err = ntohl(rsp->fcs_err); ncs->hnc_align_err = ntohl(rsp->align_err); ncs->hnc_false_carrier = ntohl(rsp->false_carrier); @@ -963,7 +964,7 @@ static int ncsi_rsp_handler_gcps(struct ncsi_request *nr) ncs->hnc_tx_1023_frames = ntohl(rsp->tx_1023_frames); ncs->hnc_tx_1522_frames = ntohl(rsp->tx_1522_frames); ncs->hnc_tx_9022_frames = ntohl(rsp->tx_9022_frames); - ncs->hnc_rx_valid_bytes = be64_to_cpu(rsp->rx_valid_bytes); + ncs->hnc_rx_valid_bytes = ntohl(rsp->rx_valid_bytes); ncs->hnc_rx_runt_pkts = ntohl(rsp->rx_runt_pkts); ncs->hnc_rx_jabber_pkts = ntohl(rsp->rx_jabber_pkts); -- Gitee From 6dde7c271d966ca007ef80c19113f16b53c34d8b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:02 +0800 Subject: [PATCH 1126/1421] Revert "f2fs: fix to do sanity check on sbi->total_valid_block_count" This reverts commit 9d65aef0e94be481144237fd78b64065bf57de33. --- fs/f2fs/f2fs.h | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index dc648b7638fe..584206684b71 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -2474,14 +2474,8 @@ static inline void dec_valid_block_count(struct f2fs_sb_info *sbi, blkcnt_t sectors = count << F2FS_LOG_SECTORS_PER_BLOCK; spin_lock(&sbi->stat_lock); - if (unlikely(sbi->total_valid_block_count < count)) { - f2fs_warn(sbi, "Inconsistent total_valid_block_count:%u, ino:%lu, count:%u", - sbi->total_valid_block_count, inode->i_ino, count); - sbi->total_valid_block_count = 0; - set_sbi_flag(sbi, SBI_NEED_FSCK); - } else { - sbi->total_valid_block_count -= count; - } + f2fs_bug_on(sbi, sbi->total_valid_block_count < (block_t) count); + sbi->total_valid_block_count -= (block_t)count; if (sbi->reserved_blocks && sbi->current_reserved_blocks < sbi->reserved_blocks) sbi->current_reserved_blocks = min(sbi->reserved_blocks, -- Gitee From 8693993f8b20536daad18d4fc20e73582dd013e1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:03 +0800 Subject: [PATCH 1127/1421] Revert "wifi: ath12k: Fix WMI tag for EHT rate in peer assoc" This reverts commit 245f42440a8d44efc576d723b08a03fcc5ef84da. --- drivers/net/wireless/ath/ath12k/wmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c index a96bf261a3f7..d87d5980325e 100644 --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c @@ -2066,7 +2066,7 @@ int ath12k_wmi_send_peer_assoc_cmd(struct ath12k *ar, for (i = 0; i < arg->peer_eht_mcs_count; i++) { eht_mcs = ptr; - eht_mcs->tlv_header = ath12k_wmi_tlv_cmd_hdr(WMI_TAG_EHT_RATE_SET, + eht_mcs->tlv_header = ath12k_wmi_tlv_cmd_hdr(WMI_TAG_HE_RATE_SET, sizeof(*eht_mcs)); eht_mcs->rx_mcs_set = cpu_to_le32(arg->peer_eht_rx_mcs_set[i]); -- Gitee From 4b937d738f418baba7330e94c581a5e830552820 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:03 +0800 Subject: [PATCH 1128/1421] Revert "bpf, sockmap: fix duplicated data transmission" This reverts commit 4f107b46f3a288c80430ebaf8bb77a81f42ce16b. --- net/core/skmsg.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/net/core/skmsg.c b/net/core/skmsg.c index c7edf77fd6fd..86fd7cac18c1 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c @@ -656,6 +656,11 @@ static void sk_psock_backlog(struct work_struct *work) int ret; mutex_lock(&psock->work_mutex); + if (unlikely(state->len)) { + len = state->len; + off = state->off; + } + while ((skb = skb_peek(&psock->ingress_skb))) { len = skb->len; off = 0; @@ -665,13 +670,6 @@ static void sk_psock_backlog(struct work_struct *work) off = stm->offset; len = stm->full_len; } - - /* Resume processing from previous partial state */ - if (unlikely(state->len)) { - len = state->len; - off = state->off; - } - ingress = skb_bpf_ingress(skb); skb_bpf_redirect_clear(skb); do { @@ -699,8 +697,6 @@ static void sk_psock_backlog(struct work_struct *work) len -= ret; } while (len); - /* The entire skb sent, clear state */ - sk_psock_skb_state(psock, state, 0, 0); skb = skb_dequeue(&psock->ingress_skb); kfree_skb(skb); } -- Gitee From 8486ad0ee1fd3f551e1a236bdc84185612f56ee9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:03 +0800 Subject: [PATCH 1129/1421] Revert "bpf: fix ktls panic with sockmap" This reverts commit f31391b714e735dfd5ecd36d8969d6c17f484a3e. --- net/tls/tls_sw.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index bf445a518883..6e30fe879d53 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -1120,13 +1120,9 @@ static int tls_sw_sendmsg_locked(struct sock *sk, struct msghdr *msg, num_async++; else if (ret == -ENOMEM) goto wait_for_memory; - else if (ctx->open_rec && ret == -ENOSPC) { - if (msg_pl->cork_bytes) { - ret = 0; - goto send_end; - } + else if (ctx->open_rec && ret == -ENOSPC) goto rollback_iter; - } else if (ret != -EAGAIN) + else if (ret != -EAGAIN) goto send_end; } continue; -- Gitee From 6bb8ce73ec695657cb6739c7467afa46211a5e5d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:03 +0800 Subject: [PATCH 1130/1421] Revert "selftests/bpf: Fix bpf_nf selftest failure" This reverts commit 351cb0a594450af257b0480b559f63a487df83dc. --- tools/testing/selftests/bpf/prog_tests/bpf_nf.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_nf.c b/tools/testing/selftests/bpf/prog_tests/bpf_nf.c index f80660c00a1a..b30ff6b3b81a 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_nf.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_nf.c @@ -63,12 +63,6 @@ static void test_bpf_nf_ct(int mode) .repeat = 1, ); - if (SYS_NOFAIL("iptables-legacy --version")) { - fprintf(stdout, "Missing required iptables-legacy tool\n"); - test__skip(); - return; - } - skel = test_bpf_nf__open_and_load(); if (!ASSERT_OK_PTR(skel, "test_bpf_nf__open_and_load")) return; -- Gitee From 4cd7a690b70824e021890daaf15750da037b7cf5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:03 +0800 Subject: [PATCH 1131/1421] Revert "IB/cm: use rwlock for MAD agent lock" This reverts commit c953d197db8b93c7a13a9551f38481e37982a90d. --- drivers/infiniband/core/cm.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index d45e3909dafe..07fb8d3c037f 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -166,7 +166,7 @@ struct cm_port { struct cm_device { struct kref kref; struct list_head list; - rwlock_t mad_agent_lock; + spinlock_t mad_agent_lock; struct ib_device *ib_device; u8 ack_delay; int going_down; @@ -284,7 +284,7 @@ static struct ib_mad_send_buf *cm_alloc_msg(struct cm_id_private *cm_id_priv) if (!cm_id_priv->av.port) return ERR_PTR(-EINVAL); - read_lock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); + spin_lock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); mad_agent = cm_id_priv->av.port->mad_agent; if (!mad_agent) { m = ERR_PTR(-EINVAL); @@ -315,7 +315,7 @@ static struct ib_mad_send_buf *cm_alloc_msg(struct cm_id_private *cm_id_priv) m->context[0] = cm_id_priv; out: - read_unlock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); + spin_unlock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); return m; } @@ -1294,10 +1294,10 @@ static __be64 cm_form_tid(struct cm_id_private *cm_id_priv) if (!cm_id_priv->av.port) return cpu_to_be64(low_tid); - read_lock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); + spin_lock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); if (cm_id_priv->av.port->mad_agent) hi_tid = ((u64)cm_id_priv->av.port->mad_agent->hi_tid) << 32; - read_unlock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); + spin_unlock(&cm_id_priv->av.port->cm_dev->mad_agent_lock); return cpu_to_be64(hi_tid | low_tid); } @@ -4374,7 +4374,7 @@ static int cm_add_one(struct ib_device *ib_device) return -ENOMEM; kref_init(&cm_dev->kref); - rwlock_init(&cm_dev->mad_agent_lock); + spin_lock_init(&cm_dev->mad_agent_lock); cm_dev->ib_device = ib_device; cm_dev->ack_delay = ib_device->attrs.local_ca_ack_delay; cm_dev->going_down = 0; @@ -4490,9 +4490,9 @@ static void cm_remove_one(struct ib_device *ib_device, void *client_data) * The above ensures no call paths from the work are running, * the remaining paths all take the mad_agent_lock. */ - write_lock(&cm_dev->mad_agent_lock); + spin_lock(&cm_dev->mad_agent_lock); port->mad_agent = NULL; - write_unlock(&cm_dev->mad_agent_lock); + spin_unlock(&cm_dev->mad_agent_lock); ib_unregister_mad_agent(mad_agent); ib_port_unregister_client_groups(ib_device, i, cm_counter_groups); -- Gitee From 01e413ed511b2bd2fb55508991d4940137f9e35c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:04 +0800 Subject: [PATCH 1132/1421] Revert "wifi: ath11k: fix node corruption in ar->arvifs list" This reverts commit bfe6af11ff304ed670621a16553aef762f82a209. --- drivers/net/wireless/ath/ath11k/core.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c index f9870ba651d8..fc7c4564a715 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -1742,7 +1742,6 @@ static int ath11k_core_reconfigure_on_crash(struct ath11k_base *ab) void ath11k_core_halt(struct ath11k *ar) { struct ath11k_base *ab = ar->ab; - struct list_head *pos, *n; lockdep_assert_held(&ar->conf_mutex); @@ -1757,12 +1756,7 @@ void ath11k_core_halt(struct ath11k *ar) rcu_assign_pointer(ab->pdevs_active[ar->pdev_idx], NULL); synchronize_rcu(); - - spin_lock_bh(&ar->data_lock); - list_for_each_safe(pos, n, &ar->arvifs) - list_del_init(pos); - spin_unlock_bh(&ar->data_lock); - + INIT_LIST_HEAD(&ar->arvifs); idr_init(&ar->txmgmt_idr); } -- Gitee From f21487fdfb664fd6676ecbaae3b7cd64f1a11458 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:04 +0800 Subject: [PATCH 1133/1421] Revert "xen/x86: fix initial memory balloon target" This reverts commit ba772d738a88628b1518a247fd61e858add21437. --- drivers/xen/balloon.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c index 204ec1bcbd52..b0b52fa8fba6 100644 --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c @@ -696,18 +696,15 @@ static int __init balloon_add_regions(void) /* * Extra regions are accounted for in the physmap, but need - * decreasing from current_pages and target_pages to balloon - * down the initial allocation, because they are already - * accounted for in total_pages. + * decreasing from current_pages to balloon down the initial + * allocation, because they are already accounted for in + * total_pages. */ - pages = extra_pfn_end - start_pfn; - if (pages >= balloon_stats.current_pages || - pages >= balloon_stats.target_pages) { + if (extra_pfn_end - start_pfn >= balloon_stats.current_pages) { WARN(1, "Extra pages underflow current target"); return -ERANGE; } - balloon_stats.current_pages -= pages; - balloon_stats.target_pages -= pages; + balloon_stats.current_pages -= extra_pfn_end - start_pfn; } return 0; -- Gitee From 1582d954a694b8a75cae13d6b745664e4350b44e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:04 +0800 Subject: [PATCH 1134/1421] Revert "drm/mediatek: mtk_drm_drv: Unbind secondary mmsys components on err" This reverts commit 5c3ca818384c8f7d00c8010881040d128a9a3ec7. --- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c index ef4fa70119de..32d66fa75b7c 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -449,11 +449,8 @@ static int mtk_drm_kms_init(struct drm_device *drm) for (i = 0; i < private->data->mmsys_dev_num; i++) { drm->dev_private = private->all_drm_private[i]; ret = component_bind_all(private->all_drm_private[i]->dev, drm); - if (ret) { - while (--i >= 0) - component_unbind_all(private->all_drm_private[i]->dev, drm); + if (ret) return ret; - } } /* -- Gitee From d72f90bdd85b9817375288696b8f70ba9b68e79d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:04 +0800 Subject: [PATCH 1135/1421] Revert "drm/mediatek: Fix kobject put for component sub-drivers" This reverts commit 19d75a385b4280c2c7c99fef4fb905c9e63d8440. --- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c index 32d66fa75b7c..108cab35ce48 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -635,10 +635,6 @@ static int mtk_drm_bind(struct device *dev) for (i = 0; i < private->data->mmsys_dev_num; i++) private->all_drm_private[i]->drm = NULL; err_put_dev: - for (i = 0; i < private->data->mmsys_dev_num; i++) { - /* For device_find_child in mtk_drm_get_all_priv() */ - put_device(private->all_drm_private[i]->dev); - } put_device(private->mutex_dev); return ret; } @@ -646,7 +642,6 @@ static int mtk_drm_bind(struct device *dev) static void mtk_drm_unbind(struct device *dev) { struct mtk_drm_private *private = dev_get_drvdata(dev); - int i; /* for multi mmsys dev, unregister drm dev in mmsys master */ if (private->drm_master) { @@ -654,10 +649,6 @@ static void mtk_drm_unbind(struct device *dev) mtk_drm_kms_deinit(private->drm); drm_dev_put(private->drm); - for (i = 0; i < private->data->mmsys_dev_num; i++) { - /* For device_find_child in mtk_drm_get_all_priv() */ - put_device(private->all_drm_private[i]->dev); - } put_device(private->mutex_dev); } private->mtk_drm_bound = false; -- Gitee From e0822140d0a7465a80f478893c25c0991f104cf5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:05 +0800 Subject: [PATCH 1136/1421] Revert "drm/mediatek: mtk_drm_drv: Fix kobject put for mtk_mutex device ptr" This reverts commit d4b925e2e92a95f46642ac2ca8228326e92181e9. --- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c index 108cab35ce48..8b41a07c3641 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -431,7 +431,7 @@ static int mtk_drm_kms_init(struct drm_device *drm) ret = drmm_mode_config_init(drm); if (ret) - return ret; + goto put_mutex_dev; drm->mode_config.min_width = 64; drm->mode_config.min_height = 64; @@ -450,7 +450,7 @@ static int mtk_drm_kms_init(struct drm_device *drm) drm->dev_private = private->all_drm_private[i]; ret = component_bind_all(private->all_drm_private[i]->dev, drm); if (ret) - return ret; + goto put_mutex_dev; } /* @@ -532,6 +532,9 @@ static int mtk_drm_kms_init(struct drm_device *drm) err_component_unbind: for (i = 0; i < private->data->mmsys_dev_num; i++) component_unbind_all(private->all_drm_private[i]->dev, drm); +put_mutex_dev: + for (i = 0; i < private->data->mmsys_dev_num; i++) + put_device(private->all_drm_private[i]->mutex_dev); return ret; } @@ -605,10 +608,8 @@ static int mtk_drm_bind(struct device *dev) return 0; drm = drm_dev_alloc(&mtk_drm_driver, dev); - if (IS_ERR(drm)) { - ret = PTR_ERR(drm); - goto err_put_dev; - } + if (IS_ERR(drm)) + return PTR_ERR(drm); private->drm_master = true; drm->dev_private = private; @@ -634,8 +635,6 @@ static int mtk_drm_bind(struct device *dev) drm_dev_put(drm); for (i = 0; i < private->data->mmsys_dev_num; i++) private->all_drm_private[i]->drm = NULL; -err_put_dev: - put_device(private->mutex_dev); return ret; } @@ -648,8 +647,6 @@ static void mtk_drm_unbind(struct device *dev) drm_dev_unregister(private->drm); mtk_drm_kms_deinit(private->drm); drm_dev_put(private->drm); - - put_device(private->mutex_dev); } private->mtk_drm_bound = false; private->drm_master = false; -- Gitee From ea99d538ffff5d85953a7d06c64442196ad01372 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:05 +0800 Subject: [PATCH 1137/1421] Revert "perf/amlogic: Replace smp_processor_id() with raw_smp_processor_id() in meson_ddr_pmu_create()" This reverts commit 1830a41f67dbdc02db7e32025900e3be07228696. --- drivers/perf/amlogic/meson_ddr_pmu_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/perf/amlogic/meson_ddr_pmu_core.c b/drivers/perf/amlogic/meson_ddr_pmu_core.c index 5f8699612a9a..bbc7285fd934 100644 --- a/drivers/perf/amlogic/meson_ddr_pmu_core.c +++ b/drivers/perf/amlogic/meson_ddr_pmu_core.c @@ -510,7 +510,7 @@ int meson_ddr_pmu_create(struct platform_device *pdev) fmt_attr_fill(pmu->info.hw_info->fmt_attr); - pmu->cpu = raw_smp_processor_id(); + pmu->cpu = smp_processor_id(); name = devm_kasprintf(&pdev->dev, GFP_KERNEL, DDR_PERF_DEV_NAME); if (!name) -- Gitee From eb6c051b8b177fc6d1b4ab49d07ebfa9d1846a80 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:05 +0800 Subject: [PATCH 1138/1421] Revert "scsi: qedf: Use designated initializer for struct qed_fcoe_cb_ops" This reverts commit 0f2e232db6737c8ad3a361ca32e9462bc54710b0. --- drivers/scsi/qedf/qedf_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index 17b19b39699a..9a81d14aef6b 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c @@ -699,7 +699,7 @@ static u32 qedf_get_login_failures(void *cookie) } static struct qed_fcoe_cb_ops qedf_cb_ops = { - .common = { + { .link_update = qedf_link_update, .bw_update = qedf_bw_update, .schedule_recovery_handler = qedf_schedule_recovery_handler, -- Gitee From 77fb28790eb2fe27c27ba260157efa5f51de8726 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:05 +0800 Subject: [PATCH 1139/1421] Revert "arm64/fpsimd: Do not discard modified SVE state" This reverts commit 654f53d9bf177bf568306f8538b97c7607e56c3a. --- arch/arm64/include/asm/fpsimd.h | 3 --- arch/arm64/kernel/entry-common.c | 46 ++++++++------------------------ arch/arm64/kernel/fpsimd.c | 15 +++++------ 3 files changed, 17 insertions(+), 47 deletions(-) diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fpsimd.h index c4840ea6d137..7415c63b4187 100644 --- a/arch/arm64/include/asm/fpsimd.h +++ b/arch/arm64/include/asm/fpsimd.h @@ -6,7 +6,6 @@ #define __ASM_FP_H #include -#include #include #include #include @@ -70,8 +69,6 @@ struct cpu_fp_state { enum fp_type to_save; }; -DECLARE_PER_CPU(struct cpu_fp_state, fpsimd_last_state); - extern void fpsimd_bind_state_to_cpu(struct cpu_fp_state *fp_state); extern void fpsimd_flush_task_state(struct task_struct *target); diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c index 5e8204d250b4..0fc94207e69a 100644 --- a/arch/arm64/kernel/entry-common.c +++ b/arch/arm64/kernel/entry-common.c @@ -359,16 +359,20 @@ static bool cortex_a76_erratum_1463225_debug_handler(struct pt_regs *regs) * As per the ABI exit SME streaming mode and clear the SVE state not * shared with FPSIMD on syscall entry. */ -static inline void fpsimd_syscall_enter(void) +static inline void fp_user_discard(void) { - /* Ensure PSTATE.SM is clear, but leave PSTATE.ZA as-is. */ + /* + * If SME is active then exit streaming mode. If ZA is active + * then flush the SVE registers but leave userspace access to + * both SVE and SME enabled, otherwise disable SME for the + * task and fall through to disabling SVE too. This means + * that after a syscall we never have any streaming mode + * register state to track, if this changes the KVM code will + * need updating. + */ if (system_supports_sme()) sme_smstop_sm(); - /* - * The CPU is not in streaming mode. If non-streaming SVE is not - * supported, there is no SVE state that needs to be discarded. - */ if (!system_supports_sve()) return; @@ -378,33 +382,6 @@ static inline void fpsimd_syscall_enter(void) sve_vq_minus_one = sve_vq_from_vl(task_get_sve_vl(current)) - 1; sve_flush_live(true, sve_vq_minus_one); } - - /* - * Any live non-FPSIMD SVE state has been zeroed. Allow - * fpsimd_save_user_state() to lazily discard SVE state until either - * the live state is unbound or fpsimd_syscall_exit() is called. - */ - __this_cpu_write(fpsimd_last_state.to_save, FP_STATE_FPSIMD); -} - -static __always_inline void fpsimd_syscall_exit(void) -{ - if (!system_supports_sve()) - return; - - /* - * The current task's user FPSIMD/SVE/SME state is now bound to this - * CPU. The fpsimd_last_state.to_save value is either: - * - * - FP_STATE_FPSIMD, if the state has not been reloaded on this CPU - * since fpsimd_syscall_enter(). - * - * - FP_STATE_CURRENT, if the state has been reloaded on this CPU at - * any point. - * - * Reset this to FP_STATE_CURRENT to stop lazy discarding. - */ - __this_cpu_write(fpsimd_last_state.to_save, FP_STATE_CURRENT); } UNHANDLED(el1t, 64, sync) @@ -696,11 +673,10 @@ static void noinstr el0_svc(struct pt_regs *regs) { enter_from_user_mode(regs); cortex_a76_erratum_1463225_svc_handler(); - fpsimd_syscall_enter(); + fp_user_discard(); local_daif_restore(DAIF_PROCCTX); do_el0_svc(regs); exit_to_user_mode(regs); - fpsimd_syscall_exit(); } static void noinstr el0_fpac(struct pt_regs *regs, unsigned long esr) diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index a1e0cc5353fb..b86a50646700 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -119,7 +119,7 @@ * whatever is in the FPSIMD registers is not saved to memory, but discarded. */ -DEFINE_PER_CPU(struct cpu_fp_state, fpsimd_last_state); +static DEFINE_PER_CPU(struct cpu_fp_state, fpsimd_last_state); __ro_after_init struct vl_info vl_info[ARM64_VEC_MAX] = { #ifdef CONFIG_ARM64_SVE @@ -473,15 +473,12 @@ static void fpsimd_save(void) return; /* - * Save SVE state if it is live. - * - * The syscall ABI discards live SVE state at syscall entry. When - * entering a syscall, fpsimd_syscall_enter() sets to_save to - * FP_STATE_FPSIMD to allow the SVE state to be lazily discarded until - * either new SVE state is loaded+bound or fpsimd_syscall_exit() is - * called prior to a return to userspace. + * If a task is in a syscall the ABI allows us to only + * preserve the state shared with FPSIMD so don't bother + * saving the full SVE state in that case. */ - if ((last->to_save == FP_STATE_CURRENT && test_thread_flag(TIF_SVE)) || + if ((last->to_save == FP_STATE_CURRENT && test_thread_flag(TIF_SVE) && + !in_syscall(current_pt_regs())) || last->to_save == FP_STATE_SVE) { save_sve_regs = true; save_ffr = true; -- Gitee From 5db0d8fd58618ff7c7222595ebf6bea57fe7a889 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:05 +0800 Subject: [PATCH 1140/1421] Revert "firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES" This reverts commit 9cc2cd24a19304dd634957f1c66989b9925f0942. --- drivers/acpi/apei/Kconfig | 1 - drivers/acpi/apei/ghes.c | 2 +- drivers/firmware/Kconfig | 1 + drivers/firmware/arm_sdei.c | 11 +++-------- include/linux/arm_sdei.h | 4 ++-- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig index 71e0d64a7792..6b18f8bc7be3 100644 --- a/drivers/acpi/apei/Kconfig +++ b/drivers/acpi/apei/Kconfig @@ -23,7 +23,6 @@ config ACPI_APEI_GHES select ACPI_HED select IRQ_WORK select GENERIC_ALLOCATOR - select ARM_SDE_INTERFACE if ARM64 help Generic Hardware Error Source provides a way to report platform hardware errors (such as that from chipset). It diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 2abf20736702..3aadc632d7dd 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -1523,7 +1523,7 @@ void __init acpi_ghes_init(void) { int rc; - acpi_sdei_init(); + sdei_init(); if (acpi_disabled) return; diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig index 8ecffdce94b1..3f2f22e47bfa 100644 --- a/drivers/firmware/Kconfig +++ b/drivers/firmware/Kconfig @@ -40,6 +40,7 @@ config ARM_SCPI_POWER_DOMAIN config ARM_SDE_INTERFACE bool "ARM Software Delegated Exception Interface (SDEI)" depends on ARM64 + depends on ACPI_APEI_GHES help The Software Delegated Exception Interface (SDEI) is an ARM standard for registering callbacks from the platform firmware diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c index 71e2a9a89f6a..3e8051fe8296 100644 --- a/drivers/firmware/arm_sdei.c +++ b/drivers/firmware/arm_sdei.c @@ -1062,12 +1062,13 @@ static bool __init sdei_present_acpi(void) return true; } -void __init acpi_sdei_init(void) +void __init sdei_init(void) { struct platform_device *pdev; int ret; - if (!sdei_present_acpi()) + ret = platform_driver_register(&sdei_driver); + if (ret || !sdei_present_acpi()) return; pdev = platform_device_register_simple(sdei_driver.driver.name, @@ -1080,12 +1081,6 @@ void __init acpi_sdei_init(void) } } -static int __init sdei_init(void) -{ - return platform_driver_register(&sdei_driver); -} -arch_initcall(sdei_init); - int sdei_event_handler(struct pt_regs *regs, struct sdei_registered_event *arg) { diff --git a/include/linux/arm_sdei.h b/include/linux/arm_sdei.h index f652a5028b59..255701e1251b 100644 --- a/include/linux/arm_sdei.h +++ b/include/linux/arm_sdei.h @@ -46,12 +46,12 @@ int sdei_unregister_ghes(struct ghes *ghes); /* For use by arch code when CPU hotplug notifiers are not appropriate. */ int sdei_mask_local_cpu(void); int sdei_unmask_local_cpu(void); -void __init acpi_sdei_init(void); +void __init sdei_init(void); void sdei_handler_abort(void); #else static inline int sdei_mask_local_cpu(void) { return 0; } static inline int sdei_unmask_local_cpu(void) { return 0; } -static inline void acpi_sdei_init(void) { } +static inline void sdei_init(void) { } static inline void sdei_handler_abort(void) { } #endif /* CONFIG_ARM_SDE_INTERFACE */ -- Gitee From 989afd8b253d75c116d353dc386920f7185e25b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:06 +0800 Subject: [PATCH 1141/1421] Revert "drm/tegra: rgb: Fix the unbound reference count" This reverts commit 9bef2c5b8d68deb8829bdb2d4d45c9aae97ea247. --- drivers/gpu/drm/tegra/rgb.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/drivers/gpu/drm/tegra/rgb.c b/drivers/gpu/drm/tegra/rgb.c index 8930460ba628..d6424abd3c45 100644 --- a/drivers/gpu/drm/tegra/rgb.c +++ b/drivers/gpu/drm/tegra/rgb.c @@ -190,11 +190,6 @@ static const struct drm_encoder_helper_funcs tegra_rgb_encoder_helper_funcs = { .atomic_check = tegra_rgb_encoder_atomic_check, }; -static void tegra_dc_of_node_put(void *data) -{ - of_node_put(data); -} - int tegra_dc_rgb_probe(struct tegra_dc *dc) { struct device_node *np; @@ -202,14 +197,7 @@ int tegra_dc_rgb_probe(struct tegra_dc *dc) int err; np = of_get_child_by_name(dc->dev->of_node, "rgb"); - if (!np) - return -ENODEV; - - err = devm_add_action_or_reset(dc->dev, tegra_dc_of_node_put, np); - if (err < 0) - return err; - - if (!of_device_is_available(np)) + if (!np || !of_device_is_available(np)) return -ENODEV; rgb = devm_kzalloc(dc->dev, sizeof(*rgb), GFP_KERNEL); -- Gitee From 7d225667940f2245ed8cd5f8ff1c119c26334a44 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:06 +0800 Subject: [PATCH 1142/1421] Revert "drm/vkms: Adjust vkms_state->active_planes allocation type" This reverts commit 40bb893dd9165539451c9a27e2d5b341c8352a80. --- drivers/gpu/drm/vkms/vkms_crtc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c index 894c484f99e9..61e500b8c9da 100644 --- a/drivers/gpu/drm/vkms/vkms_crtc.c +++ b/drivers/gpu/drm/vkms/vkms_crtc.c @@ -201,7 +201,7 @@ static int vkms_crtc_atomic_check(struct drm_crtc *crtc, i++; } - vkms_state->active_planes = kcalloc(i, sizeof(*vkms_state->active_planes), GFP_KERNEL); + vkms_state->active_planes = kcalloc(i, sizeof(plane), GFP_KERNEL); if (!vkms_state->active_planes) return -ENOMEM; vkms_state->num_active_planes = i; -- Gitee From 663b5f95fab0b35fb132f85a93e965084173cc16 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:06 +0800 Subject: [PATCH 1143/1421] Revert "drm: rcar-du: Fix memory leak in rcar_du_vsps_init()" This reverts commit a937926ee00a1ef89423795a57efe0ecc0f17d9f. --- drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c index 4c8fe83dd610..70d8ad065bfa 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c @@ -705,7 +705,7 @@ static int rcar_du_vsps_init(struct rcar_du_device *rcdu) ret = of_parse_phandle_with_fixed_args(np, vsps_prop_name, cells, i, &args); if (ret < 0) - goto done; + goto error; /* * Add the VSP to the list or update the corresponding existing @@ -743,11 +743,13 @@ static int rcar_du_vsps_init(struct rcar_du_device *rcdu) vsp->dev = rcdu; ret = rcar_du_vsp_init(vsp, vsps[i].np, vsps[i].crtcs_mask); - if (ret) - goto done; + if (ret < 0) + goto error; } -done: + return 0; + +error: for (i = 0; i < ARRAY_SIZE(vsps); ++i) of_node_put(vsps[i].np); -- Gitee From a897ae2f0cdf10e66af99fc06997f9eb6f96ecca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:06 +0800 Subject: [PATCH 1144/1421] Revert "selftests/seccomp: fix syscall_restart test for arm compat" This reverts commit 6849a23a0dd4f076d554e2a2a81e3091a080ab27. --- tools/testing/selftests/seccomp/seccomp_bpf.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index 15325ca35f1e..cacf6507f690 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -3154,15 +3154,12 @@ TEST(syscall_restart) ret = get_syscall(_metadata, child_pid); #if defined(__arm__) /* + * FIXME: * - native ARM registers do NOT expose true syscall. * - compat ARM registers on ARM64 DO expose true syscall. - * - values of utsbuf.machine include 'armv8l' or 'armb8b' - * for ARM64 running in compat mode. */ ASSERT_EQ(0, uname(&utsbuf)); - if ((strncmp(utsbuf.machine, "arm", 3) == 0) && - (strncmp(utsbuf.machine, "armv8l", 6) != 0) && - (strncmp(utsbuf.machine, "armv8b", 6) != 0)) { + if (strncmp(utsbuf.machine, "arm", 3) == 0) { EXPECT_EQ(__NR_nanosleep, ret); } else #endif -- Gitee From ebe00a45089177f760628e8b831e8a9ff6ea70dd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:06 +0800 Subject: [PATCH 1145/1421] Revert "arm64: Support ARM64_VA_BITS=52 when setting ARCH_MMAP_RND_BITS_MAX" This reverts commit 66d231b0ddd9a266fd6cb4de9207d8f4b8ded3c5. --- arch/arm64/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 5b36e26c2693..f0d4cc3499dd 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -304,9 +304,9 @@ config ARCH_MMAP_RND_BITS_MAX default 24 if ARM64_VA_BITS=39 default 27 if ARM64_VA_BITS=42 default 30 if ARM64_VA_BITS=47 - default 29 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) && ARM64_64K_PAGES - default 31 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) && ARM64_16K_PAGES - default 33 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) + default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES + default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES + default 33 if ARM64_VA_BITS=48 default 14 if ARM64_64K_PAGES default 16 if ARM64_16K_PAGES default 18 -- Gitee From 84a42de56dc15d63447588fbe844406354674d8c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:07 +0800 Subject: [PATCH 1146/1421] Revert "firmware: psci: Fix refcount leak in psci_dt_init" This reverts commit 5e48a4e202a86f823e0dd43e035bd53124e477ac. --- drivers/firmware/psci/psci.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index d6701d81cf68..2328ca58bba6 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -759,10 +759,8 @@ int __init psci_dt_init(void) np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np); - if (!np || !of_device_is_available(np)) { - of_node_put(np); + if (!np || !of_device_is_available(np)) return -ENODEV; - } init_fn = (psci_initcall_t)matched_np->data; ret = init_fn(np); -- Gitee From 9035208cab1ead48d79e27607b6ea178a613c735 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:07 +0800 Subject: [PATCH 1147/1421] Revert "m68k: mac: Fix macintosh_config for Mac II" This reverts commit 95ca8889f918e9358738ddffc911342ba9918f9e. --- arch/m68k/mac/config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index 9f5603e01a68..382f656c29ea 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c @@ -801,7 +801,7 @@ static void __init mac_identify(void) } macintosh_config = mac_data_table; - for (m = &mac_data_table[1]; m->ident != -1; m++) { + for (m = macintosh_config; m->ident != -1; m++) { if (m->ident == model) { macintosh_config = m; break; -- Gitee From 4a590b0ebd210d0b75c479c62b2710f17d465d98 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:07 +0800 Subject: [PATCH 1148/1421] Revert "watchdog: exar: Shorten identity name to fit correctly" This reverts commit 287dabfced8ddd8044dd23fa927feeb2ebf238c2. --- drivers/watchdog/exar_wdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/watchdog/exar_wdt.c b/drivers/watchdog/exar_wdt.c index c2e3bb08df89..7c61ff343271 100644 --- a/drivers/watchdog/exar_wdt.c +++ b/drivers/watchdog/exar_wdt.c @@ -221,7 +221,7 @@ static const struct watchdog_info exar_wdt_info = { .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE, - .identity = "Exar XR28V38x Watchdog", + .identity = "Exar/MaxLinear XR28V38x Watchdog", }; static const struct watchdog_ops exar_wdt_ops = { -- Gitee From 30fb7b87142137f500423e8b437567097db6d19e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:07 +0800 Subject: [PATCH 1149/1421] Revert "fs/ntfs3: handle hdr_first_de() return value" This reverts commit 5e3dd398f42a114f0ca2f9723d3c1112ba8df53e. --- fs/ntfs3/index.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/fs/ntfs3/index.c b/fs/ntfs3/index.c index 191b91ffadbb..28aae6ea1e61 100644 --- a/fs/ntfs3/index.c +++ b/fs/ntfs3/index.c @@ -2184,10 +2184,6 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx, e = hdr_first_de(&n->index->ihdr); fnd_push(fnd, n, e); - if (!e) { - err = -EINVAL; - goto out; - } if (!de_is_last(e)) { /* @@ -2209,10 +2205,6 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx, n = fnd->nodes[level]; te = hdr_first_de(&n->index->ihdr); - if (!te) { - err = -EINVAL; - goto out; - } /* Copy the candidate entry into the replacement entry buffer. */ re = kmalloc(le16_to_cpu(te->size) + sizeof(u64), GFP_NOFS); if (!re) { -- Gitee From 370b2714d5923a6e5b60bca2ecd26827bf11874d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:08 +0800 Subject: [PATCH 1150/1421] Revert "drm/bridge: lt9611uxc: Fix an error handling path in lt9611uxc_probe()" This reverts commit 460875b1e52cfec709250ffbe5dea6da1a05cbf0. --- drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c index d458a4f37ac8..c41ffd0bc049 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c @@ -962,11 +962,7 @@ static int lt9611uxc_probe(struct i2c_client *client) } } - ret = lt9611uxc_audio_init(dev, lt9611uxc); - if (ret) - goto err_remove_bridge; - - return 0; + return lt9611uxc_audio_init(dev, lt9611uxc); err_remove_bridge: free_irq(client->irq, lt9611uxc); -- Gitee From 02c412dc0b8de6a9fe183f79b225e11adcfae0bb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:08 +0800 Subject: [PATCH 1151/1421] Revert "arm64/fpsimd: Fix merging of FPSIMD state during signal return" This reverts commit bf7b07076d7e2643a7915679e0b3bc0ac9f7bf6e. --- arch/arm64/kernel/fpsimd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index b86a50646700..3d482336c066 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -1805,7 +1805,7 @@ void fpsimd_update_current_state(struct user_fpsimd_state const *state) get_cpu_fpsimd_context(); current->thread.uw.fpsimd_state = *state; - if (current->thread.fp_type == FP_STATE_SVE) + if (test_thread_flag(TIF_SVE)) fpsimd_to_sve(current); task_fpsimd_load(); -- Gitee From 4893e0193e8cfd7d6a538215e42287545c878e1c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:08 +0800 Subject: [PATCH 1152/1421] Revert "arm64/fpsimd: Discard stale CPU state when handling SME traps" This reverts commit 12233617952b1cf639dd8a409657f82dd5cbc6ea. --- arch/arm64/kernel/fpsimd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index 3d482336c066..9f6ea38f5189 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -1538,8 +1538,6 @@ void do_sme_acc(unsigned long esr, struct pt_regs *regs) sme_set_vq(vq_minus_one); fpsimd_bind_task_to_cpu(); - } else { - fpsimd_flush_task_state(current); } put_cpu_fpsimd_context(); -- Gitee From 699e9983404f287d9d1e3f6333e3d03972e36799 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:08 +0800 Subject: [PATCH 1153/1421] Revert "arm64/fpsimd: Avoid RES0 bits in the SME trap handler" This reverts commit 58bcf15ac2442c6595e3a2c939a713c31cf175e5. --- arch/arm64/include/asm/esr.h | 14 ++++++-------- arch/arm64/kernel/fpsimd.c | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h index b04575ea3a35..1cdae1b4f03b 100644 --- a/arch/arm64/include/asm/esr.h +++ b/arch/arm64/include/asm/esr.h @@ -366,14 +366,12 @@ /* * ISS values for SME traps */ -#define ESR_ELx_SME_ISS_SMTC_MASK GENMASK(2, 0) -#define ESR_ELx_SME_ISS_SMTC(esr) ((esr) & ESR_ELx_SME_ISS_SMTC_MASK) - -#define ESR_ELx_SME_ISS_SMTC_SME_DISABLED 0 -#define ESR_ELx_SME_ISS_SMTC_ILL 1 -#define ESR_ELx_SME_ISS_SMTC_SM_DISABLED 2 -#define ESR_ELx_SME_ISS_SMTC_ZA_DISABLED 3 -#define ESR_ELx_SME_ISS_SMTC_ZT_DISABLED 4 + +#define ESR_ELx_SME_ISS_SME_DISABLED 0 +#define ESR_ELx_SME_ISS_ILL 1 +#define ESR_ELx_SME_ISS_SM_DISABLED 2 +#define ESR_ELx_SME_ISS_ZA_DISABLED 3 +#define ESR_ELx_SME_ISS_ZT_DISABLED 4 /* ISS field definitions for MOPS exceptions */ #define ESR_ELx_MOPS_ISS_MEM_INST (UL(1) << 24) diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index 9f6ea38f5189..bd4f6c6ee0f3 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -1514,7 +1514,7 @@ void do_sme_acc(unsigned long esr, struct pt_regs *regs) * If this not a trap due to SME being disabled then something * is being used in the wrong mode, report as SIGILL. */ - if (ESR_ELx_SME_ISS_SMTC(esr) != ESR_ELx_SME_ISS_SMTC_SME_DISABLED) { + if (ESR_ELx_ISS(esr) != ESR_ELx_SME_ISS_SME_DISABLED) { force_signal_inject(SIGILL, ILL_ILLOPC, regs->pc, 0); return; } -- Gitee From b5727f6de802e637c7d9df85a7bd5629c302c0c0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:08 +0800 Subject: [PATCH 1154/1421] Revert "media: rkvdec: Fix frame size enumeration" This reverts commit c9af5288bfb69ebe905db3399eb99e1a6412d856. --- drivers/staging/media/rkvdec/rkvdec.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c index a1d941b0be00..ac398b5a9736 100644 --- a/drivers/staging/media/rkvdec/rkvdec.c +++ b/drivers/staging/media/rkvdec/rkvdec.c @@ -213,14 +213,8 @@ static int rkvdec_enum_framesizes(struct file *file, void *priv, if (!fmt) return -EINVAL; - fsize->type = V4L2_FRMSIZE_TYPE_CONTINUOUS; - fsize->stepwise.min_width = 1; - fsize->stepwise.max_width = fmt->frmsize.max_width; - fsize->stepwise.step_width = 1; - fsize->stepwise.min_height = 1; - fsize->stepwise.max_height = fmt->frmsize.max_height; - fsize->stepwise.step_height = 1; - + fsize->type = V4L2_FRMSIZE_TYPE_STEPWISE; + fsize->stepwise = fmt->frmsize; return 0; } -- Gitee From e0cc1d730101e4183c316c7ac771ff32c0a251c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:09 +0800 Subject: [PATCH 1155/1421] Revert "drm/amd/pp: Fix potential NULL pointer dereference in atomctrl_initialize_mc_reg_table" This reverts commit 7618d8fc9956cfbe5052cd25b7479422cbe935a1. --- drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c index 7e37354a0341..1fbd23922082 100644 --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c @@ -144,10 +144,6 @@ int atomctrl_initialize_mc_reg_table( vram_info = (ATOM_VRAM_INFO_HEADER_V2_1 *) smu_atom_get_data_table(hwmgr->adev, GetIndexIntoMasterTable(DATA, VRAM_Info), &size, &frev, &crev); - if (!vram_info) { - pr_err("Could not retrieve the VramInfo table!"); - return -EINVAL; - } if (module_index >= vram_info->ucNumOfVRAMModule) { pr_err("Invalid VramInfo table."); @@ -185,10 +181,6 @@ int atomctrl_initialize_mc_reg_table_v2_2( vram_info = (ATOM_VRAM_INFO_HEADER_V2_2 *) smu_atom_get_data_table(hwmgr->adev, GetIndexIntoMasterTable(DATA, VRAM_Info), &size, &frev, &crev); - if (!vram_info) { - pr_err("Could not retrieve the VramInfo table!"); - return -EINVAL; - } if (module_index >= vram_info->ucNumOfVRAMModule) { pr_err("Invalid VramInfo table."); -- Gitee From 8ed680664508826f0a856656a09e5ee8047f4781 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:09 +0800 Subject: [PATCH 1156/1421] Revert "drm/vc4: tests: Use return instead of assert" This reverts commit 761f16909e660b9bacb8c4c8ce7ca55efa6f1e33. --- drivers/gpu/drm/vc4/tests/vc4_mock_output.c | 36 +++++++-------------- 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c index f0ddc223c1f8..e70d7c3076ac 100644 --- a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c +++ b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c @@ -75,30 +75,24 @@ int vc4_mock_atomic_add_output(struct kunit *test, int ret; encoder = vc4_find_encoder_by_type(drm, type); - if (!encoder) - return -ENODEV; + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, encoder); crtc = vc4_find_crtc_for_encoder(test, drm, encoder); - if (!crtc) - return -ENODEV; + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc); output = encoder_to_vc4_dummy_output(encoder); conn = &output->connector; conn_state = drm_atomic_get_connector_state(state, conn); - if (IS_ERR(conn_state)) - return PTR_ERR(conn_state); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); ret = drm_atomic_set_crtc_for_connector(conn_state, crtc); - if (ret) - return ret; + KUNIT_EXPECT_EQ(test, ret, 0); crtc_state = drm_atomic_get_crtc_state(state, crtc); - if (IS_ERR(crtc_state)) - return PTR_ERR(crtc_state); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); ret = drm_atomic_set_mode_for_crtc(crtc_state, &default_mode); - if (ret) - return ret; + KUNIT_EXPECT_EQ(test, ret, 0); crtc_state->active = true; @@ -119,32 +113,26 @@ int vc4_mock_atomic_del_output(struct kunit *test, int ret; encoder = vc4_find_encoder_by_type(drm, type); - if (!encoder) - return -ENODEV; + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, encoder); crtc = vc4_find_crtc_for_encoder(test, drm, encoder); - if (!crtc) - return -ENODEV; + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc); crtc_state = drm_atomic_get_crtc_state(state, crtc); - if (IS_ERR(crtc_state)) - return PTR_ERR(crtc_state); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); crtc_state->active = false; ret = drm_atomic_set_mode_for_crtc(crtc_state, NULL); - if (ret) - return ret; + KUNIT_ASSERT_EQ(test, ret, 0); output = encoder_to_vc4_dummy_output(encoder); conn = &output->connector; conn_state = drm_atomic_get_connector_state(state, conn); - if (IS_ERR(conn_state)) - return PTR_ERR(conn_state); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); ret = drm_atomic_set_crtc_for_connector(conn_state, NULL); - if (ret) - return ret; + KUNIT_ASSERT_EQ(test, ret, 0); return 0; } -- Gitee From 3da09ea2632d38d8f6878a5261ba1fd9e440920b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:09 +0800 Subject: [PATCH 1157/1421] Revert "drm/vmwgfx: Add seqno waiter for sync_files" This reverts commit ce328247959ecec2919a74be76c4fdfd91224ab0. --- drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 26 ------------------------- 1 file changed, 26 deletions(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c index b129ce873af3..5fef0b31c117 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c @@ -4083,23 +4083,6 @@ static int vmw_execbuf_tie_context(struct vmw_private *dev_priv, return 0; } -/* - * DMA fence callback to remove a seqno_waiter - */ -struct seqno_waiter_rm_context { - struct dma_fence_cb base; - struct vmw_private *dev_priv; -}; - -static void seqno_waiter_rm_cb(struct dma_fence *f, struct dma_fence_cb *cb) -{ - struct seqno_waiter_rm_context *ctx = - container_of(cb, struct seqno_waiter_rm_context, base); - - vmw_seqno_waiter_remove(ctx->dev_priv); - kfree(ctx); -} - int vmw_execbuf_process(struct drm_file *file_priv, struct vmw_private *dev_priv, void __user *user_commands, void *kernel_commands, @@ -4280,15 +4263,6 @@ int vmw_execbuf_process(struct drm_file *file_priv, } else { /* Link the fence with the FD created earlier */ fd_install(out_fence_fd, sync_file->file); - struct seqno_waiter_rm_context *ctx = - kmalloc(sizeof(*ctx), GFP_KERNEL); - ctx->dev_priv = dev_priv; - vmw_seqno_waiter_add(dev_priv); - if (dma_fence_add_callback(&fence->base, &ctx->base, - seqno_waiter_rm_cb) < 0) { - vmw_seqno_waiter_remove(dev_priv); - kfree(ctx); - } } } -- Gitee From a143b5797241b227560c2f9d92f13884a907c86e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:09 +0800 Subject: [PATCH 1158/1421] Revert "ASoC: apple: mca: Constrain channels according to TDM mask" This reverts commit d884a8a5516b186759a01b2f62a2e2602714d498. --- sound/soc/apple/mca.c | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/sound/soc/apple/mca.c b/sound/soc/apple/mca.c index 0e96caa607fb..ce77934f3eef 100644 --- a/sound/soc/apple/mca.c +++ b/sound/soc/apple/mca.c @@ -464,28 +464,6 @@ static int mca_configure_serdes(struct mca_cluster *cl, int serdes_unit, return -EINVAL; } -static int mca_fe_startup(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai) -{ - struct mca_cluster *cl = mca_dai_to_cluster(dai); - unsigned int mask, nchannels; - - if (cl->tdm_slots) { - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) - mask = cl->tdm_tx_mask; - else - mask = cl->tdm_rx_mask; - - nchannels = hweight32(mask); - } else { - nchannels = 2; - } - - return snd_pcm_hw_constraint_minmax(substream->runtime, - SNDRV_PCM_HW_PARAM_CHANNELS, - 1, nchannels); -} - static int mca_fe_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width) { @@ -702,7 +680,6 @@ static int mca_fe_hw_params(struct snd_pcm_substream *substream, } static const struct snd_soc_dai_ops mca_fe_ops = { - .startup = mca_fe_startup, .set_fmt = mca_fe_set_fmt, .set_bclk_ratio = mca_set_bclk_ratio, .set_tdm_slot = mca_fe_set_tdm_slot, -- Gitee From a7a7f4824f6d79f3d1f692f252c6696aa688747a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:09 +0800 Subject: [PATCH 1159/1421] Revert "spi: sh-msiof: Fix maximum DMA transfer size" This reverts commit 2a7f4d29077e5549b7a82cad6e41a823f4da95f1. --- drivers/spi/spi-sh-msiof.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c index 65c11909659c..6f12e4fb2e2e 100644 --- a/drivers/spi/spi-sh-msiof.c +++ b/drivers/spi/spi-sh-msiof.c @@ -918,7 +918,6 @@ static int sh_msiof_transfer_one(struct spi_controller *ctlr, void *rx_buf = t->rx_buf; unsigned int len = t->len; unsigned int bits = t->bits_per_word; - unsigned int max_wdlen = 256; unsigned int bytes_per_word; unsigned int words; int n; @@ -932,17 +931,17 @@ static int sh_msiof_transfer_one(struct spi_controller *ctlr, if (!spi_controller_is_target(p->ctlr)) sh_msiof_spi_set_clk_regs(p, t); - if (tx_buf) - max_wdlen = min(max_wdlen, p->tx_fifo_size); - if (rx_buf) - max_wdlen = min(max_wdlen, p->rx_fifo_size); - while (ctlr->dma_tx && len > 15) { /* * DMA supports 32-bit words only, hence pack 8-bit and 16-bit * words, with byte resp. word swapping. */ - unsigned int l = min(round_down(len, 4), max_wdlen * 4); + unsigned int l = 0; + + if (tx_buf) + l = min(round_down(len, 4), p->tx_fifo_size * 4); + if (rx_buf) + l = min(round_down(len, 4), p->rx_fifo_size * 4); if (bits <= 8) { copy32 = copy_bswap32; -- Gitee From fbef84e45ccb0653d041a898e6c29f75732a619c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:10 +0800 Subject: [PATCH 1160/1421] Revert "ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions"" This reverts commit 0b1cd4136d971ea0a107fa0217b4d1763e792786. --- drivers/acpi/osi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/acpi/osi.c b/drivers/acpi/osi.c index ae9620757865..d4405e1ca9b9 100644 --- a/drivers/acpi/osi.c +++ b/drivers/acpi/osi.c @@ -42,6 +42,7 @@ static struct acpi_osi_entry osi_setup_entries[OSI_STRING_ENTRIES_MAX] __initdata = { {"Module Device", true}, {"Processor Device", true}, + {"3.0 _SCP Extensions", true}, {"Processor Aggregator Device", true}, }; -- Gitee From d3ac6a85dd0c325bb06dc267f474fc5c38e0c664 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:10 +0800 Subject: [PATCH 1161/1421] Revert "PM: sleep: Print PM debug messages during hibernation" This reverts commit ab6337b7ca8d49cc7d9d55f3285e09f1e697c8e2. --- kernel/power/hibernate.c | 5 ----- kernel/power/main.c | 3 +-- kernel/power/power.h | 4 ---- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 76dcf2e28427..c2fc58938dee 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -80,11 +80,6 @@ void hibernate_release(void) atomic_inc(&hibernate_atomic); } -bool hibernation_in_progress(void) -{ - return !atomic_read(&hibernate_atomic); -} - bool hibernation_available(void) { return nohibernate == 0 && diff --git a/kernel/power/main.c b/kernel/power/main.c index a3543bd2d25a..f6425ae3e8b0 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c @@ -585,8 +585,7 @@ bool pm_debug_messages_on __read_mostly; bool pm_debug_messages_should_print(void) { - return pm_debug_messages_on && (hibernation_in_progress() || - pm_suspend_target_state != PM_SUSPEND_ON); + return pm_debug_messages_on && pm_suspend_target_state != PM_SUSPEND_ON; } EXPORT_SYMBOL_GPL(pm_debug_messages_should_print); diff --git a/kernel/power/power.h b/kernel/power/power.h index 62a7cb452a4b..a98f95e309a3 100644 --- a/kernel/power/power.h +++ b/kernel/power/power.h @@ -66,14 +66,10 @@ extern void enable_restore_image_protection(void); static inline void enable_restore_image_protection(void) {} #endif /* CONFIG_STRICT_KERNEL_RWX */ -extern bool hibernation_in_progress(void); - #else /* !CONFIG_HIBERNATION */ static inline void hibernate_reserved_size_init(void) {} static inline void hibernate_image_size_init(void) {} - -static inline bool hibernation_in_progress(void) { return false; } #endif /* !CONFIG_HIBERNATION */ #define power_attr(_name) \ -- Gitee From 23ace948f610687df630a02c062124352eb03e4c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:10 +0800 Subject: [PATCH 1162/1421] Revert "x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges()" This reverts commit b0c72c736f4a002f2fdabab6942d9c3dc45f5c72. --- arch/x86/kernel/cpu/mtrr/generic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 6839440a4b31..2d6aa5d2e3d7 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c @@ -582,7 +582,7 @@ static void get_fixed_ranges(mtrr_type *frs) void mtrr_save_fixed_ranges(void *info) { - if (mtrr_state.have_fixed) + if (boot_cpu_has(X86_FEATURE_MTRR)) get_fixed_ranges(mtrr_state.fixed_ranges); } -- Gitee From 8e59e6508202cee8248753cc20ad2016190c7bba Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:10 +0800 Subject: [PATCH 1163/1421] Revert "PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks()" This reverts commit 0af958dcc7569f45f06be161a308232aa5ed8c02. --- kernel/power/wakelock.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/kernel/power/wakelock.c b/kernel/power/wakelock.c index 4e941999a53b..52571dcad768 100644 --- a/kernel/power/wakelock.c +++ b/kernel/power/wakelock.c @@ -49,9 +49,6 @@ ssize_t pm_show_wakelocks(char *buf, bool show_active) len += sysfs_emit_at(buf, len, "%s ", wl->name); } - if (len > 0) - --len; - len += sysfs_emit_at(buf, len, "\n"); mutex_unlock(&wakelocks_lock); -- Gitee From caa1b40a41d161dac51fe833bb037dcd5de52b09 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:10 +0800 Subject: [PATCH 1164/1421] Revert "ASoC: SOF: ipc4-pcm: Adjust pipeline_list->pipelines allocation type" This reverts commit 446f94fc85225b43026f64bc77cf6f48ea933e02. --- sound/soc/sof/ipc4-pcm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sound/soc/sof/ipc4-pcm.c b/sound/soc/sof/ipc4-pcm.c index a29632423ccd..bb5df0d214e3 100644 --- a/sound/soc/sof/ipc4-pcm.c +++ b/sound/soc/sof/ipc4-pcm.c @@ -615,8 +615,7 @@ static int sof_ipc4_pcm_setup(struct snd_sof_dev *sdev, struct snd_sof_pcm *spcm /* allocate memory for max number of pipeline IDs */ pipeline_list->pipelines = kcalloc(ipc4_data->max_num_pipelines, - sizeof(*pipeline_list->pipelines), - GFP_KERNEL); + sizeof(struct snd_sof_widget *), GFP_KERNEL); if (!pipeline_list->pipelines) { sof_ipc4_pcm_free(sdev, spcm); return -ENOMEM; -- Gitee From 589757f05d2046c953fb42973c99fbd819d7c55b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:11 +0800 Subject: [PATCH 1165/1421] Revert "power: reset: at91-reset: Optimize at91_reset()" This reverts commit 2544d99eb242ecf4b5e43f098fc0f3daeffe65f7. --- drivers/power/reset/at91-reset.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/power/reset/at91-reset.c b/drivers/power/reset/at91-reset.c index bafe4cc6fafd..aa9b012d3d00 100644 --- a/drivers/power/reset/at91-reset.c +++ b/drivers/power/reset/at91-reset.c @@ -129,11 +129,12 @@ static int at91_reset(struct notifier_block *this, unsigned long mode, " str %4, [%0, %6]\n\t" /* Disable SDRAM1 accesses */ "1: tst %1, #0\n\t" + " beq 2f\n\t" " strne %3, [%1, #" __stringify(AT91_DDRSDRC_RTR) "]\n\t" /* Power down SDRAM1 */ " strne %4, [%1, %6]\n\t" /* Reset CPU */ - " str %5, [%2, #" __stringify(AT91_RSTC_CR) "]\n\t" + "2: str %5, [%2, #" __stringify(AT91_RSTC_CR) "]\n\t" " b .\n\t" : @@ -144,7 +145,7 @@ static int at91_reset(struct notifier_block *this, unsigned long mode, "r" cpu_to_le32(AT91_DDRSDRC_LPCB_POWER_DOWN), "r" (reset->data->reset_args), "r" (reset->ramc_lpr) - ); + : "r4"); return NOTIFY_DONE; } -- Gitee From 66083d44d0a5b18262ad3602ef068527e8e9a6ce Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:11 +0800 Subject: [PATCH 1166/1421] Revert "spi: tegra210-quad: modify chip select (CS) deactivation" This reverts commit 2245bdf64f42e4a63fd6338c003876d7b7c1c5c0. --- drivers/spi/spi-tegra210-quad.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c index e9afebd72423..7a74164cd954 100644 --- a/drivers/spi/spi-tegra210-quad.c +++ b/drivers/spi/spi-tegra210-quad.c @@ -1159,16 +1159,16 @@ static int tegra_qspi_combined_seq_xfer(struct tegra_qspi *tqspi, ret = -EIO; goto exit; } + if (!xfer->cs_change) { + tegra_qspi_transfer_end(spi); + spi_transfer_delay_exec(xfer); + } break; default: ret = -EINVAL; goto exit; } msg->actual_length += xfer->len; - if (!xfer->cs_change && transfer_phase == DATA_TRANSFER) { - tegra_qspi_transfer_end(spi); - spi_transfer_delay_exec(xfer); - } transfer_phase++; } ret = 0; -- Gitee From b1aacecc1fa948150a80b2acbe100ff8c56d72c1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:11 +0800 Subject: [PATCH 1167/1421] Revert "spi: tegra210-quad: remove redundant error handling code" This reverts commit 4581949e8e9036bf02436a1e20420dfdf3a4c963. --- drivers/spi/spi-tegra210-quad.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c index 7a74164cd954..78b3a021e915 100644 --- a/drivers/spi/spi-tegra210-quad.c +++ b/drivers/spi/spi-tegra210-quad.c @@ -1175,6 +1175,10 @@ static int tegra_qspi_combined_seq_xfer(struct tegra_qspi *tqspi, exit: msg->status = ret; + if (ret < 0) { + tegra_qspi_transfer_end(spi); + spi_transfer_delay_exec(xfer); + } return ret; } -- Gitee From 53b323adc328dd7689568c1a15b30d913e97c518 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:11 +0800 Subject: [PATCH 1168/1421] Revert "spi: tegra210-quad: Fix X1_X2_X4 encoding and support x4 transfers" This reverts commit e007cbdf61343f0e505dd5936e96a723ca6ca5bd. --- drivers/spi/spi-tegra210-quad.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c index 78b3a021e915..e3c236025a7b 100644 --- a/drivers/spi/spi-tegra210-quad.c +++ b/drivers/spi/spi-tegra210-quad.c @@ -134,7 +134,7 @@ #define QSPI_COMMAND_VALUE_SET(X) (((x) & 0xFF) << 0) #define QSPI_CMB_SEQ_CMD_CFG 0x1a0 -#define QSPI_COMMAND_X1_X2_X4(x) ((((x) >> 1) & 0x3) << 13) +#define QSPI_COMMAND_X1_X2_X4(x) (((x) & 0x3) << 13) #define QSPI_COMMAND_X1_X2_X4_MASK (0x03 << 13) #define QSPI_COMMAND_SDR_DDR BIT(12) #define QSPI_COMMAND_SIZE_SET(x) (((x) & 0xFF) << 0) @@ -147,7 +147,7 @@ #define QSPI_ADDRESS_VALUE_SET(X) (((x) & 0xFFFF) << 0) #define QSPI_CMB_SEQ_ADDR_CFG 0x1ac -#define QSPI_ADDRESS_X1_X2_X4(x) ((((x) >> 1) & 0x3) << 13) +#define QSPI_ADDRESS_X1_X2_X4(x) (((x) & 0x3) << 13) #define QSPI_ADDRESS_X1_X2_X4_MASK (0x03 << 13) #define QSPI_ADDRESS_SDR_DDR BIT(12) #define QSPI_ADDRESS_SIZE_SET(x) (((x) & 0xFF) << 0) @@ -1036,6 +1036,10 @@ static u32 tegra_qspi_addr_config(bool is_ddr, u8 bus_width, u8 len) { u32 addr_config = 0; + /* Extract Address configuration and value */ + is_ddr = 0; //Only SDR mode supported + bus_width = 0; //X1 mode + if (is_ddr) addr_config |= QSPI_ADDRESS_SDR_DDR; else @@ -1075,13 +1079,13 @@ static int tegra_qspi_combined_seq_xfer(struct tegra_qspi *tqspi, switch (transfer_phase) { case CMD_TRANSFER: /* X1 SDR mode */ - cmd_config = tegra_qspi_cmd_config(false, xfer->tx_nbits, + cmd_config = tegra_qspi_cmd_config(false, 0, xfer->len); cmd_value = *((const u8 *)(xfer->tx_buf)); break; case ADDR_TRANSFER: /* X1 SDR mode */ - addr_config = tegra_qspi_addr_config(false, xfer->tx_nbits, + addr_config = tegra_qspi_addr_config(false, 0, xfer->len); address_value = *((const u32 *)(xfer->tx_buf)); break; -- Gitee From a524a12536312fd534bbcb8cec9b29110aedc71b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:11 +0800 Subject: [PATCH 1169/1421] Revert "EDAC/{skx_common,i10nm}: Fix the loss of saved RRL for HBM pseudo channel 0" This reverts commit 4ff31026d34ef7040ac0e5e653f2dc73ddcaf957. --- drivers/edac/i10nm_base.c | 35 ++++++++++++++++------------------- drivers/edac/skx_common.h | 11 +++-------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/drivers/edac/i10nm_base.c b/drivers/edac/i10nm_base.c index 068597e8fce9..67a46abe07da 100644 --- a/drivers/edac/i10nm_base.c +++ b/drivers/edac/i10nm_base.c @@ -99,7 +99,7 @@ static u32 offsets_demand2_spr[] = {0x22c70, 0x22d80, 0x22f18, 0x22d58, 0x22c64, static u32 offsets_demand_spr_hbm0[] = {0x2a54, 0x2a60, 0x2b10, 0x2a58, 0x2a5c, 0x0ee0}; static u32 offsets_demand_spr_hbm1[] = {0x2e54, 0x2e60, 0x2f10, 0x2e58, 0x2e5c, 0x0fb0}; -static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable, u32 *rrl_ctl, +static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable, u32 *offsets_scrub, u32 *offsets_demand, u32 *offsets_demand2) { @@ -112,10 +112,10 @@ static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable if (enable) { /* Save default configurations */ - rrl_ctl[0] = s; - rrl_ctl[1] = d; + imc->chan[chan].retry_rd_err_log_s = s; + imc->chan[chan].retry_rd_err_log_d = d; if (offsets_demand2) - rrl_ctl[2] = d2; + imc->chan[chan].retry_rd_err_log_d2 = d2; s &= ~RETRY_RD_ERR_LOG_NOOVER_UC; s |= RETRY_RD_ERR_LOG_EN; @@ -129,25 +129,25 @@ static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable } } else { /* Restore default configurations */ - if (rrl_ctl[0] & RETRY_RD_ERR_LOG_UC) + if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_UC) s |= RETRY_RD_ERR_LOG_UC; - if (rrl_ctl[0] & RETRY_RD_ERR_LOG_NOOVER) + if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_NOOVER) s |= RETRY_RD_ERR_LOG_NOOVER; - if (!(rrl_ctl[0] & RETRY_RD_ERR_LOG_EN)) + if (!(imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_EN)) s &= ~RETRY_RD_ERR_LOG_EN; - if (rrl_ctl[1] & RETRY_RD_ERR_LOG_UC) + if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_UC) d |= RETRY_RD_ERR_LOG_UC; - if (rrl_ctl[1] & RETRY_RD_ERR_LOG_NOOVER) + if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_NOOVER) d |= RETRY_RD_ERR_LOG_NOOVER; - if (!(rrl_ctl[1] & RETRY_RD_ERR_LOG_EN)) + if (!(imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_EN)) d &= ~RETRY_RD_ERR_LOG_EN; if (offsets_demand2) { - if (rrl_ctl[2] & RETRY_RD_ERR_LOG_UC) + if (imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_UC) d2 |= RETRY_RD_ERR_LOG_UC; - if (!(rrl_ctl[2] & RETRY_RD_ERR_LOG_NOOVER)) + if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_NOOVER)) d2 &= ~RETRY_RD_ERR_LOG_NOOVER; - if (!(rrl_ctl[2] & RETRY_RD_ERR_LOG_EN)) + if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_EN)) d2 &= ~RETRY_RD_ERR_LOG_EN; } } @@ -161,7 +161,6 @@ static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable static void enable_retry_rd_err_log(bool enable) { int i, j, imc_num, chan_num; - struct skx_channel *chan; struct skx_imc *imc; struct skx_dev *d; @@ -176,9 +175,8 @@ static void enable_retry_rd_err_log(bool enable) if (!imc->mbase) continue; - chan = d->imc[i].chan; for (j = 0; j < chan_num; j++) - __enable_retry_rd_err_log(imc, j, enable, chan[j].rrl_ctl[0], + __enable_retry_rd_err_log(imc, j, enable, res_cfg->offsets_scrub, res_cfg->offsets_demand, res_cfg->offsets_demand2); @@ -192,13 +190,12 @@ static void enable_retry_rd_err_log(bool enable) if (!imc->mbase || !imc->hbm_mc) continue; - chan = d->imc[i].chan; for (j = 0; j < chan_num; j++) { - __enable_retry_rd_err_log(imc, j, enable, chan[j].rrl_ctl[0], + __enable_retry_rd_err_log(imc, j, enable, res_cfg->offsets_scrub_hbm0, res_cfg->offsets_demand_hbm0, NULL); - __enable_retry_rd_err_log(imc, j, enable, chan[j].rrl_ctl[1], + __enable_retry_rd_err_log(imc, j, enable, res_cfg->offsets_scrub_hbm1, res_cfg->offsets_demand_hbm1, NULL); diff --git a/drivers/edac/skx_common.h b/drivers/edac/skx_common.h index 2ea4d1d1fbef..5acfef8fd3d3 100644 --- a/drivers/edac/skx_common.h +++ b/drivers/edac/skx_common.h @@ -80,9 +80,6 @@ */ #define MCACOD_EXT_MEM_ERR 0x280 -/* Max RRL register sets per {,sub-,pseudo-}channel. */ -#define NUM_RRL_SET 3 - /* * Each cpu socket contains some pci devices that provide global * information, and also some that are local to each of the two @@ -121,11 +118,9 @@ struct skx_dev { struct skx_channel { struct pci_dev *cdev; struct pci_dev *edev; - /* - * Two groups of RRL control registers per channel to save default RRL - * settings of two {sub-,pseudo-}channels in Linux RRL control mode. - */ - u32 rrl_ctl[2][NUM_RRL_SET]; + u32 retry_rd_err_log_s; + u32 retry_rd_err_log_d; + u32 retry_rd_err_log_d2; struct skx_dimm { u8 close_pg; u8 bank_xor_enable; -- Gitee From c120bc28e5f26abf9ebb124a5405cb698fa4f79e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:12 +0800 Subject: [PATCH 1170/1421] Revert "EDAC/skx_common: Fix general protection fault" This reverts commit f2dda87e22dc0795d8c6351668a3e12d85435213. --- drivers/edac/skx_common.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/edac/skx_common.c b/drivers/edac/skx_common.c index 9e43aed72bd9..d47f0055217e 100644 --- a/drivers/edac/skx_common.c +++ b/drivers/edac/skx_common.c @@ -115,7 +115,6 @@ EXPORT_SYMBOL_GPL(skx_adxl_get); void skx_adxl_put(void) { - adxl_component_count = 0; kfree(adxl_values); kfree(adxl_msg); } -- Gitee From 8882ef94c2af9830c56a7b3ff1d306759b9dbd91 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:12 +0800 Subject: [PATCH 1171/1421] Revert "ASoC: tas2764: Enable main IRQs" This reverts commit 36f23954cec8468b055aca51c57c17237e16db9a. --- sound/soc/codecs/tas2764.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 054c6f860675..72d6356b8981 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -542,7 +542,7 @@ static int tas2764_codec_probe(struct snd_soc_component *component) tas2764_reset(tas2764); if (tas2764->irq) { - ret = snd_soc_component_write(tas2764->component, TAS2764_INT_MASK0, 0x00); + ret = snd_soc_component_write(tas2764->component, TAS2764_INT_MASK0, 0xff); if (ret < 0) return ret; -- Gitee From 994f8effb53c89c21394d32ad0b6c29ab40ffb11 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:12 +0800 Subject: [PATCH 1172/1421] Revert "ACPICA: exserial: don't forget to handle FFixedHW opregions for reading" This reverts commit 344b43d027d96a975bbd7e2bfb0461dbc07a2c54. --- drivers/acpi/acpica/exserial.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/acpi/acpica/exserial.c b/drivers/acpi/acpica/exserial.c index 89a4ac447a2b..5241f4c01c76 100644 --- a/drivers/acpi/acpica/exserial.c +++ b/drivers/acpi/acpica/exserial.c @@ -201,12 +201,6 @@ acpi_ex_read_serial_bus(union acpi_operand_object *obj_desc, function = ACPI_READ; break; - case ACPI_ADR_SPACE_FIXED_HARDWARE: - - buffer_length = ACPI_FFH_INPUT_BUFFER_SIZE; - function = ACPI_READ; - break; - default: return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID); } -- Gitee From ffed713ea6fd7559b03490e0c761d6de9beb9d8c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:12 +0800 Subject: [PATCH 1173/1421] Revert "kunit: Fix wrong parameter to kunit_deactivate_static_stub()" This reverts commit e31049efb6757681100d6365336569f0253fd088. --- lib/kunit/static_stub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/kunit/static_stub.c b/lib/kunit/static_stub.c index 484fd85251b4..92b2cccd5e76 100644 --- a/lib/kunit/static_stub.c +++ b/lib/kunit/static_stub.c @@ -96,7 +96,7 @@ void __kunit_activate_static_stub(struct kunit *test, /* If the replacement address is NULL, deactivate the stub. */ if (!replacement_addr) { - kunit_deactivate_static_stub(test, real_fn_addr); + kunit_deactivate_static_stub(test, replacement_addr); return; } -- Gitee From 75a3be614599fe729c0ecdc2cb87503811ea00f0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:12 +0800 Subject: [PATCH 1174/1421] Revert "crypto: sun8i-ce - move fallback ahash_request to the end of the struct" This reverts commit 57f19109bad24b6f59b9e8101039791cc875a8e2. --- drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h index 65cc1278ee15..93d4985def87 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h @@ -293,8 +293,8 @@ struct sun8i_ce_hash_tfm_ctx { * @flow: the flow to use for this request */ struct sun8i_ce_hash_reqctx { + struct ahash_request fallback_req; int flow; - struct ahash_request fallback_req; // keep at the end }; /* -- Gitee From 702a82df4be41ec07507271e3565764c8ce2ceff Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:13 +0800 Subject: [PATCH 1175/1421] Revert "crypto: xts - Only add ecb if it is not already there" This reverts commit 22a6667b807c31077c88e80c61fa2d9857801427. --- crypto/xts.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/xts.c b/crypto/xts.c index 97fd0fb8757c..038f60dd512d 100644 --- a/crypto/xts.c +++ b/crypto/xts.c @@ -363,7 +363,7 @@ static int xts_create(struct crypto_template *tmpl, struct rtattr **tb) err = crypto_grab_skcipher(&ctx->spawn, skcipher_crypto_instance(inst), cipher_name, 0, mask); - if (err == -ENOENT && memcmp(cipher_name, "ecb(", 4)) { + if (err == -ENOENT) { err = -ENAMETOOLONG; if (snprintf(name, CRYPTO_MAX_ALG_NAME, "ecb(%s)", cipher_name) >= CRYPTO_MAX_ALG_NAME) @@ -397,7 +397,7 @@ static int xts_create(struct crypto_template *tmpl, struct rtattr **tb) /* Alas we screwed up the naming so we have to mangle the * cipher name. */ - if (!memcmp(cipher_name, "ecb(", 4)) { + if (!strncmp(cipher_name, "ecb(", 4)) { int len; len = strscpy(name, cipher_name + 4, sizeof(name)); -- Gitee From d1fc8664d50fb61379a63c646069e7b5d06cd28b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:13 +0800 Subject: [PATCH 1176/1421] Revert "crypto: lrw - Only add ecb if it is not already there" This reverts commit 9d48c7c0da4d808b6f1972f20fad7973e7efca16. --- crypto/lrw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/lrw.c b/crypto/lrw.c index 5536ec7bf18f..59260aefed28 100644 --- a/crypto/lrw.c +++ b/crypto/lrw.c @@ -322,7 +322,7 @@ static int lrw_create(struct crypto_template *tmpl, struct rtattr **tb) err = crypto_grab_skcipher(spawn, skcipher_crypto_instance(inst), cipher_name, 0, mask); - if (err == -ENOENT && memcmp(cipher_name, "ecb(", 4)) { + if (err == -ENOENT) { err = -ENAMETOOLONG; if (snprintf(ecb_name, CRYPTO_MAX_ALG_NAME, "ecb(%s)", cipher_name) >= CRYPTO_MAX_ALG_NAME) @@ -356,7 +356,7 @@ static int lrw_create(struct crypto_template *tmpl, struct rtattr **tb) /* Alas we screwed up the naming so we have to mangle the * cipher name. */ - if (!memcmp(cipher_name, "ecb(", 4)) { + if (!strncmp(cipher_name, "ecb(", 4)) { int len; len = strscpy(ecb_name, cipher_name + 4, sizeof(ecb_name)); -- Gitee From 4c0bb5997e0c05e061d69fe6464e750343120d96 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:13 +0800 Subject: [PATCH 1177/1421] Revert "rcu/cpu_stall_cputime: fix the hardirq count for x86 architecture" This reverts commit 71657036cfadd98f7e7ca58d9ebfb56561820b29. --- kernel/rcu/tree.c | 10 +++------- kernel/rcu/tree.h | 2 +- kernel/rcu/tree_stall.h | 4 ++-- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 1fb3b7a0ed5d..fda08520c75c 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -754,10 +754,6 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp) return 0; } -#ifndef arch_irq_stat_cpu -#define arch_irq_stat_cpu(cpu) 0 -#endif - /* * Returns positive if the specified CPU has passed through a quiescent state * by virtue of being in or having passed through an dynticks idle state since @@ -893,9 +889,9 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp) rsrp->cputime_irq = kcpustat_field(kcsp, CPUTIME_IRQ, cpu); rsrp->cputime_softirq = kcpustat_field(kcsp, CPUTIME_SOFTIRQ, cpu); rsrp->cputime_system = kcpustat_field(kcsp, CPUTIME_SYSTEM, cpu); - rsrp->nr_hardirqs = kstat_cpu_irqs_sum(cpu) + arch_irq_stat_cpu(cpu); - rsrp->nr_softirqs = kstat_cpu_softirqs_sum(cpu); - rsrp->nr_csw = nr_context_switches_cpu(cpu); + rsrp->nr_hardirqs = kstat_cpu_irqs_sum(rdp->cpu); + rsrp->nr_softirqs = kstat_cpu_softirqs_sum(rdp->cpu); + rsrp->nr_csw = nr_context_switches_cpu(rdp->cpu); rsrp->jiffies = jiffies; rsrp->gp_seq = rdp->gp_seq; } diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index ac8cc756920d..9eb43b501ff5 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h @@ -169,7 +169,7 @@ struct rcu_snap_record { u64 cputime_irq; /* Accumulated cputime of hard irqs */ u64 cputime_softirq;/* Accumulated cputime of soft irqs */ u64 cputime_system; /* Accumulated cputime of kernel tasks */ - u64 nr_hardirqs; /* Accumulated number of hard irqs */ + unsigned long nr_hardirqs; /* Accumulated number of hard irqs */ unsigned int nr_softirqs; /* Accumulated number of soft irqs */ unsigned long long nr_csw; /* Accumulated number of task switches */ unsigned long jiffies; /* Track jiffies value */ diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index aab91040b83b..11a1fac3a589 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -452,8 +452,8 @@ static void print_cpu_stat_info(int cpu) rsr.cputime_system = kcpustat_field(kcsp, CPUTIME_SYSTEM, cpu); pr_err("\t hardirqs softirqs csw/system\n"); - pr_err("\t number: %8lld %10d %12lld\n", - kstat_cpu_irqs_sum(cpu) + arch_irq_stat_cpu(cpu) - rsrp->nr_hardirqs, + pr_err("\t number: %8ld %10d %12lld\n", + kstat_cpu_irqs_sum(cpu) - rsrp->nr_hardirqs, kstat_cpu_softirqs_sum(cpu) - rsrp->nr_softirqs, nr_context_switches_cpu(cpu) - rsrp->nr_csw); pr_err("\tcputime: %8lld %10lld %12lld ==> %d(ms)\n", -- Gitee From ea9dd52e561c7f79308f28293767103b63fc2389 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:13 +0800 Subject: [PATCH 1178/1421] Revert "btrfs: scrub: fix a wrong error type when metadata bytenr mismatches" This reverts commit c4ebba27e5f2f7f6b5b30449c101e6d3a5a9171f. --- fs/btrfs/scrub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 7632d652a125..97c17025b31e 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -620,7 +620,7 @@ static void scrub_verify_one_metadata(struct scrub_stripe *stripe, int sector_nr memcpy(on_disk_csum, header->csum, fs_info->csum_size); if (logical != btrfs_stack_header_bytenr(header)) { - bitmap_set(&stripe->meta_error_bitmap, sector_nr, sectors_per_tree); + bitmap_set(&stripe->csum_error_bitmap, sector_nr, sectors_per_tree); bitmap_set(&stripe->error_bitmap, sector_nr, sectors_per_tree); btrfs_warn_rl(fs_info, "tree block %llu mirror %u has bad bytenr, has %llu want %llu", -- Gitee From f8501d0cc6a8b903a382688e76391dd592289b83 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:14 +0800 Subject: [PATCH 1179/1421] Revert "btrfs: scrub: update device stats when an error is detected" This reverts commit d50a1cf2d9f71d925a52f311177b459b35ada4af. --- fs/btrfs/scrub.c | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 97c17025b31e..da49bdb70375 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -153,14 +153,12 @@ struct scrub_stripe { unsigned int init_nr_io_errors; unsigned int init_nr_csum_errors; unsigned int init_nr_meta_errors; - unsigned int init_nr_meta_gen_errors; /* * The following error bitmaps are all for the current status. * Every time we submit a new read, these bitmaps may be updated. * - * error_bitmap = io_error_bitmap | csum_error_bitmap | - * meta_error_bitmap | meta_generation_bitmap; + * error_bitmap = io_error_bitmap | csum_error_bitmap | meta_error_bitmap; * * IO and csum errors can happen for both metadata and data. */ @@ -168,7 +166,6 @@ struct scrub_stripe { unsigned long io_error_bitmap; unsigned long csum_error_bitmap; unsigned long meta_error_bitmap; - unsigned long meta_gen_error_bitmap; /* For writeback (repair or replace) error reporting. */ unsigned long write_error_bitmap; @@ -676,7 +673,7 @@ static void scrub_verify_one_metadata(struct scrub_stripe *stripe, int sector_nr } if (stripe->sectors[sector_nr].generation != btrfs_stack_header_generation(header)) { - bitmap_set(&stripe->meta_gen_error_bitmap, sector_nr, sectors_per_tree); + bitmap_set(&stripe->meta_error_bitmap, sector_nr, sectors_per_tree); bitmap_set(&stripe->error_bitmap, sector_nr, sectors_per_tree); btrfs_warn_rl(fs_info, "tree block %llu mirror %u has bad generation, has %llu want %llu", @@ -688,7 +685,6 @@ static void scrub_verify_one_metadata(struct scrub_stripe *stripe, int sector_nr bitmap_clear(&stripe->error_bitmap, sector_nr, sectors_per_tree); bitmap_clear(&stripe->csum_error_bitmap, sector_nr, sectors_per_tree); bitmap_clear(&stripe->meta_error_bitmap, sector_nr, sectors_per_tree); - bitmap_clear(&stripe->meta_gen_error_bitmap, sector_nr, sectors_per_tree); } static void scrub_verify_one_sector(struct scrub_stripe *stripe, int sector_nr) @@ -977,22 +973,8 @@ static void scrub_stripe_report_errors(struct scrub_ctx *sctx, if (__ratelimit(&rs) && dev) scrub_print_common_warning("header error", dev, false, stripe->logical, physical); - if (test_bit(sector_nr, &stripe->meta_gen_error_bitmap)) - if (__ratelimit(&rs) && dev) - scrub_print_common_warning("generation error", dev, false, - stripe->logical, physical); } - /* Update the device stats. */ - for (int i = 0; i < stripe->init_nr_io_errors; i++) - btrfs_dev_stat_inc_and_print(stripe->dev, BTRFS_DEV_STAT_READ_ERRS); - for (int i = 0; i < stripe->init_nr_csum_errors; i++) - btrfs_dev_stat_inc_and_print(stripe->dev, BTRFS_DEV_STAT_CORRUPTION_ERRS); - /* Generation mismatch error is based on each metadata, not each block. */ - for (int i = 0; i < stripe->init_nr_meta_gen_errors; - i += (fs_info->nodesize >> fs_info->sectorsize_bits)) - btrfs_dev_stat_inc_and_print(stripe->dev, BTRFS_DEV_STAT_GENERATION_ERRS); - spin_lock(&sctx->stat_lock); sctx->stat.data_extents_scrubbed += stripe->nr_data_extents; sctx->stat.tree_extents_scrubbed += stripe->nr_meta_extents; @@ -1001,8 +983,7 @@ static void scrub_stripe_report_errors(struct scrub_ctx *sctx, sctx->stat.no_csum += nr_nodatacsum_sectors; sctx->stat.read_errors += stripe->init_nr_io_errors; sctx->stat.csum_errors += stripe->init_nr_csum_errors; - sctx->stat.verify_errors += stripe->init_nr_meta_errors + - stripe->init_nr_meta_gen_errors; + sctx->stat.verify_errors += stripe->init_nr_meta_errors; sctx->stat.uncorrectable_errors += bitmap_weight(&stripe->error_bitmap, stripe->nr_sectors); sctx->stat.corrected_errors += nr_repaired_sectors; @@ -1048,8 +1029,6 @@ static void scrub_stripe_read_repair_worker(struct work_struct *work) stripe->nr_sectors); stripe->init_nr_meta_errors = bitmap_weight(&stripe->meta_error_bitmap, stripe->nr_sectors); - stripe->init_nr_meta_gen_errors = bitmap_weight(&stripe->meta_gen_error_bitmap, - stripe->nr_sectors); if (bitmap_empty(&stripe->init_error_bitmap, stripe->nr_sectors)) goto out; @@ -1164,9 +1143,6 @@ static void scrub_write_endio(struct btrfs_bio *bbio) bitmap_set(&stripe->write_error_bitmap, sector_nr, bio_size >> fs_info->sectorsize_bits); spin_unlock_irqrestore(&stripe->write_error_lock, flags); - for (int i = 0; i < (bio_size >> fs_info->sectorsize_bits); i++) - btrfs_dev_stat_inc_and_print(stripe->dev, - BTRFS_DEV_STAT_WRITE_ERRS); } bio_put(&bbio->bio); @@ -1529,12 +1505,10 @@ static void scrub_stripe_reset_bitmaps(struct scrub_stripe *stripe) stripe->init_nr_io_errors = 0; stripe->init_nr_csum_errors = 0; stripe->init_nr_meta_errors = 0; - stripe->init_nr_meta_gen_errors = 0; stripe->error_bitmap = 0; stripe->io_error_bitmap = 0; stripe->csum_error_bitmap = 0; stripe->meta_error_bitmap = 0; - stripe->meta_gen_error_bitmap = 0; } /* -- Gitee From e75d789fa55bf6e590558e847f04f8dc3f56048a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:14 +0800 Subject: [PATCH 1180/1421] Revert "crypto: marvell/cesa - Avoid empty transfer descriptor" This reverts commit 922fcbc0d96258d16b04be9a7fbcaaa812939e29. --- drivers/crypto/marvell/cesa/hash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/marvell/cesa/hash.c b/drivers/crypto/marvell/cesa/hash.c index 6815eddc9068..f150861ceaf6 100644 --- a/drivers/crypto/marvell/cesa/hash.c +++ b/drivers/crypto/marvell/cesa/hash.c @@ -663,7 +663,7 @@ static int mv_cesa_ahash_dma_req_init(struct ahash_request *req) if (ret) goto err_free_tdma; - if (iter.base.len > iter.src.op_offset) { + if (iter.src.sg) { /* * Add all the new data, inserting an operation block and * launch command between each full SRAM block-worth of -- Gitee From e6ca03d9d4b1ab69ed6e2acfcd427f3af49844a6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:14 +0800 Subject: [PATCH 1181/1421] Revert "crypto: marvell/cesa - Handle zero-length skcipher requests" This reverts commit 0d0710d3687a5d0073d88be953adfd12c55c3b4e. --- drivers/crypto/marvell/cesa/cipher.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/crypto/marvell/cesa/cipher.c b/drivers/crypto/marvell/cesa/cipher.c index 3876e3ce822f..0f37dfd42d85 100644 --- a/drivers/crypto/marvell/cesa/cipher.c +++ b/drivers/crypto/marvell/cesa/cipher.c @@ -459,9 +459,6 @@ static int mv_cesa_skcipher_queue_req(struct skcipher_request *req, struct mv_cesa_skcipher_req *creq = skcipher_request_ctx(req); struct mv_cesa_engine *engine; - if (!req->cryptlen) - return 0; - ret = mv_cesa_skcipher_req_init(req, tmpl); if (ret) return ret; -- Gitee From 016a94fb562cc2613c57926c9014292eed48814e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:14 +0800 Subject: [PATCH 1182/1421] Revert "x86/cpu: Sanitize CPUID(0x80000000) output" This reverts commit b35ce23bf899927cf60be21457667cb90ba37d22. --- arch/x86/kernel/cpu/common.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index b6e43dad577a..067e31fb9e16 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -1066,18 +1066,17 @@ void get_cpu_cap(struct cpuinfo_x86 *c) c->x86_capability[CPUID_D_1_EAX] = eax; } - /* - * Check if extended CPUID leaves are implemented: Max extended - * CPUID leaf must be in the 0x80000001-0x8000ffff range. - */ + /* AMD-defined flags: level 0x80000001 */ eax = cpuid_eax(0x80000000); - c->extended_cpuid_level = ((eax & 0xffff0000) == 0x80000000) ? eax : 0; + c->extended_cpuid_level = eax; - if (c->extended_cpuid_level >= 0x80000001) { - cpuid(0x80000001, &eax, &ebx, &ecx, &edx); + if ((eax & 0xffff0000) == 0x80000000) { + if (eax >= 0x80000001) { + cpuid(0x80000001, &eax, &ebx, &ecx, &edx); - c->x86_capability[CPUID_8000_0001_ECX] = ecx; - c->x86_capability[CPUID_8000_0001_EDX] = edx; + c->x86_capability[CPUID_8000_0001_ECX] = ecx; + c->x86_capability[CPUID_8000_0001_EDX] = edx; + } } if (c->extended_cpuid_level >= 0x80000007) { -- Gitee From 097108d8e477179363c52aabc8ff671292238473 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:14 +0800 Subject: [PATCH 1183/1421] Revert "x86/microcode/AMD: Do not return error when microcode update is not necessary" This reverts commit 40abdb259e02540c8d490a15ab79d90bd6a52868. --- arch/x86/kernel/cpu/microcode/core.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index fc539346599c..5b47c320f17a 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -703,8 +703,6 @@ static int load_late_locked(void) return load_late_stop_cpus(true); case UCODE_NFOUND: return -ENOENT; - case UCODE_OK: - return 0; default: return -EBADFD; } -- Gitee From c3a93cd3079a3f8982500221b0a44fcce561ba50 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:15 +0800 Subject: [PATCH 1184/1421] Revert "powerpc/crash: Fix non-smp kexec preparation" This reverts commit dabcc654f35b584e0d2683c3defc28b93de54390. --- arch/powerpc/kexec/crash.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/powerpc/kexec/crash.c b/arch/powerpc/kexec/crash.c index 61552bbb1ea8..ef5c2d25ec39 100644 --- a/arch/powerpc/kexec/crash.c +++ b/arch/powerpc/kexec/crash.c @@ -356,10 +356,7 @@ void default_machine_crash_shutdown(struct pt_regs *regs) if (TRAP(regs) == INTERRUPT_SYSTEM_RESET) is_via_system_reset = 1; - if (IS_ENABLED(CONFIG_SMP)) - crash_smp_send_stop(); - else - crash_kexec_prepare(); + crash_smp_send_stop(); crash_save_cpu(regs, crashing_cpu); -- Gitee From 627539def56feebbb8b8b110dae49d42e66d79dc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:15 +0800 Subject: [PATCH 1185/1421] Revert "powerpc: do not build ppc_save_regs.o always" This reverts commit c7cbc5a24dbd5cbe1bad4206031cc81b8c5a7c8d. --- arch/powerpc/kernel/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index b7629122680b..2919433be355 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile @@ -165,7 +165,7 @@ endif obj64-$(CONFIG_PPC_TRANSACTIONAL_MEM) += tm.o -ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC_CORE)$(CONFIG_PPC_BOOK3S),) +ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC_CORE)(CONFIG_PPC_BOOK3S),) obj-y += ppc_save_regs.o endif -- Gitee From 64452a9cfba25cc7264ff28e54cb1a60419c7bd8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:15 +0800 Subject: [PATCH 1186/1421] Revert "crypto: sun8i-ss - do not use sg_dma_len before calling DMA functions" This reverts commit fa1c235f6ddeefa119b3bf68c0dceb23a3676c15. --- drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c index 9b18fb46a2c8..7fa359725ec7 100644 --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c @@ -141,7 +141,7 @@ static int sun8i_ss_setup_ivs(struct skcipher_request *areq) /* we need to copy all IVs from source in case DMA is bi-directionnal */ while (sg && len) { - if (sg->length == 0) { + if (sg_dma_len(sg) == 0) { sg = sg_next(sg); continue; } -- Gitee From 1583a27180a89d7c0cceae96cd02eb46806a4547 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:15 +0800 Subject: [PATCH 1187/1421] Revert "crypto: sun8i-ce-cipher - fix error handling in sun8i_ce_cipher_prepare()" This reverts commit f775d5503ec37eaf0b2ad0229885bbcca3566d01. --- drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c index 70434601f99b..d2cf9619018b 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c @@ -275,16 +275,13 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine *engine, void *async_req } else { if (nr_sgs > 0) dma_unmap_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE); - - if (nr_sgd > 0) - dma_unmap_sg(ce->dev, areq->dst, nd, DMA_FROM_DEVICE); + dma_unmap_sg(ce->dev, areq->dst, nd, DMA_FROM_DEVICE); } theend_iv: if (areq->iv && ivsize > 0) { - if (!dma_mapping_error(ce->dev, rctx->addr_iv)) + if (rctx->addr_iv) dma_unmap_single(ce->dev, rctx->addr_iv, rctx->ivlen, DMA_TO_DEVICE); - offset = areq->cryptlen - ivsize; if (rctx->op_dir & CE_DECRYPTION) { memcpy(areq->iv, chan->backup_iv, ivsize); -- Gitee From 3de728193f38b08b6ff6c0964b9759cb4f2fc7b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:16 +0800 Subject: [PATCH 1188/1421] Revert "perf/core: Fix broken throttling when max_samples_per_tick=1" This reverts commit 080b09465d8083c897bb84555acc5cede10b2987. --- kernel/events/core.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 6460f79280ed..5dd6424e62fa 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -9553,14 +9553,14 @@ __perf_event_account_interrupt(struct perf_event *event, int throttle) hwc->interrupts = 1; } else { hwc->interrupts++; - } - - if (unlikely(throttle && hwc->interrupts >= max_samples_per_tick)) { - __this_cpu_inc(perf_throttled_count); - tick_dep_set_cpu(smp_processor_id(), TICK_DEP_BIT_PERF_EVENTS); - hwc->interrupts = MAX_INTERRUPTS; - perf_log_throttle(event, 0); - ret = 1; + if (unlikely(throttle && + hwc->interrupts > max_samples_per_tick)) { + __this_cpu_inc(perf_throttled_count); + tick_dep_set_cpu(smp_processor_id(), TICK_DEP_BIT_PERF_EVENTS); + hwc->interrupts = MAX_INTERRUPTS; + perf_log_throttle(event, 0); + ret = 1; + } } if (event->attr.freq) { -- Gitee From ead3194d8f39bee4eb783099d8d723a4536608ac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:16 +0800 Subject: [PATCH 1189/1421] Revert "gfs2: gfs2_create_inode error handling fix" This reverts commit 8818bb32004375f35e57e0e4e5f6085a10622455. --- fs/gfs2/inode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index 1cb5ce63fbf6..29085643ad10 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c @@ -658,8 +658,7 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, if (!IS_ERR(inode)) { if (S_ISDIR(inode->i_mode)) { iput(inode); - inode = NULL; - error = -EISDIR; + inode = ERR_PTR(-EISDIR); goto fail_gunlock; } d_instantiate(dentry, inode); -- Gitee From caee12e506de2cd948ac116c7927077e9619a89f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:16 +0800 Subject: [PATCH 1190/1421] Revert "crypto: sun8i-ce-hash - fix error handling in sun8i_ce_hash_run()" This reverts commit 7ad5f86873a57d76a62cd93d6f350304aa395f8f. --- .../crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c index ebc857ed10e1..d358334e5981 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c @@ -343,8 +343,9 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) u32 common; u64 byte_count; __le32 *bf; - void *buf, *result; + void *buf = NULL; int j, i, todo; + void *result = NULL; u64 bs; int digestsize; dma_addr_t addr_res, addr_pad; @@ -364,14 +365,14 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) buf = kzalloc(bs * 2, GFP_KERNEL | GFP_DMA); if (!buf) { err = -ENOMEM; - goto err_out; + goto theend; } bf = (__le32 *)buf; result = kzalloc(digestsize, GFP_KERNEL | GFP_DMA); if (!result) { err = -ENOMEM; - goto err_free_buf; + goto theend; } flow = rctx->flow; @@ -397,7 +398,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) if (nr_sgs <= 0 || nr_sgs > MAX_SG) { dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs); err = -EINVAL; - goto err_free_result; + goto theend; } len = areq->nbytes; @@ -410,7 +411,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) if (len > 0) { dev_err(ce->dev, "remaining len %d\n", len); err = -EINVAL; - goto err_unmap_src; + goto theend; } addr_res = dma_map_single(ce->dev, result, digestsize, DMA_FROM_DEVICE); cet->t_dst[0].addr = cpu_to_le32(addr_res); @@ -418,7 +419,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) if (dma_mapping_error(ce->dev, addr_res)) { dev_err(ce->dev, "DMA map dest\n"); err = -EINVAL; - goto err_unmap_src; + goto theend; } byte_count = areq->nbytes; @@ -440,7 +441,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) } if (!j) { err = -EINVAL; - goto err_unmap_result; + goto theend; } addr_pad = dma_map_single(ce->dev, buf, j * 4, DMA_TO_DEVICE); @@ -449,7 +450,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) if (dma_mapping_error(ce->dev, addr_pad)) { dev_err(ce->dev, "DMA error on padding SG\n"); err = -EINVAL; - goto err_unmap_result; + goto theend; } if (ce->variant->hash_t_dlen_in_bits) @@ -462,25 +463,16 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq) err = sun8i_ce_run_task(ce, flow, crypto_ahash_alg_name(tfm)); dma_unmap_single(ce->dev, addr_pad, j * 4, DMA_TO_DEVICE); - -err_unmap_result: - dma_unmap_single(ce->dev, addr_res, digestsize, DMA_FROM_DEVICE); - if (!err) - memcpy(areq->result, result, algt->alg.hash.base.halg.digestsize); - -err_unmap_src: dma_unmap_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE); + dma_unmap_single(ce->dev, addr_res, digestsize, DMA_FROM_DEVICE); -err_free_result: - kfree(result); -err_free_buf: + memcpy(areq->result, result, algt->alg.hash.base.halg.digestsize); +theend: kfree(buf); - -err_out: + kfree(result); local_bh_disable(); crypto_finalize_hash_request(engine, breq, err); local_bh_enable(); - return 0; } -- Gitee From 13390e838ac4ee5e49472152e59062eddfcf9ab9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:16 +0800 Subject: [PATCH 1191/1421] Revert "x86/idle: Remove MFENCEs for X86_BUG_CLFLUSH_MONITOR in mwait_idle_with_hints() and prefer_mwait_c1_over_halt()" This reverts commit a2e605683d60c512b433651fb88e4869c9fe9111. --- arch/x86/include/asm/mwait.h | 9 ++++++--- arch/x86/kernel/process.c | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index a541411d9226..bae83810505b 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -108,10 +108,13 @@ static __always_inline void __sti_mwait(unsigned long eax, unsigned long ecx) static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx) { if (static_cpu_has_bug(X86_BUG_MONITOR) || !current_set_polling_and_test()) { - const void *addr = ¤t_thread_info()->flags; + if (static_cpu_has_bug(X86_BUG_CLFLUSH_MONITOR)) { + mb(); + clflush((void *)¤t_thread_info()->flags); + mb(); + } - alternative_input("", "clflush (%[addr])", X86_BUG_CLFLUSH_MONITOR, [addr] "a" (addr)); - __monitor(addr, 0, 0); + __monitor((void *)¤t_thread_info()->flags, 0, 0); if (!need_resched()) { if (ecx & 1) { diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 8a398acfdea2..419353904173 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -923,10 +923,13 @@ static int prefer_mwait_c1_over_halt(const struct cpuinfo_x86 *c) static __cpuidle void mwait_idle(void) { if (!current_set_polling_and_test()) { - const void *addr = ¤t_thread_info()->flags; + if (this_cpu_has(X86_BUG_CLFLUSH_MONITOR)) { + mb(); /* quirk */ + clflush((void *)¤t_thread_info()->flags); + mb(); /* quirk */ + } - alternative_input("", "clflush (%[addr])", X86_BUG_CLFLUSH_MONITOR, [addr] "a" (addr)); - __monitor(addr, 0, 0); + __monitor((void *)¤t_thread_info()->flags, 0, 0); if (!need_resched()) { __sti_mwait(0, 0); raw_local_irq_disable(); -- Gitee From a705638eadc5aa439e0d0c53d883e7ec7a23ac4a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:16 +0800 Subject: [PATCH 1192/1421] Revert "tools/x86/kcpuid: Fix error handling" This reverts commit d306793a4cc693932d3d0e13443bc288c62ed392. --- tools/arch/x86/kcpuid/kcpuid.c | 47 +++++++++++++++++----------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/tools/arch/x86/kcpuid/kcpuid.c b/tools/arch/x86/kcpuid/kcpuid.c index 8c2644f3497e..b7965dfff33a 100644 --- a/tools/arch/x86/kcpuid/kcpuid.c +++ b/tools/arch/x86/kcpuid/kcpuid.c @@ -1,12 +1,11 @@ // SPDX-License-Identifier: GPL-2.0 #define _GNU_SOURCE -#include -#include -#include #include +#include #include #include +#include #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #define min(a, b) (((a) < (b)) ? (a) : (b)) @@ -157,14 +156,14 @@ static bool cpuid_store(struct cpuid_range *range, u32 f, int subleaf, if (!func->leafs) { func->leafs = malloc(sizeof(struct subleaf)); if (!func->leafs) - err(EXIT_FAILURE, NULL); + perror("malloc func leaf"); func->nr = 1; } else { s = func->nr; func->leafs = realloc(func->leafs, (s + 1) * sizeof(*leaf)); if (!func->leafs) - err(EXIT_FAILURE, NULL); + perror("realloc f->leafs"); func->nr++; } @@ -223,7 +222,7 @@ struct cpuid_range *setup_cpuid_range(u32 input_eax) range = malloc(sizeof(struct cpuid_range)); if (!range) - err(EXIT_FAILURE, NULL); + perror("malloc range"); if (input_eax & 0x80000000) range->is_ext = true; @@ -232,7 +231,7 @@ struct cpuid_range *setup_cpuid_range(u32 input_eax) range->funcs = malloc(sizeof(struct cpuid_func) * idx_func); if (!range->funcs) - err(EXIT_FAILURE, NULL); + perror("malloc range->funcs"); range->nr = idx_func; memset(range->funcs, 0, sizeof(struct cpuid_func) * idx_func); @@ -388,8 +387,8 @@ static int parse_line(char *line) return 0; err_exit: - warnx("Wrong line format:\n" - "\tline[%d]: %s", flines, line); + printf("Warning: wrong line format:\n"); + printf("\tline[%d]: %s\n", flines, line); return -1; } @@ -411,8 +410,10 @@ static void parse_text(void) file = fopen("./cpuid.csv", "r"); } - if (!file) - err(EXIT_FAILURE, "%s", filename); + if (!file) { + printf("Fail to open '%s'\n", filename); + return; + } while (1) { ret = getline(&line, &len, file); @@ -520,7 +521,7 @@ static inline struct cpuid_func *index_to_func(u32 index) func_idx = index & 0xffff; if ((func_idx + 1) > (u32)range->nr) { - warnx("Invalid input index (0x%x)", index); + printf("ERR: invalid input index (0x%x)\n", index); return NULL; } return &range->funcs[func_idx]; @@ -552,7 +553,7 @@ static void show_info(void) return; } - warnx("Invalid input subleaf (0x%x)", user_sub); + printf("ERR: invalid input subleaf (0x%x)\n", user_sub); } show_func(func); @@ -583,15 +584,15 @@ static void setup_platform_cpuid(void) static void usage(void) { - warnx("kcpuid [-abdfhr] [-l leaf] [-s subleaf]\n" - "\t-a|--all Show both bit flags and complex bit fields info\n" - "\t-b|--bitflags Show boolean flags only\n" - "\t-d|--detail Show details of the flag/fields (default)\n" - "\t-f|--flags Specify the CPUID CSV file\n" - "\t-h|--help Show usage info\n" - "\t-l|--leaf=index Specify the leaf you want to check\n" - "\t-r|--raw Show raw CPUID data\n" - "\t-s|--subleaf=sub Specify the subleaf you want to check" + printf("kcpuid [-abdfhr] [-l leaf] [-s subleaf]\n" + "\t-a|--all Show both bit flags and complex bit fields info\n" + "\t-b|--bitflags Show boolean flags only\n" + "\t-d|--detail Show details of the flag/fields (default)\n" + "\t-f|--flags Specify the cpuid csv file\n" + "\t-h|--help Show usage info\n" + "\t-l|--leaf=index Specify the leaf you want to check\n" + "\t-r|--raw Show raw cpuid data\n" + "\t-s|--subleaf=sub Specify the subleaf you want to check\n" ); } @@ -642,7 +643,7 @@ static int parse_options(int argc, char *argv[]) user_sub = strtoul(optarg, NULL, 0); break; default: - warnx("Invalid option '%c'", optopt); + printf("%s: Invalid option '%c'\n", argv[0], optopt); return -1; } -- Gitee From f392111a19b82d556387505f5cbafe5b1acb63de Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:17 +0800 Subject: [PATCH 1193/1421] Revert "Revert "drm/amd/display: more liberal vmin/vmax update for freesync"" This reverts commit 0471b32a4ad9204a890c7e2d93f388b69f88833d. --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index d4edddaa23dd..9189864c236a 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -610,15 +610,21 @@ static void dm_crtc_high_irq(void *interrupt_params) spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags); if (acrtc->dm_irq_params.stream && - acrtc->dm_irq_params.vrr_params.supported && - acrtc->dm_irq_params.freesync_config.state == - VRR_STATE_ACTIVE_VARIABLE) { + acrtc->dm_irq_params.vrr_params.supported) { + bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled; + bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled; + bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state == VRR_STATE_ACTIVE_VARIABLE; + mod_freesync_handle_v_update(adev->dm.freesync_module, acrtc->dm_irq_params.stream, &acrtc->dm_irq_params.vrr_params); - dc_stream_adjust_vmin_vmax(adev->dm.dc, acrtc->dm_irq_params.stream, - &acrtc->dm_irq_params.vrr_params.adjust); + /* update vmin_vmax only if freesync is enabled, or only if PSR and REPLAY are disabled */ + if (fs_active_var_en || (!fs_active_var_en && !replay_en && !psr_en)) { + dc_stream_adjust_vmin_vmax(adev->dm.dc, + acrtc->dm_irq_params.stream, + &acrtc->dm_irq_params.vrr_params.adjust); + } } /* -- Gitee From 5e7b8a2eceff7167c36a15dcd45eea17ac3c49cf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:17 +0800 Subject: [PATCH 1194/1421] Revert "dt-bindings: phy: imx8mq-usb: fix fsl,phy-tx-vboost-level-microvolt property" This reverts commit 8dc40bb514e1d496746040f7b358095cf97e1cff. --- Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml b/Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml index bac4d0b51d8a..dc3a3f709fea 100644 --- a/Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml +++ b/Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml @@ -58,7 +58,8 @@ properties: fsl,phy-tx-vboost-level-microvolt: description: Adjust the boosted transmit launch pk-pk differential amplitude - enum: [844, 1008, 1156] + minimum: 880 + maximum: 1120 fsl,phy-comp-dis-tune-percent: description: -- Gitee From 203ef08b96426bf61a28f7352b4d6a8bb9e29cf7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:17 +0800 Subject: [PATCH 1195/1421] Revert "dt-bindings: usb: cypress,hx3: Add support for all variants" This reverts commit 8e21ba3e4a17502315a2351e18c7e1da938836d5. --- .../devicetree/bindings/usb/cypress,hx3.yaml | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml index 02349bbb0d46..47add0d85fb8 100644 --- a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml +++ b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml @@ -14,22 +14,9 @@ allOf: properties: compatible: - oneOf: - - enum: - - usb4b4,6504 - - usb4b4,6506 - - items: - - enum: - - usb4b4,6500 - - usb4b4,6508 - - const: usb4b4,6504 - - items: - - enum: - - usb4b4,6502 - - usb4b4,6503 - - usb4b4,6507 - - usb4b4,650a - - const: usb4b4,6506 + enum: + - usb4b4,6504 + - usb4b4,6506 reg: true -- Gitee From 3282ae8acf60d5ec804d5ed171190db13072cac4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:17 +0800 Subject: [PATCH 1196/1421] Revert "thunderbolt: Do not double dequeue a configuration request" This reverts commit 6aa153fc11f444a361fa2000b087c24f9bac533f. --- drivers/thunderbolt/ctl.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/thunderbolt/ctl.c b/drivers/thunderbolt/ctl.c index a60d7afc041f..d997a4c545f7 100644 --- a/drivers/thunderbolt/ctl.c +++ b/drivers/thunderbolt/ctl.c @@ -143,11 +143,6 @@ static void tb_cfg_request_dequeue(struct tb_cfg_request *req) struct tb_ctl *ctl = req->ctl; mutex_lock(&ctl->request_queue_lock); - if (!test_bit(TB_CFG_REQUEST_ACTIVE, &req->flags)) { - mutex_unlock(&ctl->request_queue_lock); - return; - } - list_del(&req->list); clear_bit(TB_CFG_REQUEST_ACTIVE, &req->flags); if (test_bit(TB_CFG_REQUEST_CANCELED, &req->flags)) -- Gitee From 3b4d7c9c12d4e839f6d0a28950fc5130db5515bf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:17 +0800 Subject: [PATCH 1197/1421] Revert "usb: usbtmc: Fix timeout value in get_stb" This reverts commit 85b45e4de0b4ec156757a72d7302966c7f46ccd5. --- drivers/usb/class/usbtmc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 629ef749dafc..2f92905e05ca 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -483,7 +483,6 @@ static int usbtmc_get_stb(struct usbtmc_file_data *file_data, __u8 *stb) u8 tag; int rv; long wait_rv; - unsigned long expire; dev_dbg(dev, "Enter ioctl_read_stb iin_ep_present: %d\n", data->iin_ep_present); @@ -513,11 +512,10 @@ static int usbtmc_get_stb(struct usbtmc_file_data *file_data, __u8 *stb) } if (data->iin_ep_present) { - expire = msecs_to_jiffies(file_data->timeout); wait_rv = wait_event_interruptible_timeout( data->waitq, atomic_read(&data->iin_data_valid) != 0, - expire); + file_data->timeout); if (wait_rv < 0) { dev_dbg(dev, "wait interrupted %ld\n", wait_rv); rv = wait_rv; -- Gitee From b23674dd834094f8d45363f9099c248b193995e2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:18 +0800 Subject: [PATCH 1198/1421] Revert "serial: jsm: fix NPE during jsm_uart_port_init" This reverts commit 4644bbc9920a1b7aedf0372c54f72a3a22f38532. --- drivers/tty/serial/jsm/jsm_tty.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/tty/serial/jsm/jsm_tty.c b/drivers/tty/serial/jsm/jsm_tty.c index 1bee624bd484..222afc270c88 100644 --- a/drivers/tty/serial/jsm/jsm_tty.c +++ b/drivers/tty/serial/jsm/jsm_tty.c @@ -451,7 +451,6 @@ int jsm_uart_port_init(struct jsm_board *brd) if (!brd->channels[i]) continue; - brd->channels[i]->uart_port.dev = &brd->pci_dev->dev; brd->channels[i]->uart_port.irq = brd->irq; brd->channels[i]->uart_port.uartclk = 14745600; brd->channels[i]->uart_port.type = PORT_JSM; -- Gitee From 97934c59e6170067bb6472efec0c311ae0adf12f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:18 +0800 Subject: [PATCH 1199/1421] Revert "Bluetooth: hci_qca: move the SoC type check to the right place" This reverts commit 829e24f3a3962650aedd85b9578a71d1de7868f1. --- drivers/bluetooth/hci_qca.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 9c6f79d86053..7a552387129e 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -2307,14 +2307,14 @@ static int qca_serdev_probe(struct serdev_device *serdev) qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable", GPIOD_OUT_LOW); - if (IS_ERR(qcadev->bt_en)) - return dev_err_probe(&serdev->dev, - PTR_ERR(qcadev->bt_en), - "failed to acquire BT_EN gpio\n"); - - if (!qcadev->bt_en && + if (IS_ERR(qcadev->bt_en) && (data->soc_type == QCA_WCN6750 || - data->soc_type == QCA_WCN6855)) + data->soc_type == QCA_WCN6855)) { + dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n"); + return PTR_ERR(qcadev->bt_en); + } + + if (!qcadev->bt_en) power_ctrl_enabled = false; qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl", -- Gitee From 2d8ccef5b47eeaf472e6bd09f5d79f5dcc4c2e5a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:18 +0800 Subject: [PATCH 1200/1421] Revert "usb: typec: ucsi: fix Clang -Wsign-conversion warning" This reverts commit 9603b9cfa3110fa9a524f0efa7e0ada198e6b6f8. --- drivers/usb/typec/ucsi/ucsi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h index 7706f4e95125..3bb23a2ea547 100644 --- a/drivers/usb/typec/ucsi/ucsi.h +++ b/drivers/usb/typec/ucsi/ucsi.h @@ -302,7 +302,7 @@ struct ucsi_debugfs_entry { u64 low; u64 high; } response; - int status; + u32 status; struct dentry *dentry; }; -- Gitee From edb3f1bb3c5b5403ab187ff28eb4961d66202487 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:18 +0800 Subject: [PATCH 1201/1421] Revert "USB: serial: pl2303: add new chip PL2303GC-Q20 and PL2303GT-2AB" This reverts commit 69ebc0c336ac3f87c5d5eb18c568f64ee7cc22d3. --- drivers/usb/serial/pl2303.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 1ba2287d4d45..8e327fcb222f 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c @@ -457,8 +457,6 @@ static int pl2303_detect_type(struct usb_serial *serial) case 0x605: case 0x700: /* GR */ case 0x705: - case 0x905: /* GT-2AB */ - case 0x1005: /* GC-Q20 */ return TYPE_HXN; } break; -- Gitee From 132194753ec7a644bb023e5c96937b1fc6b4ef9a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:19 +0800 Subject: [PATCH 1202/1421] Revert "usb: storage: Ignore UAS driver for SanDisk 3.2 Gen2 storage device" This reverts commit 6ef3dec2b6edb09132f465021083677c2427077d. --- drivers/usb/storage/unusual_uas.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h index 1477e31d7763..d460d71b4257 100644 --- a/drivers/usb/storage/unusual_uas.h +++ b/drivers/usb/storage/unusual_uas.h @@ -52,13 +52,6 @@ UNUSUAL_DEV(0x059f, 0x1061, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME), -/* Reported-by: Zhihong Zhou */ -UNUSUAL_DEV(0x0781, 0x55e8, 0x0000, 0x9999, - "SanDisk", - "", - USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_IGNORE_UAS), - /* Reported-by: Hongling Zeng */ UNUSUAL_DEV(0x090c, 0x2000, 0x0000, 0x9999, "Hiksemi", -- Gitee From 364043197099d50d31552b32ddd104f79828f677 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:19 +0800 Subject: [PATCH 1203/1421] Revert "usb: quirks: Add NO_LPM quirk for SanDisk Extreme 55AE" This reverts commit 700767a26c6929d9b88ec9e978e8867f16a436c0. --- drivers/usb/core/quirks.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index c979ecd0169a..4903c733d37a 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -372,9 +372,6 @@ static const struct usb_device_id usb_quirk_list[] = { /* SanDisk Corp. SanDisk 3.2Gen1 */ { USB_DEVICE(0x0781, 0x55a3), .driver_info = USB_QUIRK_DELAY_INIT }, - /* SanDisk Extreme 55AE */ - { USB_DEVICE(0x0781, 0x55ae), .driver_info = USB_QUIRK_NO_LPM }, - /* Realforce 87U Keyboard */ { USB_DEVICE(0x0853, 0x011b), .driver_info = USB_QUIRK_NO_LPM }, -- Gitee From a8bd611bbd2e2c400400aefdd1407459b88bd42e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:19 +0800 Subject: [PATCH 1204/1421] Revert "rtc: Fix offset calculation for .start_secs < 0" This reverts commit 0bf482783075447dba822a0d6c4e31905efb30ae. --- drivers/rtc/class.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c index af10850fbac2..edfd942f8c54 100644 --- a/drivers/rtc/class.c +++ b/drivers/rtc/class.c @@ -323,7 +323,7 @@ static void rtc_device_get_offset(struct rtc_device *rtc) * * Otherwise the offset seconds should be 0. */ - if ((rtc->start_secs >= 0 && rtc->start_secs > rtc->range_max) || + if (rtc->start_secs > rtc->range_max || rtc->start_secs + range_secs - 1 < rtc->range_min) rtc->offset_secs = rtc->start_secs - rtc->range_min; else if (rtc->start_secs > rtc->range_min) -- Gitee From 4410117548a29e62ba2ff58526be927b5c4b2f8a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:19 +0800 Subject: [PATCH 1205/1421] Revert "rtc: Make rtc_time64_to_tm() support dates before 1970" This reverts commit cc17b5bed6860d3d5b6f6864b3356bb2a1db5a45. --- drivers/rtc/lib.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/drivers/rtc/lib.c b/drivers/rtc/lib.c index 13b5b1f20465..fe361652727a 100644 --- a/drivers/rtc/lib.c +++ b/drivers/rtc/lib.c @@ -46,38 +46,24 @@ EXPORT_SYMBOL(rtc_year_days); * rtc_time64_to_tm - converts time64_t to rtc_time. * * @time: The number of seconds since 01-01-1970 00:00:00. - * Works for values since at least 1900 + * (Must be positive.) * @tm: Pointer to the struct rtc_time. */ void rtc_time64_to_tm(time64_t time, struct rtc_time *tm) { - int days, secs; + unsigned int secs; + int days; u64 u64tmp; u32 u32tmp, udays, century, day_of_century, year_of_century, year, day_of_year, month, day; bool is_Jan_or_Feb, is_leap_year; - /* - * Get days and seconds while preserving the sign to - * handle negative time values (dates before 1970-01-01) - */ + /* time must be positive */ days = div_s64_rem(time, 86400, &secs); - /* - * We need 0 <= secs < 86400 which isn't given for negative - * values of time. Fixup accordingly. - */ - if (secs < 0) { - days -= 1; - secs += 86400; - } - /* day of the week, 1970-01-01 was a Thursday */ tm->tm_wday = (days + 4) % 7; - /* Ensure tm_wday is always positive */ - if (tm->tm_wday < 0) - tm->tm_wday += 7; /* * The following algorithm is, basically, Proposition 6.3 of Neri @@ -107,7 +93,7 @@ void rtc_time64_to_tm(time64_t time, struct rtc_time *tm) * thus, is slightly different from [1]. */ - udays = days + 719468; + udays = ((u32) days) + 719468; u32tmp = 4 * udays + 3; century = u32tmp / 146097; -- Gitee From 917f379745b8242c1cad87f320541350cf9ef5b1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:19 +0800 Subject: [PATCH 1206/1421] Revert "acpi-cpufreq: Fix nominal_freq units to KHz in get_max_boost_ratio()" This reverts commit f8f64a0800cb7e7f1428869456c964ceb1673258. --- drivers/cpufreq/acpi-cpufreq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index 0bfced81cc17..0615e7fa20ad 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c @@ -659,7 +659,7 @@ static u64 get_max_boost_ratio(unsigned int cpu, u64 *nominal_freq) nominal_perf = perf_caps.nominal_perf; if (nominal_freq) - *nominal_freq = perf_caps.nominal_freq * 1000; + *nominal_freq = perf_caps.nominal_freq; if (!highest_perf || !nominal_perf) { pr_debug("CPU%d: highest or nominal performance missing\n", cpu); -- Gitee From b2d400c8d51799f96991059319851b504e72782e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:20 +0800 Subject: [PATCH 1207/1421] Revert "pinctrl: armada-37xx: set GPIO output value before setting direction" This reverts commit 7385ed5b7938a3fa4ba2111b07bbb2b53955c47b. --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index 1a39fd97a900..a20e7d37633e 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -417,22 +417,23 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip, unsigned int offset, int value) { struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); - unsigned int en_offset = offset; - unsigned int reg = OUTPUT_VAL; + unsigned int val_offset = offset; + unsigned int reg = OUTPUT_EN; unsigned int mask, val, ret; armada_37xx_update_reg(®, &offset); mask = BIT(offset); - val = value ? mask : 0; - ret = regmap_update_bits(info->regmap, reg, mask, val); + ret = regmap_update_bits(info->regmap, reg, mask, mask); + if (ret) return ret; - reg = OUTPUT_EN; - armada_37xx_update_reg(®, &en_offset); + reg = OUTPUT_VAL; + armada_37xx_update_reg(®, &val_offset); - regmap_update_bits(info->regmap, reg, mask, mask); + val = value ? mask : 0; + regmap_update_bits(info->regmap, reg, mask, val); return 0; } -- Gitee From 229025fc6eaa811fac710def0d8ab036b0aedaf3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:20 +0800 Subject: [PATCH 1208/1421] Revert "pinctrl: armada-37xx: use correct OUTPUT_VAL register for GPIOs > 31" This reverts commit 8e4866428b50321440c35f4673e2841604d5467b. --- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c index a20e7d37633e..c34719b7506d 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c @@ -417,7 +417,6 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip, unsigned int offset, int value) { struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); - unsigned int val_offset = offset; unsigned int reg = OUTPUT_EN; unsigned int mask, val, ret; @@ -430,8 +429,6 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip, return ret; reg = OUTPUT_VAL; - armada_37xx_update_reg(®, &val_offset); - val = value ? mask : 0; regmap_update_bits(info->regmap, reg, mask, val); -- Gitee From c56a1bf551bcacb9075fe8ff1539509f0b811e5b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:20 +0800 Subject: [PATCH 1209/1421] Revert "Linux 6.6.93" This reverts commit 5a780b9c1d3f83c1bae2c87c625d61d5232f6b04. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c9a1e2286b3a..51d975b35551 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 93 +SUBLEVEL = 92 EXTRAVERSION = NAME = Pinguïn Aangedreven -- Gitee From 79e45c937c1a9aec8e4f83b1f26d954c5446a940 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:20 +0800 Subject: [PATCH 1210/1421] Revert "ksmbd: use list_first_entry_or_null for opinfo_get_list()" This reverts commit 808678ee42d5319516bc7bd6ddfd11d38918824a. --- fs/smb/server/oplock.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/smb/server/oplock.c b/fs/smb/server/oplock.c index e564432643ea..72294764d4c2 100644 --- a/fs/smb/server/oplock.c +++ b/fs/smb/server/oplock.c @@ -146,9 +146,12 @@ static struct oplock_info *opinfo_get_list(struct ksmbd_inode *ci) { struct oplock_info *opinfo; + if (list_empty(&ci->m_op_list)) + return NULL; + down_read(&ci->m_lock); - opinfo = list_first_entry_or_null(&ci->m_op_list, struct oplock_info, - op_entry); + opinfo = list_first_entry(&ci->m_op_list, struct oplock_info, + op_entry); if (opinfo) { if (opinfo->conn == NULL || !atomic_inc_not_zero(&opinfo->refcount)) -- Gitee From f87d7ccd59fd11caf26a71b979a6aaecaf5c5c83 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:21 +0800 Subject: [PATCH 1211/1421] Revert "net: ethernet: ti: am65-cpsw: Lower random mac address error print to info" This reverts commit 79e1b82438b33870468264c72e9c07508270520f. --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index c379a958380c..9c8376b27189 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -2095,7 +2095,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common) port->slave.mac_addr); if (!is_valid_ether_addr(port->slave.mac_addr)) { eth_random_addr(port->slave.mac_addr); - dev_info(dev, "Use random MAC address\n"); + dev_err(dev, "Use random MAC address\n"); } } } -- Gitee From 27263d1a696b158a7198a0be67e1e28f9d2e7361 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:21 +0800 Subject: [PATCH 1212/1421] Revert "platform/x86: thinkpad_acpi: Ignore battery threshold change event notification" This reverts commit d3e23e894f5a8c6d6fd7528137841e4a9b8fc1c6. --- drivers/platform/x86/thinkpad_acpi.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index 8de0d3232e48..bcb0689101e2 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c @@ -212,7 +212,6 @@ enum tpacpi_hkey_event_t { /* Thermal events */ TP_HKEY_EV_ALARM_BAT_HOT = 0x6011, /* battery too hot */ TP_HKEY_EV_ALARM_BAT_XHOT = 0x6012, /* battery critically hot */ - TP_HKEY_EV_ALARM_BAT_LIM_CHANGE = 0x6013, /* battery charge limit changed*/ TP_HKEY_EV_ALARM_SENSOR_HOT = 0x6021, /* sensor too hot */ TP_HKEY_EV_ALARM_SENSOR_XHOT = 0x6022, /* sensor critically hot */ TP_HKEY_EV_THM_TABLE_CHANGED = 0x6030, /* windows; thermal table changed */ @@ -3943,10 +3942,6 @@ static bool hotkey_notify_6xxx(const u32 hkey, pr_alert("THERMAL EMERGENCY: battery is extremely hot!\n"); /* recommended action: immediate sleep/hibernate */ break; - case TP_HKEY_EV_ALARM_BAT_LIM_CHANGE: - pr_debug("Battery Info: battery charge threshold changed\n"); - /* User changed charging threshold. No action needed */ - return true; case TP_HKEY_EV_ALARM_SENSOR_HOT: pr_crit("THERMAL ALARM: a sensor reports something is too hot!\n"); /* recommended action: warn user through gui, that */ -- Gitee From 7213b68f06d7d1507c9294069db5a530d6014847 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:21 +0800 Subject: [PATCH 1213/1421] Revert "platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys" This reverts commit fd45242f33f11997e7e4ee7719e12e769b5205f9. --- drivers/platform/x86/fujitsu-laptop.c | 33 ++++----------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c index d7ef4f046d99..085e044e888e 100644 --- a/drivers/platform/x86/fujitsu-laptop.c +++ b/drivers/platform/x86/fujitsu-laptop.c @@ -17,13 +17,13 @@ /* * fujitsu-laptop.c - Fujitsu laptop support, providing access to additional * features made available on a range of Fujitsu laptops including the - * P2xxx/P5xxx/S2xxx/S6xxx/S7xxx series. + * P2xxx/P5xxx/S6xxx/S7xxx series. * * This driver implements a vendor-specific backlight control interface for * Fujitsu laptops and provides support for hotkeys present on certain Fujitsu * laptops. * - * This driver has been tested on a Fujitsu Lifebook S2110, S6410, S7020 and + * This driver has been tested on a Fujitsu Lifebook S6410, S7020 and * P8010. It should work on most P-series and S-series Lifebooks, but * YMMV. * @@ -102,11 +102,7 @@ #define KEY2_CODE 0x411 #define KEY3_CODE 0x412 #define KEY4_CODE 0x413 -#define KEY5_CODE 0x414 -#define KEY6_CODE 0x415 -#define KEY7_CODE 0x416 -#define KEY8_CODE 0x417 -#define KEY9_CODE 0x420 +#define KEY5_CODE 0x420 /* Hotkey ringbuffer limits */ #define MAX_HOTKEY_RINGBUFFER_SIZE 100 @@ -454,7 +450,7 @@ static const struct key_entry keymap_default[] = { { KE_KEY, KEY2_CODE, { KEY_PROG2 } }, { KE_KEY, KEY3_CODE, { KEY_PROG3 } }, { KE_KEY, KEY4_CODE, { KEY_PROG4 } }, - { KE_KEY, KEY9_CODE, { KEY_RFKILL } }, + { KE_KEY, KEY5_CODE, { KEY_RFKILL } }, /* Soft keys read from status flags */ { KE_KEY, FLAG_RFKILL, { KEY_RFKILL } }, { KE_KEY, FLAG_TOUCHPAD_TOGGLE, { KEY_TOUCHPAD_TOGGLE } }, @@ -478,18 +474,6 @@ static const struct key_entry keymap_p8010[] = { { KE_END, 0 } }; -static const struct key_entry keymap_s2110[] = { - { KE_KEY, KEY1_CODE, { KEY_PROG1 } }, /* "A" */ - { KE_KEY, KEY2_CODE, { KEY_PROG2 } }, /* "B" */ - { KE_KEY, KEY3_CODE, { KEY_WWW } }, /* "Internet" */ - { KE_KEY, KEY4_CODE, { KEY_EMAIL } }, /* "E-mail" */ - { KE_KEY, KEY5_CODE, { KEY_STOPCD } }, - { KE_KEY, KEY6_CODE, { KEY_PLAYPAUSE } }, - { KE_KEY, KEY7_CODE, { KEY_PREVIOUSSONG } }, - { KE_KEY, KEY8_CODE, { KEY_NEXTSONG } }, - { KE_END, 0 } -}; - static const struct key_entry *keymap = keymap_default; static int fujitsu_laptop_dmi_keymap_override(const struct dmi_system_id *id) @@ -527,15 +511,6 @@ static const struct dmi_system_id fujitsu_laptop_dmi_table[] = { }, .driver_data = (void *)keymap_p8010 }, - { - .callback = fujitsu_laptop_dmi_keymap_override, - .ident = "Fujitsu LifeBook S2110", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), - DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK S2110"), - }, - .driver_data = (void *)keymap_s2110 - }, {} }; -- Gitee From ffee17a1ad2ae13000699a284aecb21f15b8bb2d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:21 +0800 Subject: [PATCH 1214/1421] Revert "NFS: Avoid flushing data while holding directory locks in nfs_rename()" This reverts commit cbceb665f4eed78e7e0dc590091ac12a5f0b23e8. --- fs/nfs/client.c | 2 -- fs/nfs/dir.c | 15 +-------------- include/linux/nfs_fs_sb.h | 12 +++--------- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/fs/nfs/client.c b/fs/nfs/client.c index aa09f930eeaf..62607d52bfa5 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c @@ -1080,8 +1080,6 @@ struct nfs_server *nfs_create_server(struct fs_context *fc) if (server->namelen == 0 || server->namelen > NFS2_MAXNAMLEN) server->namelen = NFS2_MAXNAMLEN; } - /* Linux 'subtree_check' borkenness mandates this setting */ - server->fh_expire_type = NFS_FH_VOL_RENAME; if (!(fattr->valid & NFS_ATTR_FATTR)) { error = ctx->nfs_mod->rpc_ops->getattr(server, ctx->mntfh, diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 389186384235..39f7549afcf5 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -2642,18 +2642,6 @@ nfs_unblock_rename(struct rpc_task *task, struct nfs_renamedata *data) unblock_revalidate(new_dentry); } -static bool nfs_rename_is_unsafe_cross_dir(struct dentry *old_dentry, - struct dentry *new_dentry) -{ - struct nfs_server *server = NFS_SB(old_dentry->d_sb); - - if (old_dentry->d_parent != new_dentry->d_parent) - return false; - if (server->fh_expire_type & NFS_FH_RENAME_UNSAFE) - return !(server->fh_expire_type & NFS_FH_NOEXPIRE_WITH_OPEN); - return true; -} - /* * RENAME * FIXME: Some nfsds, like the Linux user space nfsd, may generate a @@ -2741,8 +2729,7 @@ int nfs_rename(struct mnt_idmap *idmap, struct inode *old_dir, } - if (S_ISREG(old_inode->i_mode) && - nfs_rename_is_unsafe_cross_dir(old_dentry, new_dentry)) + if (S_ISREG(old_inode->i_mode)) nfs_sync_inode(old_inode); task = nfs_async_rename(old_dir, new_dir, old_dentry, new_dentry, must_unblock ? nfs_unblock_rename : NULL); diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 374b1b208bd8..86d96e00c2e3 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h @@ -199,15 +199,6 @@ struct nfs_server { char *fscache_uniq; /* Uniquifier (or NULL) */ #endif - /* The following #defines numerically match the NFSv4 equivalents */ -#define NFS_FH_NOEXPIRE_WITH_OPEN (0x1) -#define NFS_FH_VOLATILE_ANY (0x2) -#define NFS_FH_VOL_MIGRATION (0x4) -#define NFS_FH_VOL_RENAME (0x8) -#define NFS_FH_RENAME_UNSAFE (NFS_FH_VOLATILE_ANY | NFS_FH_VOL_RENAME) - u32 fh_expire_type; /* V4 bitmask representing file - handle volatility type for - this filesystem */ u32 pnfs_blksize; /* layout_blksize attr */ #if IS_ENABLED(CONFIG_NFS_V4) u32 attr_bitmask[3];/* V4 bitmask representing the set @@ -231,6 +222,9 @@ struct nfs_server { u32 acl_bitmask; /* V4 bitmask representing the ACEs that are supported on this filesystem */ + u32 fh_expire_type; /* V4 bitmask representing file + handle volatility type for + this filesystem */ struct pnfs_layoutdriver_type *pnfs_curr_ld; /* Active layout driver */ struct rpc_wait_queue roc_rpcwaitq; void *pnfs_ld_data; /* per mount point data */ -- Gitee From 3183a641075706b6fb5ce98668cf62c49b7dbbd8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:22 +0800 Subject: [PATCH 1215/1421] Revert "nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro" This reverts commit 5c581aca885ba616541e796542aee0924ee83599. --- drivers/nvme/host/pci.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 97ab91a479d1..1a33be577397 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -3541,8 +3541,6 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(0x1e49, 0x0041), /* ZHITAI TiPro7000 NVMe SSD */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, - { PCI_DEVICE(0x025e, 0xf1ac), /* SOLIDIGM P44 pro SSDPFKKW020X7 */ - .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(0xc0a9, 0x540a), /* Crucial P2 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1d97, 0x2263), /* Lexar NM610 */ -- Gitee From 86ddda175705d3aaca8b26424b67e5a99bff2ad7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:22 +0800 Subject: [PATCH 1216/1421] Revert "spi: spi-sun4i: fix early activation" This reverts commit 7916a09d8cb9cdfdce117e06ec0e2ef967cb08b6. --- drivers/spi/spi-sun4i.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c index 5b2cb225a419..b8947265d329 100644 --- a/drivers/spi/spi-sun4i.c +++ b/drivers/spi/spi-sun4i.c @@ -263,9 +263,6 @@ static int sun4i_spi_transfer_one(struct spi_master *master, else reg |= SUN4I_CTL_DHB; - /* Now that the settings are correct, enable the interface */ - reg |= SUN4I_CTL_ENABLE; - sun4i_spi_write(sspi, SUN4I_CTL_REG, reg); /* Ensure that we have a parent clock fast enough */ @@ -406,7 +403,7 @@ static int sun4i_spi_runtime_resume(struct device *dev) } sun4i_spi_write(sspi, SUN4I_CTL_REG, - SUN4I_CTL_MASTER | SUN4I_CTL_TP); + SUN4I_CTL_ENABLE | SUN4I_CTL_MASTER | SUN4I_CTL_TP); return 0; -- Gitee From 492fdf3a0fabfb130542169d7fbaf5a03dd5d42f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:22 +0800 Subject: [PATCH 1217/1421] Revert "phy: starfive: jh7110-usb: Fix USB 2.0 host occasional detection failure" This reverts commit a280f7f533a386e5cdeba8be64cf485cc51b0ad2. --- drivers/phy/starfive/phy-jh7110-usb.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/phy/starfive/phy-jh7110-usb.c b/drivers/phy/starfive/phy-jh7110-usb.c index bf52b41110db..633912f8a05d 100644 --- a/drivers/phy/starfive/phy-jh7110-usb.c +++ b/drivers/phy/starfive/phy-jh7110-usb.c @@ -16,8 +16,6 @@ #include #define USB_125M_CLK_RATE 125000000 -#define USB_CLK_MODE_OFF 0x0 -#define USB_CLK_MODE_RX_NORMAL_PWR BIT(1) #define USB_LS_KEEPALIVE_OFF 0x4 #define USB_LS_KEEPALIVE_ENABLE BIT(4) @@ -70,7 +68,6 @@ static int jh7110_usb2_phy_init(struct phy *_phy) { struct jh7110_usb2_phy *phy = phy_get_drvdata(_phy); int ret; - unsigned int val; ret = clk_set_rate(phy->usb_125m_clk, USB_125M_CLK_RATE); if (ret) @@ -80,10 +77,6 @@ static int jh7110_usb2_phy_init(struct phy *_phy) if (ret) return ret; - val = readl(phy->regs + USB_CLK_MODE_OFF); - val |= USB_CLK_MODE_RX_NORMAL_PWR; - writel(val, phy->regs + USB_CLK_MODE_OFF); - return 0; } -- Gitee From a2916baed3595ca9bc64167dd73cef0fc4f11730 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:22 +0800 Subject: [PATCH 1218/1421] Revert "drm/amd/display: fix link_set_dpms_off multi-display MST corner case" This reverts commit c567e009d3a6524d455c59e0ddf86aa4e2c207db. --- drivers/gpu/drm/amd/display/dc/link/link_dpms.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/link/link_dpms.c b/drivers/gpu/drm/amd/display/dc/link/link_dpms.c index 9b470812d96a..4901e27f678b 100644 --- a/drivers/gpu/drm/amd/display/dc/link/link_dpms.c +++ b/drivers/gpu/drm/amd/display/dc/link/link_dpms.c @@ -145,7 +145,6 @@ void link_blank_dp_stream(struct dc_link *link, bool hw_init) void link_set_all_streams_dpms_off_for_link(struct dc_link *link) { struct pipe_ctx *pipes[MAX_PIPES]; - struct dc_stream_state *streams[MAX_PIPES]; struct dc_state *state = link->dc->current_state; uint8_t count; int i; @@ -158,18 +157,10 @@ void link_set_all_streams_dpms_off_for_link(struct dc_link *link) link_get_master_pipes_with_dpms_on(link, state, &count, pipes); - /* The subsequent call to dc_commit_updates_for_stream for a full update - * will release the current state and swap to a new state. Releasing the - * current state results in the stream pointers in the pipe_ctx structs - * to be zero'd. Hence, cache all streams prior to dc_commit_updates_for_stream. - */ - for (i = 0; i < count; i++) - streams[i] = pipes[i]->stream; - for (i = 0; i < count; i++) { - stream_update.stream = streams[i]; + stream_update.stream = pipes[i]->stream; dc_commit_updates_for_stream(link->ctx->dc, NULL, 0, - streams[i], &stream_update, + pipes[i]->stream, &stream_update, state); } -- Gitee From 222193307b1326e047f9b151e64db4b68862ec34 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:22 +0800 Subject: [PATCH 1219/1421] Revert "um: let 'make clean' properly clean underlying SUBARCH as well" This reverts commit 4ea05506b8aebdae5e2da1b5775ec960df4a0093. --- arch/um/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/um/Makefile b/arch/um/Makefile index 744c5d0bdeb8..34957dcb88b9 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile @@ -151,6 +151,5 @@ MRPROPER_FILES += $(HOST_DIR)/include/generated archclean: @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ -o -name '*.gcov' \) -type f -print | xargs rm -f - $(Q)$(MAKE) -f $(srctree)/Makefile ARCH=$(HEADER_ARCH) clean export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING DEV_NULL_PATH -- Gitee From 349c82cb321167d1124b426fc0ab86f0450f5df6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:23 +0800 Subject: [PATCH 1220/1421] Revert "platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS" This reverts commit 1f564c024a66bbd3bba08e711fbcf051c5f417d7. --- drivers/platform/x86/thinkpad_acpi.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index bcb0689101e2..cde5f845cf25 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c @@ -11315,8 +11315,6 @@ static int __must_check __init get_thinkpad_model_data( tp->vendor = PCI_VENDOR_ID_IBM; else if (dmi_name_in_vendors("LENOVO")) tp->vendor = PCI_VENDOR_ID_LENOVO; - else if (dmi_name_in_vendors("NEC")) - tp->vendor = PCI_VENDOR_ID_LENOVO; else return 0; -- Gitee From bb149ff85dd222c01d101d7158cf2df913fca7a4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:23 +0800 Subject: [PATCH 1221/1421] Revert "nfs: don't share pNFS DS connections between net namespaces" This reverts commit 604774f95dc8945837d90077ea532f973f612327. --- fs/nfs/filelayout/filelayoutdev.c | 6 +++--- fs/nfs/flexfilelayout/flexfilelayoutdev.c | 6 +++--- fs/nfs/pnfs.h | 4 +--- fs/nfs/pnfs_nfs.c | 9 ++++----- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/fs/nfs/filelayout/filelayoutdev.c b/fs/nfs/filelayout/filelayoutdev.c index d5f1fbfd9a0c..acf4b88889dc 100644 --- a/fs/nfs/filelayout/filelayoutdev.c +++ b/fs/nfs/filelayout/filelayoutdev.c @@ -75,7 +75,6 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, struct page *scratch; struct list_head dsaddrs; struct nfs4_pnfs_ds_addr *da; - struct net *net = server->nfs_client->cl_net; /* set up xdr stream */ scratch = alloc_page(gfp_flags); @@ -159,7 +158,8 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, mp_count = be32_to_cpup(p); /* multipath count */ for (j = 0; j < mp_count; j++) { - da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags); + da = nfs4_decode_mp_ds_addr(server->nfs_client->cl_net, + &stream, gfp_flags); if (da) list_add_tail(&da->da_node, &dsaddrs); } @@ -169,7 +169,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, goto out_err_free_deviceid; } - dsaddr->ds_list[i] = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags); + dsaddr->ds_list[i] = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags); if (!dsaddr->ds_list[i]) goto out_err_drain_dsaddrs; diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c index d21c5ecfbf1c..e028f5a0ef5f 100644 --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c @@ -49,7 +49,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, struct nfs4_pnfs_ds_addr *da; struct nfs4_ff_layout_ds *new_ds = NULL; struct nfs4_ff_ds_version *ds_versions = NULL; - struct net *net = server->nfs_client->cl_net; u32 mp_count; u32 version_count; __be32 *p; @@ -81,7 +80,8 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, for (i = 0; i < mp_count; i++) { /* multipath ds */ - da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags); + da = nfs4_decode_mp_ds_addr(server->nfs_client->cl_net, + &stream, gfp_flags); if (da) list_add_tail(&da->da_node, &dsaddrs); } @@ -149,7 +149,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, new_ds->ds_versions = ds_versions; new_ds->ds_versions_cnt = version_count; - new_ds->ds = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags); + new_ds->ds = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags); if (!new_ds->ds) goto out_err_drain_dsaddrs; diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 79996d7dad0f..d886c8226d8f 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -59,7 +59,6 @@ struct nfs4_pnfs_ds { struct list_head ds_node; /* nfs4_pnfs_dev_hlist dev_dslist */ char *ds_remotestr; /* comma sep list of addrs */ struct list_head ds_addrs; - const struct net *ds_net; struct nfs_client *ds_clp; refcount_t ds_count; unsigned long ds_state; @@ -406,8 +405,7 @@ int pnfs_generic_commit_pagelist(struct inode *inode, int pnfs_generic_scan_commit_lists(struct nfs_commit_info *cinfo, int max); void pnfs_generic_write_commit_done(struct rpc_task *task, void *data); void nfs4_pnfs_ds_put(struct nfs4_pnfs_ds *ds); -struct nfs4_pnfs_ds *nfs4_pnfs_ds_add(const struct net *net, - struct list_head *dsaddrs, +struct nfs4_pnfs_ds *nfs4_pnfs_ds_add(struct list_head *dsaddrs, gfp_t gfp_flags); void nfs4_pnfs_v3_ds_connect_unload(void); int nfs4_pnfs_ds_connect(struct nfs_server *mds_srv, struct nfs4_pnfs_ds *ds, diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c index 1b317c44da12..88e061bd711b 100644 --- a/fs/nfs/pnfs_nfs.c +++ b/fs/nfs/pnfs_nfs.c @@ -651,12 +651,12 @@ _same_data_server_addrs_locked(const struct list_head *dsaddrs1, * Lookup DS by addresses. nfs4_ds_cache_lock is held */ static struct nfs4_pnfs_ds * -_data_server_lookup_locked(const struct net *net, const struct list_head *dsaddrs) +_data_server_lookup_locked(const struct list_head *dsaddrs) { struct nfs4_pnfs_ds *ds; list_for_each_entry(ds, &nfs4_data_server_cache, ds_node) - if (ds->ds_net == net && _same_data_server_addrs_locked(&ds->ds_addrs, dsaddrs)) + if (_same_data_server_addrs_locked(&ds->ds_addrs, dsaddrs)) return ds; return NULL; } @@ -763,7 +763,7 @@ nfs4_pnfs_remotestr(struct list_head *dsaddrs, gfp_t gfp_flags) * uncached and return cached struct nfs4_pnfs_ds. */ struct nfs4_pnfs_ds * -nfs4_pnfs_ds_add(const struct net *net, struct list_head *dsaddrs, gfp_t gfp_flags) +nfs4_pnfs_ds_add(struct list_head *dsaddrs, gfp_t gfp_flags) { struct nfs4_pnfs_ds *tmp_ds, *ds = NULL; char *remotestr; @@ -781,14 +781,13 @@ nfs4_pnfs_ds_add(const struct net *net, struct list_head *dsaddrs, gfp_t gfp_fla remotestr = nfs4_pnfs_remotestr(dsaddrs, gfp_flags); spin_lock(&nfs4_ds_cache_lock); - tmp_ds = _data_server_lookup_locked(net, dsaddrs); + tmp_ds = _data_server_lookup_locked(dsaddrs); if (tmp_ds == NULL) { INIT_LIST_HEAD(&ds->ds_addrs); list_splice_init(dsaddrs, &ds->ds_addrs); ds->ds_remotestr = remotestr; refcount_set(&ds->ds_count, 1); INIT_LIST_HEAD(&ds->ds_node); - ds->ds_net = net; ds->ds_clp = NULL; list_add(&ds->ds_node, &nfs4_data_server_cache); dprintk("%s add new data server %s\n", __func__, -- Gitee From 0411005d668d6301db5afcef129bf5b93cb99407 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:23 +0800 Subject: [PATCH 1222/1421] Revert "HID: quirks: Add ADATA XPG alpha wireless mouse support" This reverts commit 651219042d5c54737babe9ab73fe8032050de6ba. --- drivers/hid/hid-ids.h | 4 ---- drivers/hid/hid-quirks.c | 2 -- 2 files changed, 6 deletions(-) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index a8665d57094b..8e721ec3faaf 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -41,10 +41,6 @@ #define USB_VENDOR_ID_ACTIONSTAR 0x2101 #define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011 -#define USB_VENDOR_ID_ADATA_XPG 0x125f -#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE 0x7505 -#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE 0x7506 - #define USB_VENDOR_ID_ADS_TECH 0x06e1 #define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155 diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index 73979643315b..5d7a418ccdbe 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -27,8 +27,6 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD }, { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HID_QUIRK_FULLSPEED_INTERVAL }, { HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX), HID_QUIRK_NO_INIT_REPORTS }, -- Gitee From f9e574cdb2360e3b49abe5743fa7387f61fb142f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:24 +0800 Subject: [PATCH 1223/1421] Revert "dmaengine: idxd: cdev: Fix uninitialized use of sva in idxd_cdev_open" This reverts commit de595ee4b325fd60518fc9c50cd14c6d7f6ab92b. --- drivers/dma/idxd/cdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index 7e3a67f9f0a6..6cfcef3cf4cd 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -225,7 +225,7 @@ static int idxd_cdev_open(struct inode *inode, struct file *filp) struct idxd_wq *wq; struct device *dev, *fdev; int rc = 0; - struct iommu_sva *sva = NULL; + struct iommu_sva *sva; unsigned int pasid; struct idxd_cdev *idxd_cdev; @@ -322,7 +322,7 @@ static int idxd_cdev_open(struct inode *inode, struct file *filp) if (device_user_pasid_enabled(idxd)) idxd_xa_pasid_remove(ctx); failed_get_pasid: - if (device_user_pasid_enabled(idxd) && !IS_ERR_OR_NULL(sva)) + if (device_user_pasid_enabled(idxd)) iommu_sva_unbind_device(sva); failed: mutex_unlock(&wq->wq_lock); -- Gitee From 2881d558c87e1ef6eec00d82898ca37eb79dc394 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:24 +0800 Subject: [PATCH 1224/1421] Revert "coredump: hand a pidfd to the usermode coredump helper" This reverts commit ab745e4c20e22c622248a6dae8ed0e22295e0260. --- fs/coredump.c | 78 ++++------------------------------------ include/linux/coredump.h | 1 - 2 files changed, 7 insertions(+), 72 deletions(-) diff --git a/fs/coredump.c b/fs/coredump.c index d3a4f5dc2e36..f342f352b478 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -42,7 +42,6 @@ #include #include #include -#include #include #include @@ -57,13 +56,6 @@ static bool dump_vma_snapshot(struct coredump_params *cprm); static void free_vma_snapshot(struct coredump_params *cprm); -/* - * File descriptor number for the pidfd for the thread-group leader of - * the coredumping task installed into the usermode helper's file - * descriptor table. - */ -#define COREDUMP_PIDFD_NUMBER 3 - static int core_uses_pid; static unsigned int core_pipe_limit; static char core_pattern[CORENAME_MAX_SIZE] = "core"; @@ -340,27 +332,6 @@ static int format_corename(struct core_name *cn, struct coredump_params *cprm, case 'C': err = cn_printf(cn, "%d", cprm->cpu); break; - /* pidfd number */ - case 'F': { - /* - * Installing a pidfd only makes sense if - * we actually spawn a usermode helper. - */ - if (!ispipe) - break; - - /* - * Note that we'll install a pidfd for the - * thread-group leader. We know that task - * linkage hasn't been removed yet and even if - * this @current isn't the actual thread-group - * leader we know that the thread-group leader - * cannot be reaped until @current has exited. - */ - cprm->pid = task_tgid(current); - err = cn_printf(cn, "%d", COREDUMP_PIDFD_NUMBER); - break; - } default: break; } @@ -517,7 +488,7 @@ static void wait_for_dump_helpers(struct file *file) } /* - * umh_coredump_setup + * umh_pipe_setup * helper function to customize the process used * to collect the core in userspace. Specifically * it sets up a pipe and installs it as fd 0 (stdin) @@ -527,62 +498,27 @@ static void wait_for_dump_helpers(struct file *file) * is a special value that we use to trap recursive * core dumps */ -static int umh_coredump_setup(struct subprocess_info *info, struct cred *new) +static int umh_pipe_setup(struct subprocess_info *info, struct cred *new) { struct file *files[2]; - struct file *pidfs_file = NULL; struct coredump_params *cp = (struct coredump_params *)info->data; int err; - if (cp->pid) { - int fd; - - fd = pidfd_prepare(cp->pid, 0, &pidfs_file); - if (fd < 0) - return fd; - - /* - * We don't care about the fd. We also cannot simply - * replace it below because dup2() will refuse to close - * this file descriptor if its in a larval state. So - * close it! - */ - put_unused_fd(fd); - - /* - * Usermode helpers are childen of either - * system_unbound_wq or of kthreadd. So we know that - * we're starting off with a clean file descriptor - * table. So we should always be able to use - * COREDUMP_PIDFD_NUMBER as our file descriptor value. - */ - err = replace_fd(COREDUMP_PIDFD_NUMBER, pidfs_file, 0); - if (err < 0) - goto out_fail; - - pidfs_file = NULL; - } - err = create_pipe_files(files, 0); if (err) - goto out_fail; + return err; cp->file = files[1]; err = replace_fd(0, files[0], 0); fput(files[0]); if (err < 0) - goto out_fail; + return err; /* and disallow core files too */ current->signal->rlim[RLIMIT_CORE] = (struct rlimit){1, 1}; - err = 0; - -out_fail: - if (pidfs_file) - fput(pidfs_file); - return err; + return 0; } void do_coredump(const kernel_siginfo_t *siginfo) @@ -658,7 +594,7 @@ void do_coredump(const kernel_siginfo_t *siginfo) } if (cprm.limit == 1) { - /* See umh_coredump_setup() which sets RLIMIT_CORE = 1. + /* See umh_pipe_setup() which sets RLIMIT_CORE = 1. * * Normally core limits are irrelevant to pipes, since * we're not writing to the file system, but we use @@ -703,7 +639,7 @@ void do_coredump(const kernel_siginfo_t *siginfo) retval = -ENOMEM; sub_info = call_usermodehelper_setup(helper_argv[0], helper_argv, NULL, GFP_KERNEL, - umh_coredump_setup, NULL, &cprm); + umh_pipe_setup, NULL, &cprm); if (sub_info) retval = call_usermodehelper_exec(sub_info, UMH_WAIT_EXEC); diff --git a/include/linux/coredump.h b/include/linux/coredump.h index c1b4c8c70cae..d3eba4360150 100644 --- a/include/linux/coredump.h +++ b/include/linux/coredump.h @@ -28,7 +28,6 @@ struct coredump_params { int vma_count; size_t vma_data_size; struct core_vma_metadata *vma_meta; - struct pid *pid; }; /* -- Gitee From 962959144e2cb08e65ca4a067bd4eef55975f7ae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:24 +0800 Subject: [PATCH 1225/1421] Revert "coredump: fix error handling for replace_fd()" This reverts commit fc95cfa41f6fcc0f551739c6eac81bf6f2d14807. --- fs/coredump.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/fs/coredump.c b/fs/coredump.c index f342f352b478..9d235fa14ab9 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -502,9 +502,7 @@ static int umh_pipe_setup(struct subprocess_info *info, struct cred *new) { struct file *files[2]; struct coredump_params *cp = (struct coredump_params *)info->data; - int err; - - err = create_pipe_files(files, 0); + int err = create_pipe_files(files, 0); if (err) return err; @@ -512,13 +510,10 @@ static int umh_pipe_setup(struct subprocess_info *info, struct cred *new) err = replace_fd(0, files[0], 0); fput(files[0]); - if (err < 0) - return err; - /* and disallow core files too */ current->signal->rlim[RLIMIT_CORE] = (struct rlimit){1, 1}; - return 0; + return err; } void do_coredump(const kernel_siginfo_t *siginfo) -- Gitee From b4466907478e827c90225f7de2a7bd97cdc8550f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:24 +0800 Subject: [PATCH 1226/1421] Revert "perf/arm-cmn: Initialise cmn->cpu earlier" This reverts commit 2c6722411d46eb9c7e8fe5c325e2099bd64d0b7f. --- drivers/perf/arm-cmn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c index 77aa37de5988..fdbc57f23614 100644 --- a/drivers/perf/arm-cmn.c +++ b/drivers/perf/arm-cmn.c @@ -2443,7 +2443,6 @@ static int arm_cmn_probe(struct platform_device *pdev) cmn->dev = &pdev->dev; cmn->part = (unsigned long)device_get_match_data(cmn->dev); - cmn->cpu = cpumask_local_spread(0, dev_to_node(cmn->dev)); platform_set_drvdata(pdev, cmn); if (cmn->part == PART_CMN600 && has_acpi_companion(cmn->dev)) { @@ -2471,6 +2470,7 @@ static int arm_cmn_probe(struct platform_device *pdev) if (err) return err; + cmn->cpu = cpumask_local_spread(0, dev_to_node(cmn->dev)); cmn->pmu = (struct pmu) { .module = THIS_MODULE, .attr_groups = arm_cmn_attr_groups, -- Gitee From 1f8989afbcb7a5df1aef1f8d7ca4228d95f864fa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:24 +0800 Subject: [PATCH 1227/1421] Revert "perf/arm-cmn: Fix REQ2/SNP2 mixup" This reverts commit ca257fdf3057a2e852265b213a4db036d1cfe854. --- drivers/perf/arm-cmn.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c index fdbc57f23614..7bd1733d7977 100644 --- a/drivers/perf/arm-cmn.c +++ b/drivers/perf/arm-cmn.c @@ -684,8 +684,8 @@ static umode_t arm_cmn_event_attr_is_visible(struct kobject *kobj, if ((chan == 5 && cmn->rsp_vc_num < 2) || (chan == 6 && cmn->dat_vc_num < 2) || - (chan == 7 && cmn->req_vc_num < 2) || - (chan == 8 && cmn->snp_vc_num < 2)) + (chan == 7 && cmn->snp_vc_num < 2) || + (chan == 8 && cmn->req_vc_num < 2)) return 0; } @@ -841,8 +841,8 @@ static umode_t arm_cmn_event_attr_is_visible(struct kobject *kobj, _CMN_EVENT_XP(pub_##_name, (_event) | (4 << 5)), \ _CMN_EVENT_XP(rsp2_##_name, (_event) | (5 << 5)), \ _CMN_EVENT_XP(dat2_##_name, (_event) | (6 << 5)), \ - _CMN_EVENT_XP(req2_##_name, (_event) | (7 << 5)), \ - _CMN_EVENT_XP(snp2_##_name, (_event) | (8 << 5)) + _CMN_EVENT_XP(snp2_##_name, (_event) | (7 << 5)), \ + _CMN_EVENT_XP(req2_##_name, (_event) | (8 << 5)) #define CMN_EVENT_XP_DAT(_name, _event) \ _CMN_EVENT_XP_PORT(dat_##_name, (_event) | (3 << 5)), \ -- Gitee From 9c4d50f47222a91eb4b0879df83ab19945d067ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:25 +0800 Subject: [PATCH 1228/1421] Revert "net_sched: hfsc: Address reentrant enqueue adding class to eltree twice" This reverts commit 73048b064402e2d8f0bba91f8ca1f68165b56918. --- net/sched/sch_hfsc.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index afcb83d469ff..1bf4fd698c41 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c @@ -175,11 +175,6 @@ struct hfsc_sched { #define HT_INFINITY 0xffffffffffffffffULL /* infinite time value */ -static bool cl_in_el_or_vttree(struct hfsc_class *cl) -{ - return ((cl->cl_flags & HFSC_FSC) && cl->cl_nactive) || - ((cl->cl_flags & HFSC_RSC) && !RB_EMPTY_NODE(&cl->el_node)); -} /* * eligible tree holds backlogged classes being sorted by their eligible times. @@ -1045,8 +1040,6 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid, if (cl == NULL) return -ENOBUFS; - RB_CLEAR_NODE(&cl->el_node); - err = tcf_block_get(&cl->block, &cl->filter_list, sch, extack); if (err) { kfree(cl); @@ -1580,7 +1573,7 @@ hfsc_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free) sch->qstats.backlog += len; sch->q.qlen++; - if (first && !cl_in_el_or_vttree(cl)) { + if (first && !cl->cl_nactive) { if (cl->cl_flags & HFSC_RSC) init_ed(cl, len); if (cl->cl_flags & HFSC_FSC) -- Gitee From 8c4fd79b1d75714c677f9ca939e5a2377861caea Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:25 +0800 Subject: [PATCH 1229/1421] Revert "arm64: dts: ti: k3-am68-sk: Fix regulator hierarchy" This reverts commit 2b8b73b9f0d903b34cbdd2118e83b761b33944e9. --- arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts b/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts index 2e92f4174b3c..5df5946687b3 100644 --- a/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts +++ b/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts @@ -43,17 +43,6 @@ vusb_main: regulator-vusb-main5v0 { regulator-boot-on; }; - vsys_5v0: regulator-vsys5v0 { - /* Output of LM61460 */ - compatible = "regulator-fixed"; - regulator-name = "vsys_5v0"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - vin-supply = <&vusb_main>; - regulator-always-on; - regulator-boot-on; - }; - vsys_3v3: regulator-vsys3v3 { /* Output of LM5141 */ compatible = "regulator-fixed"; @@ -86,7 +75,7 @@ vdd_sd_dv: regulator-tlv71033 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-boot-on; - vin-supply = <&vsys_5v0>; + vin-supply = <&vsys_3v3>; gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>; states = <1800000 0x0>, <3300000 0x1>; -- Gitee From 01f9419585b1cc6c84861c2ece9f8022f3267ff8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:25 +0800 Subject: [PATCH 1230/1421] Revert "arm64: dts: qcom: sm8550: Add missing properties for cryptobam" This reverts commit f5e5590046b6d5eec8efaecc7fe5d1acf32f0fa3. --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index c14c6f8583d5..bc9a1fca2db3 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -1866,8 +1866,6 @@ cryptobam: dma-controller@1dc4000 { interrupts = ; #dma-cells = <1>; qcom,ee = <0>; - qcom,num-ees = <4>; - num-channels = <20>; qcom,controlled-remotely; iommus = <&apps_smmu 0x480 0x0>, <&apps_smmu 0x481 0x0>; -- Gitee From ecb33c7850e4564a86f3085fc730bbc69670a2c3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:25 +0800 Subject: [PATCH 1231/1421] Revert "arm64: dts: qcom: sm8450: Add missing properties for cryptobam" This reverts commit c636de424bec8dec34b3b588c631021846b4ddd1. --- arch/arm64/boot/dts/qcom/sm8450.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8450.dtsi b/arch/arm64/boot/dts/qcom/sm8450.dtsi index c1ed39cac8c5..3b4d78823008 100644 --- a/arch/arm64/boot/dts/qcom/sm8450.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8450.dtsi @@ -4233,8 +4233,6 @@ cryptobam: dma-controller@1dc4000 { interrupts = ; #dma-cells = <1>; qcom,ee = <0>; - qcom,num-ees = <4>; - num-channels = <16>; qcom,controlled-remotely; iommus = <&apps_smmu 0x584 0x11>, <&apps_smmu 0x588 0x0>, -- Gitee From 480b62c0d07e40340c3f572c336fb215cc248a79 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:26 +0800 Subject: [PATCH 1232/1421] Revert "arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node" This reverts commit b1dfa9bb57e5e2cbada3558c17b24ce4977320b9. --- arch/arm64/boot/dts/qcom/sm8350.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi index 5376c0a00fab..2a4d950ac02b 100644 --- a/arch/arm64/boot/dts/qcom/sm8350.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi @@ -442,7 +442,7 @@ cdsp_secure_heap: memory@80c00000 { no-map; }; - pil_camera_mem: memory@85200000 { + pil_camera_mem: mmeory@85200000 { reg = <0x0 0x85200000 0x0 0x500000>; no-map; }; -- Gitee From 00f5cf9bbb29190a794097fdf2807331e545359a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:26 +0800 Subject: [PATCH 1233/1421] Revert "arm64: dts: qcom: ipq9574: Add missing properties for cryptobam" This reverts commit aa49ff2537b79d3fc4d1ddcf20075b2f1d3322f1. --- arch/arm64/boot/dts/qcom/ipq9574.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/ipq9574.dtsi b/arch/arm64/boot/dts/qcom/ipq9574.dtsi index 82e4fd5eb388..8a72ad4afd03 100644 --- a/arch/arm64/boot/dts/qcom/ipq9574.dtsi +++ b/arch/arm64/boot/dts/qcom/ipq9574.dtsi @@ -231,8 +231,6 @@ cryptobam: dma-controller@704000 { interrupts = ; #dma-cells = <1>; qcom,ee = <1>; - qcom,num-ees = <4>; - num-channels = <16>; qcom,controlled-remotely; }; -- Gitee From ed62ffd87e63c892862f4be01dda89b9dfc17e1d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:26 +0800 Subject: [PATCH 1234/1421] Revert "af_unix: Fix uninit-value in __unix_walk_scc()" This reverts commit 729cf2956e70bcc5cd49cd5f5aae3fb5286cbdd4. --- net/unix/garbage.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 23efb78fe9ef..dfe94a90ece4 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -476,7 +476,6 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde } if (vertex->index == vertex->scc_index) { - struct unix_vertex *v; struct list_head scc; bool scc_dead = true; @@ -487,15 +486,15 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde */ __list_cut_position(&scc, &vertex_stack, &vertex->scc_entry); - list_for_each_entry_reverse(v, &scc, scc_entry) { + list_for_each_entry_reverse(vertex, &scc, scc_entry) { /* Don't restart DFS from this vertex in unix_walk_scc(). */ - list_move_tail(&v->entry, &unix_visited_vertices); + list_move_tail(&vertex->entry, &unix_visited_vertices); /* Mark vertex as off-stack. */ - v->index = unix_vertex_grouped_index; + vertex->index = unix_vertex_grouped_index; if (scc_dead) - scc_dead = unix_vertex_dead(v); + scc_dead = unix_vertex_dead(vertex); } if (scc_dead) -- Gitee From 9a6f5b7cb9a63e0adf8006e0b57a23df58911160 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:26 +0800 Subject: [PATCH 1235/1421] Revert "af_unix: Fix garbage collection of embryos carrying OOB with SCM_RIGHTS" This reverts commit dcbc4f137ad078024e741e4b7e9bdac44af223bd. --- net/unix/garbage.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index dfe94a90ece4..1f8b8cdfcdc8 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -342,18 +342,6 @@ enum unix_recv_queue_lock_class { U_RECVQ_LOCK_EMBRYO, }; -static void unix_collect_queue(struct unix_sock *u, struct sk_buff_head *hitlist) -{ - skb_queue_splice_init(&u->sk.sk_receive_queue, hitlist); - -#if IS_ENABLED(CONFIG_AF_UNIX_OOB) - if (u->oob_skb) { - WARN_ON_ONCE(skb_unref(u->oob_skb)); - u->oob_skb = NULL; - } -#endif -} - static void unix_collect_skb(struct list_head *scc, struct sk_buff_head *hitlist) { struct unix_vertex *vertex; @@ -377,11 +365,18 @@ static void unix_collect_skb(struct list_head *scc, struct sk_buff_head *hitlist /* listener -> embryo order, the inversion never happens. */ spin_lock_nested(&embryo_queue->lock, U_RECVQ_LOCK_EMBRYO); - unix_collect_queue(unix_sk(skb->sk), hitlist); + skb_queue_splice_init(embryo_queue, hitlist); spin_unlock(&embryo_queue->lock); } } else { - unix_collect_queue(u, hitlist); + skb_queue_splice_init(queue, hitlist); + +#if IS_ENABLED(CONFIG_AF_UNIX_OOB) + if (u->oob_skb) { + kfree_skb(u->oob_skb); + u->oob_skb = NULL; + } +#endif } spin_unlock(&queue->lock); -- Gitee From 7bd0f1ba4193b7a7bb8538886f25064369876188 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:27 +0800 Subject: [PATCH 1236/1421] Revert "af_unix: Add dead flag to struct scm_fp_list." This reverts commit 3ed4b26717091709530fdb07aed30e71dabe74b8. --- include/net/scm.h | 1 - net/core/scm.c | 1 - net/unix/garbage.c | 14 ++++---------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/include/net/scm.h b/include/net/scm.h index 059e287745dc..07d66c41cc33 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -32,7 +32,6 @@ struct scm_fp_list { short max; #ifdef CONFIG_UNIX bool inflight; - bool dead; struct list_head vertices; struct unix_edge *edges; #endif diff --git a/net/core/scm.c b/net/core/scm.c index 431bfb3ea392..1e47788379c2 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -91,7 +91,6 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) fpl->user = NULL; #if IS_ENABLED(CONFIG_UNIX) fpl->inflight = false; - fpl->dead = false; fpl->edges = NULL; INIT_LIST_HEAD(&fpl->vertices); #endif diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 1f8b8cdfcdc8..d76450133e4f 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -158,11 +158,13 @@ static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) unix_update_graph(unix_edge_successor(edge)); } +static bool gc_in_progress; + static void unix_del_edge(struct scm_fp_list *fpl, struct unix_edge *edge) { struct unix_vertex *vertex = edge->predecessor->vertex; - if (!fpl->dead) + if (!gc_in_progress) unix_update_graph(unix_edge_successor(edge)); list_del(&edge->vertex_entry); @@ -238,7 +240,7 @@ void unix_del_edges(struct scm_fp_list *fpl) unix_del_edge(fpl, edge); } while (i < fpl->count_unix); - if (!fpl->dead) { + if (!gc_in_progress) { receiver = fpl->edges[0].successor; receiver->scm_stat.nr_unix_fds -= fpl->count_unix; } @@ -557,12 +559,9 @@ static void unix_walk_scc_fast(struct sk_buff_head *hitlist) list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); } -static bool gc_in_progress; - static void __unix_gc(struct work_struct *work) { struct sk_buff_head hitlist; - struct sk_buff *skb; spin_lock(&unix_gc_lock); @@ -580,11 +579,6 @@ static void __unix_gc(struct work_struct *work) spin_unlock(&unix_gc_lock); - skb_queue_walk(&hitlist, skb) { - if (UNIXCB(skb).fp) - UNIXCB(skb).fp->dead = true; - } - __skb_queue_purge(&hitlist); skip_gc: WRITE_ONCE(gc_in_progress, false); -- Gitee From 4ed111847335bc0c4543ed32d1707f39b8d85cee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:27 +0800 Subject: [PATCH 1237/1421] Revert "af_unix: Don't access successor in unix_del_edges() during GC." This reverts commit 2451ce4324a91a27d9bcbc78c208897d434f24d3. --- net/unix/garbage.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index d76450133e4f..95240a59808f 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -158,14 +158,11 @@ static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) unix_update_graph(unix_edge_successor(edge)); } -static bool gc_in_progress; - static void unix_del_edge(struct scm_fp_list *fpl, struct unix_edge *edge) { struct unix_vertex *vertex = edge->predecessor->vertex; - if (!gc_in_progress) - unix_update_graph(unix_edge_successor(edge)); + unix_update_graph(unix_edge_successor(edge)); list_del(&edge->vertex_entry); vertex->out_degree--; @@ -240,10 +237,8 @@ void unix_del_edges(struct scm_fp_list *fpl) unix_del_edge(fpl, edge); } while (i < fpl->count_unix); - if (!gc_in_progress) { - receiver = fpl->edges[0].successor; - receiver->scm_stat.nr_unix_fds -= fpl->count_unix; - } + receiver = fpl->edges[0].successor; + receiver->scm_stat.nr_unix_fds -= fpl->count_unix; WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - fpl->count_unix); out: WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight - fpl->count); @@ -531,8 +526,6 @@ static void unix_walk_scc(struct sk_buff_head *hitlist) static void unix_walk_scc_fast(struct sk_buff_head *hitlist) { - unix_graph_maybe_cyclic = false; - while (!list_empty(&unix_unvisited_vertices)) { struct unix_vertex *vertex; struct list_head scc; @@ -550,8 +543,6 @@ static void unix_walk_scc_fast(struct sk_buff_head *hitlist) if (scc_dead) unix_collect_skb(&scc, hitlist); - else if (!unix_graph_maybe_cyclic) - unix_graph_maybe_cyclic = unix_scc_cyclic(&scc); list_del(&scc); } @@ -559,6 +550,8 @@ static void unix_walk_scc_fast(struct sk_buff_head *hitlist) list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); } +static bool gc_in_progress; + static void __unix_gc(struct work_struct *work) { struct sk_buff_head hitlist; -- Gitee From b14f3928e5097ef858450d8ae1c19ba6fa98c7ac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:27 +0800 Subject: [PATCH 1238/1421] Revert "af_unix: Try not to hold unix_gc_lock during accept()." This reverts commit f3671155ced32a537183797849060729672c1aa8. --- include/net/af_unix.h | 1 - net/unix/af_unix.c | 2 +- net/unix/garbage.c | 20 ++++---------------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index b6eedf7650da..47042de4a2a9 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -67,7 +67,6 @@ struct unix_skb_parms { struct scm_stat { atomic_t nr_fds; - unsigned long nr_unix_fds; }; #define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb)) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 236a2cd2bc93..df70d8a7ee83 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1703,12 +1703,12 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags, } tsk = skb->sk; + unix_update_edges(unix_sk(tsk)); skb_free_datagram(sk, skb); wake_up_interruptible(&unix_sk(sk)->peer_wait); /* attach accepted sock to socket */ unix_state_lock(tsk); - unix_update_edges(unix_sk(tsk)); newsock->state = SS_CONNECTED; unix_sock_inherit_flags(sock, newsock); sock_graft(tsk, newsock); diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 95240a59808f..12a4ec27e0d4 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -209,7 +209,6 @@ void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver) unix_add_edge(fpl, edge); } while (i < fpl->count_unix); - receiver->scm_stat.nr_unix_fds += fpl->count_unix; WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + fpl->count_unix); out: WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight + fpl->count); @@ -223,7 +222,6 @@ void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver) void unix_del_edges(struct scm_fp_list *fpl) { - struct unix_sock *receiver; int i = 0; spin_lock(&unix_gc_lock); @@ -237,8 +235,6 @@ void unix_del_edges(struct scm_fp_list *fpl) unix_del_edge(fpl, edge); } while (i < fpl->count_unix); - receiver = fpl->edges[0].successor; - receiver->scm_stat.nr_unix_fds -= fpl->count_unix; WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - fpl->count_unix); out: WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight - fpl->count); @@ -250,18 +246,10 @@ void unix_del_edges(struct scm_fp_list *fpl) void unix_update_edges(struct unix_sock *receiver) { - /* nr_unix_fds is only updated under unix_state_lock(). - * If it's 0 here, the embryo socket is not part of the - * inflight graph, and GC will not see it, so no lock needed. - */ - if (!receiver->scm_stat.nr_unix_fds) { - receiver->listener = NULL; - } else { - spin_lock(&unix_gc_lock); - unix_update_graph(unix_sk(receiver->listener)->vertex); - receiver->listener = NULL; - spin_unlock(&unix_gc_lock); - } + spin_lock(&unix_gc_lock); + unix_update_graph(unix_sk(receiver->listener)->vertex); + receiver->listener = NULL; + spin_unlock(&unix_gc_lock); } int unix_prepare_fpl(struct scm_fp_list *fpl) -- Gitee From 0116e9e57217f735915ee56cd005e5cbc2e0ee94 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:27 +0800 Subject: [PATCH 1239/1421] Revert "af_unix: Remove lock dance in unix_peek_fds()." This reverts commit 606f584c914e5bf0fe3908c9a2d7c99f7d300c21. --- include/net/af_unix.h | 1 + net/unix/af_unix.c | 42 ++++++++++++++++++++++++++++++++++++++++++ net/unix/garbage.c | 2 +- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 47042de4a2a9..d88ca51a9081 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -17,6 +17,7 @@ static inline struct unix_sock *unix_get_socket(struct file *filp) } #endif +extern spinlock_t unix_gc_lock; extern unsigned int unix_tot_inflight; void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver); void unix_del_edges(struct scm_fp_list *fpl); diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index df70d8a7ee83..eee0bccd7877 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1796,6 +1796,48 @@ static void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb) static void unix_peek_fds(struct scm_cookie *scm, struct sk_buff *skb) { scm->fp = scm_fp_dup(UNIXCB(skb).fp); + + /* + * Garbage collection of unix sockets starts by selecting a set of + * candidate sockets which have reference only from being in flight + * (total_refs == inflight_refs). This condition is checked once during + * the candidate collection phase, and candidates are marked as such, so + * that non-candidates can later be ignored. While inflight_refs is + * protected by unix_gc_lock, total_refs (file count) is not, hence this + * is an instantaneous decision. + * + * Once a candidate, however, the socket must not be reinstalled into a + * file descriptor while the garbage collection is in progress. + * + * If the above conditions are met, then the directed graph of + * candidates (*) does not change while unix_gc_lock is held. + * + * Any operations that changes the file count through file descriptors + * (dup, close, sendmsg) does not change the graph since candidates are + * not installed in fds. + * + * Dequeing a candidate via recvmsg would install it into an fd, but + * that takes unix_gc_lock to decrement the inflight count, so it's + * serialized with garbage collection. + * + * MSG_PEEK is special in that it does not change the inflight count, + * yet does install the socket into an fd. The following lock/unlock + * pair is to ensure serialization with garbage collection. It must be + * done between incrementing the file count and installing the file into + * an fd. + * + * If garbage collection starts after the barrier provided by the + * lock/unlock, then it will see the elevated refcount and not mark this + * as a candidate. If a garbage collection is already in progress + * before the file count was incremented, then the lock/unlock pair will + * ensure that garbage collection is finished before progressing to + * installing the fd. + * + * (*) A -> B where B is on the queue of A or B is on the queue of C + * which is on the queue of listening socket A. + */ + spin_lock(&unix_gc_lock); + spin_unlock(&unix_gc_lock); } static void unix_destruct_scm(struct sk_buff *skb) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 12a4ec27e0d4..89ea71d9297b 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -183,7 +183,7 @@ static void unix_free_vertices(struct scm_fp_list *fpl) } } -static DEFINE_SPINLOCK(unix_gc_lock); +DEFINE_SPINLOCK(unix_gc_lock); unsigned int unix_tot_inflight; void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver) -- Gitee From 1ead67e1fcd815f937e0269472622e35bf4b53e5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:27 +0800 Subject: [PATCH 1240/1421] Revert "af_unix: Replace garbage collection algorithm." This reverts commit d4d922e4080d3a783493448417a00dc4bc96265a. --- include/net/af_unix.h | 8 ++ net/unix/af_unix.c | 12 ++ net/unix/garbage.c | 318 +++++++++++++++++++++++++++++++++--------- 3 files changed, 274 insertions(+), 64 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index d88ca51a9081..bb7f10aa0129 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -19,6 +19,9 @@ static inline struct unix_sock *unix_get_socket(struct file *filp) extern spinlock_t unix_gc_lock; extern unsigned int unix_tot_inflight; + +void unix_inflight(struct user_struct *user, struct file *fp); +void unix_notinflight(struct user_struct *user, struct file *fp); void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver); void unix_del_edges(struct scm_fp_list *fpl); void unix_update_edges(struct unix_sock *receiver); @@ -82,7 +85,12 @@ struct unix_sock { struct sock *peer; struct sock *listener; struct unix_vertex *vertex; + struct list_head link; + unsigned long inflight; spinlock_t lock; + unsigned long gc_flags; +#define UNIX_GC_CANDIDATE 0 +#define UNIX_GC_MAYBE_CYCLE 1 struct socket_wq peer_wq; wait_queue_entry_t peer_wake; struct scm_stat scm_stat; diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index eee0bccd7877..93316e9efc53 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -979,10 +979,12 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern, sk->sk_destruct = unix_sock_destructor; u = unix_sk(sk); u->listener = NULL; + u->inflight = 0; u->vertex = NULL; u->path.dentry = NULL; u->path.mnt = NULL; spin_lock_init(&u->lock); + INIT_LIST_HEAD(&u->link); mutex_init(&u->iolock); /* single task reading lock */ mutex_init(&u->bindlock); /* single task binding lock */ init_waitqueue_head(&u->peer_wait); @@ -1768,6 +1770,8 @@ static inline bool too_many_unix_fds(struct task_struct *p) static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) { + int i; + if (too_many_unix_fds(current)) return -ETOOMANYREFS; @@ -1779,6 +1783,9 @@ static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) if (!UNIXCB(skb).fp) return -ENOMEM; + for (i = scm->fp->count - 1; i >= 0; i--) + unix_inflight(scm->fp->user, scm->fp->fp[i]); + if (unix_prepare_fpl(UNIXCB(skb).fp)) return -ENOMEM; @@ -1787,10 +1794,15 @@ static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) static void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb) { + int i; + scm->fp = UNIXCB(skb).fp; UNIXCB(skb).fp = NULL; unix_destroy_fpl(scm->fp); + + for (i = scm->fp->count - 1; i >= 0; i--) + unix_notinflight(scm->fp->user, scm->fp->fp[i]); } static void unix_peek_fds(struct scm_cookie *scm, struct sk_buff *skb) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 89ea71d9297b..1f53c25fc71b 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -322,52 +322,6 @@ static bool unix_vertex_dead(struct unix_vertex *vertex) return true; } -enum unix_recv_queue_lock_class { - U_RECVQ_LOCK_NORMAL, - U_RECVQ_LOCK_EMBRYO, -}; - -static void unix_collect_skb(struct list_head *scc, struct sk_buff_head *hitlist) -{ - struct unix_vertex *vertex; - - list_for_each_entry_reverse(vertex, scc, scc_entry) { - struct sk_buff_head *queue; - struct unix_edge *edge; - struct unix_sock *u; - - edge = list_first_entry(&vertex->edges, typeof(*edge), vertex_entry); - u = edge->predecessor; - queue = &u->sk.sk_receive_queue; - - spin_lock(&queue->lock); - - if (u->sk.sk_state == TCP_LISTEN) { - struct sk_buff *skb; - - skb_queue_walk(queue, skb) { - struct sk_buff_head *embryo_queue = &skb->sk->sk_receive_queue; - - /* listener -> embryo order, the inversion never happens. */ - spin_lock_nested(&embryo_queue->lock, U_RECVQ_LOCK_EMBRYO); - skb_queue_splice_init(embryo_queue, hitlist); - spin_unlock(&embryo_queue->lock); - } - } else { - skb_queue_splice_init(queue, hitlist); - -#if IS_ENABLED(CONFIG_AF_UNIX_OOB) - if (u->oob_skb) { - kfree_skb(u->oob_skb); - u->oob_skb = NULL; - } -#endif - } - - spin_unlock(&queue->lock); - } -} - static bool unix_scc_cyclic(struct list_head *scc) { struct unix_vertex *vertex; @@ -391,8 +345,7 @@ static bool unix_scc_cyclic(struct list_head *scc) static LIST_HEAD(unix_visited_vertices); static unsigned long unix_vertex_grouped_index = UNIX_VERTEX_INDEX_MARK2; -static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_index, - struct sk_buff_head *hitlist) +static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_index) { LIST_HEAD(vertex_stack); struct unix_edge *edge; @@ -477,9 +430,7 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde scc_dead = unix_vertex_dead(vertex); } - if (scc_dead) - unix_collect_skb(&scc, hitlist); - else if (!unix_graph_maybe_cyclic) + if (!unix_graph_maybe_cyclic) unix_graph_maybe_cyclic = unix_scc_cyclic(&scc); list_del(&scc); @@ -490,7 +441,7 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde goto prev_vertex; } -static void unix_walk_scc(struct sk_buff_head *hitlist) +static void unix_walk_scc(void) { unsigned long last_index = UNIX_VERTEX_INDEX_START; @@ -503,7 +454,7 @@ static void unix_walk_scc(struct sk_buff_head *hitlist) struct unix_vertex *vertex; vertex = list_first_entry(&unix_unvisited_vertices, typeof(*vertex), entry); - __unix_walk_scc(vertex, &last_index, hitlist); + __unix_walk_scc(vertex, &last_index); } list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); @@ -512,7 +463,7 @@ static void unix_walk_scc(struct sk_buff_head *hitlist) unix_graph_grouped = true; } -static void unix_walk_scc_fast(struct sk_buff_head *hitlist) +static void unix_walk_scc_fast(void) { while (!list_empty(&unix_unvisited_vertices)) { struct unix_vertex *vertex; @@ -529,40 +480,279 @@ static void unix_walk_scc_fast(struct sk_buff_head *hitlist) scc_dead = unix_vertex_dead(vertex); } - if (scc_dead) - unix_collect_skb(&scc, hitlist); - list_del(&scc); } list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); } +static LIST_HEAD(gc_candidates); +static LIST_HEAD(gc_inflight_list); + +/* Keep the number of times in flight count for the file + * descriptor if it is for an AF_UNIX socket. + */ +void unix_inflight(struct user_struct *user, struct file *filp) +{ + struct unix_sock *u = unix_get_socket(filp); + + spin_lock(&unix_gc_lock); + + if (u) { + if (!u->inflight) { + WARN_ON_ONCE(!list_empty(&u->link)); + list_add_tail(&u->link, &gc_inflight_list); + } else { + WARN_ON_ONCE(list_empty(&u->link)); + } + u->inflight++; + } + + spin_unlock(&unix_gc_lock); +} + +void unix_notinflight(struct user_struct *user, struct file *filp) +{ + struct unix_sock *u = unix_get_socket(filp); + + spin_lock(&unix_gc_lock); + + if (u) { + WARN_ON_ONCE(!u->inflight); + WARN_ON_ONCE(list_empty(&u->link)); + + u->inflight--; + if (!u->inflight) + list_del_init(&u->link); + } + + spin_unlock(&unix_gc_lock); +} + +static void scan_inflight(struct sock *x, void (*func)(struct unix_sock *), + struct sk_buff_head *hitlist) +{ + struct sk_buff *skb; + struct sk_buff *next; + + spin_lock(&x->sk_receive_queue.lock); + skb_queue_walk_safe(&x->sk_receive_queue, skb, next) { + /* Do we have file descriptors ? */ + if (UNIXCB(skb).fp) { + bool hit = false; + /* Process the descriptors of this socket */ + int nfd = UNIXCB(skb).fp->count; + struct file **fp = UNIXCB(skb).fp->fp; + + while (nfd--) { + /* Get the socket the fd matches if it indeed does so */ + struct unix_sock *u = unix_get_socket(*fp++); + + /* Ignore non-candidates, they could have been added + * to the queues after starting the garbage collection + */ + if (u && test_bit(UNIX_GC_CANDIDATE, &u->gc_flags)) { + hit = true; + + func(u); + } + } + if (hit && hitlist != NULL) { + __skb_unlink(skb, &x->sk_receive_queue); + __skb_queue_tail(hitlist, skb); + } + } + } + spin_unlock(&x->sk_receive_queue.lock); +} + +static void scan_children(struct sock *x, void (*func)(struct unix_sock *), + struct sk_buff_head *hitlist) +{ + if (x->sk_state != TCP_LISTEN) { + scan_inflight(x, func, hitlist); + } else { + struct sk_buff *skb; + struct sk_buff *next; + struct unix_sock *u; + LIST_HEAD(embryos); + + /* For a listening socket collect the queued embryos + * and perform a scan on them as well. + */ + spin_lock(&x->sk_receive_queue.lock); + skb_queue_walk_safe(&x->sk_receive_queue, skb, next) { + u = unix_sk(skb->sk); + + /* An embryo cannot be in-flight, so it's safe + * to use the list link. + */ + WARN_ON_ONCE(!list_empty(&u->link)); + list_add_tail(&u->link, &embryos); + } + spin_unlock(&x->sk_receive_queue.lock); + + while (!list_empty(&embryos)) { + u = list_entry(embryos.next, struct unix_sock, link); + scan_inflight(&u->sk, func, hitlist); + list_del_init(&u->link); + } + } +} + +static void dec_inflight(struct unix_sock *usk) +{ + usk->inflight--; +} + +static void inc_inflight(struct unix_sock *usk) +{ + usk->inflight++; +} + +static void inc_inflight_move_tail(struct unix_sock *u) +{ + u->inflight++; + + /* If this still might be part of a cycle, move it to the end + * of the list, so that it's checked even if it was already + * passed over + */ + if (test_bit(UNIX_GC_MAYBE_CYCLE, &u->gc_flags)) + list_move_tail(&u->link, &gc_candidates); +} + static bool gc_in_progress; static void __unix_gc(struct work_struct *work) { struct sk_buff_head hitlist; + struct unix_sock *u, *next; + LIST_HEAD(not_cycle_list); + struct list_head cursor; spin_lock(&unix_gc_lock); - if (!unix_graph_maybe_cyclic) { - spin_unlock(&unix_gc_lock); + if (!unix_graph_maybe_cyclic) goto skip_gc; - } - - __skb_queue_head_init(&hitlist); if (unix_graph_grouped) - unix_walk_scc_fast(&hitlist); + unix_walk_scc_fast(); else - unix_walk_scc(&hitlist); + unix_walk_scc(); + + /* First, select candidates for garbage collection. Only + * in-flight sockets are considered, and from those only ones + * which don't have any external reference. + * + * Holding unix_gc_lock will protect these candidates from + * being detached, and hence from gaining an external + * reference. Since there are no possible receivers, all + * buffers currently on the candidates' queues stay there + * during the garbage collection. + * + * We also know that no new candidate can be added onto the + * receive queues. Other, non candidate sockets _can_ be + * added to queue, so we must make sure only to touch + * candidates. + * + * Embryos, though never candidates themselves, affect which + * candidates are reachable by the garbage collector. Before + * being added to a listener's queue, an embryo may already + * receive data carrying SCM_RIGHTS, potentially making the + * passed socket a candidate that is not yet reachable by the + * collector. It becomes reachable once the embryo is + * enqueued. Therefore, we must ensure that no SCM-laden + * embryo appears in a (candidate) listener's queue between + * consecutive scan_children() calls. + */ + list_for_each_entry_safe(u, next, &gc_inflight_list, link) { + struct sock *sk = &u->sk; + long total_refs; + + total_refs = file_count(sk->sk_socket->file); + + WARN_ON_ONCE(!u->inflight); + WARN_ON_ONCE(total_refs < u->inflight); + if (total_refs == u->inflight) { + list_move_tail(&u->link, &gc_candidates); + __set_bit(UNIX_GC_CANDIDATE, &u->gc_flags); + __set_bit(UNIX_GC_MAYBE_CYCLE, &u->gc_flags); + + if (sk->sk_state == TCP_LISTEN) { + unix_state_lock_nested(sk, U_LOCK_GC_LISTENER); + unix_state_unlock(sk); + } + } + } + + /* Now remove all internal in-flight reference to children of + * the candidates. + */ + list_for_each_entry(u, &gc_candidates, link) + scan_children(&u->sk, dec_inflight, NULL); + + /* Restore the references for children of all candidates, + * which have remaining references. Do this recursively, so + * only those remain, which form cyclic references. + * + * Use a "cursor" link, to make the list traversal safe, even + * though elements might be moved about. + */ + list_add(&cursor, &gc_candidates); + while (cursor.next != &gc_candidates) { + u = list_entry(cursor.next, struct unix_sock, link); + + /* Move cursor to after the current position. */ + list_move(&cursor, &u->link); + + if (u->inflight) { + list_move_tail(&u->link, ¬_cycle_list); + __clear_bit(UNIX_GC_MAYBE_CYCLE, &u->gc_flags); + scan_children(&u->sk, inc_inflight_move_tail, NULL); + } + } + list_del(&cursor); + + /* Now gc_candidates contains only garbage. Restore original + * inflight counters for these as well, and remove the skbuffs + * which are creating the cycle(s). + */ + skb_queue_head_init(&hitlist); + list_for_each_entry(u, &gc_candidates, link) { + scan_children(&u->sk, inc_inflight, &hitlist); + +#if IS_ENABLED(CONFIG_AF_UNIX_OOB) + if (u->oob_skb) { + kfree_skb(u->oob_skb); + u->oob_skb = NULL; + } +#endif + } + + /* not_cycle_list contains those sockets which do not make up a + * cycle. Restore these to the inflight list. + */ + while (!list_empty(¬_cycle_list)) { + u = list_entry(not_cycle_list.next, struct unix_sock, link); + __clear_bit(UNIX_GC_CANDIDATE, &u->gc_flags); + list_move_tail(&u->link, &gc_inflight_list); + } spin_unlock(&unix_gc_lock); + /* Here we are. Hitlist is filled. Die. */ __skb_queue_purge(&hitlist); + + spin_lock(&unix_gc_lock); + + /* All candidates should have been detached by now. */ + WARN_ON_ONCE(!list_empty(&gc_candidates)); skip_gc: + /* Paired with READ_ONCE() in wait_for_unix_gc(). */ WRITE_ONCE(gc_in_progress, false); + + spin_unlock(&unix_gc_lock); } static DECLARE_WORK(unix_gc_work, __unix_gc); -- Gitee From 180e230f3ea3c1c583bc639e49e83a809cc8087d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:28 +0800 Subject: [PATCH 1241/1421] Revert "af_unix: Detect dead SCC." This reverts commit 70e8d1760573c0e05b797b380ca1a698306a99a7. --- net/unix/garbage.c | 44 +------------------------------------------- 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 1f53c25fc71b..2e66b57f3f0f 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -289,39 +289,6 @@ void unix_destroy_fpl(struct scm_fp_list *fpl) unix_free_vertices(fpl); } -static bool unix_vertex_dead(struct unix_vertex *vertex) -{ - struct unix_edge *edge; - struct unix_sock *u; - long total_ref; - - list_for_each_entry(edge, &vertex->edges, vertex_entry) { - struct unix_vertex *next_vertex = unix_edge_successor(edge); - - /* The vertex's fd can be received by a non-inflight socket. */ - if (!next_vertex) - return false; - - /* The vertex's fd can be received by an inflight socket in - * another SCC. - */ - if (next_vertex->scc_index != vertex->scc_index) - return false; - } - - /* No receiver exists out of the same SCC. */ - - edge = list_first_entry(&vertex->edges, typeof(*edge), vertex_entry); - u = edge->predecessor; - total_ref = file_count(u->sk.sk_socket->file); - - /* If not close()d, total_ref > out_degree. */ - if (total_ref != vertex->out_degree) - return false; - - return true; -} - static bool unix_scc_cyclic(struct list_head *scc) { struct unix_vertex *vertex; @@ -410,7 +377,6 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde if (vertex->index == vertex->scc_index) { struct list_head scc; - bool scc_dead = true; /* SCC finalised. * @@ -425,9 +391,6 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde /* Mark vertex as off-stack. */ vertex->index = unix_vertex_grouped_index; - - if (scc_dead) - scc_dead = unix_vertex_dead(vertex); } if (!unix_graph_maybe_cyclic) @@ -468,18 +431,13 @@ static void unix_walk_scc_fast(void) while (!list_empty(&unix_unvisited_vertices)) { struct unix_vertex *vertex; struct list_head scc; - bool scc_dead = true; vertex = list_first_entry(&unix_unvisited_vertices, typeof(*vertex), entry); list_add(&scc, &vertex->scc_entry); - list_for_each_entry_reverse(vertex, &scc, scc_entry) { + list_for_each_entry_reverse(vertex, &scc, scc_entry) list_move_tail(&vertex->entry, &unix_visited_vertices); - if (scc_dead) - scc_dead = unix_vertex_dead(vertex); - } - list_del(&scc); } -- Gitee From 8d51e011d4317189a64e1f4405adfe6b13e6d56b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:28 +0800 Subject: [PATCH 1242/1421] Revert "af_unix: Assign a unique index to SCC." This reverts commit 209d3c0ff9f9d79f4532438d8acd6722a9765def. --- include/net/af_unix.h | 2 +- net/unix/garbage.c | 29 ++++++++++++++--------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index bb7f10aa0129..053f67adb9f1 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -36,7 +36,7 @@ struct unix_vertex { struct list_head scc_entry; unsigned long out_degree; unsigned long index; - unsigned long scc_index; + unsigned long lowlink; }; struct unix_edge { diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 2e66b57f3f0f..d25841ab2de4 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -312,8 +312,9 @@ static bool unix_scc_cyclic(struct list_head *scc) static LIST_HEAD(unix_visited_vertices); static unsigned long unix_vertex_grouped_index = UNIX_VERTEX_INDEX_MARK2; -static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_index) +static void __unix_walk_scc(struct unix_vertex *vertex) { + unsigned long index = UNIX_VERTEX_INDEX_START; LIST_HEAD(vertex_stack); struct unix_edge *edge; LIST_HEAD(edge_stack); @@ -325,9 +326,9 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde */ list_add(&vertex->scc_entry, &vertex_stack); - vertex->index = *last_index; - vertex->scc_index = *last_index; - (*last_index)++; + vertex->index = index; + vertex->lowlink = index; + index++; /* Explore neighbour vertices (receivers of the current vertex's fd). */ list_for_each_entry(edge, &vertex->edges, vertex_entry) { @@ -357,30 +358,30 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde next_vertex = vertex; vertex = edge->predecessor->vertex; - /* If the successor has a smaller scc_index, two vertices - * are in the same SCC, so propagate the smaller scc_index + /* If the successor has a smaller lowlink, two vertices + * are in the same SCC, so propagate the smaller lowlink * to skip SCC finalisation. */ - vertex->scc_index = min(vertex->scc_index, next_vertex->scc_index); + vertex->lowlink = min(vertex->lowlink, next_vertex->lowlink); } else if (next_vertex->index != unix_vertex_grouped_index) { /* Loop detected by a back/cross edge. * - * The successor is on vertex_stack, so two vertices are in - * the same SCC. If the successor has a smaller *scc_index*, + * The successor is on vertex_stack, so two vertices are + * in the same SCC. If the successor has a smaller index, * propagate it to skip SCC finalisation. */ - vertex->scc_index = min(vertex->scc_index, next_vertex->scc_index); + vertex->lowlink = min(vertex->lowlink, next_vertex->index); } else { /* The successor was already grouped as another SCC */ } } - if (vertex->index == vertex->scc_index) { + if (vertex->index == vertex->lowlink) { struct list_head scc; /* SCC finalised. * - * If the scc_index was not updated, all the vertices above on + * If the lowlink was not updated, all the vertices above on * vertex_stack are in the same SCC. Group them using scc_entry. */ __list_cut_position(&scc, &vertex_stack, &vertex->scc_entry); @@ -406,8 +407,6 @@ static void __unix_walk_scc(struct unix_vertex *vertex, unsigned long *last_inde static void unix_walk_scc(void) { - unsigned long last_index = UNIX_VERTEX_INDEX_START; - unix_graph_maybe_cyclic = false; /* Visit every vertex exactly once. @@ -417,7 +416,7 @@ static void unix_walk_scc(void) struct unix_vertex *vertex; vertex = list_first_entry(&unix_unvisited_vertices, typeof(*vertex), entry); - __unix_walk_scc(vertex, &last_index); + __unix_walk_scc(vertex); } list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); -- Gitee From e44f8059b4e4eb66521cf7586acefc00d93dbd02 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:28 +0800 Subject: [PATCH 1243/1421] Revert "af_unix: Avoid Tarjan's algorithm if unnecessary." This reverts commit ea24424041babb051cfa7fadf52f503e12c184d0. --- net/unix/garbage.c | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index d25841ab2de4..8f0dc39bb72f 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -113,7 +113,6 @@ static struct unix_vertex *unix_edge_successor(struct unix_edge *edge) } static bool unix_graph_maybe_cyclic; -static bool unix_graph_grouped; static void unix_update_graph(struct unix_vertex *vertex) { @@ -124,7 +123,6 @@ static void unix_update_graph(struct unix_vertex *vertex) return; unix_graph_maybe_cyclic = true; - unix_graph_grouped = false; } static LIST_HEAD(unix_unvisited_vertices); @@ -146,7 +144,6 @@ static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) vertex->index = unix_vertex_unvisited_index; vertex->out_degree = 0; INIT_LIST_HEAD(&vertex->edges); - INIT_LIST_HEAD(&vertex->scc_entry); list_move_tail(&vertex->entry, &unix_unvisited_vertices); edge->predecessor->vertex = vertex; @@ -421,26 +418,6 @@ static void unix_walk_scc(void) list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); swap(unix_vertex_unvisited_index, unix_vertex_grouped_index); - - unix_graph_grouped = true; -} - -static void unix_walk_scc_fast(void) -{ - while (!list_empty(&unix_unvisited_vertices)) { - struct unix_vertex *vertex; - struct list_head scc; - - vertex = list_first_entry(&unix_unvisited_vertices, typeof(*vertex), entry); - list_add(&scc, &vertex->scc_entry); - - list_for_each_entry_reverse(vertex, &scc, scc_entry) - list_move_tail(&vertex->entry, &unix_visited_vertices); - - list_del(&scc); - } - - list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); } static LIST_HEAD(gc_candidates); @@ -593,10 +570,7 @@ static void __unix_gc(struct work_struct *work) if (!unix_graph_maybe_cyclic) goto skip_gc; - if (unix_graph_grouped) - unix_walk_scc_fast(); - else - unix_walk_scc(); + unix_walk_scc(); /* First, select candidates for garbage collection. Only * in-flight sockets are considered, and from those only ones -- Gitee From 9040257b24639b3ddc8cb6e4383d863ad4eb74a0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:28 +0800 Subject: [PATCH 1244/1421] Revert "af_unix: Skip GC if no cycle exists." This reverts commit 6c933ad0f5fd385c5a7f49cdda47d0cfd0817fa0. --- net/unix/garbage.c | 48 +--------------------------------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 8f0dc39bb72f..feae6c17b291 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -112,19 +112,6 @@ static struct unix_vertex *unix_edge_successor(struct unix_edge *edge) return edge->successor->vertex; } -static bool unix_graph_maybe_cyclic; - -static void unix_update_graph(struct unix_vertex *vertex) -{ - /* If the receiver socket is not inflight, no cyclic - * reference could be formed. - */ - if (!vertex) - return; - - unix_graph_maybe_cyclic = true; -} - static LIST_HEAD(unix_unvisited_vertices); enum unix_vertex_index { @@ -151,16 +138,12 @@ static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) vertex->out_degree++; list_add_tail(&edge->vertex_entry, &vertex->edges); - - unix_update_graph(unix_edge_successor(edge)); } static void unix_del_edge(struct scm_fp_list *fpl, struct unix_edge *edge) { struct unix_vertex *vertex = edge->predecessor->vertex; - unix_update_graph(unix_edge_successor(edge)); - list_del(&edge->vertex_entry); vertex->out_degree--; @@ -244,7 +227,6 @@ void unix_del_edges(struct scm_fp_list *fpl) void unix_update_edges(struct unix_sock *receiver) { spin_lock(&unix_gc_lock); - unix_update_graph(unix_sk(receiver->listener)->vertex); receiver->listener = NULL; spin_unlock(&unix_gc_lock); } @@ -286,26 +268,6 @@ void unix_destroy_fpl(struct scm_fp_list *fpl) unix_free_vertices(fpl); } -static bool unix_scc_cyclic(struct list_head *scc) -{ - struct unix_vertex *vertex; - struct unix_edge *edge; - - /* SCC containing multiple vertices ? */ - if (!list_is_singular(scc)) - return true; - - vertex = list_first_entry(scc, typeof(*vertex), scc_entry); - - /* Self-reference or a embryo-listener circle ? */ - list_for_each_entry(edge, &vertex->edges, vertex_entry) { - if (unix_edge_successor(edge) == vertex) - return true; - } - - return false; -} - static LIST_HEAD(unix_visited_vertices); static unsigned long unix_vertex_grouped_index = UNIX_VERTEX_INDEX_MARK2; @@ -391,9 +353,6 @@ static void __unix_walk_scc(struct unix_vertex *vertex) vertex->index = unix_vertex_grouped_index; } - if (!unix_graph_maybe_cyclic) - unix_graph_maybe_cyclic = unix_scc_cyclic(&scc); - list_del(&scc); } @@ -404,8 +363,6 @@ static void __unix_walk_scc(struct unix_vertex *vertex) static void unix_walk_scc(void) { - unix_graph_maybe_cyclic = false; - /* Visit every vertex exactly once. * __unix_walk_scc() moves visited vertices to unix_visited_vertices. */ @@ -567,9 +524,6 @@ static void __unix_gc(struct work_struct *work) spin_lock(&unix_gc_lock); - if (!unix_graph_maybe_cyclic) - goto skip_gc; - unix_walk_scc(); /* First, select candidates for garbage collection. Only @@ -679,7 +633,7 @@ static void __unix_gc(struct work_struct *work) /* All candidates should have been detached by now. */ WARN_ON_ONCE(!list_empty(&gc_candidates)); -skip_gc: + /* Paired with READ_ONCE() in wait_for_unix_gc(). */ WRITE_ONCE(gc_in_progress, false); -- Gitee From 2a04b70e1d38ce192e2ac5b4ea4d7cc62078b63f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:28 +0800 Subject: [PATCH 1245/1421] Revert "af_unix: Save O(n) setup of Tarjan's algo." This reverts commit 922c6a2eed59f9c51b9f3712af454c2054bf021e. --- include/net/af_unix.h | 1 + net/unix/garbage.c | 26 +++++++++++--------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 053f67adb9f1..9d92dd608fc4 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -37,6 +37,7 @@ struct unix_vertex { unsigned long out_degree; unsigned long index; unsigned long lowlink; + bool on_stack; }; struct unix_edge { diff --git a/net/unix/garbage.c b/net/unix/garbage.c index feae6c17b291..6ff7e0b5c544 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -115,20 +115,16 @@ static struct unix_vertex *unix_edge_successor(struct unix_edge *edge) static LIST_HEAD(unix_unvisited_vertices); enum unix_vertex_index { - UNIX_VERTEX_INDEX_MARK1, - UNIX_VERTEX_INDEX_MARK2, + UNIX_VERTEX_INDEX_UNVISITED, UNIX_VERTEX_INDEX_START, }; -static unsigned long unix_vertex_unvisited_index = UNIX_VERTEX_INDEX_MARK1; - static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) { struct unix_vertex *vertex = edge->predecessor->vertex; if (!vertex) { vertex = list_first_entry(&fpl->vertices, typeof(*vertex), entry); - vertex->index = unix_vertex_unvisited_index; vertex->out_degree = 0; INIT_LIST_HEAD(&vertex->edges); @@ -269,7 +265,6 @@ void unix_destroy_fpl(struct scm_fp_list *fpl) } static LIST_HEAD(unix_visited_vertices); -static unsigned long unix_vertex_grouped_index = UNIX_VERTEX_INDEX_MARK2; static void __unix_walk_scc(struct unix_vertex *vertex) { @@ -279,10 +274,10 @@ static void __unix_walk_scc(struct unix_vertex *vertex) LIST_HEAD(edge_stack); next_vertex: - /* Push vertex to vertex_stack and mark it as on-stack - * (index >= UNIX_VERTEX_INDEX_START). + /* Push vertex to vertex_stack. * The vertex will be popped when finalising SCC later. */ + vertex->on_stack = true; list_add(&vertex->scc_entry, &vertex_stack); vertex->index = index; @@ -296,7 +291,7 @@ static void __unix_walk_scc(struct unix_vertex *vertex) if (!next_vertex) continue; - if (next_vertex->index == unix_vertex_unvisited_index) { + if (next_vertex->index == UNIX_VERTEX_INDEX_UNVISITED) { /* Iterative deepening depth first search * * 1. Push a forward edge to edge_stack and set @@ -322,7 +317,7 @@ static void __unix_walk_scc(struct unix_vertex *vertex) * to skip SCC finalisation. */ vertex->lowlink = min(vertex->lowlink, next_vertex->lowlink); - } else if (next_vertex->index != unix_vertex_grouped_index) { + } else if (next_vertex->on_stack) { /* Loop detected by a back/cross edge. * * The successor is on vertex_stack, so two vertices are @@ -349,8 +344,7 @@ static void __unix_walk_scc(struct unix_vertex *vertex) /* Don't restart DFS from this vertex in unix_walk_scc(). */ list_move_tail(&vertex->entry, &unix_visited_vertices); - /* Mark vertex as off-stack. */ - vertex->index = unix_vertex_grouped_index; + vertex->on_stack = false; } list_del(&scc); @@ -363,18 +357,20 @@ static void __unix_walk_scc(struct unix_vertex *vertex) static void unix_walk_scc(void) { + struct unix_vertex *vertex; + + list_for_each_entry(vertex, &unix_unvisited_vertices, entry) + vertex->index = UNIX_VERTEX_INDEX_UNVISITED; + /* Visit every vertex exactly once. * __unix_walk_scc() moves visited vertices to unix_visited_vertices. */ while (!list_empty(&unix_unvisited_vertices)) { - struct unix_vertex *vertex; - vertex = list_first_entry(&unix_unvisited_vertices, typeof(*vertex), entry); __unix_walk_scc(vertex); } list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); - swap(unix_vertex_unvisited_index, unix_vertex_grouped_index); } static LIST_HEAD(gc_candidates); -- Gitee From c6c8b1172d7858403d1e695cb327c24515c5b3bd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:29 +0800 Subject: [PATCH 1246/1421] Revert "af_unix: Fix up unix_edge.successor for embryo socket." This reverts commit d0d8f2304832cef80dce780f9a2f456f3d418c98. --- include/net/af_unix.h | 1 - net/unix/af_unix.c | 2 +- net/unix/garbage.c | 20 +------------------- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 9d92dd608fc4..d6b755b254a1 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -24,7 +24,6 @@ void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, struct file *fp); void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver); void unix_del_edges(struct scm_fp_list *fpl); -void unix_update_edges(struct unix_sock *receiver); int unix_prepare_fpl(struct scm_fp_list *fpl); void unix_destroy_fpl(struct scm_fp_list *fpl); void unix_gc(void); diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 93316e9efc53..4d4c035ba626 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1705,7 +1705,7 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags, } tsk = skb->sk; - unix_update_edges(unix_sk(tsk)); + unix_sk(tsk)->listener = NULL; skb_free_datagram(sk, skb); wake_up_interruptible(&unix_sk(sk)->peer_wait); diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 6ff7e0b5c544..cdeff548e130 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -101,17 +101,6 @@ struct unix_sock *unix_get_socket(struct file *filp) return NULL; } -static struct unix_vertex *unix_edge_successor(struct unix_edge *edge) -{ - /* If an embryo socket has a fd, - * the listener indirectly holds the fd's refcnt. - */ - if (edge->successor->listener) - return unix_sk(edge->successor->listener)->vertex; - - return edge->successor->vertex; -} - static LIST_HEAD(unix_unvisited_vertices); enum unix_vertex_index { @@ -220,13 +209,6 @@ void unix_del_edges(struct scm_fp_list *fpl) fpl->inflight = false; } -void unix_update_edges(struct unix_sock *receiver) -{ - spin_lock(&unix_gc_lock); - receiver->listener = NULL; - spin_unlock(&unix_gc_lock); -} - int unix_prepare_fpl(struct scm_fp_list *fpl) { struct unix_vertex *vertex; @@ -286,7 +268,7 @@ static void __unix_walk_scc(struct unix_vertex *vertex) /* Explore neighbour vertices (receivers of the current vertex's fd). */ list_for_each_entry(edge, &vertex->edges, vertex_entry) { - struct unix_vertex *next_vertex = unix_edge_successor(edge); + struct unix_vertex *next_vertex = edge->successor->vertex; if (!next_vertex) continue; -- Gitee From 5b45c69a508887849e29509d5228718a5703ed62 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:29 +0800 Subject: [PATCH 1247/1421] Revert "af_unix: Save listener for embryo socket." This reverts commit 6a56f57d71b6ab4d59e45db693fa09cdd88fb628. --- include/net/af_unix.h | 1 - net/unix/af_unix.c | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index d6b755b254a1..37171943fb54 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -83,7 +83,6 @@ struct unix_sock { struct path path; struct mutex iolock, bindlock; struct sock *peer; - struct sock *listener; struct unix_vertex *vertex; struct list_head link; unsigned long inflight; diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 4d4c035ba626..e54f54f9d994 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -978,7 +978,6 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern, sk->sk_max_ack_backlog = READ_ONCE(net->unx.sysctl_max_dgram_qlen); sk->sk_destruct = unix_sock_destructor; u = unix_sk(sk); - u->listener = NULL; u->inflight = 0; u->vertex = NULL; u->path.dentry = NULL; @@ -1583,7 +1582,6 @@ static int unix_stream_connect(struct socket *sock, struct sockaddr *uaddr, newsk->sk_type = sk->sk_type; init_peercred(newsk); newu = unix_sk(newsk); - newu->listener = other; RCU_INIT_POINTER(newsk->sk_wq, &newu->peer_wq); otheru = unix_sk(other); @@ -1679,8 +1677,8 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags, bool kern) { struct sock *sk = sock->sk; - struct sk_buff *skb; struct sock *tsk; + struct sk_buff *skb; int err; err = -EOPNOTSUPP; @@ -1705,7 +1703,6 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags, } tsk = skb->sk; - unix_sk(tsk)->listener = NULL; skb_free_datagram(sk, skb); wake_up_interruptible(&unix_sk(sk)->peer_wait); -- Gitee From 2d3b86fc25b87142361ec37b4ae1a2fa03c17ee5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:29 +0800 Subject: [PATCH 1248/1421] Revert "af_unix: Detect Strongly Connected Components." This reverts commit 57fbbb472eecd5541d88e0664075d06a6bf4f201. --- include/net/af_unix.h | 3 --- net/unix/garbage.c | 46 ++----------------------------------------- 2 files changed, 2 insertions(+), 47 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 37171943fb54..9198735a6acb 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -32,11 +32,8 @@ void wait_for_unix_gc(struct scm_fp_list *fpl); struct unix_vertex { struct list_head edges; struct list_head entry; - struct list_head scc_entry; unsigned long out_degree; unsigned long index; - unsigned long lowlink; - bool on_stack; }; struct unix_edge { diff --git a/net/unix/garbage.c b/net/unix/garbage.c index cdeff548e130..295dd1a7b8e0 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -251,19 +251,11 @@ static LIST_HEAD(unix_visited_vertices); static void __unix_walk_scc(struct unix_vertex *vertex) { unsigned long index = UNIX_VERTEX_INDEX_START; - LIST_HEAD(vertex_stack); struct unix_edge *edge; LIST_HEAD(edge_stack); next_vertex: - /* Push vertex to vertex_stack. - * The vertex will be popped when finalising SCC later. - */ - vertex->on_stack = true; - list_add(&vertex->scc_entry, &vertex_stack); - vertex->index = index; - vertex->lowlink = index; index++; /* Explore neighbour vertices (receivers of the current vertex's fd). */ @@ -291,46 +283,12 @@ static void __unix_walk_scc(struct unix_vertex *vertex) edge = list_first_entry(&edge_stack, typeof(*edge), stack_entry); list_del_init(&edge->stack_entry); - next_vertex = vertex; vertex = edge->predecessor->vertex; - - /* If the successor has a smaller lowlink, two vertices - * are in the same SCC, so propagate the smaller lowlink - * to skip SCC finalisation. - */ - vertex->lowlink = min(vertex->lowlink, next_vertex->lowlink); - } else if (next_vertex->on_stack) { - /* Loop detected by a back/cross edge. - * - * The successor is on vertex_stack, so two vertices are - * in the same SCC. If the successor has a smaller index, - * propagate it to skip SCC finalisation. - */ - vertex->lowlink = min(vertex->lowlink, next_vertex->index); - } else { - /* The successor was already grouped as another SCC */ } } - if (vertex->index == vertex->lowlink) { - struct list_head scc; - - /* SCC finalised. - * - * If the lowlink was not updated, all the vertices above on - * vertex_stack are in the same SCC. Group them using scc_entry. - */ - __list_cut_position(&scc, &vertex_stack, &vertex->scc_entry); - - list_for_each_entry_reverse(vertex, &scc, scc_entry) { - /* Don't restart DFS from this vertex in unix_walk_scc(). */ - list_move_tail(&vertex->entry, &unix_visited_vertices); - - vertex->on_stack = false; - } - - list_del(&scc); - } + /* Don't restart DFS from this vertex in unix_walk_scc(). */ + list_move_tail(&vertex->entry, &unix_visited_vertices); /* Need backtracking ? */ if (!list_empty(&edge_stack)) -- Gitee From a9300310df0bb98a5a12c824e4f073aea0026c1e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:29 +0800 Subject: [PATCH 1249/1421] Revert "af_unix: Iterate all vertices by DFS." This reverts commit d48d2d5b52f5deaf0e0287031ef059d27f7e6020. --- include/net/af_unix.h | 2 -- net/unix/garbage.c | 74 ------------------------------------------- 2 files changed, 76 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 9198735a6acb..affcb990f95e 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -33,14 +33,12 @@ struct unix_vertex { struct list_head edges; struct list_head entry; unsigned long out_degree; - unsigned long index; }; struct unix_edge { struct unix_sock *predecessor; struct unix_sock *successor; struct list_head vertex_entry; - struct list_head stack_entry; }; struct sock *unix_peer_get(struct sock *sk); diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 295dd1a7b8e0..f7041fc23000 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -103,11 +103,6 @@ struct unix_sock *unix_get_socket(struct file *filp) static LIST_HEAD(unix_unvisited_vertices); -enum unix_vertex_index { - UNIX_VERTEX_INDEX_UNVISITED, - UNIX_VERTEX_INDEX_START, -}; - static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) { struct unix_vertex *vertex = edge->predecessor->vertex; @@ -246,73 +241,6 @@ void unix_destroy_fpl(struct scm_fp_list *fpl) unix_free_vertices(fpl); } -static LIST_HEAD(unix_visited_vertices); - -static void __unix_walk_scc(struct unix_vertex *vertex) -{ - unsigned long index = UNIX_VERTEX_INDEX_START; - struct unix_edge *edge; - LIST_HEAD(edge_stack); - -next_vertex: - vertex->index = index; - index++; - - /* Explore neighbour vertices (receivers of the current vertex's fd). */ - list_for_each_entry(edge, &vertex->edges, vertex_entry) { - struct unix_vertex *next_vertex = edge->successor->vertex; - - if (!next_vertex) - continue; - - if (next_vertex->index == UNIX_VERTEX_INDEX_UNVISITED) { - /* Iterative deepening depth first search - * - * 1. Push a forward edge to edge_stack and set - * the successor to vertex for the next iteration. - */ - list_add(&edge->stack_entry, &edge_stack); - - vertex = next_vertex; - goto next_vertex; - - /* 2. Pop the edge directed to the current vertex - * and restore the ancestor for backtracking. - */ -prev_vertex: - edge = list_first_entry(&edge_stack, typeof(*edge), stack_entry); - list_del_init(&edge->stack_entry); - - vertex = edge->predecessor->vertex; - } - } - - /* Don't restart DFS from this vertex in unix_walk_scc(). */ - list_move_tail(&vertex->entry, &unix_visited_vertices); - - /* Need backtracking ? */ - if (!list_empty(&edge_stack)) - goto prev_vertex; -} - -static void unix_walk_scc(void) -{ - struct unix_vertex *vertex; - - list_for_each_entry(vertex, &unix_unvisited_vertices, entry) - vertex->index = UNIX_VERTEX_INDEX_UNVISITED; - - /* Visit every vertex exactly once. - * __unix_walk_scc() moves visited vertices to unix_visited_vertices. - */ - while (!list_empty(&unix_unvisited_vertices)) { - vertex = list_first_entry(&unix_unvisited_vertices, typeof(*vertex), entry); - __unix_walk_scc(vertex); - } - - list_replace_init(&unix_visited_vertices, &unix_unvisited_vertices); -} - static LIST_HEAD(gc_candidates); static LIST_HEAD(gc_inflight_list); @@ -460,8 +388,6 @@ static void __unix_gc(struct work_struct *work) spin_lock(&unix_gc_lock); - unix_walk_scc(); - /* First, select candidates for garbage collection. Only * in-flight sockets are considered, and from those only ones * which don't have any external reference. -- Gitee From a50fe0c1e8b5ecd6cce1023dcf6eb3d011a8a72a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:30 +0800 Subject: [PATCH 1250/1421] Revert "af_unix: Bulk update unix_tot_inflight/unix_inflight when queuing skb." This reverts commit d194dddb016612077a20763095b2dc78a0fe3ed1. --- net/unix/garbage.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index f7041fc23000..b5b4a200dbf3 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -144,7 +144,6 @@ static void unix_free_vertices(struct scm_fp_list *fpl) } DEFINE_SPINLOCK(unix_gc_lock); -unsigned int unix_tot_inflight; void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver) { @@ -169,10 +168,7 @@ void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver) unix_add_edge(fpl, edge); } while (i < fpl->count_unix); - WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + fpl->count_unix); out: - WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight + fpl->count); - spin_unlock(&unix_gc_lock); fpl->inflight = true; @@ -195,10 +191,7 @@ void unix_del_edges(struct scm_fp_list *fpl) unix_del_edge(fpl, edge); } while (i < fpl->count_unix); - WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - fpl->count_unix); out: - WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight - fpl->count); - spin_unlock(&unix_gc_lock); fpl->inflight = false; @@ -241,6 +234,7 @@ void unix_destroy_fpl(struct scm_fp_list *fpl) unix_free_vertices(fpl); } +unsigned int unix_tot_inflight; static LIST_HEAD(gc_candidates); static LIST_HEAD(gc_inflight_list); @@ -261,8 +255,13 @@ void unix_inflight(struct user_struct *user, struct file *filp) WARN_ON_ONCE(list_empty(&u->link)); } u->inflight++; + + /* Paired with READ_ONCE() in wait_for_unix_gc() */ + WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + 1); } + WRITE_ONCE(user->unix_inflight, user->unix_inflight + 1); + spin_unlock(&unix_gc_lock); } @@ -279,8 +278,13 @@ void unix_notinflight(struct user_struct *user, struct file *filp) u->inflight--; if (!u->inflight) list_del_init(&u->link); + + /* Paired with READ_ONCE() in wait_for_unix_gc() */ + WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - 1); } + WRITE_ONCE(user->unix_inflight, user->unix_inflight - 1); + spin_unlock(&unix_gc_lock); } -- Gitee From 5b6dbb452a9af9a3803cb15f4fcdaaa1fa160555 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:30 +0800 Subject: [PATCH 1251/1421] Revert "af_unix: Link struct unix_edge when queuing skb." This reverts commit 1bf0736b1ab53c444186a4d0b72bce95b8ebb4d9. --- include/net/af_unix.h | 2 - include/net/scm.h | 1 - net/core/scm.c | 2 - net/unix/af_unix.c | 8 +--- net/unix/garbage.c | 90 +------------------------------------------ 5 files changed, 3 insertions(+), 100 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index affcb990f95e..dd5750daf0b9 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -22,8 +22,6 @@ extern unsigned int unix_tot_inflight; void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, struct file *fp); -void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver); -void unix_del_edges(struct scm_fp_list *fpl); int unix_prepare_fpl(struct scm_fp_list *fpl); void unix_destroy_fpl(struct scm_fp_list *fpl); void unix_gc(void); diff --git a/include/net/scm.h b/include/net/scm.h index 07d66c41cc33..915c4c94306e 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -31,7 +31,6 @@ struct scm_fp_list { short count_unix; short max; #ifdef CONFIG_UNIX - bool inflight; struct list_head vertices; struct unix_edge *edges; #endif diff --git a/net/core/scm.c b/net/core/scm.c index 1e47788379c2..96e3d2785e50 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -90,7 +90,6 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) fpl->max = SCM_MAX_FD; fpl->user = NULL; #if IS_ENABLED(CONFIG_UNIX) - fpl->inflight = false; fpl->edges = NULL; INIT_LIST_HEAD(&fpl->vertices); #endif @@ -385,7 +384,6 @@ struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl) new_fpl->max = new_fpl->count; new_fpl->user = get_uid(fpl->user); #if IS_ENABLED(CONFIG_UNIX) - new_fpl->inflight = false; new_fpl->edges = NULL; INIT_LIST_HEAD(&new_fpl->vertices); #endif diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index e54f54f9d994..6d62fa5b0e68 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1920,10 +1920,8 @@ static void scm_stat_add(struct sock *sk, struct sk_buff *skb) struct scm_fp_list *fp = UNIXCB(skb).fp; struct unix_sock *u = unix_sk(sk); - if (unlikely(fp && fp->count)) { + if (unlikely(fp && fp->count)) atomic_add(fp->count, &u->scm_stat.nr_fds); - unix_add_edges(fp, u); - } } static void scm_stat_del(struct sock *sk, struct sk_buff *skb) @@ -1931,10 +1929,8 @@ static void scm_stat_del(struct sock *sk, struct sk_buff *skb) struct scm_fp_list *fp = UNIXCB(skb).fp; struct unix_sock *u = unix_sk(sk); - if (unlikely(fp && fp->count)) { + if (unlikely(fp && fp->count)) atomic_sub(fp->count, &u->scm_stat.nr_fds); - unix_del_edges(fp); - } } /* diff --git a/net/unix/garbage.c b/net/unix/garbage.c index b5b4a200dbf3..912b7945692c 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -101,38 +101,6 @@ struct unix_sock *unix_get_socket(struct file *filp) return NULL; } -static LIST_HEAD(unix_unvisited_vertices); - -static void unix_add_edge(struct scm_fp_list *fpl, struct unix_edge *edge) -{ - struct unix_vertex *vertex = edge->predecessor->vertex; - - if (!vertex) { - vertex = list_first_entry(&fpl->vertices, typeof(*vertex), entry); - vertex->out_degree = 0; - INIT_LIST_HEAD(&vertex->edges); - - list_move_tail(&vertex->entry, &unix_unvisited_vertices); - edge->predecessor->vertex = vertex; - } - - vertex->out_degree++; - list_add_tail(&edge->vertex_entry, &vertex->edges); -} - -static void unix_del_edge(struct scm_fp_list *fpl, struct unix_edge *edge) -{ - struct unix_vertex *vertex = edge->predecessor->vertex; - - list_del(&edge->vertex_entry); - vertex->out_degree--; - - if (!vertex->out_degree) { - edge->predecessor->vertex = NULL; - list_move_tail(&vertex->entry, &fpl->vertices); - } -} - static void unix_free_vertices(struct scm_fp_list *fpl) { struct unix_vertex *vertex, *next_vertex; @@ -143,60 +111,6 @@ static void unix_free_vertices(struct scm_fp_list *fpl) } } -DEFINE_SPINLOCK(unix_gc_lock); - -void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver) -{ - int i = 0, j = 0; - - spin_lock(&unix_gc_lock); - - if (!fpl->count_unix) - goto out; - - do { - struct unix_sock *inflight = unix_get_socket(fpl->fp[j++]); - struct unix_edge *edge; - - if (!inflight) - continue; - - edge = fpl->edges + i++; - edge->predecessor = inflight; - edge->successor = receiver; - - unix_add_edge(fpl, edge); - } while (i < fpl->count_unix); - -out: - spin_unlock(&unix_gc_lock); - - fpl->inflight = true; - - unix_free_vertices(fpl); -} - -void unix_del_edges(struct scm_fp_list *fpl) -{ - int i = 0; - - spin_lock(&unix_gc_lock); - - if (!fpl->count_unix) - goto out; - - do { - struct unix_edge *edge = fpl->edges + i++; - - unix_del_edge(fpl, edge); - } while (i < fpl->count_unix); - -out: - spin_unlock(&unix_gc_lock); - - fpl->inflight = false; -} - int unix_prepare_fpl(struct scm_fp_list *fpl) { struct unix_vertex *vertex; @@ -227,13 +141,11 @@ int unix_prepare_fpl(struct scm_fp_list *fpl) void unix_destroy_fpl(struct scm_fp_list *fpl) { - if (fpl->inflight) - unix_del_edges(fpl); - kvfree(fpl->edges); unix_free_vertices(fpl); } +DEFINE_SPINLOCK(unix_gc_lock); unsigned int unix_tot_inflight; static LIST_HEAD(gc_candidates); static LIST_HEAD(gc_inflight_list); -- Gitee From 1f2f92569e92abd868dec9a9b58d31e6b383aa00 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:30 +0800 Subject: [PATCH 1252/1421] Revert "af_unix: Allocate struct unix_edge for each inflight AF_UNIX fd." This reverts commit 634fed10add44417b99b8e2c4af32887ccaabe96. --- include/net/af_unix.h | 6 ------ include/net/scm.h | 5 ----- net/core/scm.c | 2 -- net/unix/garbage.c | 6 ------ 4 files changed, 19 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index dd5750daf0b9..07f0f698c949 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -33,12 +33,6 @@ struct unix_vertex { unsigned long out_degree; }; -struct unix_edge { - struct unix_sock *predecessor; - struct unix_sock *successor; - struct list_head vertex_entry; -}; - struct sock *unix_peer_get(struct sock *sk); #define UNIX_HASH_MOD (256 - 1) diff --git a/include/net/scm.h b/include/net/scm.h index 915c4c94306e..11e86e55f332 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -22,17 +22,12 @@ struct scm_creds { kgid_t gid; }; -#ifdef CONFIG_UNIX -struct unix_edge; -#endif - struct scm_fp_list { short count; short count_unix; short max; #ifdef CONFIG_UNIX struct list_head vertices; - struct unix_edge *edges; #endif struct user_struct *user; struct file *fp[SCM_MAX_FD]; diff --git a/net/core/scm.c b/net/core/scm.c index 96e3d2785e50..27e5634c958e 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -90,7 +90,6 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) fpl->max = SCM_MAX_FD; fpl->user = NULL; #if IS_ENABLED(CONFIG_UNIX) - fpl->edges = NULL; INIT_LIST_HEAD(&fpl->vertices); #endif } @@ -384,7 +383,6 @@ struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl) new_fpl->max = new_fpl->count; new_fpl->user = get_uid(fpl->user); #if IS_ENABLED(CONFIG_UNIX) - new_fpl->edges = NULL; INIT_LIST_HEAD(&new_fpl->vertices); #endif } diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 912b7945692c..8ea7640e032e 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -127,11 +127,6 @@ int unix_prepare_fpl(struct scm_fp_list *fpl) list_add(&vertex->entry, &fpl->vertices); } - fpl->edges = kvmalloc_array(fpl->count_unix, sizeof(*fpl->edges), - GFP_KERNEL_ACCOUNT); - if (!fpl->edges) - goto err; - return 0; err: @@ -141,7 +136,6 @@ int unix_prepare_fpl(struct scm_fp_list *fpl) void unix_destroy_fpl(struct scm_fp_list *fpl) { - kvfree(fpl->edges); unix_free_vertices(fpl); } -- Gitee From 13a69f39687c533ed721b8394a751122f844a1d9 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:30 +0800 Subject: [PATCH 1253/1421] Revert "af_unix: Allocate struct unix_vertex for each inflight AF_UNIX fd." This reverts commit 0d49a6e7f42bdda45564aaec0aaa04738eda88d9. --- include/net/af_unix.h | 9 --------- include/net/scm.h | 3 --- net/core/scm.c | 7 ------- net/unix/af_unix.c | 6 ------ net/unix/garbage.c | 38 -------------------------------------- 5 files changed, 63 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 07f0f698c949..3dee0b2721aa 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -22,17 +22,9 @@ extern unsigned int unix_tot_inflight; void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, struct file *fp); -int unix_prepare_fpl(struct scm_fp_list *fpl); -void unix_destroy_fpl(struct scm_fp_list *fpl); void unix_gc(void); void wait_for_unix_gc(struct scm_fp_list *fpl); -struct unix_vertex { - struct list_head edges; - struct list_head entry; - unsigned long out_degree; -}; - struct sock *unix_peer_get(struct sock *sk); #define UNIX_HASH_MOD (256 - 1) @@ -70,7 +62,6 @@ struct unix_sock { struct path path; struct mutex iolock, bindlock; struct sock *peer; - struct unix_vertex *vertex; struct list_head link; unsigned long inflight; spinlock_t lock; diff --git a/include/net/scm.h b/include/net/scm.h index 11e86e55f332..1ff6a2855064 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -26,9 +26,6 @@ struct scm_fp_list { short count; short count_unix; short max; -#ifdef CONFIG_UNIX - struct list_head vertices; -#endif struct user_struct *user; struct file *fp[SCM_MAX_FD]; }; diff --git a/net/core/scm.c b/net/core/scm.c index 27e5634c958e..574607b1c2d9 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -89,9 +89,6 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) fpl->count_unix = 0; fpl->max = SCM_MAX_FD; fpl->user = NULL; -#if IS_ENABLED(CONFIG_UNIX) - INIT_LIST_HEAD(&fpl->vertices); -#endif } fpp = &fpl->fp[fpl->count]; @@ -379,12 +376,8 @@ struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl) if (new_fpl) { for (i = 0; i < fpl->count; i++) get_file(fpl->fp[i]); - new_fpl->max = new_fpl->count; new_fpl->user = get_uid(fpl->user); -#if IS_ENABLED(CONFIG_UNIX) - INIT_LIST_HEAD(&new_fpl->vertices); -#endif } return new_fpl; } diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 6d62fa5b0e68..78758af2c6f3 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -979,7 +979,6 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern, sk->sk_destruct = unix_sock_destructor; u = unix_sk(sk); u->inflight = 0; - u->vertex = NULL; u->path.dentry = NULL; u->path.mnt = NULL; spin_lock_init(&u->lock); @@ -1783,9 +1782,6 @@ static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) for (i = scm->fp->count - 1; i >= 0; i--) unix_inflight(scm->fp->user, scm->fp->fp[i]); - if (unix_prepare_fpl(UNIXCB(skb).fp)) - return -ENOMEM; - return 0; } @@ -1796,8 +1792,6 @@ static void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb) scm->fp = UNIXCB(skb).fp; UNIXCB(skb).fp = NULL; - unix_destroy_fpl(scm->fp); - for (i = scm->fp->count - 1; i >= 0; i--) unix_notinflight(scm->fp->user, scm->fp->fp[i]); } diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 8ea7640e032e..0104be9d4704 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -101,44 +101,6 @@ struct unix_sock *unix_get_socket(struct file *filp) return NULL; } -static void unix_free_vertices(struct scm_fp_list *fpl) -{ - struct unix_vertex *vertex, *next_vertex; - - list_for_each_entry_safe(vertex, next_vertex, &fpl->vertices, entry) { - list_del(&vertex->entry); - kfree(vertex); - } -} - -int unix_prepare_fpl(struct scm_fp_list *fpl) -{ - struct unix_vertex *vertex; - int i; - - if (!fpl->count_unix) - return 0; - - for (i = 0; i < fpl->count_unix; i++) { - vertex = kmalloc(sizeof(*vertex), GFP_KERNEL); - if (!vertex) - goto err; - - list_add(&vertex->entry, &fpl->vertices); - } - - return 0; - -err: - unix_free_vertices(fpl); - return -ENOMEM; -} - -void unix_destroy_fpl(struct scm_fp_list *fpl) -{ - unix_free_vertices(fpl); -} - DEFINE_SPINLOCK(unix_gc_lock); unsigned int unix_tot_inflight; static LIST_HEAD(gc_candidates); -- Gitee From e67453d455186a7b295cee465d52a2017a5d88dc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:31 +0800 Subject: [PATCH 1254/1421] Revert "af_unix: Remove CONFIG_UNIX_SCM." This reverts commit 57c7ebc9ead1fa9e139538535308ee8d181f940f. --- include/net/af_unix.h | 7 +- net/Makefile | 2 +- net/unix/Kconfig | 5 ++ net/unix/Makefile | 2 + net/unix/af_unix.c | 63 +----------------- net/unix/garbage.c | 73 +------------------- net/unix/scm.c | 150 ++++++++++++++++++++++++++++++++++++++++++ net/unix/scm.h | 10 +++ 8 files changed, 175 insertions(+), 137 deletions(-) create mode 100644 net/unix/scm.c create mode 100644 net/unix/scm.h diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 3dee0b2721aa..4d35204c0857 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -17,20 +17,19 @@ static inline struct unix_sock *unix_get_socket(struct file *filp) } #endif -extern spinlock_t unix_gc_lock; -extern unsigned int unix_tot_inflight; - void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, struct file *fp); +void unix_destruct_scm(struct sk_buff *skb); void unix_gc(void); void wait_for_unix_gc(struct scm_fp_list *fpl); - struct sock *unix_peer_get(struct sock *sk); #define UNIX_HASH_MOD (256 - 1) #define UNIX_HASH_SIZE (256 * 2) #define UNIX_HASH_BITS 8 +extern unsigned int unix_tot_inflight; + struct unix_address { refcount_t refcnt; int len; diff --git a/net/Makefile b/net/Makefile index 45f3fbaae644..4c4dc535453d 100644 --- a/net/Makefile +++ b/net/Makefile @@ -17,7 +17,7 @@ obj-$(CONFIG_NETFILTER) += netfilter/ obj-$(CONFIG_INET) += ipv4/ obj-$(CONFIG_TLS) += tls/ obj-$(CONFIG_XFRM) += xfrm/ -obj-$(CONFIG_UNIX) += unix/ +obj-$(CONFIG_UNIX_SCM) += unix/ obj-y += ipv6/ obj-$(CONFIG_BPFILTER) += bpfilter/ obj-$(CONFIG_PACKET) += packet/ diff --git a/net/unix/Kconfig b/net/unix/Kconfig index 8b5d04210d7c..28b232f281ab 100644 --- a/net/unix/Kconfig +++ b/net/unix/Kconfig @@ -16,6 +16,11 @@ config UNIX Say Y unless you know what you are doing. +config UNIX_SCM + bool + depends on UNIX + default y + config AF_UNIX_OOB bool depends on UNIX diff --git a/net/unix/Makefile b/net/unix/Makefile index 4ddd125c4642..20491825b4d0 100644 --- a/net/unix/Makefile +++ b/net/unix/Makefile @@ -11,3 +11,5 @@ unix-$(CONFIG_BPF_SYSCALL) += unix_bpf.o obj-$(CONFIG_UNIX_DIAG) += unix_diag.o unix_diag-y := diag.o + +obj-$(CONFIG_UNIX_SCM) += scm.o diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 78758af2c6f3..bb92b1ed94aa 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -117,6 +117,8 @@ #include #include +#include "scm.h" + static atomic_long_t unix_nr_socks; static struct hlist_head bsd_socket_buckets[UNIX_HASH_SIZE / 2]; static spinlock_t bsd_socket_locks[UNIX_HASH_SIZE / 2]; @@ -1750,52 +1752,6 @@ static int unix_getname(struct socket *sock, struct sockaddr *uaddr, int peer) return err; } -/* The "user->unix_inflight" variable is protected by the garbage - * collection lock, and we just read it locklessly here. If you go - * over the limit, there might be a tiny race in actually noticing - * it across threads. Tough. - */ -static inline bool too_many_unix_fds(struct task_struct *p) -{ - struct user_struct *user = current_user(); - - if (unlikely(READ_ONCE(user->unix_inflight) > task_rlimit(p, RLIMIT_NOFILE))) - return !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN); - return false; -} - -static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) -{ - int i; - - if (too_many_unix_fds(current)) - return -ETOOMANYREFS; - - /* Need to duplicate file references for the sake of garbage - * collection. Otherwise a socket in the fps might become a - * candidate for GC while the skb is not yet queued. - */ - UNIXCB(skb).fp = scm_fp_dup(scm->fp); - if (!UNIXCB(skb).fp) - return -ENOMEM; - - for (i = scm->fp->count - 1; i >= 0; i--) - unix_inflight(scm->fp->user, scm->fp->fp[i]); - - return 0; -} - -static void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb) -{ - int i; - - scm->fp = UNIXCB(skb).fp; - UNIXCB(skb).fp = NULL; - - for (i = scm->fp->count - 1; i >= 0; i--) - unix_notinflight(scm->fp->user, scm->fp->fp[i]); -} - static void unix_peek_fds(struct scm_cookie *scm, struct sk_buff *skb) { scm->fp = scm_fp_dup(UNIXCB(skb).fp); @@ -1843,21 +1799,6 @@ static void unix_peek_fds(struct scm_cookie *scm, struct sk_buff *skb) spin_unlock(&unix_gc_lock); } -static void unix_destruct_scm(struct sk_buff *skb) -{ - struct scm_cookie scm; - - memset(&scm, 0, sizeof(scm)); - scm.pid = UNIXCB(skb).pid; - if (UNIXCB(skb).fp) - unix_detach_fds(&scm, skb); - - /* Alas, it calls VFS */ - /* So fscking what? fput() had been SMP-safe since the last Summer */ - scm_destroy(&scm); - sock_wfree(skb); -} - static int unix_scm_to_skb(struct scm_cookie *scm, struct sk_buff *skb, bool send_fds) { int err = 0; diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 0104be9d4704..c04f82489abb 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -81,80 +81,11 @@ #include #include -struct unix_sock *unix_get_socket(struct file *filp) -{ - struct inode *inode = file_inode(filp); - - /* Socket ? */ - if (S_ISSOCK(inode->i_mode) && !(filp->f_mode & FMODE_PATH)) { - struct socket *sock = SOCKET_I(inode); - const struct proto_ops *ops; - struct sock *sk = sock->sk; +#include "scm.h" - ops = READ_ONCE(sock->ops); +/* Internal data structures and random procedures: */ - /* PF_UNIX ? */ - if (sk && ops && ops->family == PF_UNIX) - return unix_sk(sk); - } - - return NULL; -} - -DEFINE_SPINLOCK(unix_gc_lock); -unsigned int unix_tot_inflight; static LIST_HEAD(gc_candidates); -static LIST_HEAD(gc_inflight_list); - -/* Keep the number of times in flight count for the file - * descriptor if it is for an AF_UNIX socket. - */ -void unix_inflight(struct user_struct *user, struct file *filp) -{ - struct unix_sock *u = unix_get_socket(filp); - - spin_lock(&unix_gc_lock); - - if (u) { - if (!u->inflight) { - WARN_ON_ONCE(!list_empty(&u->link)); - list_add_tail(&u->link, &gc_inflight_list); - } else { - WARN_ON_ONCE(list_empty(&u->link)); - } - u->inflight++; - - /* Paired with READ_ONCE() in wait_for_unix_gc() */ - WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + 1); - } - - WRITE_ONCE(user->unix_inflight, user->unix_inflight + 1); - - spin_unlock(&unix_gc_lock); -} - -void unix_notinflight(struct user_struct *user, struct file *filp) -{ - struct unix_sock *u = unix_get_socket(filp); - - spin_lock(&unix_gc_lock); - - if (u) { - WARN_ON_ONCE(!u->inflight); - WARN_ON_ONCE(list_empty(&u->link)); - - u->inflight--; - if (!u->inflight) - list_del_init(&u->link); - - /* Paired with READ_ONCE() in wait_for_unix_gc() */ - WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - 1); - } - - WRITE_ONCE(user->unix_inflight, user->unix_inflight - 1); - - spin_unlock(&unix_gc_lock); -} static void scan_inflight(struct sock *x, void (*func)(struct unix_sock *), struct sk_buff_head *hitlist) diff --git a/net/unix/scm.c b/net/unix/scm.c new file mode 100644 index 000000000000..db65b0ab5947 --- /dev/null +++ b/net/unix/scm.c @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "scm.h" + +unsigned int unix_tot_inflight; +EXPORT_SYMBOL(unix_tot_inflight); + +LIST_HEAD(gc_inflight_list); +EXPORT_SYMBOL(gc_inflight_list); + +DEFINE_SPINLOCK(unix_gc_lock); +EXPORT_SYMBOL(unix_gc_lock); + +struct unix_sock *unix_get_socket(struct file *filp) +{ + struct inode *inode = file_inode(filp); + + /* Socket ? */ + if (S_ISSOCK(inode->i_mode) && !(filp->f_mode & FMODE_PATH)) { + struct socket *sock = SOCKET_I(inode); + const struct proto_ops *ops = READ_ONCE(sock->ops); + struct sock *s = sock->sk; + + /* PF_UNIX ? */ + if (s && ops && ops->family == PF_UNIX) + return unix_sk(s); + } + + return NULL; +} +EXPORT_SYMBOL(unix_get_socket); + +/* Keep the number of times in flight count for the file + * descriptor if it is for an AF_UNIX socket. + */ +void unix_inflight(struct user_struct *user, struct file *fp) +{ + struct unix_sock *u = unix_get_socket(fp); + + spin_lock(&unix_gc_lock); + + if (u) { + if (!u->inflight) { + WARN_ON_ONCE(!list_empty(&u->link)); + list_add_tail(&u->link, &gc_inflight_list); + } else { + WARN_ON_ONCE(list_empty(&u->link)); + } + u->inflight++; + /* Paired with READ_ONCE() in wait_for_unix_gc() */ + WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + 1); + } + WRITE_ONCE(user->unix_inflight, user->unix_inflight + 1); + spin_unlock(&unix_gc_lock); +} + +void unix_notinflight(struct user_struct *user, struct file *fp) +{ + struct unix_sock *u = unix_get_socket(fp); + + spin_lock(&unix_gc_lock); + + if (u) { + WARN_ON_ONCE(!u->inflight); + WARN_ON_ONCE(list_empty(&u->link)); + + u->inflight--; + if (!u->inflight) + list_del_init(&u->link); + /* Paired with READ_ONCE() in wait_for_unix_gc() */ + WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - 1); + } + WRITE_ONCE(user->unix_inflight, user->unix_inflight - 1); + spin_unlock(&unix_gc_lock); +} + +/* + * The "user->unix_inflight" variable is protected by the garbage + * collection lock, and we just read it locklessly here. If you go + * over the limit, there might be a tiny race in actually noticing + * it across threads. Tough. + */ +static inline bool too_many_unix_fds(struct task_struct *p) +{ + struct user_struct *user = current_user(); + + if (unlikely(READ_ONCE(user->unix_inflight) > task_rlimit(p, RLIMIT_NOFILE))) + return !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN); + return false; +} + +int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) +{ + int i; + + if (too_many_unix_fds(current)) + return -ETOOMANYREFS; + + /* + * Need to duplicate file references for the sake of garbage + * collection. Otherwise a socket in the fps might become a + * candidate for GC while the skb is not yet queued. + */ + UNIXCB(skb).fp = scm_fp_dup(scm->fp); + if (!UNIXCB(skb).fp) + return -ENOMEM; + + for (i = scm->fp->count - 1; i >= 0; i--) + unix_inflight(scm->fp->user, scm->fp->fp[i]); + return 0; +} +EXPORT_SYMBOL(unix_attach_fds); + +void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb) +{ + int i; + + scm->fp = UNIXCB(skb).fp; + UNIXCB(skb).fp = NULL; + + for (i = scm->fp->count-1; i >= 0; i--) + unix_notinflight(scm->fp->user, scm->fp->fp[i]); +} +EXPORT_SYMBOL(unix_detach_fds); + +void unix_destruct_scm(struct sk_buff *skb) +{ + struct scm_cookie scm; + + memset(&scm, 0, sizeof(scm)); + scm.pid = UNIXCB(skb).pid; + if (UNIXCB(skb).fp) + unix_detach_fds(&scm, skb); + + /* Alas, it calls VFS */ + /* So fscking what? fput() had been SMP-safe since the last Summer */ + scm_destroy(&scm); + sock_wfree(skb); +} +EXPORT_SYMBOL(unix_destruct_scm); diff --git a/net/unix/scm.h b/net/unix/scm.h new file mode 100644 index 000000000000..5a255a477f16 --- /dev/null +++ b/net/unix/scm.h @@ -0,0 +1,10 @@ +#ifndef NET_UNIX_SCM_H +#define NET_UNIX_SCM_H + +extern struct list_head gc_inflight_list; +extern spinlock_t unix_gc_lock; + +int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb); +void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb); + +#endif -- Gitee From 611a2b4a9564d58b4af79c4c93b6ec1b511e5870 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:31 +0800 Subject: [PATCH 1255/1421] Revert "af_unix: Remove io_uring code for GC." This reverts commit 78a77173cdfb1fa7ae3a317a6ab62f602bcd8d42. --- include/net/af_unix.h | 1 + net/unix/garbage.c | 25 +++++++++++++++++++++++-- net/unix/scm.c | 6 ++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 4d35204c0857..865e2f7bd67c 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -20,6 +20,7 @@ static inline struct unix_sock *unix_get_socket(struct file *filp) void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, struct file *fp); void unix_destruct_scm(struct sk_buff *skb); +void io_uring_destruct_scm(struct sk_buff *skb); void unix_gc(void); void wait_for_unix_gc(struct scm_fp_list *fpl); struct sock *unix_peer_get(struct sock *sk); diff --git a/net/unix/garbage.c b/net/unix/garbage.c index c04f82489abb..b4bf7f753882 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -184,10 +184,12 @@ static bool gc_in_progress; static void __unix_gc(struct work_struct *work) { + struct sk_buff *next_skb, *skb; + struct unix_sock *u; + struct unix_sock *next; struct sk_buff_head hitlist; - struct unix_sock *u, *next; - LIST_HEAD(not_cycle_list); struct list_head cursor; + LIST_HEAD(not_cycle_list); spin_lock(&unix_gc_lock); @@ -291,11 +293,30 @@ static void __unix_gc(struct work_struct *work) spin_unlock(&unix_gc_lock); + /* We need io_uring to clean its registered files, ignore all io_uring + * originated skbs. It's fine as io_uring doesn't keep references to + * other io_uring instances and so killing all other files in the cycle + * will put all io_uring references forcing it to go through normal + * release.path eventually putting registered files. + */ + skb_queue_walk_safe(&hitlist, skb, next_skb) { + if (skb->destructor == io_uring_destruct_scm) { + __skb_unlink(skb, &hitlist); + skb_queue_tail(&skb->sk->sk_receive_queue, skb); + } + } + /* Here we are. Hitlist is filled. Die. */ __skb_queue_purge(&hitlist); spin_lock(&unix_gc_lock); + /* There could be io_uring registered files, just push them back to + * the inflight list + */ + list_for_each_entry_safe(u, next, &gc_candidates, link) + list_move_tail(&u->link, &gc_inflight_list); + /* All candidates should have been detached by now. */ WARN_ON_ONCE(!list_empty(&gc_candidates)); diff --git a/net/unix/scm.c b/net/unix/scm.c index db65b0ab5947..505e56cf02a2 100644 --- a/net/unix/scm.c +++ b/net/unix/scm.c @@ -148,3 +148,9 @@ void unix_destruct_scm(struct sk_buff *skb) sock_wfree(skb); } EXPORT_SYMBOL(unix_destruct_scm); + +void io_uring_destruct_scm(struct sk_buff *skb) +{ + unix_destruct_scm(skb); +} +EXPORT_SYMBOL(io_uring_destruct_scm); -- Gitee From cbb3d6d871e754f851c0521243fba2fe90de9e32 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:31 +0800 Subject: [PATCH 1256/1421] Revert "af_unix: Replace BUG_ON() with WARN_ON_ONCE()." This reverts commit c13c3fbfb5382fe55e6054aa1adca217a28915e6. --- net/unix/garbage.c | 8 ++++---- net/unix/scm.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index b4bf7f753882..96cc6b767433 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -145,7 +145,7 @@ static void scan_children(struct sock *x, void (*func)(struct unix_sock *), /* An embryo cannot be in-flight, so it's safe * to use the list link. */ - WARN_ON_ONCE(!list_empty(&u->link)); + BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &embryos); } spin_unlock(&x->sk_receive_queue.lock); @@ -224,8 +224,8 @@ static void __unix_gc(struct work_struct *work) total_refs = file_count(sk->sk_socket->file); - WARN_ON_ONCE(!u->inflight); - WARN_ON_ONCE(total_refs < u->inflight); + BUG_ON(!u->inflight); + BUG_ON(total_refs < u->inflight); if (total_refs == u->inflight) { list_move_tail(&u->link, &gc_candidates); __set_bit(UNIX_GC_CANDIDATE, &u->gc_flags); @@ -318,7 +318,7 @@ static void __unix_gc(struct work_struct *work) list_move_tail(&u->link, &gc_inflight_list); /* All candidates should have been detached by now. */ - WARN_ON_ONCE(!list_empty(&gc_candidates)); + BUG_ON(!list_empty(&gc_candidates)); /* Paired with READ_ONCE() in wait_for_unix_gc(). */ WRITE_ONCE(gc_in_progress, false); diff --git a/net/unix/scm.c b/net/unix/scm.c index 505e56cf02a2..b5ae5ab16777 100644 --- a/net/unix/scm.c +++ b/net/unix/scm.c @@ -51,10 +51,10 @@ void unix_inflight(struct user_struct *user, struct file *fp) if (u) { if (!u->inflight) { - WARN_ON_ONCE(!list_empty(&u->link)); + BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &gc_inflight_list); } else { - WARN_ON_ONCE(list_empty(&u->link)); + BUG_ON(list_empty(&u->link)); } u->inflight++; /* Paired with READ_ONCE() in wait_for_unix_gc() */ @@ -71,8 +71,8 @@ void unix_notinflight(struct user_struct *user, struct file *fp) spin_lock(&unix_gc_lock); if (u) { - WARN_ON_ONCE(!u->inflight); - WARN_ON_ONCE(list_empty(&u->link)); + BUG_ON(!u->inflight); + BUG_ON(list_empty(&u->link)); u->inflight--; if (!u->inflight) -- Gitee From 704417286953d0e19a1f0882eb866df43a0288b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:31 +0800 Subject: [PATCH 1257/1421] Revert "af_unix: Try to run GC async." This reverts commit 9ea3e55e497b137999b42298bae22b938d805165. --- include/net/af_unix.h | 12 ++---------- include/net/scm.h | 1 - net/core/scm.c | 5 ----- net/unix/af_unix.c | 6 ++---- net/unix/garbage.c | 10 +--------- 5 files changed, 5 insertions(+), 29 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 865e2f7bd67c..7a00d7ed527b 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -8,21 +8,13 @@ #include #include -#if IS_ENABLED(CONFIG_UNIX) -struct unix_sock *unix_get_socket(struct file *filp); -#else -static inline struct unix_sock *unix_get_socket(struct file *filp) -{ - return NULL; -} -#endif - void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, struct file *fp); void unix_destruct_scm(struct sk_buff *skb); void io_uring_destruct_scm(struct sk_buff *skb); void unix_gc(void); -void wait_for_unix_gc(struct scm_fp_list *fpl); +void wait_for_unix_gc(void); +struct unix_sock *unix_get_socket(struct file *filp); struct sock *unix_peer_get(struct sock *sk); #define UNIX_HASH_MOD (256 - 1) diff --git a/include/net/scm.h b/include/net/scm.h index 1ff6a2855064..e8c76b4be2fe 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -24,7 +24,6 @@ struct scm_creds { struct scm_fp_list { short count; - short count_unix; short max; struct user_struct *user; struct file *fp[SCM_MAX_FD]; diff --git a/net/core/scm.c b/net/core/scm.c index 574607b1c2d9..737917c7ac62 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -36,7 +36,6 @@ #include #include #include -#include /* @@ -86,7 +85,6 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) return -ENOMEM; *fplp = fpl; fpl->count = 0; - fpl->count_unix = 0; fpl->max = SCM_MAX_FD; fpl->user = NULL; } @@ -111,9 +109,6 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) fput(file); return -EINVAL; } - if (unix_get_socket(file)) - fpl->count_unix++; - *fpp++ = file; fpl->count++; } diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index bb92b1ed94aa..ab23c8d72122 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1885,12 +1885,11 @@ static int unix_dgram_sendmsg(struct socket *sock, struct msghdr *msg, long timeo; int err; + wait_for_unix_gc(); err = scm_send(sock, msg, &scm, false); if (err < 0) return err; - wait_for_unix_gc(scm.fp); - err = -EOPNOTSUPP; if (msg->msg_flags&MSG_OOB) goto out; @@ -2158,12 +2157,11 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg, bool fds_sent = false; int data_len; + wait_for_unix_gc(); err = scm_send(sock, msg, &scm, false); if (err < 0) return err; - wait_for_unix_gc(scm.fp); - err = -EOPNOTSUPP; if (msg->msg_flags & MSG_OOB) { #if IS_ENABLED(CONFIG_AF_UNIX_OOB) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 96cc6b767433..a2a8543613a5 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -335,9 +335,8 @@ void unix_gc(void) } #define UNIX_INFLIGHT_TRIGGER_GC 16000 -#define UNIX_INFLIGHT_SANE_USER (SCM_MAX_FD * 8) -void wait_for_unix_gc(struct scm_fp_list *fpl) +void wait_for_unix_gc(void) { /* If number of inflight sockets is insane, * force a garbage collect right now. @@ -349,13 +348,6 @@ void wait_for_unix_gc(struct scm_fp_list *fpl) !READ_ONCE(gc_in_progress)) unix_gc(); - /* Penalise users who want to send AF_UNIX sockets - * but whose sockets have not been received yet. - */ - if (!fpl || !fpl->count_unix || - READ_ONCE(fpl->user->unix_inflight) < UNIX_INFLIGHT_SANE_USER) - return; - if (READ_ONCE(gc_in_progress)) flush_work(&unix_gc_work); } -- Gitee From e783968c8530e308decb7f1745bc6960bea34896 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:31 +0800 Subject: [PATCH 1258/1421] Revert "af_unix: Run GC on only one CPU." This reverts commit c7741107c3d8e8661aac8355d3766a391cd956ec. --- net/unix/garbage.c | 54 +++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index a2a8543613a5..38639766b9e7 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -86,6 +86,7 @@ /* Internal data structures and random procedures: */ static LIST_HEAD(gc_candidates); +static DECLARE_WAIT_QUEUE_HEAD(unix_gc_wait); static void scan_inflight(struct sock *x, void (*func)(struct unix_sock *), struct sk_buff_head *hitlist) @@ -181,8 +182,23 @@ static void inc_inflight_move_tail(struct unix_sock *u) } static bool gc_in_progress; +#define UNIX_INFLIGHT_TRIGGER_GC 16000 + +void wait_for_unix_gc(void) +{ + /* If number of inflight sockets is insane, + * force a garbage collect right now. + * Paired with the WRITE_ONCE() in unix_inflight(), + * unix_notinflight() and gc_in_progress(). + */ + if (READ_ONCE(unix_tot_inflight) > UNIX_INFLIGHT_TRIGGER_GC && + !READ_ONCE(gc_in_progress)) + unix_gc(); + wait_event(unix_gc_wait, !READ_ONCE(gc_in_progress)); +} -static void __unix_gc(struct work_struct *work) +/* The external entry point: unix_gc() */ +void unix_gc(void) { struct sk_buff *next_skb, *skb; struct unix_sock *u; @@ -193,6 +209,13 @@ static void __unix_gc(struct work_struct *work) spin_lock(&unix_gc_lock); + /* Avoid a recursive GC. */ + if (gc_in_progress) + goto out; + + /* Paired with READ_ONCE() in wait_for_unix_gc(). */ + WRITE_ONCE(gc_in_progress, true); + /* First, select candidates for garbage collection. Only * in-flight sockets are considered, and from those only ones * which don't have any external reference. @@ -323,31 +346,8 @@ static void __unix_gc(struct work_struct *work) /* Paired with READ_ONCE() in wait_for_unix_gc(). */ WRITE_ONCE(gc_in_progress, false); - spin_unlock(&unix_gc_lock); -} - -static DECLARE_WORK(unix_gc_work, __unix_gc); + wake_up(&unix_gc_wait); -void unix_gc(void) -{ - WRITE_ONCE(gc_in_progress, true); - queue_work(system_unbound_wq, &unix_gc_work); -} - -#define UNIX_INFLIGHT_TRIGGER_GC 16000 - -void wait_for_unix_gc(void) -{ - /* If number of inflight sockets is insane, - * force a garbage collect right now. - * - * Paired with the WRITE_ONCE() in unix_inflight(), - * unix_notinflight(), and __unix_gc(). - */ - if (READ_ONCE(unix_tot_inflight) > UNIX_INFLIGHT_TRIGGER_GC && - !READ_ONCE(gc_in_progress)) - unix_gc(); - - if (READ_ONCE(gc_in_progress)) - flush_work(&unix_gc_work); + out: + spin_unlock(&unix_gc_lock); } -- Gitee From 653e0e9a93d3e53a45ea2f5b6f6b239e3b824344 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:32 +0800 Subject: [PATCH 1259/1421] Revert "af_unix: Return struct unix_sock from unix_get_socket()." This reverts commit 5888c52045594010009996fb2e66087408a4b82b. --- include/net/af_unix.h | 2 +- net/unix/garbage.c | 19 ++++++++++++------- net/unix/scm.c | 19 ++++++++++++------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 7a00d7ed527b..77bf30203d3c 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -14,7 +14,7 @@ void unix_destruct_scm(struct sk_buff *skb); void io_uring_destruct_scm(struct sk_buff *skb); void unix_gc(void); void wait_for_unix_gc(void); -struct unix_sock *unix_get_socket(struct file *filp); +struct sock *unix_get_socket(struct file *filp); struct sock *unix_peer_get(struct sock *sk); #define UNIX_HASH_MOD (256 - 1) diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 38639766b9e7..2a758531e102 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -105,15 +105,20 @@ static void scan_inflight(struct sock *x, void (*func)(struct unix_sock *), while (nfd--) { /* Get the socket the fd matches if it indeed does so */ - struct unix_sock *u = unix_get_socket(*fp++); + struct sock *sk = unix_get_socket(*fp++); - /* Ignore non-candidates, they could have been added - * to the queues after starting the garbage collection - */ - if (u && test_bit(UNIX_GC_CANDIDATE, &u->gc_flags)) { - hit = true; + if (sk) { + struct unix_sock *u = unix_sk(sk); - func(u); + /* Ignore non-candidates, they could + * have been added to the queues after + * starting the garbage collection + */ + if (test_bit(UNIX_GC_CANDIDATE, &u->gc_flags)) { + hit = true; + + func(u); + } } } if (hit && hitlist != NULL) { diff --git a/net/unix/scm.c b/net/unix/scm.c index b5ae5ab16777..e92f2fad6410 100644 --- a/net/unix/scm.c +++ b/net/unix/scm.c @@ -21,8 +21,9 @@ EXPORT_SYMBOL(gc_inflight_list); DEFINE_SPINLOCK(unix_gc_lock); EXPORT_SYMBOL(unix_gc_lock); -struct unix_sock *unix_get_socket(struct file *filp) +struct sock *unix_get_socket(struct file *filp) { + struct sock *u_sock = NULL; struct inode *inode = file_inode(filp); /* Socket ? */ @@ -33,10 +34,10 @@ struct unix_sock *unix_get_socket(struct file *filp) /* PF_UNIX ? */ if (s && ops && ops->family == PF_UNIX) - return unix_sk(s); + u_sock = s; } - return NULL; + return u_sock; } EXPORT_SYMBOL(unix_get_socket); @@ -45,11 +46,13 @@ EXPORT_SYMBOL(unix_get_socket); */ void unix_inflight(struct user_struct *user, struct file *fp) { - struct unix_sock *u = unix_get_socket(fp); + struct sock *s = unix_get_socket(fp); spin_lock(&unix_gc_lock); - if (u) { + if (s) { + struct unix_sock *u = unix_sk(s); + if (!u->inflight) { BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &gc_inflight_list); @@ -66,11 +69,13 @@ void unix_inflight(struct user_struct *user, struct file *fp) void unix_notinflight(struct user_struct *user, struct file *fp) { - struct unix_sock *u = unix_get_socket(fp); + struct sock *s = unix_get_socket(fp); spin_lock(&unix_gc_lock); - if (u) { + if (s) { + struct unix_sock *u = unix_sk(s); + BUG_ON(!u->inflight); BUG_ON(list_empty(&u->link)); -- Gitee From f03a03e47e8ae269651c887b4f3cd8432ddc7621 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:32 +0800 Subject: [PATCH 1260/1421] Revert "btrfs: check folio mapping after unlock in relocate_one_folio()" This reverts commit ff508724fa6169315d88b01e6534bda2ae71449c. --- fs/btrfs/relocation.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 474758c878fc..537e184b4b1d 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -2931,7 +2931,6 @@ static int relocate_one_page(struct inode *inode, struct file_ra_state *ra, int ret; ASSERT(page_index <= last_index); -again: page = find_lock_page(inode->i_mapping, page_index); if (!page) { page_cache_sync_readahead(inode->i_mapping, ra, NULL, @@ -2953,11 +2952,6 @@ static int relocate_one_page(struct inode *inode, struct file_ra_state *ra, ret = -EIO; goto release_page; } - if (page->mapping != inode->i_mapping) { - unlock_page(page); - put_page(page); - goto again; - } } /* -- Gitee From 25f2c8182d5411f56bd53e2dae231feb9c3b0a12 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:32 +0800 Subject: [PATCH 1261/1421] Revert "can: kvaser_pciefd: Force IRQ edge in case of nested IRQ" This reverts commit dccb925ff65e21b6de91c86d3f975662d0de1c85. --- drivers/net/can/kvaser_pciefd.c | 80 ++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/drivers/net/can/kvaser_pciefd.c b/drivers/net/can/kvaser_pciefd.c index 73b448cd00f2..6dae3fd35395 100644 --- a/drivers/net/can/kvaser_pciefd.c +++ b/drivers/net/can/kvaser_pciefd.c @@ -1582,28 +1582,24 @@ static int kvaser_pciefd_read_buffer(struct kvaser_pciefd *pcie, int dma_buf) return res; } -static void kvaser_pciefd_receive_irq(struct kvaser_pciefd *pcie) +static u32 kvaser_pciefd_receive_irq(struct kvaser_pciefd *pcie) { - void __iomem *srb_cmd_reg = KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_CMD_REG; u32 irq = ioread32(KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_IRQ_REG); - iowrite32(irq, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_IRQ_REG); - - if (irq & KVASER_PCIEFD_SRB_IRQ_DPD0) { + if (irq & KVASER_PCIEFD_SRB_IRQ_DPD0) kvaser_pciefd_read_buffer(pcie, 0); - iowrite32(KVASER_PCIEFD_SRB_CMD_RDB0, srb_cmd_reg); /* Rearm buffer */ - } - if (irq & KVASER_PCIEFD_SRB_IRQ_DPD1) { + if (irq & KVASER_PCIEFD_SRB_IRQ_DPD1) kvaser_pciefd_read_buffer(pcie, 1); - iowrite32(KVASER_PCIEFD_SRB_CMD_RDB1, srb_cmd_reg); /* Rearm buffer */ - } if (irq & KVASER_PCIEFD_SRB_IRQ_DOF0 || irq & KVASER_PCIEFD_SRB_IRQ_DOF1 || irq & KVASER_PCIEFD_SRB_IRQ_DUF0 || irq & KVASER_PCIEFD_SRB_IRQ_DUF1) dev_err(&pcie->pci->dev, "DMA IRQ error 0x%08X\n", irq); + + iowrite32(irq, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_IRQ_REG); + return irq; } static void kvaser_pciefd_transmit_irq(struct kvaser_pciefd_can *can) @@ -1631,22 +1627,29 @@ static irqreturn_t kvaser_pciefd_irq_handler(int irq, void *dev) struct kvaser_pciefd *pcie = (struct kvaser_pciefd *)dev; const struct kvaser_pciefd_irq_mask *irq_mask = pcie->driver_data->irq_mask; u32 pci_irq = ioread32(KVASER_PCIEFD_PCI_IRQ_ADDR(pcie)); + u32 srb_irq = 0; + u32 srb_release = 0; int i; if (!(pci_irq & irq_mask->all)) return IRQ_NONE; - iowrite32(0, KVASER_PCIEFD_PCI_IEN_ADDR(pcie)); - if (pci_irq & irq_mask->kcan_rx0) - kvaser_pciefd_receive_irq(pcie); + srb_irq = kvaser_pciefd_receive_irq(pcie); for (i = 0; i < pcie->nr_channels; i++) { if (pci_irq & irq_mask->kcan_tx[i]) kvaser_pciefd_transmit_irq(pcie->can[i]); } - iowrite32(irq_mask->all, KVASER_PCIEFD_PCI_IEN_ADDR(pcie)); + if (srb_irq & KVASER_PCIEFD_SRB_IRQ_DPD0) + srb_release |= KVASER_PCIEFD_SRB_CMD_RDB0; + + if (srb_irq & KVASER_PCIEFD_SRB_IRQ_DPD1) + srb_release |= KVASER_PCIEFD_SRB_CMD_RDB1; + + if (srb_release) + iowrite32(srb_release, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_CMD_REG); return IRQ_HANDLED; } @@ -1666,22 +1669,13 @@ static void kvaser_pciefd_teardown_can_ctrls(struct kvaser_pciefd *pcie) } } -static void kvaser_pciefd_disable_irq_srcs(struct kvaser_pciefd *pcie) -{ - unsigned int i; - - /* Masking PCI_IRQ is insufficient as running ISR will unmask it */ - iowrite32(0, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_IEN_REG); - for (i = 0; i < pcie->nr_channels; ++i) - iowrite32(0, pcie->can[i]->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); -} - static int kvaser_pciefd_probe(struct pci_dev *pdev, const struct pci_device_id *id) { int err; struct kvaser_pciefd *pcie; const struct kvaser_pciefd_irq_mask *irq_mask; + void __iomem *irq_en_base; pcie = devm_kzalloc(&pdev->dev, sizeof(*pcie), GFP_KERNEL); if (!pcie) @@ -1734,7 +1728,8 @@ static int kvaser_pciefd_probe(struct pci_dev *pdev, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_IEN_REG); /* Enable PCI interrupts */ - iowrite32(irq_mask->all, KVASER_PCIEFD_PCI_IEN_ADDR(pcie)); + irq_en_base = KVASER_PCIEFD_PCI_IEN_ADDR(pcie); + iowrite32(irq_mask->all, irq_en_base); /* Ready the DMA buffers */ iowrite32(KVASER_PCIEFD_SRB_CMD_RDB0, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_CMD_REG); @@ -1748,7 +1743,8 @@ static int kvaser_pciefd_probe(struct pci_dev *pdev, return 0; err_free_irq: - kvaser_pciefd_disable_irq_srcs(pcie); + /* Disable PCI interrupts */ + iowrite32(0, irq_en_base); free_irq(pcie->pci->irq, pcie); err_teardown_can_ctrls: @@ -1768,24 +1764,34 @@ static int kvaser_pciefd_probe(struct pci_dev *pdev, return err; } -static void kvaser_pciefd_remove(struct pci_dev *pdev) +static void kvaser_pciefd_remove_all_ctrls(struct kvaser_pciefd *pcie) { - struct kvaser_pciefd *pcie = pci_get_drvdata(pdev); - unsigned int i; + int i; - for (i = 0; i < pcie->nr_channels; ++i) { + for (i = 0; i < pcie->nr_channels; i++) { struct kvaser_pciefd_can *can = pcie->can[i]; - unregister_candev(can->can.dev); - del_timer(&can->bec_poll_timer); - kvaser_pciefd_pwm_stop(can); + if (can) { + iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_IEN_REG); + unregister_candev(can->can.dev); + del_timer(&can->bec_poll_timer); + kvaser_pciefd_pwm_stop(can); + free_candev(can->can.dev); + } } +} - kvaser_pciefd_disable_irq_srcs(pcie); - free_irq(pcie->pci->irq, pcie); +static void kvaser_pciefd_remove(struct pci_dev *pdev) +{ + struct kvaser_pciefd *pcie = pci_get_drvdata(pdev); + + kvaser_pciefd_remove_all_ctrls(pcie); - for (i = 0; i < pcie->nr_channels; ++i) - free_candev(pcie->can[i]->can.dev); + /* Disable interrupts */ + iowrite32(0, KVASER_PCIEFD_SRB_ADDR(pcie) + KVASER_PCIEFD_SRB_CTRL_REG); + iowrite32(0, KVASER_PCIEFD_PCI_IEN_ADDR(pcie)); + + free_irq(pcie->pci->irq, pcie); pci_iounmap(pdev, pcie->reg_base); pci_release_regions(pdev); -- Gitee From 47e095b4c59ce58bfe0d4827528a2b3043ca64dd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:32 +0800 Subject: [PATCH 1262/1421] Revert "drm/gem: Internally test import_attach for imported objects" This reverts commit 22713801d4f3fc25ba147ebc09a9659cc8c9d6c5. --- include/drm/drm_gem.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index a578068169f1..fbfccb96dd17 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -567,7 +567,8 @@ static inline bool drm_gem_object_is_shared_for_memory_stats(struct drm_gem_obje */ static inline bool drm_gem_is_imported(const struct drm_gem_object *obj) { - return !!obj->import_attach; + /* The dma-buf's priv field points to the original GEM object. */ + return obj->dma_buf && (obj->dma_buf->priv != obj); } #ifdef CONFIG_LOCKDEP -- Gitee From c9aa9b014881200e89c2cfe6e010184a11ca7ef0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:33 +0800 Subject: [PATCH 1263/1421] Revert "x86/mm/init: Handle the special case of device private pages in add_pages(), to not increase max_pfn and trigger dma_addressing_limited() bounce buffers bounce buffers" This reverts commit bb5d3dee942c1f1a5d0ad1b83d566993f55322de. --- arch/x86/mm/init_64.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 11eb93e13ce1..aa69353da49f 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -959,18 +959,9 @@ int add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, ret = __add_pages(nid, start_pfn, nr_pages, params); WARN_ON_ONCE(ret); - /* - * Special case: add_pages() is called by memremap_pages() for adding device - * private pages. Do not bump up max_pfn in the device private path, - * because max_pfn changes affect dma_addressing_limited(). - * - * dma_addressing_limited() returning true when max_pfn is the device's - * addressable memory can force device drivers to use bounce buffers - * and impact their performance negatively: - */ - if (!params->pgmap) - /* update max_pfn, max_low_pfn and high_memory */ - update_end_of_memory_vars(start_pfn << PAGE_SHIFT, nr_pages << PAGE_SHIFT); + /* update max_pfn, max_low_pfn and high_memory */ + update_end_of_memory_vars(start_pfn << PAGE_SHIFT, + nr_pages << PAGE_SHIFT); return ret; } -- Gitee From bc43560e3c3c5b57589e2ecd7fb23a0ebe450ccf Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:33 +0800 Subject: [PATCH 1264/1421] Revert "i3c: master: svc: Fix implicit fallthrough in svc_i3c_master_ibi_work()" This reverts commit a0a54051a6611de623455ba6c2573149a7fe65cf. --- drivers/i3c/master/svc-i3c-master.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c index d1630d47ef6f..3d1734849e0d 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -504,7 +504,6 @@ static void svc_i3c_master_ibi_work(struct work_struct *work) break; case SVC_I3C_MSTATUS_IBITYPE_MASTER_REQUEST: svc_i3c_master_emit_stop(master); - break; default: break; } -- Gitee From 3aa66fe175319caf1d323d4966966c54cf4d38a2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:33 +0800 Subject: [PATCH 1265/1421] Revert "pinctrl: tegra: Fix off by one in tegra_pinctrl_get_group()" This reverts commit 5717690638c720b0c2b2002e075aed3f0408cb37. --- drivers/pinctrl/tegra/pinctrl-tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.c b/drivers/pinctrl/tegra/pinctrl-tegra.c index 637b89ebe0e4..1350ab56fbc0 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra.c @@ -307,7 +307,7 @@ static const struct tegra_pingroup *tegra_pinctrl_get_group(struct pinctrl_dev * { struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); - if (group_index < 0 || group_index >= pmx->soc->ngroups) + if (group_index < 0 || group_index > pmx->soc->ngroups) return NULL; return &pmx->soc->groups[group_index]; -- Gitee From cbecbe4456a390402ff86ca2d4186a5e9d3f6fda Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:33 +0800 Subject: [PATCH 1266/1421] Revert "watchdog: aspeed: fix 64-bit division" This reverts commit e0b9e47de139b300192fb4b843e6648ef8159842. --- drivers/watchdog/aspeed_wdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c index 001b2c931125..7bc0fb1df1e0 100644 --- a/drivers/watchdog/aspeed_wdt.c +++ b/drivers/watchdog/aspeed_wdt.c @@ -252,7 +252,7 @@ static void aspeed_wdt_update_bootstatus(struct platform_device *pdev, if (!of_device_is_compatible(pdev->dev.of_node, "aspeed,ast2400-wdt")) { res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - idx = ((intptr_t)wdt->base & 0x00000fff) / (uintptr_t)resource_size(res); + idx = ((intptr_t)wdt->base & 0x00000fff) / resource_size(res); } scu_base = syscon_regmap_lookup_by_compatible(scu.compatible); -- Gitee From 59fe7d9dc8848b6d15266846b76eb8bb09f4408d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:33 +0800 Subject: [PATCH 1267/1421] Revert "serial: sh-sci: Save and restore more registers" This reverts commit 0e89ede1cdc20e1590dc706f5a9edc30a5d1cad7. --- drivers/tty/serial/sh-sci.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index cd38b28bbaf5..3041ec21ab50 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -105,15 +105,10 @@ struct plat_sci_reg { }; struct sci_suspend_regs { - u16 scdl; - u16 sccks; u16 scsmr; u16 scscr; u16 scfcr; u16 scsptr; - u16 hssrr; - u16 scpcr; - u16 scpdr; u8 scbrr; u8 semr; }; @@ -3496,10 +3491,6 @@ static void sci_console_save(struct sci_port *s) struct sci_suspend_regs *regs = &s->suspend_regs; struct uart_port *port = &s->port; - if (sci_getreg(port, SCDL)->size) - regs->scdl = sci_serial_in(port, SCDL); - if (sci_getreg(port, SCCKS)->size) - regs->sccks = sci_serial_in(port, SCCKS); if (sci_getreg(port, SCSMR)->size) regs->scsmr = sci_serial_in(port, SCSMR); if (sci_getreg(port, SCSCR)->size) @@ -3510,12 +3501,6 @@ static void sci_console_save(struct sci_port *s) regs->scsptr = sci_serial_in(port, SCSPTR); if (sci_getreg(port, SCBRR)->size) regs->scbrr = sci_serial_in(port, SCBRR); - if (sci_getreg(port, HSSRR)->size) - regs->hssrr = sci_serial_in(port, HSSRR); - if (sci_getreg(port, SCPCR)->size) - regs->scpcr = sci_serial_in(port, SCPCR); - if (sci_getreg(port, SCPDR)->size) - regs->scpdr = sci_serial_in(port, SCPDR); if (sci_getreg(port, SEMR)->size) regs->semr = sci_serial_in(port, SEMR); } @@ -3525,10 +3510,6 @@ static void sci_console_restore(struct sci_port *s) struct sci_suspend_regs *regs = &s->suspend_regs; struct uart_port *port = &s->port; - if (sci_getreg(port, SCDL)->size) - sci_serial_out(port, SCDL, regs->scdl); - if (sci_getreg(port, SCCKS)->size) - sci_serial_out(port, SCCKS, regs->sccks); if (sci_getreg(port, SCSMR)->size) sci_serial_out(port, SCSMR, regs->scsmr); if (sci_getreg(port, SCSCR)->size) @@ -3539,12 +3520,6 @@ static void sci_console_restore(struct sci_port *s) sci_serial_out(port, SCSPTR, regs->scsptr); if (sci_getreg(port, SCBRR)->size) sci_serial_out(port, SCBRR, regs->scbrr); - if (sci_getreg(port, HSSRR)->size) - sci_serial_out(port, HSSRR, regs->hssrr); - if (sci_getreg(port, SCPCR)->size) - sci_serial_out(port, SCPCR, regs->scpcr); - if (sci_getreg(port, SCPDR)->size) - sci_serial_out(port, SCPDR, regs->scpdr); if (sci_getreg(port, SEMR)->size) sci_serial_out(port, SEMR, regs->semr); } -- Gitee From 12fff9cd51a47b0e49bb394c1edc91b6c5966deb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:34 +0800 Subject: [PATCH 1268/1421] Revert "pds_core: Prevent possible adminq overflow/stuck condition" This reverts commit a606fdb9b3890538e751bd3e5c0b2e03ddc8b0c8. --- drivers/net/ethernet/amd/pds_core/core.c | 5 ++++- drivers/net/ethernet/amd/pds_core/core.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/amd/pds_core/core.c b/drivers/net/ethernet/amd/pds_core/core.c index c2ef55cff6b3..b3fa867c8ccd 100644 --- a/drivers/net/ethernet/amd/pds_core/core.c +++ b/drivers/net/ethernet/amd/pds_core/core.c @@ -413,7 +413,10 @@ int pdsc_setup(struct pdsc *pdsc, bool init) if (err) return err; - numdescs = PDSC_ADMINQ_MAX_LENGTH; + /* Scale the descriptor ring length based on number of CPUs and VFs */ + numdescs = max_t(int, PDSC_ADMINQ_MIN_LENGTH, num_online_cpus()); + numdescs += 2 * pci_sriov_get_totalvfs(pdsc->pdev); + numdescs = roundup_pow_of_two(numdescs); err = pdsc_qcq_alloc(pdsc, PDS_CORE_QTYPE_ADMINQ, 0, "adminq", PDS_CORE_QCQ_F_CORE | PDS_CORE_QCQ_F_INTR, numdescs, diff --git a/drivers/net/ethernet/amd/pds_core/core.h b/drivers/net/ethernet/amd/pds_core/core.h index 421371408503..61ee607ee48a 100644 --- a/drivers/net/ethernet/amd/pds_core/core.h +++ b/drivers/net/ethernet/amd/pds_core/core.h @@ -16,7 +16,7 @@ #define PDSC_WATCHDOG_SECS 5 #define PDSC_QUEUE_NAME_MAX_SZ 16 -#define PDSC_ADMINQ_MAX_LENGTH 16 /* must be a power of two */ +#define PDSC_ADMINQ_MIN_LENGTH 16 /* must be a power of two */ #define PDSC_NOTIFYQ_LENGTH 64 /* must be a power of two */ #define PDSC_TEARDOWN_RECOVERY false #define PDSC_TEARDOWN_REMOVING true -- Gitee From 829c7c2fde3f21803570655afb75f81ab76db8fe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:34 +0800 Subject: [PATCH 1269/1421] Revert "highmem: add folio_test_partial_kmap()" This reverts commit b6866d36d48ad18a5ba68c10c7fffae4bbf817a8. --- include/linux/highmem.h | 6 +++--- include/linux/page-flags.h | 7 ------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 05019f1e48e4..ccef475c0d44 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -448,7 +448,7 @@ static inline void memcpy_from_folio(char *to, struct folio *folio, const char *from = kmap_local_folio(folio, offset); size_t chunk = len; - if (folio_test_partial_kmap(folio) && + if (folio_test_highmem(folio) && chunk > PAGE_SIZE - offset_in_page(offset)) chunk = PAGE_SIZE - offset_in_page(offset); memcpy(to, from, chunk); @@ -469,7 +469,7 @@ static inline void memcpy_to_folio(struct folio *folio, size_t offset, char *to = kmap_local_folio(folio, offset); size_t chunk = len; - if (folio_test_partial_kmap(folio) && + if (folio_test_highmem(folio) && chunk > PAGE_SIZE - offset_in_page(offset)) chunk = PAGE_SIZE - offset_in_page(offset); memcpy(to, from, chunk); @@ -501,7 +501,7 @@ static inline size_t memcpy_from_file_folio(char *to, struct folio *folio, size_t offset = offset_in_folio(folio, pos); char *from = kmap_local_folio(folio, offset); - if (folio_test_partial_kmap(folio)) { + if (folio_test_highmem(folio)) { offset = offset_in_page(offset); len = min_t(size_t, len, PAGE_SIZE - offset); } else diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 1893a7916475..3ed1e637e30f 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -566,13 +566,6 @@ PAGEFLAG(Readahead, readahead, PF_NO_COMPOUND) PAGEFLAG_FALSE(HighMem, highmem) #endif -/* Does kmap_local_folio() only allow access to one page of the folio? */ -#ifdef CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP -#define folio_test_partial_kmap(f) true -#else -#define folio_test_partial_kmap(f) folio_test_highmem(f) -#endif - #ifdef CONFIG_SWAP static __always_inline bool folio_test_swapcache(struct folio *folio) { -- Gitee From a50a41a5a6641756925430cfb0de089590548afc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:34 +0800 Subject: [PATCH 1270/1421] Revert "x86/boot: Compile boot code with -std=gnu11 too" This reverts commit 5df9f76fb60e3f0f731c85dda66be471297e801a. --- arch/x86/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 6d593fb85a9e..c83582b5a010 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -43,7 +43,7 @@ endif # How to compile the 16-bit code. Note we always compile for -march=i386; # that way we can complain to the user if the CPU is insufficient. -REALMODE_CFLAGS := -std=gnu11 -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \ +REALMODE_CFLAGS := -m16 -g -Os -DDISABLE_BRANCH_PROFILING -D__DISABLE_EXPORTS \ -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \ -fno-strict-aliasing -fomit-frame-pointer -fno-pic \ -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none) -- Gitee From 4cc62a2236c9f8f346d079bd261eb8eda9a7b31b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:34 +0800 Subject: [PATCH 1271/1421] Revert "spi: spi-fsl-dspi: Reset SR flags before sending a new message" This reverts commit a5748b212751db322c8f94f873f1b9bc62e31b5e. --- drivers/spi/spi-fsl-dspi.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 7dd94369abb4..72d83c8b9cbf 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -980,8 +980,6 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr, SPI_MCR_CLR_TXF | SPI_MCR_CLR_RXF, SPI_MCR_CLR_TXF | SPI_MCR_CLR_RXF); - regmap_write(dspi->regmap, SPI_SR, SPI_SR_CLEAR); - spi_take_timestamp_pre(dspi->ctlr, dspi->cur_transfer, dspi->progress, !dspi->irq); -- Gitee From ff13fd133fd3c9496d1699d71edc70d74249dd15 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:35 +0800 Subject: [PATCH 1272/1421] Revert "spi: spi-fsl-dspi: Halt the module after a new message transfer" This reverts commit 4a6f94c4e8d46f62f828944036eaaf4644ac9ce0. --- drivers/spi/spi-fsl-dspi.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 72d83c8b9cbf..28682aa751ef 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -62,7 +62,6 @@ #define SPI_SR_TFIWF BIT(18) #define SPI_SR_RFDF BIT(17) #define SPI_SR_CMDFFF BIT(16) -#define SPI_SR_TXRXS BIT(30) #define SPI_SR_CLEAR (SPI_SR_TCFQF | \ SPI_SR_TFUF | SPI_SR_TFFF | \ SPI_SR_CMDTCF | SPI_SR_SPEF | \ @@ -927,20 +926,9 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr, struct spi_transfer *transfer; bool cs = false; int status = 0; - u32 val = 0; - bool cs_change = false; message->actual_length = 0; - /* Put DSPI in running mode if halted. */ - regmap_read(dspi->regmap, SPI_MCR, &val); - if (val & SPI_MCR_HALT) { - regmap_update_bits(dspi->regmap, SPI_MCR, SPI_MCR_HALT, 0); - while (regmap_read(dspi->regmap, SPI_SR, &val) >= 0 && - !(val & SPI_SR_TXRXS)) - ; - } - list_for_each_entry(transfer, &message->transfers, transfer_list) { dspi->cur_transfer = transfer; dspi->cur_msg = message; @@ -970,7 +958,6 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr, dspi->tx_cmd |= SPI_PUSHR_CMD_CONT; } - cs_change = transfer->cs_change; dspi->tx = transfer->tx_buf; dspi->rx = transfer->rx_buf; dspi->len = transfer->len; @@ -1006,15 +993,6 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr, dspi_deassert_cs(spi, &cs); } - if (status || !cs_change) { - /* Put DSPI in stop mode */ - regmap_update_bits(dspi->regmap, SPI_MCR, - SPI_MCR_HALT, SPI_MCR_HALT); - while (regmap_read(dspi->regmap, SPI_SR, &val) >= 0 && - val & SPI_SR_TXRXS) - ; - } - message->status = status; spi_finalize_current_message(ctlr); @@ -1263,8 +1241,6 @@ static int dspi_init(struct fsl_dspi *dspi) if (!spi_controller_is_target(dspi->ctlr)) mcr |= SPI_MCR_HOST; - mcr |= SPI_MCR_HALT; - regmap_write(dspi->regmap, SPI_MCR, mcr); regmap_write(dspi->regmap, SPI_SR, SPI_SR_CLEAR); -- Gitee From 34830414383e2218230c4532167871829a68f0a0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:35 +0800 Subject: [PATCH 1273/1421] Revert "spi: spi-fsl-dspi: restrict register range for regmap access" This reverts commit 6024e5c485ab795fcd5a0a421b97ad6ac01c2191. --- drivers/spi/spi-fsl-dspi.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 28682aa751ef..bcb0de864d34 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ // // Copyright 2013 Freescale Semiconductor, Inc. -// Copyright 2020-2025 NXP +// Copyright 2020 NXP // // Freescale DSPI driver // This file contains a driver for the Freescale DSPI @@ -1163,20 +1163,6 @@ static int dspi_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(dspi_pm, dspi_suspend, dspi_resume); -static const struct regmap_range dspi_yes_ranges[] = { - regmap_reg_range(SPI_MCR, SPI_MCR), - regmap_reg_range(SPI_TCR, SPI_CTAR(3)), - regmap_reg_range(SPI_SR, SPI_TXFR3), - regmap_reg_range(SPI_RXFR0, SPI_RXFR3), - regmap_reg_range(SPI_CTARE(0), SPI_CTARE(3)), - regmap_reg_range(SPI_SREX, SPI_SREX), -}; - -static const struct regmap_access_table dspi_access_table = { - .yes_ranges = dspi_yes_ranges, - .n_yes_ranges = ARRAY_SIZE(dspi_yes_ranges), -}; - static const struct regmap_range dspi_volatile_ranges[] = { regmap_reg_range(SPI_MCR, SPI_TCR), regmap_reg_range(SPI_SR, SPI_SR), @@ -1194,8 +1180,6 @@ static const struct regmap_config dspi_regmap_config = { .reg_stride = 4, .max_register = 0x88, .volatile_table = &dspi_volatile_table, - .rd_table = &dspi_access_table, - .wr_table = &dspi_access_table, }; static const struct regmap_range dspi_xspi_volatile_ranges[] = { @@ -1217,8 +1201,6 @@ static const struct regmap_config dspi_xspi_regmap_config[] = { .reg_stride = 4, .max_register = 0x13c, .volatile_table = &dspi_xspi_volatile_table, - .rd_table = &dspi_access_table, - .wr_table = &dspi_access_table, }, { .name = "pushr", -- Gitee From e43718dd4fa6fa5d4728b3f22cb48c4b3667e6cb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:35 +0800 Subject: [PATCH 1274/1421] Revert "ksmbd: fix stream write failure" This reverts commit dd75e32538c1202c18c6211ec6952eeb3e063499. --- fs/smb/server/vfs.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fs/smb/server/vfs.c b/fs/smb/server/vfs.c index 3bbf23827060..f6616d687365 100644 --- a/fs/smb/server/vfs.c +++ b/fs/smb/server/vfs.c @@ -426,15 +426,10 @@ static int ksmbd_vfs_stream_write(struct ksmbd_file *fp, char *buf, loff_t *pos, ksmbd_debug(VFS, "write stream data pos : %llu, count : %zd\n", *pos, count); - if (*pos >= XATTR_SIZE_MAX) { - pr_err("stream write position %lld is out of bounds\n", *pos); - return -EINVAL; - } - size = *pos + count; if (size > XATTR_SIZE_MAX) { size = XATTR_SIZE_MAX; - count = XATTR_SIZE_MAX - *pos; + count = (*pos + count) - XATTR_SIZE_MAX; } v_len = ksmbd_vfs_getcasexattr(idmap, @@ -448,6 +443,13 @@ static int ksmbd_vfs_stream_write(struct ksmbd_file *fp, char *buf, loff_t *pos, goto out; } + if (v_len <= *pos) { + pr_err("stream write position %lld is out of bounds (stream length: %zd)\n", + *pos, v_len); + err = -EINVAL; + goto out; + } + if (v_len < size) { wbuf = kvzalloc(size, GFP_KERNEL); if (!wbuf) { -- Gitee From 2f842714c136b007c97470361e2402361d3d8431 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:35 +0800 Subject: [PATCH 1275/1421] Revert "Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection"" This reverts commit c1a430637dcacece73aee7bd0aee204128c3b94b. --- .../dts/allwinner/sun50i-h6-beelink-gs1.dts | 38 +++++++++---------- .../dts/allwinner/sun50i-h6-orangepi-3.dts | 14 +++---- .../dts/allwinner/sun50i-h6-orangepi.dtsi | 22 +++++------ 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts index c854c7e31051..381d58cea092 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts @@ -151,12 +151,28 @@ &pio { vcc-pg-supply = <®_aldo1>; }; -&r_i2c { +&r_ir { + linux,rc-map-name = "rc-beelink-gs1"; + status = "okay"; +}; + +&r_pio { + /* + * FIXME: We can't add that supply for now since it would + * create a circular dependency between pinctrl, the regulator + * and the RSB Bus. + * + * vcc-pl-supply = <®_aldo1>; + */ + vcc-pm-supply = <®_aldo1>; +}; + +&r_rsb { status = "okay"; - axp805: pmic@36 { + axp805: pmic@745 { compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; + reg = <0x745>; interrupt-parent = <&r_intc>; interrupts = ; interrupt-controller; @@ -274,22 +290,6 @@ sw { }; }; -&r_ir { - linux,rc-map-name = "rc-beelink-gs1"; - status = "okay"; -}; - -&r_pio { - /* - * PL0 and PL1 are used for PMIC I2C - * don't enable the pl-supply else - * it will fail at boot - * - * vcc-pl-supply = <®_aldo1>; - */ - vcc-pm-supply = <®_aldo1>; -}; - &spdif { pinctrl-names = "default"; pinctrl-0 = <&spdif_tx_pin>; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts index 8c476e089185..6fc65e8db220 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts @@ -175,12 +175,16 @@ &pio { vcc-pg-supply = <®_vcc_wifi_io>; }; -&r_i2c { +&r_ir { + status = "okay"; +}; + +&r_rsb { status = "okay"; - axp805: pmic@36 { + axp805: pmic@745 { compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; + reg = <0x745>; interrupt-parent = <&r_intc>; interrupts = ; interrupt-controller; @@ -291,10 +295,6 @@ sw { }; }; -&r_ir { - status = "okay"; -}; - &rtc { clocks = <&ext_osc32k>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi index 4ec4996592be..92745128fcfe 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi @@ -112,12 +112,20 @@ &pio { vcc-pg-supply = <®_aldo1>; }; -&r_i2c { +&r_ir { + status = "okay"; +}; + +&r_pio { + vcc-pm-supply = <®_bldo3>; +}; + +&r_rsb { status = "okay"; - axp805: pmic@36 { + axp805: pmic@745 { compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; + reg = <0x745>; interrupt-parent = <&r_intc>; interrupts = ; interrupt-controller; @@ -232,14 +240,6 @@ sw { }; }; -&r_ir { - status = "okay"; -}; - -&r_pio { - vcc-pm-supply = <®_bldo3>; -}; - &rtc { clocks = <&ext_osc32k>; }; -- Gitee From 2c82c15a0cfd8f8fc20a59a320cdaa06c2712e86 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:35 +0800 Subject: [PATCH 1276/1421] Revert "mm/page_alloc.c: avoid infinite retries caused by cpuset race" This reverts commit 4334765ac891282101ec576d727fcb0ddbabb7d6. --- mm/page_alloc.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e9357c1a5443..d7ad5b972c8b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4079,14 +4079,6 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, } retry: - /* - * Deal with possible cpuset update races or zonelist updates to avoid - * infinite retries. - */ - if (check_retry_cpuset(cpuset_mems_cookie, ac) || - check_retry_zonelist(zonelist_iter_cookie)) - goto restart; - /* Ensure kswapd doesn't accidentally go to sleep as long as we loop */ if (alloc_flags & ALLOC_KSWAPD) wake_all_kswapds(order, gfp_mask, ac); -- Gitee From 8a206875c7a7232b5b378d1b9b022b9ba109c9a6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:36 +0800 Subject: [PATCH 1277/1421] Revert "memcg: always call cond_resched() after fn()" This reverts commit 68305c028f754476e420698aa4e965d5291bb79d. --- mm/memcontrol.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index b0872c08069f..31dd770767e9 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1291,6 +1291,7 @@ void mem_cgroup_scan_tasks(struct mem_cgroup *memcg, { struct mem_cgroup *iter; int ret = 0; + int i = 0; BUG_ON(mem_cgroup_is_root(memcg)); @@ -1300,9 +1301,10 @@ void mem_cgroup_scan_tasks(struct mem_cgroup *memcg, css_task_iter_start(&iter->css, CSS_TASK_ITER_PROCS, &it); while (!ret && (task = css_task_iter_next(&it))) { - ret = fn(task, arg); /* Avoid potential softlockup warning */ - cond_resched(); + if ((++i & 1023) == 0) + cond_resched(); + ret = fn(task, arg); } css_task_iter_end(&it); if (ret) { -- Gitee From 53c789520e46ccb33f50df756775b8f048681609 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:36 +0800 Subject: [PATCH 1278/1421] Revert "Input: xpad - add more controllers" This reverts commit b51911a12918c61b43df027f50bf63c910a3ae93. --- drivers/input/joystick/xpad.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index e6fed973ea74..c65321964131 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -289,8 +289,6 @@ static const struct xpad_device { { 0x1038, 0x1430, "SteelSeries Stratus Duo", 0, XTYPE_XBOX360 }, { 0x1038, 0x1431, "SteelSeries Stratus Duo", 0, XTYPE_XBOX360 }, { 0x10f5, 0x7005, "Turtle Beach Recon Controller", 0, XTYPE_XBOXONE }, - { 0x10f5, 0x7008, "Turtle Beach Recon Controller", MAP_SHARE_BUTTON, XTYPE_XBOXONE }, - { 0x10f5, 0x7073, "Turtle Beach Stealth Ultra Controller", MAP_SHARE_BUTTON, XTYPE_XBOXONE }, { 0x11c9, 0x55f0, "Nacon GC-100XF", 0, XTYPE_XBOX360 }, { 0x11ff, 0x0511, "PXN V900", 0, XTYPE_XBOX360 }, { 0x1209, 0x2882, "Ardwiino Controller", 0, XTYPE_XBOX360 }, @@ -355,7 +353,6 @@ static const struct xpad_device { { 0x1ee9, 0x1590, "ZOTAC Gaming Zone", 0, XTYPE_XBOX360 }, { 0x20d6, 0x2001, "BDA Xbox Series X Wired Controller", 0, XTYPE_XBOXONE }, { 0x20d6, 0x2009, "PowerA Enhanced Wired Controller for Xbox Series X|S", 0, XTYPE_XBOXONE }, - { 0x20d6, 0x2064, "PowerA Wired Controller for Xbox", MAP_SHARE_BUTTON, XTYPE_XBOXONE }, { 0x20d6, 0x281f, "PowerA Wired Controller For Xbox 360", 0, XTYPE_XBOX360 }, { 0x24c6, 0x5000, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5300, "PowerA MINI PROEX Controller", 0, XTYPE_XBOX360 }, -- Gitee From 920d900797ea9ab9097aea162e8f6a91e1850b81 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:36 +0800 Subject: [PATCH 1279/1421] Revert "Revert "drm/amd: Keep display off while going into S4"" This reverts commit dab70dca4079a49fe1b904af5d5436815276bca7. --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 9189864c236a..be17aebf9b34 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -2896,6 +2896,11 @@ static int dm_resume(void *handle) return 0; } + + /* leave display off for S4 sequence */ + if (adev->in_s4) + return 0; + /* Recreate dc_state - DC invalidates it when setting power state to S3. */ dc_release_state(dm_state->context); dm_state->context = dc_create_state(dm->dc); -- Gitee From bc3c42ad08dd44166a5bf1c630cb137081275e5b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:36 +0800 Subject: [PATCH 1280/1421] Revert "smb: client: Reset all search buffer pointers when releasing buffer" This reverts commit a43568d247b88d6dea3541337532cbe73e46d115. --- fs/smb/client/readdir.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c index e616be8196de..8a7c34158d8a 100644 --- a/fs/smb/client/readdir.c +++ b/fs/smb/client/readdir.c @@ -733,10 +733,7 @@ find_cifs_entry(const unsigned int xid, struct cifs_tcon *tcon, loff_t pos, else cifs_buf_release(cfile->srch_inf. ntwrk_buf_start); - /* Reset all pointers to the network buffer to prevent stale references */ cfile->srch_inf.ntwrk_buf_start = NULL; - cfile->srch_inf.srch_entries_start = NULL; - cfile->srch_inf.last_entry = NULL; } rc = initiate_cifs_search(xid, file, full_path); if (rc) { -- Gitee From b69dd7e81e56c71d5fa87e9cf6adde37a24bf23e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:37 +0800 Subject: [PATCH 1281/1421] Revert "arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs" This reverts commit 6dd418216a33e08a76054e53fbcf8b4d44953bb7. --- arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi b/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi index 37244e8816d9..3f79923376fb 100644 --- a/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi @@ -26,8 +26,6 @@ memory@0 { leds { compatible = "gpio-leds"; - pinctrl-names = "default"; - pinctrl-0 = <&spi_quad_pins>; led-power1 { label = "udpu:green:power"; @@ -84,6 +82,8 @@ &sdhci0 { &spi0 { status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&spi_quad_pins>; flash@0 { compatible = "jedec,spi-nor"; @@ -108,10 +108,6 @@ partition@180000 { }; }; -&spi_quad_pins { - function = "gpio"; -}; - &pinctrl_nb { i2c2_recovery_pins: i2c2-recovery-pins { groups = "i2c2"; -- Gitee From 768ee2746484d91f6020e87627399fddbd96d184 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:37 +0800 Subject: [PATCH 1282/1421] Revert "smb: client: Fix use-after-free in cifs_fill_dirent" This reverts commit e570908c4d1fc8ac336041975fc91d1d0ce01d18. --- fs/smb/client/readdir.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c index 8a7c34158d8a..75929a0a56f9 100644 --- a/fs/smb/client/readdir.c +++ b/fs/smb/client/readdir.c @@ -756,11 +756,11 @@ find_cifs_entry(const unsigned int xid, struct cifs_tcon *tcon, loff_t pos, rc = server->ops->query_dir_next(xid, tcon, &cfile->fid, search_flags, &cfile->srch_inf); - if (rc) - return -ENOENT; /* FindFirst/Next set last_entry to NULL on malformed reply */ if (cfile->srch_inf.last_entry) cifs_save_resume_key(cfile->srch_inf.last_entry, cfile); + if (rc) + return -ENOENT; } if (index_to_find < cfile->srch_inf.index_of_last_entry) { /* we found the buffer that contains the entry */ -- Gitee From ec0205dc94a4ba25293c84559e269cef1dc840b2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:37 +0800 Subject: [PATCH 1283/1421] Revert "drm/edid: fixed the bug that hdr metadata was not reset" This reverts commit a35b41f3696fc91b43e46dd1ee46f47517565764. --- drivers/gpu/drm/drm_edid.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index c6e6e4766c8b..ad872c61aac0 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6471,7 +6471,6 @@ static void drm_reset_display_info(struct drm_connector *connector) info->has_hdmi_infoframe = false; info->rgb_quant_range_selectable = false; memset(&info->hdmi, 0, sizeof(info->hdmi)); - memset(&connector->hdr_sink_metadata, 0, sizeof(connector->hdr_sink_metadata)); info->edid_hdmi_rgb444_dc_modes = 0; info->edid_hdmi_ycbcr444_dc_modes = 0; -- Gitee From 7be339def5045c161cf7ae58daf5a3061b4882e8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:37 +0800 Subject: [PATCH 1284/1421] Revert "thermal: intel: x86_pkg_temp_thermal: Fix bogus trip temperature" This reverts commit 6ecc67b696bdbeffae378851c4570b84ca447a64. --- drivers/thermal/intel/x86_pkg_temp_thermal.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/thermal/intel/x86_pkg_temp_thermal.c b/drivers/thermal/intel/x86_pkg_temp_thermal.c index 2e06b26be4ef..61c3d450ee60 100644 --- a/drivers/thermal/intel/x86_pkg_temp_thermal.c +++ b/drivers/thermal/intel/x86_pkg_temp_thermal.c @@ -331,7 +331,6 @@ static int pkg_temp_thermal_device_add(unsigned int cpu) tj_max = intel_tcc_get_tjmax(cpu); if (tj_max < 0) return tj_max; - tj_max *= 1000; zonedev = kzalloc(sizeof(*zonedev), GFP_KERNEL); if (!zonedev) -- Gitee From 7168eda709bdbd8b8cfbaff891b18459af52171a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:38 +0800 Subject: [PATCH 1285/1421] Revert "platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store()" This reverts commit 2c4d8e07c2f291fc2a6efcade41673957dec5449. --- drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c index d8f1bf5e58a0..230e6ee96636 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c @@ -45,7 +45,7 @@ static ssize_t current_password_store(struct kobject *kobj, int length; length = strlen(buf); - if (length && buf[length - 1] == '\n') + if (buf[length-1] == '\n') length--; /* firmware does verifiation of min/max password length, -- Gitee From d2def2b70e57cc98c64587a97d59b39f74ffb7ab Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:38 +0800 Subject: [PATCH 1286/1421] Revert "can: kvaser_pciefd: Continue parsing DMA buf after dropped RX" This reverts commit fd05c579b6dca95a73f39b3ab997c038a5884637. --- drivers/net/can/kvaser_pciefd.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/can/kvaser_pciefd.c b/drivers/net/can/kvaser_pciefd.c index 6dae3fd35395..c490b4ba065b 100644 --- a/drivers/net/can/kvaser_pciefd.c +++ b/drivers/net/can/kvaser_pciefd.c @@ -1137,7 +1137,7 @@ static int kvaser_pciefd_handle_data_packet(struct kvaser_pciefd *pcie, skb = alloc_canfd_skb(priv->dev, &cf); if (!skb) { priv->dev->stats.rx_dropped++; - return 0; + return -ENOMEM; } cf->len = can_fd_dlc2len(dlc); @@ -1149,7 +1149,7 @@ static int kvaser_pciefd_handle_data_packet(struct kvaser_pciefd *pcie, skb = alloc_can_skb(priv->dev, (struct can_frame **)&cf); if (!skb) { priv->dev->stats.rx_dropped++; - return 0; + return -ENOMEM; } can_frame_set_cc_len((struct can_frame *)cf, dlc, priv->ctrlmode); } @@ -1167,9 +1167,7 @@ static int kvaser_pciefd_handle_data_packet(struct kvaser_pciefd *pcie, priv->dev->stats.rx_packets++; kvaser_pciefd_set_skb_timestamp(pcie, skb, p->timestamp); - netif_rx(skb); - - return 0; + return netif_rx(skb); } static void kvaser_pciefd_change_state(struct kvaser_pciefd_can *can, -- Gitee From 69b181979d548e0da0f836ae86771f906e81882e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:38 +0800 Subject: [PATCH 1287/1421] Revert "llc: fix data loss when reading from a socket in llc_ui_recvmsg()" This reverts commit 7e1e2681231a542ce6e10ef0649c65f279203b16. --- net/llc/af_llc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index 19f3de3c24ef..cc25fec44f85 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c @@ -888,15 +888,15 @@ static int llc_ui_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, if (sk->sk_type != SOCK_STREAM) goto copy_uaddr; - /* Partial read */ - if (used + offset < skb_len) - continue; - if (!(flags & MSG_PEEK)) { skb_unlink(skb, &sk->sk_receive_queue); kfree_skb(skb); *seq = 0; } + + /* Partial read */ + if (used + offset < skb_len) + continue; } while (len > 0); out: -- Gitee From 7452298c85e6bc1573fa9ba366c9934949071bc1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:38 +0800 Subject: [PATCH 1288/1421] Revert "ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14ASP10" This reverts commit 55cb6801e1d88e11ad411ee511524cdc246a3909. --- sound/pci/hda/patch_realtek.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 440b934cdc28..77e9c7a928ef 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -10574,7 +10574,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x17aa, 0x38f9, "Thinkbook 16P Gen5", ALC287_FIXUP_CS35L41_I2C_2), SND_PCI_QUIRK(0x17aa, 0x38fa, "Thinkbook 16P Gen5", ALC287_FIXUP_CS35L41_I2C_2), SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), - SND_PCI_QUIRK(0x17aa, 0x390d, "Lenovo Yoga Pro 7 14ASP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN), SND_PCI_QUIRK(0x17aa, 0x3913, "Lenovo 145", ALC236_FIXUP_LENOVO_INV_DMIC), SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI), -- Gitee From f99b6e109e38ea1145f489606d482c822f87c6b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:39 +0800 Subject: [PATCH 1289/1421] Revert "ALSA: pcm: Fix race of buffer access at PCM OSS layer" This reverts commit f8cd58b9ad092eee6847ce64bbefaeae22ee18ce. --- include/sound/pcm.h | 2 -- sound/core/oss/pcm_oss.c | 3 ++- sound/core/pcm_native.c | 11 ----------- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/include/sound/pcm.h b/include/sound/pcm.h index ed4449cbdf80..2a815373dac1 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h @@ -1427,8 +1427,6 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct vm_area_s #define snd_pcm_lib_mmap_iomem NULL #endif -void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime); - /** * snd_pcm_limit_isa_dma_size - Get the max size fitting with ISA DMA transfer * @dma: DMA number diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c index 471de2d1b37a..728c211142d1 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c @@ -1085,7 +1085,8 @@ static int snd_pcm_oss_change_params_locked(struct snd_pcm_substream *substream) runtime->oss.params = 0; runtime->oss.prepare = 1; runtime->oss.buffer_used = 0; - snd_pcm_runtime_buffer_set_silence(runtime); + if (runtime->dma_area) + snd_pcm_format_set_silence(runtime->format, runtime->dma_area, bytes_to_samples(runtime, runtime->dma_bytes)); runtime->oss.period_frames = snd_pcm_alsa_frames(substream, oss_period_size); diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 31fc20350fd9..e40de64ec85c 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -703,17 +703,6 @@ static void snd_pcm_buffer_access_unlock(struct snd_pcm_runtime *runtime) atomic_inc(&runtime->buffer_accessing); } -/* fill the PCM buffer with the current silence format; called from pcm_oss.c */ -void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime) -{ - snd_pcm_buffer_access_lock(runtime); - if (runtime->dma_area) - snd_pcm_format_set_silence(runtime->format, runtime->dma_area, - bytes_to_samples(runtime, runtime->dma_bytes)); - snd_pcm_buffer_access_unlock(runtime); -} -EXPORT_SYMBOL_GPL(snd_pcm_runtime_buffer_set_silence); - #if IS_ENABLED(CONFIG_SND_PCM_OSS) #define is_oss_stream(substream) ((substream)->oss.oss) #else -- Gitee From d6029e6d68a5cf3565d6a8c39f697261a1671ffc Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:39 +0800 Subject: [PATCH 1290/1421] Revert "ASoC: SOF: ipc4-pcm: Delay reporting is only supported for playback direction" This reverts commit 0e022b5ada8974acaee8849ed637de65181f6ae7. --- sound/soc/sof/ipc4-pcm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sound/soc/sof/ipc4-pcm.c b/sound/soc/sof/ipc4-pcm.c index bb5df0d214e3..e8acf60c27a7 100644 --- a/sound/soc/sof/ipc4-pcm.c +++ b/sound/soc/sof/ipc4-pcm.c @@ -621,8 +621,7 @@ static int sof_ipc4_pcm_setup(struct snd_sof_dev *sdev, struct snd_sof_pcm *spcm return -ENOMEM; } - /* Delay reporting is only supported on playback */ - if (!support_info || stream == SNDRV_PCM_STREAM_CAPTURE) + if (!support_info) continue; stream_info = kzalloc(sizeof(*stream_info), GFP_KERNEL); -- Gitee From 91f39f6d5402f0b2b861e9b9eda5f49f053a0012 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:39 +0800 Subject: [PATCH 1291/1421] Revert "ASoc: SOF: topology: connect DAI to a single DAI link" This reverts commit eb2b08b8e0baef6002172b65e34701be1f5f27f2. --- sound/soc/sof/topology.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c index c18a1fdd40ee..7afded323150 100644 --- a/sound/soc/sof/topology.c +++ b/sound/soc/sof/topology.c @@ -1057,7 +1057,7 @@ static int sof_connect_dai_widget(struct snd_soc_component *scomp, struct snd_sof_dai *dai) { struct snd_soc_card *card = scomp->card; - struct snd_soc_pcm_runtime *rtd, *full, *partial; + struct snd_soc_pcm_runtime *rtd; struct snd_soc_dai *cpu_dai; int stream; int i; @@ -1074,22 +1074,12 @@ static int sof_connect_dai_widget(struct snd_soc_component *scomp, else goto end; - full = NULL; - partial = NULL; list_for_each_entry(rtd, &card->rtd_list, list) { /* does stream match DAI link ? */ - if (rtd->dai_link->stream_name) { - if (!strcmp(rtd->dai_link->stream_name, w->sname)) { - full = rtd; - break; - } else if (strstr(rtd->dai_link->stream_name, w->sname)) { - partial = rtd; - } - } - } + if (!rtd->dai_link->stream_name || + !strstr(rtd->dai_link->stream_name, w->sname)) + continue; - rtd = full ? full : partial; - if (rtd) { for_each_rtd_cpu_dais(rtd, i, cpu_dai) { /* * Please create DAI widget in the right order -- Gitee From fdc992196fbc1a5cb89c4dd933bbc5ad51849e2c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:39 +0800 Subject: [PATCH 1292/1421] Revert "ASoC: SOF: ipc4-control: Use SOF_CTRL_CMD_BINARY as numid for bytes_ext" This reverts commit e56b1f54f918b16086c21a885d4f67bd4b011ec2. --- sound/soc/sof/ipc4-control.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/sound/soc/sof/ipc4-control.c b/sound/soc/sof/ipc4-control.c index 84145209dec4..b4cdcec33e12 100644 --- a/sound/soc/sof/ipc4-control.c +++ b/sound/soc/sof/ipc4-control.c @@ -483,14 +483,6 @@ static int sof_ipc4_bytes_ext_put(struct snd_sof_control *scontrol, return -EINVAL; } - /* Check header id */ - if (header.numid != SOF_CTRL_CMD_BINARY) { - dev_err_ratelimited(scomp->dev, - "Incorrect numid for bytes put %d\n", - header.numid); - return -EINVAL; - } - /* Verify the ABI header first */ if (copy_from_user(&abi_hdr, tlvd->tlv, sizeof(abi_hdr))) return -EFAULT; @@ -573,8 +565,7 @@ static int _sof_ipc4_bytes_ext_get(struct snd_sof_control *scontrol, if (data_size > size) return -ENOSPC; - /* Set header id and length */ - header.numid = SOF_CTRL_CMD_BINARY; + header.numid = scontrol->comp_id; header.length = data_size; if (copy_to_user(tlvd, &header, sizeof(struct snd_ctl_tlv))) -- Gitee From c7141bcc67077490314013672d90f2c3568fb03c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:40 +0800 Subject: [PATCH 1293/1421] Revert "can: bcm: add missing rcu read protection for procfs content" This reverts commit 81c909378548f255a95b44b839480c6a303fea41. --- net/can/bcm.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/net/can/bcm.c b/net/can/bcm.c index 75653584f31b..f0be2a0f8519 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -207,9 +207,7 @@ static int bcm_proc_show(struct seq_file *m, void *v) seq_printf(m, " / bound %s", bcm_proc_getifname(net, ifname, bo->ifindex)); seq_printf(m, " <<<\n"); - rcu_read_lock(); - - list_for_each_entry_rcu(op, &bo->rx_ops, list) { + list_for_each_entry(op, &bo->rx_ops, list) { unsigned long reduction; @@ -265,9 +263,6 @@ static int bcm_proc_show(struct seq_file *m, void *v) seq_printf(m, "# sent %ld\n", op->frames_abs); } seq_putc(m, '\n'); - - rcu_read_unlock(); - return 0; } #endif /* CONFIG_PROC_FS */ @@ -821,7 +816,7 @@ static int bcm_delete_rx_op(struct list_head *ops, struct bcm_msg_head *mh, REGMASK(op->can_id), bcm_rx_handler, op); - list_del_rcu(&op->list); + list_del(&op->list); bcm_remove_op(op); return 1; /* done */ } @@ -841,7 +836,7 @@ static int bcm_delete_tx_op(struct list_head *ops, struct bcm_msg_head *mh, list_for_each_entry_safe(op, n, ops, list) { if ((op->can_id == mh->can_id) && (op->ifindex == ifindex) && (op->flags & CAN_FD_FRAME) == (mh->flags & CAN_FD_FRAME)) { - list_del_rcu(&op->list); + list_del(&op->list); bcm_remove_op(op); return 1; /* done */ } @@ -1263,7 +1258,7 @@ static int bcm_rx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, bcm_rx_handler, op, "bcm", sk); if (err) { /* this bcm rx op is broken -> remove it */ - list_del_rcu(&op->list); + list_del(&op->list); bcm_remove_op(op); return err; } -- Gitee From e8fe3601fb4854719d34be4782d0464ce7c496b1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:40 +0800 Subject: [PATCH 1294/1421] Revert "can: bcm: add locking for bcm_op runtime updates" This reverts commit b31b2e9a159b6affdb31984d334df0409572e190. --- net/can/bcm.c | 66 ++++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 45 deletions(-) diff --git a/net/can/bcm.c b/net/can/bcm.c index f0be2a0f8519..a1f5db0fd5d4 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -58,7 +58,6 @@ #include #include #include -#include #include #include @@ -121,7 +120,6 @@ struct bcm_op { struct canfd_frame last_sframe; struct sock *sk; struct net_device *rx_reg_dev; - spinlock_t bcm_tx_lock; /* protect currframe/count in runtime updates */ }; struct bcm_sock { @@ -275,18 +273,13 @@ static void bcm_can_tx(struct bcm_op *op) { struct sk_buff *skb; struct net_device *dev; - struct canfd_frame *cf; + struct canfd_frame *cf = op->frames + op->cfsiz * op->currframe; int err; /* no target device? => exit */ if (!op->ifindex) return; - /* read currframe under lock protection */ - spin_lock_bh(&op->bcm_tx_lock); - cf = op->frames + op->cfsiz * op->currframe; - spin_unlock_bh(&op->bcm_tx_lock); - dev = dev_get_by_index(sock_net(op->sk), op->ifindex); if (!dev) { /* RFC: should this bcm_op remove itself here? */ @@ -307,10 +300,6 @@ static void bcm_can_tx(struct bcm_op *op) skb->dev = dev; can_skb_set_owner(skb, op->sk); err = can_send(skb, 1); - - /* update currframe and count under lock protection */ - spin_lock_bh(&op->bcm_tx_lock); - if (!err) op->frames_abs++; @@ -319,11 +308,6 @@ static void bcm_can_tx(struct bcm_op *op) /* reached last frame? */ if (op->currframe >= op->nframes) op->currframe = 0; - - if (op->count > 0) - op->count--; - - spin_unlock_bh(&op->bcm_tx_lock); out: dev_put(dev); } @@ -420,7 +404,7 @@ static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer) struct bcm_msg_head msg_head; if (op->kt_ival1 && (op->count > 0)) { - bcm_can_tx(op); + op->count--; if (!op->count && (op->flags & TX_COUNTEVT)) { /* create notification to user */ @@ -435,6 +419,7 @@ static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer) bcm_send_to_user(op, &msg_head, NULL, 0); } + bcm_can_tx(op); } else if (op->kt_ival2) { bcm_can_tx(op); @@ -929,27 +914,6 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, } op->flags = msg_head->flags; - /* only lock for unlikely count/nframes/currframe changes */ - if (op->nframes != msg_head->nframes || - op->flags & TX_RESET_MULTI_IDX || - op->flags & SETTIMER) { - - spin_lock_bh(&op->bcm_tx_lock); - - if (op->nframes != msg_head->nframes || - op->flags & TX_RESET_MULTI_IDX) { - /* potentially update changed nframes */ - op->nframes = msg_head->nframes; - /* restart multiple frame transmission */ - op->currframe = 0; - } - - if (op->flags & SETTIMER) - op->count = msg_head->count; - - spin_unlock_bh(&op->bcm_tx_lock); - } - } else { /* insert new BCM operation for the given can_id */ @@ -957,14 +921,9 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, if (!op) return -ENOMEM; - spin_lock_init(&op->bcm_tx_lock); op->can_id = msg_head->can_id; op->cfsiz = CFSIZ(msg_head->flags); op->flags = msg_head->flags; - op->nframes = msg_head->nframes; - - if (op->flags & SETTIMER) - op->count = msg_head->count; /* create array for CAN frames and copy the data */ if (msg_head->nframes > 1) { @@ -1023,8 +982,22 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, } /* if ((op = bcm_find_op(&bo->tx_ops, msg_head->can_id, ifindex))) */ + if (op->nframes != msg_head->nframes) { + op->nframes = msg_head->nframes; + /* start multiple frame transmission with index 0 */ + op->currframe = 0; + } + + /* check flags */ + + if (op->flags & TX_RESET_MULTI_IDX) { + /* start multiple frame transmission with index 0 */ + op->currframe = 0; + } + if (op->flags & SETTIMER) { /* set timer values */ + op->count = msg_head->count; op->ival1 = msg_head->ival1; op->ival2 = msg_head->ival2; op->kt_ival1 = bcm_timeval_to_ktime(msg_head->ival1); @@ -1041,8 +1014,11 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, op->flags |= TX_ANNOUNCE; } - if (op->flags & TX_ANNOUNCE) + if (op->flags & TX_ANNOUNCE) { bcm_can_tx(op); + if (op->count) + op->count--; + } if (op->flags & STARTTIMER) bcm_tx_start_timer(op); -- Gitee From b07102c0a67e1e46aeb01fe0ef4727effea02f34 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:40 +0800 Subject: [PATCH 1295/1421] Revert "can: slcan: allow reception of short error messages" This reverts commit 41954b7c6c9cfc0e9bd36ceb1072608a1c46c732. --- drivers/net/can/slcan/slcan-core.c | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slcan-core.c index 58ff2ec1d975..24c6622d36bd 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -71,21 +71,12 @@ MODULE_AUTHOR("Dario Binacchi "); #define SLCAN_CMD_LEN 1 #define SLCAN_SFF_ID_LEN 3 #define SLCAN_EFF_ID_LEN 8 -#define SLCAN_DATA_LENGTH_LEN 1 -#define SLCAN_ERROR_LEN 1 #define SLCAN_STATE_LEN 1 #define SLCAN_STATE_BE_RXCNT_LEN 3 #define SLCAN_STATE_BE_TXCNT_LEN 3 -#define SLCAN_STATE_MSG_LEN (SLCAN_CMD_LEN + \ - SLCAN_STATE_LEN + \ - SLCAN_STATE_BE_RXCNT_LEN + \ - SLCAN_STATE_BE_TXCNT_LEN) -#define SLCAN_ERROR_MSG_LEN_MIN (SLCAN_CMD_LEN + \ - SLCAN_ERROR_LEN + \ - SLCAN_DATA_LENGTH_LEN) -#define SLCAN_FRAME_MSG_LEN_MIN (SLCAN_CMD_LEN + \ - SLCAN_SFF_ID_LEN + \ - SLCAN_DATA_LENGTH_LEN) +#define SLCAN_STATE_FRAME_LEN (1 + SLCAN_CMD_LEN + \ + SLCAN_STATE_BE_RXCNT_LEN + \ + SLCAN_STATE_BE_TXCNT_LEN) struct slcan { struct can_priv can; @@ -185,9 +176,6 @@ static void slcan_bump_frame(struct slcan *sl) u32 tmpid; char *cmd = sl->rbuff; - if (sl->rcount < SLCAN_FRAME_MSG_LEN_MIN) - return; - skb = alloc_can_skb(sl->dev, &cf); if (unlikely(!skb)) { sl->dev->stats.rx_dropped++; @@ -293,7 +281,7 @@ static void slcan_bump_state(struct slcan *sl) return; } - if (state == sl->can.state || sl->rcount != SLCAN_STATE_MSG_LEN) + if (state == sl->can.state || sl->rcount < SLCAN_STATE_FRAME_LEN) return; cmd += SLCAN_STATE_BE_RXCNT_LEN + SLCAN_CMD_LEN + 1; @@ -340,9 +328,6 @@ static void slcan_bump_err(struct slcan *sl) bool rx_errors = false, tx_errors = false, rx_over_errors = false; int i, len; - if (sl->rcount < SLCAN_ERROR_MSG_LEN_MIN) - return; - /* get len from sanitized ASCII value */ len = cmd[1]; if (len >= '0' && len < '9') @@ -471,7 +456,8 @@ static void slcan_bump(struct slcan *sl) static void slcan_unesc(struct slcan *sl, unsigned char s) { if ((s == '\r') || (s == '\a')) { /* CR or BEL ends the pdu */ - if (!test_and_clear_bit(SLF_ERROR, &sl->flags)) + if (!test_and_clear_bit(SLF_ERROR, &sl->flags) && + sl->rcount > 4) slcan_bump(sl); sl->rcount = 0; -- Gitee From 7d0802d069f5b599610efda9f9188e985b3dbd29 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:40 +0800 Subject: [PATCH 1296/1421] Revert "padata: do not leak refcount in reorder_work" This reverts commit 82b6cad2413af50ab5b7f467c6e21e05c81b2609. --- kernel/padata.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/padata.c b/kernel/padata.c index 93cd7704ab63..071d8cad8078 100644 --- a/kernel/padata.c +++ b/kernel/padata.c @@ -358,8 +358,7 @@ static void padata_reorder(struct parallel_data *pd) * To avoid UAF issue, add pd ref here, and put pd ref after reorder_work finish. */ padata_get_pd(pd); - if (!queue_work(pinst->serial_wq, &pd->reorder_work)) - padata_put_pd(pd); + queue_work(pinst->serial_wq, &pd->reorder_work); } } -- Gitee From 22ce46a571e7231b0acb3e4b8c5c3259fd6db6a3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:40 +0800 Subject: [PATCH 1297/1421] Revert "clk: s2mps11: initialise clk_hw_onecell_data::num before accessing ::hws[] in probe()" This reverts commit 0eb0473aefde663b9523def1c08a1bb2b86ec29b. --- drivers/clk/clk-s2mps11.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c index 337144570faf..38c456540d1b 100644 --- a/drivers/clk/clk-s2mps11.c +++ b/drivers/clk/clk-s2mps11.c @@ -137,8 +137,6 @@ static int s2mps11_clk_probe(struct platform_device *pdev) if (!clk_data) return -ENOMEM; - clk_data->num = S2MPS11_CLKS_NUM; - switch (hwid) { case S2MPS11X: s2mps11_reg = S2MPS11_REG_RTC_CTRL; @@ -188,6 +186,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev) clk_data->hws[i] = &s2mps11_clks[i].hw; } + clk_data->num = S2MPS11_CLKS_NUM; of_clk_add_hw_provider(s2mps11_clks->clk_np, of_clk_hw_onecell_get, clk_data); -- Gitee From 3bf60c9e343746beda12253dfd09b0ea5a513560 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:41 +0800 Subject: [PATCH 1298/1421] Revert "octeontx2-af: Fix APR entry mapping based on APR_LMT_CFG" This reverts commit 3ccb86b1c9a4eade28226a6912c0b4a646ba5b97. --- drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c | 9 +++------ .../net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 11 +++-------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c index 1e4cd4f7d0cf..de91053ad5a3 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c @@ -13,6 +13,7 @@ /* RVU LMTST */ #define LMT_TBL_OP_READ 0 #define LMT_TBL_OP_WRITE 1 +#define LMT_MAP_TABLE_SIZE (128 * 1024) #define LMT_MAPTBL_ENTRY_SIZE 16 #define LMT_MAX_VFS 256 @@ -25,14 +26,10 @@ static int lmtst_map_table_ops(struct rvu *rvu, u32 index, u64 *val, { void __iomem *lmt_map_base; u64 tbl_base, cfg; - int pfs, vfs; tbl_base = rvu_read64(rvu, BLKADDR_APR, APR_AF_LMT_MAP_BASE); - cfg = rvu_read64(rvu, BLKADDR_APR, APR_AF_LMT_CFG); - vfs = 1 << (cfg & 0xF); - pfs = 1 << ((cfg >> 4) & 0x7); - lmt_map_base = ioremap_wc(tbl_base, pfs * vfs * LMT_MAPTBL_ENTRY_SIZE); + lmt_map_base = ioremap_wc(tbl_base, LMT_MAP_TABLE_SIZE); if (!lmt_map_base) { dev_err(rvu->dev, "Failed to setup lmt map table mapping!!\n"); return -ENOMEM; @@ -83,7 +80,7 @@ static int rvu_get_lmtaddr(struct rvu *rvu, u16 pcifunc, mutex_lock(&rvu->rsrc_lock); rvu_write64(rvu, BLKADDR_RVUM, RVU_AF_SMMU_ADDR_REQ, iova); - pf = rvu_get_pf(pcifunc) & RVU_PFVF_PF_MASK; + pf = rvu_get_pf(pcifunc) & 0x1F; val = BIT_ULL(63) | BIT_ULL(14) | BIT_ULL(13) | pf << 8 | ((pcifunc & RVU_PFVF_FUNC_MASK) & 0xFF); rvu_write64(rvu, BLKADDR_RVUM, RVU_AF_SMMU_TXN_REQ, val); diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c index 56dab11833b5..feca86e429df 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c @@ -580,7 +580,6 @@ static ssize_t rvu_dbg_lmtst_map_table_display(struct file *filp, u64 lmt_addr, val, tbl_base; int pf, vf, num_vfs, hw_vfs; void __iomem *lmt_map_base; - int apr_pfs, apr_vfs; int buf_size = 10240; size_t off = 0; int index = 0; @@ -596,12 +595,8 @@ static ssize_t rvu_dbg_lmtst_map_table_display(struct file *filp, return -ENOMEM; tbl_base = rvu_read64(rvu, BLKADDR_APR, APR_AF_LMT_MAP_BASE); - val = rvu_read64(rvu, BLKADDR_APR, APR_AF_LMT_CFG); - apr_vfs = 1 << (val & 0xF); - apr_pfs = 1 << ((val >> 4) & 0x7); - lmt_map_base = ioremap_wc(tbl_base, apr_pfs * apr_vfs * - LMT_MAPTBL_ENTRY_SIZE); + lmt_map_base = ioremap_wc(tbl_base, 128 * 1024); if (!lmt_map_base) { dev_err(rvu->dev, "Failed to setup lmt map table mapping!!\n"); kfree(buf); @@ -623,7 +618,7 @@ static ssize_t rvu_dbg_lmtst_map_table_display(struct file *filp, off += scnprintf(&buf[off], buf_size - 1 - off, "PF%d \t\t\t", pf); - index = pf * apr_vfs * LMT_MAPTBL_ENTRY_SIZE; + index = pf * rvu->hw->total_vfs * LMT_MAPTBL_ENTRY_SIZE; off += scnprintf(&buf[off], buf_size - 1 - off, " 0x%llx\t\t", (tbl_base + index)); lmt_addr = readq(lmt_map_base + index); @@ -636,7 +631,7 @@ static ssize_t rvu_dbg_lmtst_map_table_display(struct file *filp, /* Reading num of VFs per PF */ rvu_get_pf_numvfs(rvu, pf, &num_vfs, &hw_vfs); for (vf = 0; vf < num_vfs; vf++) { - index = (pf * apr_vfs * LMT_MAPTBL_ENTRY_SIZE) + + index = (pf * rvu->hw->total_vfs * 16) + ((vf + 1) * LMT_MAPTBL_ENTRY_SIZE); off += scnprintf(&buf[off], buf_size - 1 - off, "PF%d:VF%d \t\t", pf, vf); -- Gitee From a0f3c1906433256fd08c0b5994a6f0a00a54b9b5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:41 +0800 Subject: [PATCH 1299/1421] Revert "octeontx2-af: Set LMT_ENA bit for APR table entries" This reverts commit fd4991f20a42bf18aa482e5ba2776f8176add9ed. --- .../net/ethernet/marvell/octeontx2/af/rvu_cn10k.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c index de91053ad5a3..0e74c5a2231e 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c @@ -15,17 +15,13 @@ #define LMT_TBL_OP_WRITE 1 #define LMT_MAP_TABLE_SIZE (128 * 1024) #define LMT_MAPTBL_ENTRY_SIZE 16 -#define LMT_MAX_VFS 256 - -#define LMT_MAP_ENTRY_ENA BIT_ULL(20) -#define LMT_MAP_ENTRY_LINES GENMASK_ULL(18, 16) /* Function to perform operations (read/write) on lmtst map table */ static int lmtst_map_table_ops(struct rvu *rvu, u32 index, u64 *val, int lmt_tbl_op) { void __iomem *lmt_map_base; - u64 tbl_base, cfg; + u64 tbl_base; tbl_base = rvu_read64(rvu, BLKADDR_APR, APR_AF_LMT_MAP_BASE); @@ -39,13 +35,6 @@ static int lmtst_map_table_ops(struct rvu *rvu, u32 index, u64 *val, *val = readq(lmt_map_base + index); } else { writeq((*val), (lmt_map_base + index)); - - cfg = FIELD_PREP(LMT_MAP_ENTRY_ENA, 0x1); - /* 2048 LMTLINES */ - cfg |= FIELD_PREP(LMT_MAP_ENTRY_LINES, 0x6); - - writeq(cfg, (lmt_map_base + (index + 8))); - /* Flushing the AP interceptor cache to make APR_LMT_MAP_ENTRY_S * changes effective. Write 1 for flush and read is being used as a * barrier and sets up a data dependency. Write to 0 after a write @@ -63,7 +52,7 @@ static int lmtst_map_table_ops(struct rvu *rvu, u32 index, u64 *val, #define LMT_MAP_TBL_W1_OFF 8 static u32 rvu_get_lmtst_tbl_index(struct rvu *rvu, u16 pcifunc) { - return ((rvu_get_pf(pcifunc) * LMT_MAX_VFS) + + return ((rvu_get_pf(pcifunc) * rvu->hw->total_vfs) + (pcifunc & RVU_PFVF_FUNC_MASK)) * LMT_MAPTBL_ENTRY_SIZE; } -- Gitee From df8cad579c49539bd79a7bceaf0f2bfee5b54028 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:41 +0800 Subject: [PATCH 1300/1421] Revert "net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done" This reverts commit 8a3f5cc49901f7ae79c9e195447bc8b29a589e0f. --- net/tipc/crypto.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c index 8584893b4785..c524421ec652 100644 --- a/net/tipc/crypto.c +++ b/net/tipc/crypto.c @@ -817,16 +817,12 @@ static int tipc_aead_encrypt(struct tipc_aead *aead, struct sk_buff *skb, goto exit; } - /* Get net to avoid freed tipc_crypto when delete namespace */ - get_net(aead->crypto->net); - /* Now, do encrypt */ rc = crypto_aead_encrypt(req); if (rc == -EINPROGRESS || rc == -EBUSY) return rc; tipc_bearer_put(b); - put_net(aead->crypto->net); exit: kfree(ctx); @@ -864,7 +860,6 @@ static void tipc_aead_encrypt_done(void *data, int err) kfree(tx_ctx); tipc_bearer_put(b); tipc_aead_put(aead); - put_net(net); } /** -- Gitee From 2c60521838b8520edfaa68853a4a31da63997aaa Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:41 +0800 Subject: [PATCH 1301/1421] Revert "octeontx2-pf: Add AF_XDP non-zero copy support" This reverts commit fa2b3230b32baf24b7c1041ae3c170507b1ce236. --- drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c index 1999918ca500..47adccf7a777 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c @@ -988,7 +988,6 @@ static int otx2_cq_init(struct otx2_nic *pfvf, u16 qidx) int err, pool_id, non_xdp_queues; struct nix_aq_enq_req *aq; struct otx2_cq_queue *cq; - struct otx2_pool *pool; cq = &qset->cq[qidx]; cq->cq_idx = qidx; @@ -997,13 +996,8 @@ static int otx2_cq_init(struct otx2_nic *pfvf, u16 qidx) cq->cq_type = CQ_RX; cq->cint_idx = qidx; cq->cqe_cnt = qset->rqe_cnt; - if (pfvf->xdp_prog) { - pool = &qset->pool[qidx]; + if (pfvf->xdp_prog) xdp_rxq_info_reg(&cq->xdp_rxq, pfvf->netdev, qidx, 0); - xdp_rxq_info_reg_mem_model(&cq->xdp_rxq, - MEM_TYPE_PAGE_POOL, - pool->page_pool); - } } else if (qidx < non_xdp_queues) { cq->cq_type = CQ_TX; cq->cint_idx = qidx - pfvf->hw.rx_queues; -- Gitee From 8786df6d418fefe0438caeaab42dbcbc30fab601 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:42 +0800 Subject: [PATCH 1302/1421] Revert "sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue()" This reverts commit 5959f10261b5f22d75f2bb9e04bd55087bf7c386. --- net/sched/sch_hfsc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index 1bf4fd698c41..5d9cccfac4a1 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c @@ -1570,9 +1570,6 @@ hfsc_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free) return err; } - sch->qstats.backlog += len; - sch->q.qlen++; - if (first && !cl->cl_nactive) { if (cl->cl_flags & HFSC_RSC) init_ed(cl, len); @@ -1588,6 +1585,9 @@ hfsc_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free) } + sch->qstats.backlog += len; + sch->q.qlen++; + return NET_XMIT_SUCCESS; } -- Gitee From 8f56786d3e96dda10c905b00ef7461fd9bcbe858 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:42 +0800 Subject: [PATCH 1303/1421] Revert "io_uring: fix overflow resched cqe reordering" This reverts commit 0744ce11a88f605280bf4d291165e0a1375b7cce. --- io_uring/io_uring.c | 1 - 1 file changed, 1 deletion(-) diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 43b46098279a..db592fa549b7 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -701,7 +701,6 @@ static void __io_cqring_overflow_flush(struct io_ring_ctx *ctx) * to care for a non-real case. */ if (need_resched()) { - ctx->cqe_sentinel = ctx->cqe_cached; io_cq_unlock_post(ctx); mutex_unlock(&ctx->uring_lock); cond_resched(); -- Gitee From 85233bcb11400e479c6b841b9beaa1a3b153f126 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:42 +0800 Subject: [PATCH 1304/1421] Revert "net: lan743x: Restore SGMII CTRL register on resume" This reverts commit 2fe0a44a0c3f7570c65b058982a4bcf9e57f6d5e. --- drivers/net/ethernet/microchip/lan743x_main.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c index f971d60484f0..5d2ceff72784 100644 --- a/drivers/net/ethernet/microchip/lan743x_main.c +++ b/drivers/net/ethernet/microchip/lan743x_main.c @@ -3259,7 +3259,6 @@ static int lan743x_hardware_init(struct lan743x_adapter *adapter, struct pci_dev *pdev) { struct lan743x_tx *tx; - u32 sgmii_ctl; int index; int ret; @@ -3272,15 +3271,6 @@ static int lan743x_hardware_init(struct lan743x_adapter *adapter, spin_lock_init(&adapter->eth_syslock_spinlock); mutex_init(&adapter->sgmii_rw_lock); pci11x1x_set_rfe_rd_fifo_threshold(adapter); - sgmii_ctl = lan743x_csr_read(adapter, SGMII_CTL); - if (adapter->is_sgmii_en) { - sgmii_ctl |= SGMII_CTL_SGMII_ENABLE_; - sgmii_ctl &= ~SGMII_CTL_SGMII_POWER_DN_; - } else { - sgmii_ctl &= ~SGMII_CTL_SGMII_ENABLE_; - sgmii_ctl |= SGMII_CTL_SGMII_POWER_DN_; - } - lan743x_csr_write(adapter, SGMII_CTL, sgmii_ctl); } else { adapter->max_tx_channels = LAN743X_MAX_TX_CHANNELS; adapter->used_tx_channels = LAN743X_USED_TX_CHANNELS; @@ -3329,6 +3319,7 @@ static int lan743x_hardware_init(struct lan743x_adapter *adapter, static int lan743x_mdiobus_init(struct lan743x_adapter *adapter) { + u32 sgmii_ctl; int ret; adapter->mdiobus = devm_mdiobus_alloc(&adapter->pdev->dev); @@ -3340,6 +3331,10 @@ static int lan743x_mdiobus_init(struct lan743x_adapter *adapter) adapter->mdiobus->priv = (void *)adapter; if (adapter->is_pci11x1x) { if (adapter->is_sgmii_en) { + sgmii_ctl = lan743x_csr_read(adapter, SGMII_CTL); + sgmii_ctl |= SGMII_CTL_SGMII_ENABLE_; + sgmii_ctl &= ~SGMII_CTL_SGMII_POWER_DN_; + lan743x_csr_write(adapter, SGMII_CTL, sgmii_ctl); netif_dbg(adapter, drv, adapter->netdev, "SGMII operation\n"); adapter->mdiobus->read = lan743x_mdiobus_read_c22; @@ -3350,6 +3345,10 @@ static int lan743x_mdiobus_init(struct lan743x_adapter *adapter) netif_dbg(adapter, drv, adapter->netdev, "lan743x-mdiobus-c45\n"); } else { + sgmii_ctl = lan743x_csr_read(adapter, SGMII_CTL); + sgmii_ctl &= ~SGMII_CTL_SGMII_ENABLE_; + sgmii_ctl |= SGMII_CTL_SGMII_POWER_DN_; + lan743x_csr_write(adapter, SGMII_CTL, sgmii_ctl); netif_dbg(adapter, drv, adapter->netdev, "RGMII operation\n"); // Only C22 support when RGMII I/F -- Gitee From 2791dda5adc481060433775821e827146743d6d5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:42 +0800 Subject: [PATCH 1305/1421] Revert "net: dwmac-sun8i: Use parsed internal PHY address instead of 1" This reverts commit d7fff555509f17e42f9f8c0d69de1a0b7e00a491. --- drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c index 9377b05bfc71..63998d65fef8 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c @@ -966,7 +966,7 @@ static int sun8i_dwmac_set_syscon(struct device *dev, /* of_mdio_parse_addr returns a valid (0 ~ 31) PHY * address. No need to mask it again. */ - reg |= ret << H3_EPHY_ADDR_SHIFT; + reg |= 1 << H3_EPHY_ADDR_SHIFT; } else { /* For SoCs without internal PHY the PHY selection bit should be * set to 0 (external PHY). -- Gitee From d41fa52b22f5361c123a7045e40a133cacaa4e72 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:42 +0800 Subject: [PATCH 1306/1421] Revert "pinctrl: qcom: switch to devm_register_sys_off_handler()" This reverts commit b75515d5f9c101abe4b2d3842f022e1b42a41c6f. --- drivers/pinctrl/qcom/pinctrl-msm.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c index ed70767ca0f0..4714d60f9ab9 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c @@ -43,6 +43,7 @@ * @pctrl: pinctrl handle. * @chip: gpiochip handle. * @desc: pin controller descriptor + * @restart_nb: restart notifier block. * @irq: parent irq for the TLMM irq_chip. * @intr_target_use_scm: route irq to application cpu using scm calls * @lock: Spinlock to protect register resources as well @@ -62,6 +63,7 @@ struct msm_pinctrl { struct pinctrl_dev *pctrl; struct gpio_chip chip; struct pinctrl_desc desc; + struct notifier_block restart_nb; int irq; @@ -1422,9 +1424,10 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl) return 0; } -static int msm_ps_hold_restart(struct sys_off_data *data) +static int msm_ps_hold_restart(struct notifier_block *nb, unsigned long action, + void *data) { - struct msm_pinctrl *pctrl = data->cb_data; + struct msm_pinctrl *pctrl = container_of(nb, struct msm_pinctrl, restart_nb); writel(0, pctrl->regs[0] + PS_HOLD_OFFSET); mdelay(1000); @@ -1435,11 +1438,7 @@ static struct msm_pinctrl *poweroff_pctrl; static void msm_ps_hold_poweroff(void) { - struct sys_off_data data = { - .cb_data = poweroff_pctrl, - }; - - msm_ps_hold_restart(&data); + msm_ps_hold_restart(&poweroff_pctrl->restart_nb, 0, NULL); } static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl) @@ -1449,11 +1448,9 @@ static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl) for (i = 0; i < pctrl->soc->nfunctions; i++) if (!strcmp(func[i].name, "ps_hold")) { - if (devm_register_sys_off_handler(pctrl->dev, - SYS_OFF_MODE_RESTART, - 128, - msm_ps_hold_restart, - pctrl)) + pctrl->restart_nb.notifier_call = msm_ps_hold_restart; + pctrl->restart_nb.priority = 128; + if (register_restart_handler(&pctrl->restart_nb)) dev_err(pctrl->dev, "failed to setup restart handler.\n"); poweroff_pctrl = pctrl; @@ -1555,6 +1552,8 @@ void msm_pinctrl_remove(struct platform_device *pdev) struct msm_pinctrl *pctrl = platform_get_drvdata(pdev); gpiochip_remove(&pctrl->chip); + + unregister_restart_handler(&pctrl->restart_nb); } EXPORT_SYMBOL(msm_pinctrl_remove); -- Gitee From d6325d003f391cb7f88be65a6e0212508e77f9e2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:43 +0800 Subject: [PATCH 1307/1421] Revert "pinctrl: qcom/msm: Convert to platform remove callback returning void" This reverts commit a2fd119e4a188ddc658ab7281847b4ccc4207b35. --- drivers/pinctrl/qcom/pinctrl-apq8064.c | 2 +- drivers/pinctrl/qcom/pinctrl-apq8084.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq4019.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq5018.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq5332.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq6018.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq8064.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq8074.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq9574.c | 2 +- drivers/pinctrl/qcom/pinctrl-mdm9607.c | 2 +- drivers/pinctrl/qcom/pinctrl-mdm9615.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm.c | 4 +++- drivers/pinctrl/qcom/pinctrl-msm.h | 2 +- drivers/pinctrl/qcom/pinctrl-msm8226.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8660.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8909.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8916.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8953.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8960.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8976.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8994.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8996.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8998.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8x74.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcm2290.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcs404.c | 2 +- drivers/pinctrl/qcom/pinctrl-qdf2xxx.c | 2 +- drivers/pinctrl/qcom/pinctrl-qdu1000.c | 2 +- drivers/pinctrl/qcom/pinctrl-sa8775p.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc7180.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc7280.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc8180x.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc8280xp.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm660.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm670.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm845.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx55.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx65.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx75.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6115.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6125.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6350.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6375.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm7150.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8150.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8250.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8350.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8450.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8550.c | 2 +- 49 files changed, 51 insertions(+), 49 deletions(-) diff --git a/drivers/pinctrl/qcom/pinctrl-apq8064.c b/drivers/pinctrl/qcom/pinctrl-apq8064.c index a18df4162299..20c3b9025044 100644 --- a/drivers/pinctrl/qcom/pinctrl-apq8064.c +++ b/drivers/pinctrl/qcom/pinctrl-apq8064.c @@ -629,7 +629,7 @@ static struct platform_driver apq8064_pinctrl_driver = { .of_match_table = apq8064_pinctrl_of_match, }, .probe = apq8064_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init apq8064_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-apq8084.c b/drivers/pinctrl/qcom/pinctrl-apq8084.c index afada80e52a2..3fc0a40762b6 100644 --- a/drivers/pinctrl/qcom/pinctrl-apq8084.c +++ b/drivers/pinctrl/qcom/pinctrl-apq8084.c @@ -1207,7 +1207,7 @@ static struct platform_driver apq8084_pinctrl_driver = { .of_match_table = apq8084_pinctrl_of_match, }, .probe = apq8084_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init apq8084_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq4019.c b/drivers/pinctrl/qcom/pinctrl-ipq4019.c index cb13576ad6cf..1f7944dd829d 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq4019.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq4019.c @@ -710,7 +710,7 @@ static struct platform_driver ipq4019_pinctrl_driver = { .of_match_table = ipq4019_pinctrl_of_match, }, .probe = ipq4019_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq4019_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq5018.c b/drivers/pinctrl/qcom/pinctrl-ipq5018.c index 68f65b57003e..e2951f81c3ee 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq5018.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq5018.c @@ -754,7 +754,7 @@ static struct platform_driver ipq5018_pinctrl_driver = { .of_match_table = ipq5018_pinctrl_of_match, }, .probe = ipq5018_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq5018_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq5332.c b/drivers/pinctrl/qcom/pinctrl-ipq5332.c index 882175118970..625f8014051f 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq5332.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq5332.c @@ -834,7 +834,7 @@ static struct platform_driver ipq5332_pinctrl_driver = { .of_match_table = ipq5332_pinctrl_of_match, }, .probe = ipq5332_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq5332_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq6018.c b/drivers/pinctrl/qcom/pinctrl-ipq6018.c index ac330d8712b5..0ad08647dbcd 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq6018.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq6018.c @@ -1080,7 +1080,7 @@ static struct platform_driver ipq6018_pinctrl_driver = { .of_match_table = ipq6018_pinctrl_of_match, }, .probe = ipq6018_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq6018_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq8064.c b/drivers/pinctrl/qcom/pinctrl-ipq8064.c index e10e1bc4c911..e2bb94e86aef 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq8064.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq8064.c @@ -631,7 +631,7 @@ static struct platform_driver ipq8064_pinctrl_driver = { .of_match_table = ipq8064_pinctrl_of_match, }, .probe = ipq8064_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq8064_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq8074.c b/drivers/pinctrl/qcom/pinctrl-ipq8074.c index fee32c1d1d3e..337f3a1c92c1 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq8074.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq8074.c @@ -1041,7 +1041,7 @@ static struct platform_driver ipq8074_pinctrl_driver = { .of_match_table = ipq8074_pinctrl_of_match, }, .probe = ipq8074_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq8074_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-ipq9574.c b/drivers/pinctrl/qcom/pinctrl-ipq9574.c index 20ab59cb621b..e2491617b236 100644 --- a/drivers/pinctrl/qcom/pinctrl-ipq9574.c +++ b/drivers/pinctrl/qcom/pinctrl-ipq9574.c @@ -799,7 +799,7 @@ static struct platform_driver ipq9574_pinctrl_driver = { .of_match_table = ipq9574_pinctrl_of_match, }, .probe = ipq9574_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init ipq9574_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-mdm9607.c b/drivers/pinctrl/qcom/pinctrl-mdm9607.c index 415d24e16267..e7cd3ef1cf3e 100644 --- a/drivers/pinctrl/qcom/pinctrl-mdm9607.c +++ b/drivers/pinctrl/qcom/pinctrl-mdm9607.c @@ -1059,7 +1059,7 @@ static struct platform_driver mdm9607_pinctrl_driver = { .of_match_table = mdm9607_pinctrl_of_match, }, .probe = mdm9607_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init mdm9607_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-mdm9615.c b/drivers/pinctrl/qcom/pinctrl-mdm9615.c index 3f2eafea0b24..0a2ae383d3d5 100644 --- a/drivers/pinctrl/qcom/pinctrl-mdm9615.c +++ b/drivers/pinctrl/qcom/pinctrl-mdm9615.c @@ -446,7 +446,7 @@ static struct platform_driver mdm9615_pinctrl_driver = { .of_match_table = mdm9615_pinctrl_of_match, }, .probe = mdm9615_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init mdm9615_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c index 4714d60f9ab9..b252fc22f64e 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c @@ -1547,13 +1547,15 @@ int msm_pinctrl_probe(struct platform_device *pdev, } EXPORT_SYMBOL(msm_pinctrl_probe); -void msm_pinctrl_remove(struct platform_device *pdev) +int msm_pinctrl_remove(struct platform_device *pdev) { struct msm_pinctrl *pctrl = platform_get_drvdata(pdev); gpiochip_remove(&pctrl->chip); unregister_restart_handler(&pctrl->restart_nb); + + return 0; } EXPORT_SYMBOL(msm_pinctrl_remove); diff --git a/drivers/pinctrl/qcom/pinctrl-msm.h b/drivers/pinctrl/qcom/pinctrl-msm.h index 4968d08a384d..1d2f2e904da1 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.h +++ b/drivers/pinctrl/qcom/pinctrl-msm.h @@ -166,6 +166,6 @@ extern const struct dev_pm_ops msm_pinctrl_dev_pm_ops; int msm_pinctrl_probe(struct platform_device *pdev, const struct msm_pinctrl_soc_data *soc_data); -void msm_pinctrl_remove(struct platform_device *pdev); +int msm_pinctrl_remove(struct platform_device *pdev); #endif diff --git a/drivers/pinctrl/qcom/pinctrl-msm8226.c b/drivers/pinctrl/qcom/pinctrl-msm8226.c index 90b4004e7faf..994619840a70 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8226.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8226.c @@ -638,7 +638,7 @@ static struct platform_driver msm8226_pinctrl_driver = { .of_match_table = msm8226_pinctrl_of_match, }, .probe = msm8226_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8226_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8660.c b/drivers/pinctrl/qcom/pinctrl-msm8660.c index dba6d531b4a1..999a5f867eb5 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8660.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8660.c @@ -981,7 +981,7 @@ static struct platform_driver msm8660_pinctrl_driver = { .of_match_table = msm8660_pinctrl_of_match, }, .probe = msm8660_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8660_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8909.c b/drivers/pinctrl/qcom/pinctrl-msm8909.c index 14b17ba9f906..756856d20d6b 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8909.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8909.c @@ -929,7 +929,7 @@ static struct platform_driver msm8909_pinctrl_driver = { .of_match_table = msm8909_pinctrl_of_match, }, .probe = msm8909_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8909_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8916.c b/drivers/pinctrl/qcom/pinctrl-msm8916.c index 184dcf842273..cea5c54f92fe 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8916.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8916.c @@ -969,7 +969,7 @@ static struct platform_driver msm8916_pinctrl_driver = { .of_match_table = msm8916_pinctrl_of_match, }, .probe = msm8916_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8916_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8953.c b/drivers/pinctrl/qcom/pinctrl-msm8953.c index c2253821ae8d..998351bdfee1 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8953.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8953.c @@ -1816,7 +1816,7 @@ static struct platform_driver msm8953_pinctrl_driver = { .of_match_table = msm8953_pinctrl_of_match, }, .probe = msm8953_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8953_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8960.c b/drivers/pinctrl/qcom/pinctrl-msm8960.c index 6b9148d226e9..ebe230b3b437 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8960.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8960.c @@ -1246,7 +1246,7 @@ static struct platform_driver msm8960_pinctrl_driver = { .of_match_table = msm8960_pinctrl_of_match, }, .probe = msm8960_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8960_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8976.c b/drivers/pinctrl/qcom/pinctrl-msm8976.c index 9a951888e8a1..c30d80e4e98c 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8976.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8976.c @@ -1096,7 +1096,7 @@ static struct platform_driver msm8976_pinctrl_driver = { .of_match_table = msm8976_pinctrl_of_match, }, .probe = msm8976_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8976_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8994.c b/drivers/pinctrl/qcom/pinctrl-msm8994.c index 1ed1dd32d6c7..b1a6759ab4a5 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8994.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8994.c @@ -1343,7 +1343,7 @@ static struct platform_driver msm8994_pinctrl_driver = { .of_match_table = msm8994_pinctrl_of_match, }, .probe = msm8994_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8994_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8996.c b/drivers/pinctrl/qcom/pinctrl-msm8996.c index 5f0e7f78fd51..46cc0b49dbab 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8996.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8996.c @@ -1906,7 +1906,7 @@ static struct platform_driver msm8996_pinctrl_driver = { .of_match_table = msm8996_pinctrl_of_match, }, .probe = msm8996_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8996_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8998.c b/drivers/pinctrl/qcom/pinctrl-msm8998.c index 4aaf45e54f3a..b7cbf32b3125 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8998.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8998.c @@ -1535,7 +1535,7 @@ static struct platform_driver msm8998_pinctrl_driver = { .of_match_table = msm8998_pinctrl_of_match, }, .probe = msm8998_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8998_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-msm8x74.c b/drivers/pinctrl/qcom/pinctrl-msm8x74.c index 58b4f6f31ae6..d5fe62992849 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm8x74.c +++ b/drivers/pinctrl/qcom/pinctrl-msm8x74.c @@ -1071,7 +1071,7 @@ static struct platform_driver msm8x74_pinctrl_driver = { .of_match_table = msm8x74_pinctrl_of_match, }, .probe = msm8x74_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init msm8x74_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-qcm2290.c b/drivers/pinctrl/qcom/pinctrl-qcm2290.c index f5c1c427b44e..ba699eac9ee8 100644 --- a/drivers/pinctrl/qcom/pinctrl-qcm2290.c +++ b/drivers/pinctrl/qcom/pinctrl-qcm2290.c @@ -1113,7 +1113,7 @@ static struct platform_driver qcm2290_pinctrl_driver = { .of_match_table = qcm2290_pinctrl_of_match, }, .probe = qcm2290_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init qcm2290_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-qcs404.c b/drivers/pinctrl/qcom/pinctrl-qcs404.c index 9a875b7dc998..ae7224012f8a 100644 --- a/drivers/pinctrl/qcom/pinctrl-qcs404.c +++ b/drivers/pinctrl/qcom/pinctrl-qcs404.c @@ -1644,7 +1644,7 @@ static struct platform_driver qcs404_pinctrl_driver = { .of_match_table = qcs404_pinctrl_of_match, }, .probe = qcs404_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init qcs404_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-qdf2xxx.c b/drivers/pinctrl/qcom/pinctrl-qdf2xxx.c index 4d2f6f495163..b5808fcfb13c 100644 --- a/drivers/pinctrl/qcom/pinctrl-qdf2xxx.c +++ b/drivers/pinctrl/qcom/pinctrl-qdf2xxx.c @@ -145,7 +145,7 @@ static struct platform_driver qdf2xxx_pinctrl_driver = { .acpi_match_table = qdf2xxx_acpi_ids, }, .probe = qdf2xxx_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init qdf2xxx_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-qdu1000.c b/drivers/pinctrl/qcom/pinctrl-qdu1000.c index da4f940bc8d4..47bc529ef550 100644 --- a/drivers/pinctrl/qcom/pinctrl-qdu1000.c +++ b/drivers/pinctrl/qcom/pinctrl-qdu1000.c @@ -1248,7 +1248,7 @@ static struct platform_driver qdu1000_tlmm_driver = { .of_match_table = qdu1000_tlmm_of_match, }, .probe = qdu1000_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init qdu1000_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sa8775p.c b/drivers/pinctrl/qcom/pinctrl-sa8775p.c index 5459c0c681a2..8fdea25d8d67 100644 --- a/drivers/pinctrl/qcom/pinctrl-sa8775p.c +++ b/drivers/pinctrl/qcom/pinctrl-sa8775p.c @@ -1530,7 +1530,7 @@ static struct platform_driver sa8775p_pinctrl_driver = { .of_match_table = sa8775p_pinctrl_of_match, }, .probe = sa8775p_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sa8775p_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sc7180.c b/drivers/pinctrl/qcom/pinctrl-sc7180.c index c27aaa599b91..6eb0c73791c0 100644 --- a/drivers/pinctrl/qcom/pinctrl-sc7180.c +++ b/drivers/pinctrl/qcom/pinctrl-sc7180.c @@ -1159,7 +1159,7 @@ static struct platform_driver sc7180_pinctrl_driver = { .of_match_table = sc7180_pinctrl_of_match, }, .probe = sc7180_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sc7180_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sc7280.c b/drivers/pinctrl/qcom/pinctrl-sc7280.c index c2db663e396e..0c10eeb60b55 100644 --- a/drivers/pinctrl/qcom/pinctrl-sc7280.c +++ b/drivers/pinctrl/qcom/pinctrl-sc7280.c @@ -1505,7 +1505,7 @@ static struct platform_driver sc7280_pinctrl_driver = { .of_match_table = sc7280_pinctrl_of_match, }, .probe = sc7280_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sc7280_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sc8180x.c b/drivers/pinctrl/qcom/pinctrl-sc8180x.c index cfa7c8be9770..d6a79ad41a40 100644 --- a/drivers/pinctrl/qcom/pinctrl-sc8180x.c +++ b/drivers/pinctrl/qcom/pinctrl-sc8180x.c @@ -1720,7 +1720,7 @@ static struct platform_driver sc8180x_pinctrl_driver = { .acpi_match_table = sc8180x_pinctrl_acpi_match, }, .probe = sc8180x_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sc8180x_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sc8280xp.c b/drivers/pinctrl/qcom/pinctrl-sc8280xp.c index 4b1c49697698..96f4fb5a5d29 100644 --- a/drivers/pinctrl/qcom/pinctrl-sc8280xp.c +++ b/drivers/pinctrl/qcom/pinctrl-sc8280xp.c @@ -1926,7 +1926,7 @@ static struct platform_driver sc8280xp_pinctrl_driver = { .of_match_table = sc8280xp_pinctrl_of_match, }, .probe = sc8280xp_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sc8280xp_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sdm660.c b/drivers/pinctrl/qcom/pinctrl-sdm660.c index b0c29a24b09b..c2e0d5c034ac 100644 --- a/drivers/pinctrl/qcom/pinctrl-sdm660.c +++ b/drivers/pinctrl/qcom/pinctrl-sdm660.c @@ -1428,7 +1428,7 @@ static struct platform_driver sdm660_pinctrl_driver = { .of_match_table = sdm660_pinctrl_of_match, }, .probe = sdm660_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sdm660_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sdm670.c b/drivers/pinctrl/qcom/pinctrl-sdm670.c index 1e694a966953..cc3cce077de4 100644 --- a/drivers/pinctrl/qcom/pinctrl-sdm670.c +++ b/drivers/pinctrl/qcom/pinctrl-sdm670.c @@ -1318,7 +1318,7 @@ static struct platform_driver sdm670_pinctrl_driver = { .of_match_table = sdm670_pinctrl_of_match, }, .probe = sdm670_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sdm670_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sdm845.c b/drivers/pinctrl/qcom/pinctrl-sdm845.c index 3f3265e0018d..cc05c415ed15 100644 --- a/drivers/pinctrl/qcom/pinctrl-sdm845.c +++ b/drivers/pinctrl/qcom/pinctrl-sdm845.c @@ -1351,7 +1351,7 @@ static struct platform_driver sdm845_pinctrl_driver = { .acpi_match_table = ACPI_PTR(sdm845_pinctrl_acpi_match), }, .probe = sdm845_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sdm845_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sdx55.c b/drivers/pinctrl/qcom/pinctrl-sdx55.c index c88b8bfcacb6..8826db9d21d0 100644 --- a/drivers/pinctrl/qcom/pinctrl-sdx55.c +++ b/drivers/pinctrl/qcom/pinctrl-sdx55.c @@ -990,7 +990,7 @@ static struct platform_driver sdx55_pinctrl_driver = { .of_match_table = sdx55_pinctrl_of_match, }, .probe = sdx55_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sdx55_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sdx65.c b/drivers/pinctrl/qcom/pinctrl-sdx65.c index bd44ec0fcab4..f6f319c997fc 100644 --- a/drivers/pinctrl/qcom/pinctrl-sdx65.c +++ b/drivers/pinctrl/qcom/pinctrl-sdx65.c @@ -939,7 +939,7 @@ static struct platform_driver sdx65_pinctrl_driver = { .of_match_table = sdx65_pinctrl_of_match, }, .probe = sdx65_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sdx65_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sdx75.c b/drivers/pinctrl/qcom/pinctrl-sdx75.c index 396f6fc779a2..3cfe8c7f04df 100644 --- a/drivers/pinctrl/qcom/pinctrl-sdx75.c +++ b/drivers/pinctrl/qcom/pinctrl-sdx75.c @@ -1124,7 +1124,7 @@ static struct platform_driver sdx75_pinctrl_driver = { .of_match_table = sdx75_pinctrl_of_match, }, .probe = sdx75_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sdx75_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm6115.c b/drivers/pinctrl/qcom/pinctrl-sm6115.c index 87057089b2b6..2a06025f4885 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm6115.c +++ b/drivers/pinctrl/qcom/pinctrl-sm6115.c @@ -895,7 +895,7 @@ static struct platform_driver sm6115_tlmm_driver = { .of_match_table = sm6115_tlmm_of_match, }, .probe = sm6115_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm6115_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm6125.c b/drivers/pinctrl/qcom/pinctrl-sm6125.c index e07339ba72bc..d5e2b896954c 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm6125.c +++ b/drivers/pinctrl/qcom/pinctrl-sm6125.c @@ -1249,7 +1249,7 @@ static struct platform_driver sm6125_tlmm_driver = { .of_match_table = sm6125_tlmm_of_match, }, .probe = sm6125_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm6125_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm6350.c b/drivers/pinctrl/qcom/pinctrl-sm6350.c index 4aeb1ba43ee3..f3828c07b134 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm6350.c +++ b/drivers/pinctrl/qcom/pinctrl-sm6350.c @@ -1373,7 +1373,7 @@ static struct platform_driver sm6350_tlmm_driver = { .of_match_table = sm6350_tlmm_of_match, }, .probe = sm6350_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm6350_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm6375.c b/drivers/pinctrl/qcom/pinctrl-sm6375.c index d86630d7125c..c82c8516932e 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm6375.c +++ b/drivers/pinctrl/qcom/pinctrl-sm6375.c @@ -1516,7 +1516,7 @@ static struct platform_driver sm6375_tlmm_driver = { .of_match_table = sm6375_tlmm_of_match, }, .probe = sm6375_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm6375_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm7150.c b/drivers/pinctrl/qcom/pinctrl-sm7150.c index b9f067de8ef0..edb5984cd351 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm7150.c +++ b/drivers/pinctrl/qcom/pinctrl-sm7150.c @@ -1254,7 +1254,7 @@ static struct platform_driver sm7150_tlmm_driver = { .of_match_table = sm7150_tlmm_of_match, }, .probe = sm7150_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm7150_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm8150.c b/drivers/pinctrl/qcom/pinctrl-sm8150.c index f8f5bee74f1d..01aea9c70b7a 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm8150.c +++ b/drivers/pinctrl/qcom/pinctrl-sm8150.c @@ -1542,7 +1542,7 @@ static struct platform_driver sm8150_pinctrl_driver = { .of_match_table = sm8150_pinctrl_of_match, }, .probe = sm8150_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm8150_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm8250.c b/drivers/pinctrl/qcom/pinctrl-sm8250.c index 54fda77bf296..e9961a49ff98 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm8250.c +++ b/drivers/pinctrl/qcom/pinctrl-sm8250.c @@ -1351,7 +1351,7 @@ static struct platform_driver sm8250_pinctrl_driver = { .of_match_table = sm8250_pinctrl_of_match, }, .probe = sm8250_pinctrl_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm8250_pinctrl_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm8350.c b/drivers/pinctrl/qcom/pinctrl-sm8350.c index ac7f2820f2cb..9c69458bd910 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm8350.c +++ b/drivers/pinctrl/qcom/pinctrl-sm8350.c @@ -1642,7 +1642,7 @@ static struct platform_driver sm8350_tlmm_driver = { .of_match_table = sm8350_tlmm_of_match, }, .probe = sm8350_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm8350_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm8450.c b/drivers/pinctrl/qcom/pinctrl-sm8450.c index 617286711695..d11bb1ee9e3d 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm8450.c +++ b/drivers/pinctrl/qcom/pinctrl-sm8450.c @@ -1677,7 +1677,7 @@ static struct platform_driver sm8450_tlmm_driver = { .of_match_table = sm8450_tlmm_of_match, }, .probe = sm8450_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm8450_tlmm_init(void) diff --git a/drivers/pinctrl/qcom/pinctrl-sm8550.c b/drivers/pinctrl/qcom/pinctrl-sm8550.c index 9184e0183755..3c847d9cb5d9 100644 --- a/drivers/pinctrl/qcom/pinctrl-sm8550.c +++ b/drivers/pinctrl/qcom/pinctrl-sm8550.c @@ -1762,7 +1762,7 @@ static struct platform_driver sm8550_tlmm_driver = { .of_match_table = sm8550_tlmm_of_match, }, .probe = sm8550_tlmm_probe, - .remove_new = msm_pinctrl_remove, + .remove = msm_pinctrl_remove, }; static int __init sm8550_tlmm_init(void) -- Gitee From 65cb082c007e9084b084fcf5c4dcfd1bd53f77ee Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:43 +0800 Subject: [PATCH 1308/1421] Revert "ice: Fix LACP bonds without SRIOV environment" This reverts commit 76cff675b99beb4716a6f118005b8629e459ae8a. --- drivers/net/ethernet/intel/ice/ice_lag.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_lag.c b/drivers/net/ethernet/intel/ice/ice_lag.c index 4db0b770420e..4e675c7c199f 100644 --- a/drivers/net/ethernet/intel/ice/ice_lag.c +++ b/drivers/net/ethernet/intel/ice/ice_lag.c @@ -1229,18 +1229,12 @@ static void ice_lag_changeupper_event(struct ice_lag *lag, void *ptr) */ if (!primary_lag) { lag->primary = true; - if (!ice_is_switchdev_running(lag->pf)) - return; - /* Configure primary's SWID to be shared */ ice_lag_primary_swid(lag, true); primary_lag = lag; } else { u16 swid; - if (!ice_is_switchdev_running(primary_lag->pf)) - return; - swid = primary_lag->pf->hw.port_info->sw_id; ice_lag_set_swid(swid, lag, true); ice_lag_add_prune_list(primary_lag, lag->pf); -- Gitee From 768469459edd6bcd1b9defba6ce5e04dcca29bf1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:43 +0800 Subject: [PATCH 1309/1421] Revert "ice: fix vf->num_mac count with port representors" This reverts commit 1fcb1957b60d1216f47048d9e4c9b9f9af526bee. --- drivers/net/ethernet/intel/ice/ice_virtchnl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c b/drivers/net/ethernet/intel/ice/ice_virtchnl.c index 1edcf9303183..e709b10a2976 100644 --- a/drivers/net/ethernet/intel/ice/ice_virtchnl.c +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl.c @@ -3769,6 +3769,7 @@ static int ice_vc_repr_add_mac(struct ice_vf *vf, u8 *msg) } ice_vfhw_mac_add(vf, &al->list[i]); + vf->num_mac++; break; } -- Gitee From 2acd9d0363171ec077eeab170410dd491689f661 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:43 +0800 Subject: [PATCH 1310/1421] Revert "bridge: netfilter: Fix forwarding of fragmented packets" This reverts commit 852c7b2ee037039c26432b4078a51246214d6a83. --- net/bridge/br_nf_core.c | 7 +++++-- net/bridge/br_private.h | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/net/bridge/br_nf_core.c b/net/bridge/br_nf_core.c index a8c67035e23c..98aea5485aae 100644 --- a/net/bridge/br_nf_core.c +++ b/net/bridge/br_nf_core.c @@ -65,14 +65,17 @@ static struct dst_ops fake_dst_ops = { * ipt_REJECT needs it. Future netfilter modules might * require us to fill additional fields. */ +static const u32 br_dst_default_metrics[RTAX_MAX] = { + [RTAX_MTU - 1] = 1500, +}; + void br_netfilter_rtable_init(struct net_bridge *br) { struct rtable *rt = &br->fake_rtable; rcuref_init(&rt->dst.__rcuref, 1); rt->dst.dev = br->dev; - dst_init_metrics(&rt->dst, br->metrics, false); - dst_metric_set(&rt->dst, RTAX_MTU, br->dev->mtu); + dst_init_metrics(&rt->dst, br_dst_default_metrics, true); rt->dst.flags = DST_NOXFRM | DST_FAKE_RTABLE; rt->dst.ops = &fake_dst_ops; } diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 9197b511e459..72d80fd943a8 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -502,7 +502,6 @@ struct net_bridge { struct rtable fake_rtable; struct rt6_info fake_rt6_info; }; - u32 metrics[RTAX_MAX]; #endif u16 group_fwd_mask; u16 group_fwd_mask_required; -- Gitee From f40105a5b61879eeca5e44352330a1a107e65277 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:44 +0800 Subject: [PATCH 1311/1421] Revert "Bluetooth: btusb: use skb_pull to avoid unsafe access in QCA dump handling" This reverts commit 27450fa574527370ec0e632e44e824ebcfebe52c. --- drivers/bluetooth/btusb.c | 98 +++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index e0dd69889608..d6195565ef7a 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -3525,8 +3525,9 @@ static void btusb_coredump_qca(struct hci_dev *hdev) static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) { int ret = 0; - unsigned int skip = 0; u8 pkt_type; + u8 *sk_ptr; + unsigned int sk_len; u16 seqno; u32 dump_size; @@ -3535,13 +3536,18 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) struct usb_device *udev = btdata->udev; pkt_type = hci_skb_pkt_type(skb); - skip = sizeof(struct hci_event_hdr); - if (pkt_type == HCI_ACLDATA_PKT) - skip += sizeof(struct hci_acl_hdr); + sk_ptr = skb->data; + sk_len = skb->len; - skb_pull(skb, skip); - dump_hdr = (struct qca_dump_hdr *)skb->data; + if (pkt_type == HCI_ACLDATA_PKT) { + sk_ptr += HCI_ACL_HDR_SIZE; + sk_len -= HCI_ACL_HDR_SIZE; + } + + sk_ptr += HCI_EVENT_HDR_SIZE; + sk_len -= HCI_EVENT_HDR_SIZE; + dump_hdr = (struct qca_dump_hdr *)sk_ptr; seqno = le16_to_cpu(dump_hdr->seqno); if (seqno == 0) { set_bit(BTUSB_HW_SSR_ACTIVE, &btdata->flags); @@ -3561,15 +3567,16 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) btdata->qca_dump.ram_dump_size = dump_size; btdata->qca_dump.ram_dump_seqno = 0; - - skb_pull(skb, offsetof(struct qca_dump_hdr, data0)); + sk_ptr += offsetof(struct qca_dump_hdr, data0); + sk_len -= offsetof(struct qca_dump_hdr, data0); usb_disable_autosuspend(udev); bt_dev_info(hdev, "%s memdump size(%u)\n", (pkt_type == HCI_ACLDATA_PKT) ? "ACL" : "event", dump_size); } else { - skb_pull(skb, offsetof(struct qca_dump_hdr, data)); + sk_ptr += offsetof(struct qca_dump_hdr, data); + sk_len -= offsetof(struct qca_dump_hdr, data); } if (!btdata->qca_dump.ram_dump_size) { @@ -3589,6 +3596,7 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) return ret; } + skb_pull(skb, skb->len - sk_len); hci_devcd_append(hdev, skb); btdata->qca_dump.ram_dump_seqno++; if (seqno == QCA_LAST_SEQUENCE_NUM) { @@ -3616,58 +3624,68 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) /* Return: true if the ACL packet is a dump packet, false otherwise. */ static bool acl_pkt_is_dump_qca(struct hci_dev *hdev, struct sk_buff *skb) { + u8 *sk_ptr; + unsigned int sk_len; + struct hci_event_hdr *event_hdr; struct hci_acl_hdr *acl_hdr; struct qca_dump_hdr *dump_hdr; - struct sk_buff *clone = skb_clone(skb, GFP_ATOMIC); - bool is_dump = false; - if (!clone) + sk_ptr = skb->data; + sk_len = skb->len; + + acl_hdr = hci_acl_hdr(skb); + if (le16_to_cpu(acl_hdr->handle) != QCA_MEMDUMP_ACL_HANDLE) return false; - acl_hdr = skb_pull_data(clone, sizeof(*acl_hdr)); - if (!acl_hdr || (le16_to_cpu(acl_hdr->handle) != QCA_MEMDUMP_ACL_HANDLE)) - goto out; + sk_ptr += HCI_ACL_HDR_SIZE; + sk_len -= HCI_ACL_HDR_SIZE; + event_hdr = (struct hci_event_hdr *)sk_ptr; - event_hdr = skb_pull_data(clone, sizeof(*event_hdr)); - if (!event_hdr || (event_hdr->evt != HCI_VENDOR_PKT)) - goto out; + if ((event_hdr->evt != HCI_VENDOR_PKT) || + (event_hdr->plen != (sk_len - HCI_EVENT_HDR_SIZE))) + return false; - dump_hdr = skb_pull_data(clone, sizeof(*dump_hdr)); - if (!dump_hdr || (dump_hdr->vse_class != QCA_MEMDUMP_VSE_CLASS) || - (dump_hdr->msg_type != QCA_MEMDUMP_MSG_TYPE)) - goto out; + sk_ptr += HCI_EVENT_HDR_SIZE; + sk_len -= HCI_EVENT_HDR_SIZE; - is_dump = true; -out: - consume_skb(clone); - return is_dump; + dump_hdr = (struct qca_dump_hdr *)sk_ptr; + if ((sk_len < offsetof(struct qca_dump_hdr, data)) || + (dump_hdr->vse_class != QCA_MEMDUMP_VSE_CLASS) || + (dump_hdr->msg_type != QCA_MEMDUMP_MSG_TYPE)) + return false; + + return true; } /* Return: true if the event packet is a dump packet, false otherwise. */ static bool evt_pkt_is_dump_qca(struct hci_dev *hdev, struct sk_buff *skb) { + u8 *sk_ptr; + unsigned int sk_len; + struct hci_event_hdr *event_hdr; struct qca_dump_hdr *dump_hdr; - struct sk_buff *clone = skb_clone(skb, GFP_ATOMIC); - bool is_dump = false; - if (!clone) + sk_ptr = skb->data; + sk_len = skb->len; + + event_hdr = hci_event_hdr(skb); + + if ((event_hdr->evt != HCI_VENDOR_PKT) + || (event_hdr->plen != (sk_len - HCI_EVENT_HDR_SIZE))) return false; - event_hdr = skb_pull_data(clone, sizeof(*event_hdr)); - if (!event_hdr || (event_hdr->evt != HCI_VENDOR_PKT)) - goto out; + sk_ptr += HCI_EVENT_HDR_SIZE; + sk_len -= HCI_EVENT_HDR_SIZE; - dump_hdr = skb_pull_data(clone, sizeof(*dump_hdr)); - if (!dump_hdr || (dump_hdr->vse_class != QCA_MEMDUMP_VSE_CLASS) || - (dump_hdr->msg_type != QCA_MEMDUMP_MSG_TYPE)) - goto out; + dump_hdr = (struct qca_dump_hdr *)sk_ptr; + if ((sk_len < offsetof(struct qca_dump_hdr, data)) || + (dump_hdr->vse_class != QCA_MEMDUMP_VSE_CLASS) || + (dump_hdr->msg_type != QCA_MEMDUMP_MSG_TYPE)) + return false; - is_dump = true; -out: - consume_skb(clone); - return is_dump; + return true; } static int btusb_recv_acl_qca(struct hci_dev *hdev, struct sk_buff *skb) -- Gitee From efa823a7ba3ade4ecdae6e0d2a76eb8eef490271 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:44 +0800 Subject: [PATCH 1312/1421] Revert "Bluetooth: L2CAP: Fix not checking l2cap_chan security level" This reverts commit 2acda9e86e272aa62aec2a3118bdf33b96f126f1. --- net/bluetooth/l2cap_core.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 1c54e812ef1f..72ee41b894a5 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -1411,8 +1411,7 @@ static void l2cap_request_info(struct l2cap_conn *conn) sizeof(req), &req); } -static bool l2cap_check_enc_key_size(struct hci_conn *hcon, - struct l2cap_chan *chan) +static bool l2cap_check_enc_key_size(struct hci_conn *hcon) { /* The minimum encryption key size needs to be enforced by the * host stack before establishing any L2CAP connections. The @@ -1426,7 +1425,7 @@ static bool l2cap_check_enc_key_size(struct hci_conn *hcon, int min_key_size = hcon->hdev->min_enc_key_size; /* On FIPS security level, key size must be 16 bytes */ - if (chan->sec_level == BT_SECURITY_FIPS) + if (hcon->sec_level == BT_SECURITY_FIPS) min_key_size = 16; return (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags) || @@ -1454,7 +1453,7 @@ static void l2cap_do_start(struct l2cap_chan *chan) !__l2cap_no_conn_pending(chan)) return; - if (l2cap_check_enc_key_size(conn->hcon, chan)) + if (l2cap_check_enc_key_size(conn->hcon)) l2cap_start_connection(chan); else __set_chan_timer(chan, L2CAP_DISC_TIMEOUT); @@ -1529,7 +1528,7 @@ static void l2cap_conn_start(struct l2cap_conn *conn) continue; } - if (l2cap_check_enc_key_size(conn->hcon, chan)) + if (l2cap_check_enc_key_size(conn->hcon)) l2cap_start_connection(chan); else l2cap_chan_close(chan, ECONNREFUSED); @@ -3956,7 +3955,7 @@ static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, /* Check if the ACL is secure enough (if not SDP) */ if (psm != cpu_to_le16(L2CAP_PSM_SDP) && (!hci_conn_check_link_mode(conn->hcon) || - !l2cap_check_enc_key_size(conn->hcon, pchan))) { + !l2cap_check_enc_key_size(conn->hcon))) { conn->disc_reason = HCI_ERROR_AUTH_FAILURE; result = L2CAP_CR_SEC_BLOCK; goto response; @@ -7324,7 +7323,7 @@ static void l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt) } if (chan->state == BT_CONNECT) { - if (!status && l2cap_check_enc_key_size(hcon, chan)) + if (!status && l2cap_check_enc_key_size(hcon)) l2cap_start_connection(chan); else __set_chan_timer(chan, L2CAP_DISC_TIMEOUT); @@ -7334,7 +7333,7 @@ static void l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt) struct l2cap_conn_rsp rsp; __u16 res, stat; - if (!status && l2cap_check_enc_key_size(hcon, chan)) { + if (!status && l2cap_check_enc_key_size(hcon)) { if (test_bit(FLAG_DEFER_SETUP, &chan->flags)) { res = L2CAP_CR_PEND; stat = L2CAP_CS_AUTHOR_PEND; -- Gitee From f9b20cffec416a666ed1d3110ab5a0065ce5c637 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:44 +0800 Subject: [PATCH 1313/1421] Revert "dmaengine: fsl-edma: Fix return code for unhandled interrupts" This reverts commit 176ae3d16a8a09700947756d98400f3d7a016627. --- drivers/dma/fsl-edma-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index eccbcf67951f..cc9923ab686d 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -58,7 +58,7 @@ static irqreturn_t fsl_edma3_tx_handler(int irq, void *dev_id) intr = edma_readl_chreg(fsl_chan, ch_int); if (!intr) - return IRQ_NONE; + return IRQ_HANDLED; edma_writel_chreg(fsl_chan, 1, ch_int); -- Gitee From 1973e941c2570e51e51678704ded9f6f46f825c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:44 +0800 Subject: [PATCH 1314/1421] Revert "dmaengine: idxd: Fix ->poll() return value" This reverts commit 45096e676f8a069128d4f7d171e2636d75ffb1d9. --- drivers/dma/idxd/cdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index 6cfcef3cf4cd..ba53675ced55 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -505,7 +505,7 @@ static __poll_t idxd_cdev_poll(struct file *filp, __poll_t out = 0; if (current->mm != ctx->mm) - return POLLNVAL; + return -EPERM; poll_wait(filp, &wq->err_queue, wait); spin_lock(&idxd->dev_lock); -- Gitee From 4eb1f08460b9d03d144fe388e73b3ae2072df5e3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:45 +0800 Subject: [PATCH 1315/1421] Revert "xfrm: Sanitize marks before insert" This reverts commit 9ecbb8143f4631c6791f7faada32157773c9ed1f. --- net/xfrm/xfrm_policy.c | 3 --- net/xfrm/xfrm_state.c | 3 --- 2 files changed, 6 deletions(-) diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 2edb0f868c57..68b3f9e7edff 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -1603,9 +1603,6 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl) struct xfrm_policy *delpol; struct hlist_head *chain; - /* Sanitize mark before store */ - policy->mark.v &= policy->mark.m; - spin_lock_bh(&net->xfrm.xfrm_policy_lock); chain = policy_hash_bysel(net, &policy->selector, policy->family, dir); if (chain) diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 86029cf5358c..7222ba50390d 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -1475,9 +1475,6 @@ static void __xfrm_state_insert(struct xfrm_state *x) list_add(&x->km.all, &net->xfrm.state_all); - /* Sanitize mark before store */ - x->mark.v &= x->mark.m; - h = xfrm_dst_hash(net, &x->id.daddr, &x->props.saddr, x->props.reqid, x->props.family); XFRM_STATE_INSERT(bydst, &x->bydst, net->xfrm.state_bydst + h, -- Gitee From 2e296b89db491e1c1f74de3c587b56e8971cf1b5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:45 +0800 Subject: [PATCH 1316/1421] Revert "clk: sunxi-ng: d1: Add missing divider for MMC mod clocks" This reverts commit 9acf24c0cee4b2ce1b3a9cb3d23629747d5ee9dc. --- drivers/clk/sunxi-ng/ccu-sun20i-d1.c | 44 ++++++++++++---------------- drivers/clk/sunxi-ng/ccu_mp.h | 22 -------------- 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun20i-d1.c b/drivers/clk/sunxi-ng/ccu-sun20i-d1.c index 98f107e96317..f95c3615ca77 100644 --- a/drivers/clk/sunxi-ng/ccu-sun20i-d1.c +++ b/drivers/clk/sunxi-ng/ccu-sun20i-d1.c @@ -412,23 +412,19 @@ static const struct clk_parent_data mmc0_mmc1_parents[] = { { .hw = &pll_periph0_2x_clk.common.hw }, { .hw = &pll_audio1_div2_clk.common.hw }, }; -static SUNXI_CCU_MP_DATA_WITH_MUX_GATE_POSTDIV(mmc0_clk, "mmc0", - mmc0_mmc1_parents, 0x830, - 0, 4, /* M */ - 8, 2, /* P */ - 24, 3, /* mux */ - BIT(31), /* gate */ - 2, /* post-div */ - 0); - -static SUNXI_CCU_MP_DATA_WITH_MUX_GATE_POSTDIV(mmc1_clk, "mmc1", - mmc0_mmc1_parents, 0x834, - 0, 4, /* M */ - 8, 2, /* P */ - 24, 3, /* mux */ - BIT(31), /* gate */ - 2, /* post-div */ - 0); +static SUNXI_CCU_MP_DATA_WITH_MUX_GATE(mmc0_clk, "mmc0", mmc0_mmc1_parents, 0x830, + 0, 4, /* M */ + 8, 2, /* P */ + 24, 3, /* mux */ + BIT(31), /* gate */ + 0); + +static SUNXI_CCU_MP_DATA_WITH_MUX_GATE(mmc1_clk, "mmc1", mmc0_mmc1_parents, 0x834, + 0, 4, /* M */ + 8, 2, /* P */ + 24, 3, /* mux */ + BIT(31), /* gate */ + 0); static const struct clk_parent_data mmc2_parents[] = { { .fw_name = "hosc" }, @@ -437,14 +433,12 @@ static const struct clk_parent_data mmc2_parents[] = { { .hw = &pll_periph0_800M_clk.common.hw }, { .hw = &pll_audio1_div2_clk.common.hw }, }; -static SUNXI_CCU_MP_DATA_WITH_MUX_GATE_POSTDIV(mmc2_clk, "mmc2", mmc2_parents, - 0x838, - 0, 4, /* M */ - 8, 2, /* P */ - 24, 3, /* mux */ - BIT(31), /* gate */ - 2, /* post-div */ - 0); +static SUNXI_CCU_MP_DATA_WITH_MUX_GATE(mmc2_clk, "mmc2", mmc2_parents, 0x838, + 0, 4, /* M */ + 8, 2, /* P */ + 24, 3, /* mux */ + BIT(31), /* gate */ + 0); static SUNXI_CCU_GATE_HWS(bus_mmc0_clk, "bus-mmc0", psi_ahb_hws, 0x84c, BIT(0), 0); diff --git a/drivers/clk/sunxi-ng/ccu_mp.h b/drivers/clk/sunxi-ng/ccu_mp.h index 7d836a9fb3db..6e50f3728fb5 100644 --- a/drivers/clk/sunxi-ng/ccu_mp.h +++ b/drivers/clk/sunxi-ng/ccu_mp.h @@ -52,28 +52,6 @@ struct ccu_mp { } \ } -#define SUNXI_CCU_MP_DATA_WITH_MUX_GATE_POSTDIV(_struct, _name, _parents, \ - _reg, \ - _mshift, _mwidth, \ - _pshift, _pwidth, \ - _muxshift, _muxwidth, \ - _gate, _postdiv, _flags)\ - struct ccu_mp _struct = { \ - .enable = _gate, \ - .m = _SUNXI_CCU_DIV(_mshift, _mwidth), \ - .p = _SUNXI_CCU_DIV(_pshift, _pwidth), \ - .mux = _SUNXI_CCU_MUX(_muxshift, _muxwidth), \ - .fixed_post_div = _postdiv, \ - .common = { \ - .reg = _reg, \ - .features = CCU_FEATURE_FIXED_POSTDIV, \ - .hw.init = CLK_HW_INIT_PARENTS_DATA(_name, \ - _parents, \ - &ccu_mp_ops, \ - _flags), \ - } \ - } - #define SUNXI_CCU_MP_WITH_MUX_GATE(_struct, _name, _parents, _reg, \ _mshift, _mwidth, \ _pshift, _pwidth, \ -- Gitee From 4ee1c0ad4144544beb2e3b045237ce0deecb8b20 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:45 +0800 Subject: [PATCH 1317/1421] Revert "remoteproc: qcom_wcnss: Fix on platforms without fallback regulators" This reverts commit 0c27f662dafa56ccedfcd52943a0914a85c988ad. --- drivers/remoteproc/qcom_wcnss.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c index 37174b544113..153260b4e2eb 100644 --- a/drivers/remoteproc/qcom_wcnss.c +++ b/drivers/remoteproc/qcom_wcnss.c @@ -456,8 +456,7 @@ static int wcnss_init_regulators(struct qcom_wcnss *wcnss, if (wcnss->num_pds) { info += wcnss->num_pds; /* Handle single power domain case */ - if (wcnss->num_pds < num_pd_vregs) - num_vregs += num_pd_vregs - wcnss->num_pds; + num_vregs += num_pd_vregs - wcnss->num_pds; } else { num_vregs += num_pd_vregs; } -- Gitee From 95e759878b6420b7134b95a1b880e2c43c3fb367 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:45 +0800 Subject: [PATCH 1318/1421] Revert "kernel/fork: only call untrack_pfn_clear() on VMAs duplicated for fork()" This reverts commit dac871a4e0f280d50632c2168cdb96c63cd71e40. --- kernel/fork.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 0907f94005c8..5455e1319cb9 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -525,6 +525,10 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig) vma_numab_state_init(new); dup_anon_vma_name(orig, new); + /* track_pfn_copy() will later take care of copying internal state. */ + if (unlikely(new->vm_flags & VM_PFNMAP)) + untrack_pfn_clear(new); + return new; } @@ -718,11 +722,6 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, tmp = vm_area_dup(mpnt); if (!tmp) goto fail_nomem; - - /* track_pfn_copy() will later take care of copying internal state. */ - if (unlikely(tmp->vm_flags & VM_PFNMAP)) - untrack_pfn_clear(tmp); - retval = vma_dup_policy(mpnt, tmp); if (retval) goto fail_nomem_policy; -- Gitee From 6695050af1cf7fb9ac14cfb178bc8abfafa55429 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:46 +0800 Subject: [PATCH 1319/1421] Revert "dmaengine: idxd: Fix allowing write() from different address spaces" This reverts commit 636ffc532fe435261e7e686c3a6166622ef0fbba. --- drivers/dma/idxd/cdev.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index ba53675ced55..7ddf5f933475 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -412,9 +412,6 @@ static int idxd_cdev_mmap(struct file *filp, struct vm_area_struct *vma) if (!idxd->user_submission_safe && !capable(CAP_SYS_RAWIO)) return -EPERM; - if (current->mm != ctx->mm) - return -EPERM; - rc = check_vma(wq, vma, __func__); if (rc < 0) return rc; @@ -481,9 +478,6 @@ static ssize_t idxd_cdev_write(struct file *filp, const char __user *buf, size_t ssize_t written = 0; int i; - if (current->mm != ctx->mm) - return -EPERM; - for (i = 0; i < len/sizeof(struct dsa_hw_desc); i++) { int rc = idxd_submit_user_descriptor(ctx, udesc + i); @@ -504,9 +498,6 @@ static __poll_t idxd_cdev_poll(struct file *filp, struct idxd_device *idxd = wq->idxd; __poll_t out = 0; - if (current->mm != ctx->mm) - return -EPERM; - poll_wait(filp, &wq->err_queue, wait); spin_lock(&idxd->dev_lock); if (idxd->sw_err.valid) -- Gitee From b0649fd0449fdcda07d6af9b0236917e2f902d1e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:46 +0800 Subject: [PATCH 1320/1421] Revert "dmaengine: idxd: add wq driver name support for accel-config user tool" This reverts commit c3e91981b3ecedf38e8195ce49aea04b6ac36f44. --- .../ABI/stable/sysfs-driver-dma-idxd | 6 ---- drivers/dma/idxd/cdev.c | 7 ---- drivers/dma/idxd/dma.c | 6 ---- drivers/dma/idxd/idxd.h | 9 ----- drivers/dma/idxd/sysfs.c | 34 ------------------- include/uapi/linux/idxd.h | 1 - 6 files changed, 63 deletions(-) diff --git a/Documentation/ABI/stable/sysfs-driver-dma-idxd b/Documentation/ABI/stable/sysfs-driver-dma-idxd index f2ec42949a54..825e619250bf 100644 --- a/Documentation/ABI/stable/sysfs-driver-dma-idxd +++ b/Documentation/ABI/stable/sysfs-driver-dma-idxd @@ -270,12 +270,6 @@ Description: Shows the operation capability bits displayed in bitmap format correlates to the operations allowed. It's visible only on platforms that support the capability. -What: /sys/bus/dsa/devices/wq./driver_name -Date: Sept 8, 2023 -KernelVersion: 6.7.0 -Contact: dmaengine@vger.kernel.org -Description: Name of driver to be bounded to the wq. - What: /sys/bus/dsa/devices/engine./group_id Date: Oct 25, 2019 KernelVersion: 5.6.0 diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index 7ddf5f933475..c18633ad8455 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -584,7 +584,6 @@ void idxd_wq_del_cdev(struct idxd_wq *wq) static int idxd_user_drv_probe(struct idxd_dev *idxd_dev) { - struct device *dev = &idxd_dev->conf_dev; struct idxd_wq *wq = idxd_dev_to_wq(idxd_dev); struct idxd_device *idxd = wq->idxd; int rc; @@ -612,12 +611,6 @@ static int idxd_user_drv_probe(struct idxd_dev *idxd_dev) mutex_lock(&wq->wq_lock); - if (!idxd_wq_driver_name_match(wq, dev)) { - idxd->cmd_status = IDXD_SCMD_WQ_NO_DRV_NAME; - rc = -ENODEV; - goto wq_err; - } - wq->wq = create_workqueue(dev_name(wq_confdev(wq))); if (!wq->wq) { rc = -ENOMEM; diff --git a/drivers/dma/idxd/dma.c b/drivers/dma/idxd/dma.c index 47a01893cfdb..07623fb0f52f 100644 --- a/drivers/dma/idxd/dma.c +++ b/drivers/dma/idxd/dma.c @@ -306,12 +306,6 @@ static int idxd_dmaengine_drv_probe(struct idxd_dev *idxd_dev) return -ENXIO; mutex_lock(&wq->wq_lock); - if (!idxd_wq_driver_name_match(wq, dev)) { - idxd->cmd_status = IDXD_SCMD_WQ_NO_DRV_NAME; - rc = -ENODEV; - goto err; - } - wq->type = IDXD_WQT_KERNEL; rc = drv_enable_wq(wq); diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h index fcbb8caea899..bea10c5cdb76 100644 --- a/drivers/dma/idxd/idxd.h +++ b/drivers/dma/idxd/idxd.h @@ -159,8 +159,6 @@ struct idxd_cdev { int minor; }; -#define DRIVER_NAME_SIZE 128 - #define IDXD_ALLOCATED_BATCH_SIZE 128U #define WQ_NAME_SIZE 1024 #define WQ_TYPE_SIZE 10 @@ -229,8 +227,6 @@ struct idxd_wq { /* Lock to protect upasid_xa access. */ struct mutex uc_lock; struct xarray upasid_xa; - - char driver_name[DRIVER_NAME_SIZE + 1]; }; struct idxd_engine { @@ -652,11 +648,6 @@ static inline void idxd_wqcfg_set_max_batch_shift(int idxd_type, union wqcfg *wq wqcfg->max_batch_shift = max_batch_shift; } -static inline int idxd_wq_driver_name_match(struct idxd_wq *wq, struct device *dev) -{ - return (strncmp(wq->driver_name, dev->driver->name, strlen(dev->driver->name)) == 0); -} - int __must_check __idxd_driver_register(struct idxd_device_driver *idxd_drv, struct module *module, const char *mod_name); #define idxd_driver_register(driver) \ diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c index 3a5ce477a81a..1fd5a93045f7 100644 --- a/drivers/dma/idxd/sysfs.c +++ b/drivers/dma/idxd/sysfs.c @@ -1282,39 +1282,6 @@ static ssize_t wq_op_config_store(struct device *dev, struct device_attribute *a static struct device_attribute dev_attr_wq_op_config = __ATTR(op_config, 0644, wq_op_config_show, wq_op_config_store); -static ssize_t wq_driver_name_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - struct idxd_wq *wq = confdev_to_wq(dev); - - return sysfs_emit(buf, "%s\n", wq->driver_name); -} - -static ssize_t wq_driver_name_store(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) -{ - struct idxd_wq *wq = confdev_to_wq(dev); - char *input, *pos; - - if (wq->state != IDXD_WQ_DISABLED) - return -EPERM; - - if (strlen(buf) > DRIVER_NAME_SIZE || strlen(buf) == 0) - return -EINVAL; - - input = kstrndup(buf, count, GFP_KERNEL); - if (!input) - return -ENOMEM; - - pos = strim(input); - memset(wq->driver_name, 0, DRIVER_NAME_SIZE + 1); - sprintf(wq->driver_name, "%s", pos); - kfree(input); - return count; -} - -static struct device_attribute dev_attr_wq_driver_name = - __ATTR(driver_name, 0644, wq_driver_name_show, wq_driver_name_store); - static struct attribute *idxd_wq_attributes[] = { &dev_attr_wq_clients.attr, &dev_attr_wq_state.attr, @@ -1334,7 +1301,6 @@ static struct attribute *idxd_wq_attributes[] = { &dev_attr_wq_occupancy.attr, &dev_attr_wq_enqcmds_retries.attr, &dev_attr_wq_op_config.attr, - &dev_attr_wq_driver_name.attr, NULL, }; diff --git a/include/uapi/linux/idxd.h b/include/uapi/linux/idxd.h index 3d1987e1bb2d..606b52e88ce3 100644 --- a/include/uapi/linux/idxd.h +++ b/include/uapi/linux/idxd.h @@ -31,7 +31,6 @@ enum idxd_scmd_stat { IDXD_SCMD_WQ_IRQ_ERR = 0x80100000, IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000, IDXD_SCMD_DEV_EVL_ERR = 0x80120000, - IDXD_SCMD_WQ_NO_DRV_NAME = 0x80200000, }; #define IDXD_SCMD_SOFTERR_MASK 0x80000000 -- Gitee From 15eb5a71f0dfe43c0534733ee4540f03c5aaec16 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:46 +0800 Subject: [PATCH 1321/1421] Revert "espintcp: remove encap socket caching to avoid reference leak" This reverts commit b4ef91e4ee0e0ee2bc3d4c67399d0afcbdc6dd17. --- include/net/xfrm.h | 1 + net/ipv4/esp4.c | 49 +++++++++++++++++++++++++++++++++++++++---- net/ipv6/esp6.c | 49 +++++++++++++++++++++++++++++++++++++++---- net/xfrm/xfrm_state.c | 3 +++ 4 files changed, 94 insertions(+), 8 deletions(-) diff --git a/include/net/xfrm.h b/include/net/xfrm.h index fd550c0b5634..b33d27e42cff 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -228,6 +228,7 @@ struct xfrm_state { /* Data for encapsulator */ struct xfrm_encap_tmpl *encap; + struct sock __rcu *encap_sk; /* Data for care-of address */ xfrm_address_t *coaddr; diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index 2caf6a2a819b..ed5f37c6d9ba 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c @@ -118,16 +118,47 @@ static void esp_ssg_unref(struct xfrm_state *x, void *tmp, struct sk_buff *skb) } #ifdef CONFIG_INET_ESPINTCP +struct esp_tcp_sk { + struct sock *sk; + struct rcu_head rcu; +}; + +static void esp_free_tcp_sk(struct rcu_head *head) +{ + struct esp_tcp_sk *esk = container_of(head, struct esp_tcp_sk, rcu); + + sock_put(esk->sk); + kfree(esk); +} + static struct sock *esp_find_tcp_sk(struct xfrm_state *x) { struct xfrm_encap_tmpl *encap = x->encap; struct net *net = xs_net(x); + struct esp_tcp_sk *esk; __be16 sport, dport; + struct sock *nsk; struct sock *sk; + sk = rcu_dereference(x->encap_sk); + if (sk && sk->sk_state == TCP_ESTABLISHED) + return sk; + spin_lock_bh(&x->lock); sport = encap->encap_sport; dport = encap->encap_dport; + nsk = rcu_dereference_protected(x->encap_sk, + lockdep_is_held(&x->lock)); + if (sk && sk == nsk) { + esk = kmalloc(sizeof(*esk), GFP_ATOMIC); + if (!esk) { + spin_unlock_bh(&x->lock); + return ERR_PTR(-ENOMEM); + } + RCU_INIT_POINTER(x->encap_sk, NULL); + esk->sk = sk; + call_rcu(&esk->rcu, esp_free_tcp_sk); + } spin_unlock_bh(&x->lock); sk = inet_lookup_established(net, net->ipv4.tcp_death_row.hashinfo, x->id.daddr.a4, @@ -140,6 +171,20 @@ static struct sock *esp_find_tcp_sk(struct xfrm_state *x) return ERR_PTR(-EINVAL); } + spin_lock_bh(&x->lock); + nsk = rcu_dereference_protected(x->encap_sk, + lockdep_is_held(&x->lock)); + if (encap->encap_sport != sport || + encap->encap_dport != dport) { + sock_put(sk); + sk = nsk ?: ERR_PTR(-EREMCHG); + } else if (sk == nsk) { + sock_put(sk); + } else { + rcu_assign_pointer(x->encap_sk, sk); + } + spin_unlock_bh(&x->lock); + return sk; } @@ -164,8 +209,6 @@ static int esp_output_tcp_finish(struct xfrm_state *x, struct sk_buff *skb) err = espintcp_push_skb(sk, skb); bh_unlock_sock(sk); - sock_put(sk); - out: rcu_read_unlock(); return err; @@ -350,8 +393,6 @@ static struct ip_esp_hdr *esp_output_tcp_encap(struct xfrm_state *x, if (IS_ERR(sk)) return ERR_CAST(sk); - sock_put(sk); - *lenp = htons(len); esph = (struct ip_esp_hdr *)(lenp + 1); diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 2caaab61b996..43a9966e2064 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c @@ -135,16 +135,47 @@ static void esp_ssg_unref(struct xfrm_state *x, void *tmp, struct sk_buff *skb) } #ifdef CONFIG_INET6_ESPINTCP +struct esp_tcp_sk { + struct sock *sk; + struct rcu_head rcu; +}; + +static void esp_free_tcp_sk(struct rcu_head *head) +{ + struct esp_tcp_sk *esk = container_of(head, struct esp_tcp_sk, rcu); + + sock_put(esk->sk); + kfree(esk); +} + static struct sock *esp6_find_tcp_sk(struct xfrm_state *x) { struct xfrm_encap_tmpl *encap = x->encap; struct net *net = xs_net(x); + struct esp_tcp_sk *esk; __be16 sport, dport; + struct sock *nsk; struct sock *sk; + sk = rcu_dereference(x->encap_sk); + if (sk && sk->sk_state == TCP_ESTABLISHED) + return sk; + spin_lock_bh(&x->lock); sport = encap->encap_sport; dport = encap->encap_dport; + nsk = rcu_dereference_protected(x->encap_sk, + lockdep_is_held(&x->lock)); + if (sk && sk == nsk) { + esk = kmalloc(sizeof(*esk), GFP_ATOMIC); + if (!esk) { + spin_unlock_bh(&x->lock); + return ERR_PTR(-ENOMEM); + } + RCU_INIT_POINTER(x->encap_sk, NULL); + esk->sk = sk; + call_rcu(&esk->rcu, esp_free_tcp_sk); + } spin_unlock_bh(&x->lock); sk = __inet6_lookup_established(net, net->ipv4.tcp_death_row.hashinfo, &x->id.daddr.in6, @@ -157,6 +188,20 @@ static struct sock *esp6_find_tcp_sk(struct xfrm_state *x) return ERR_PTR(-EINVAL); } + spin_lock_bh(&x->lock); + nsk = rcu_dereference_protected(x->encap_sk, + lockdep_is_held(&x->lock)); + if (encap->encap_sport != sport || + encap->encap_dport != dport) { + sock_put(sk); + sk = nsk ?: ERR_PTR(-EREMCHG); + } else if (sk == nsk) { + sock_put(sk); + } else { + rcu_assign_pointer(x->encap_sk, sk); + } + spin_unlock_bh(&x->lock); + return sk; } @@ -181,8 +226,6 @@ static int esp_output_tcp_finish(struct xfrm_state *x, struct sk_buff *skb) err = espintcp_push_skb(sk, skb); bh_unlock_sock(sk); - sock_put(sk); - out: rcu_read_unlock(); return err; @@ -386,8 +429,6 @@ static struct ip_esp_hdr *esp6_output_tcp_encap(struct xfrm_state *x, if (IS_ERR(sk)) return ERR_CAST(sk); - sock_put(sk); - *lenp = htons(len); esph = (struct ip_esp_hdr *)(lenp + 1); diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 7222ba50390d..8a6e8656d014 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -754,6 +754,9 @@ int __xfrm_state_delete(struct xfrm_state *x) net->xfrm.state_num--; spin_unlock(&net->xfrm.xfrm_state_lock); + if (x->encap_sk) + sock_put(rcu_dereference_raw(x->encap_sk)); + xfrm_dev_state_delete(x); /* All xfrm_state objects are created by xfrm_state_alloc. -- Gitee From 405ab893a7660cbe4ae313ac43e45de29b0eaa8e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:46 +0800 Subject: [PATCH 1322/1421] Revert "soundwire: bus: Fix race on the creation of the IRQ domain" This reverts commit dcf4badc39357ea5b29996ae8a8ea3633d9445cb. --- drivers/soundwire/bus.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index 767942f19adb..e7553c38be59 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -121,10 +121,6 @@ int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent, set_bit(SDW_GROUP13_DEV_NUM, bus->assigned); set_bit(SDW_MASTER_DEV_NUM, bus->assigned); - ret = sdw_irq_create(bus, fwnode); - if (ret) - return ret; - /* * SDW is an enumerable bus, but devices can be powered off. So, * they won't be able to report as present. @@ -141,7 +137,6 @@ int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent, if (ret < 0) { dev_err(bus->dev, "Finding slaves failed:%d\n", ret); - sdw_irq_delete(bus); return ret; } @@ -160,6 +155,10 @@ int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent, bus->params.curr_bank = SDW_BANK0; bus->params.next_bank = SDW_BANK1; + ret = sdw_irq_create(bus, fwnode); + if (ret) + return ret; + return 0; } EXPORT_SYMBOL(sdw_bus_master_add); -- Gitee From 113276515b3c79b0cd03ba32f9ebd605e7b5fa9f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:47 +0800 Subject: [PATCH 1323/1421] Revert "__legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock" This reverts commit c6b6df6a21ac8270ed1ec8b714728bb7b56d649f. --- fs/namespace.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fs/namespace.c b/fs/namespace.c index ef3b2ae2957e..450f4198b8cd 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -636,8 +636,12 @@ int __legitimize_mnt(struct vfsmount *bastard, unsigned seq) smp_mb(); // see mntput_no_expire() and do_umount() if (likely(!read_seqretry(&mount_lock, seq))) return 0; + if (bastard->mnt_flags & MNT_SYNC_UMOUNT) { + mnt_add_count(mnt, -1); + return 1; + } lock_mount_hash(); - if (unlikely(bastard->mnt_flags & (MNT_SYNC_UMOUNT | MNT_DOOMED))) { + if (unlikely(bastard->mnt_flags & MNT_DOOMED)) { mnt_add_count(mnt, -1); unlock_mount_hash(); return 1; -- Gitee From 04d6287458fc1e5984b63ce0e0b599cfec1f13b0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:47 +0800 Subject: [PATCH 1324/1421] Revert "xenbus: Allow PVH dom0 a non-local xenstore" This reverts commit e0693247e5604a5a9e9e356386f97a2b34937ad4. --- drivers/xen/xenbus/xenbus_probe.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c index d3b6908110c6..25164d56c9d9 100644 --- a/drivers/xen/xenbus/xenbus_probe.c +++ b/drivers/xen/xenbus/xenbus_probe.c @@ -966,15 +966,9 @@ static int __init xenbus_init(void) if (xen_pv_domain()) xen_store_domain_type = XS_PV; if (xen_hvm_domain()) - { xen_store_domain_type = XS_HVM; - err = hvm_get_parameter(HVM_PARAM_STORE_EVTCHN, &v); - if (err) - goto out_error; - xen_store_evtchn = (int)v; - if (!v && xen_initial_domain()) - xen_store_domain_type = XS_LOCAL; - } + if (xen_hvm_domain() && xen_initial_domain()) + xen_store_domain_type = XS_LOCAL; if (xen_pv_domain() && !xen_start_info->store_evtchn) xen_store_domain_type = XS_LOCAL; if (xen_pv_domain() && xen_start_info->store_evtchn) @@ -993,6 +987,10 @@ static int __init xenbus_init(void) xen_store_interface = gfn_to_virt(xen_store_gfn); break; case XS_HVM: + err = hvm_get_parameter(HVM_PARAM_STORE_EVTCHN, &v); + if (err) + goto out_error; + xen_store_evtchn = (int)v; err = hvm_get_parameter(HVM_PARAM_STORE_PFN, &v); if (err) goto out_error; -- Gitee From c0ecd22678a63bb7c15c338da14faccc3e376c45 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:47 +0800 Subject: [PATCH 1325/1421] Revert "wifi: iwlwifi: add support for Killer on MTL" This reverts commit f79a5c2bea25e1d4bff4120969ef1bf57811bff0. --- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index c01a9a6f06a4..4a2de79f2e86 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -580,8 +580,6 @@ static const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(0x7A70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), IWL_DEV_INFO(0x7AF0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), IWL_DEV_INFO(0x7AF0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), - IWL_DEV_INFO(0x7F70, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), - IWL_DEV_INFO(0x7F70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name), IWL_DEV_INFO(0x7E40, 0x1691, iwl_cfg_ma, iwl_ax411_killer_1690s_name), -- Gitee From 8635871d7dc589b9a06795cdc94c285108d26377 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:47 +0800 Subject: [PATCH 1326/1421] Revert "tools: ynl-gen: validate 0 len strings from kernel" This reverts commit 443edd1507f13723e7c670f59ee5a719187b4d47. --- tools/net/ynl/lib/ynl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/net/ynl/lib/ynl.c b/tools/net/ynl/lib/ynl.c index 0871f86c6b66..ae61ae5b02bf 100644 --- a/tools/net/ynl/lib/ynl.c +++ b/tools/net/ynl/lib/ynl.c @@ -368,7 +368,7 @@ int ynl_attr_validate(struct ynl_parse_arg *yarg, const struct nlattr *attr) "Invalid attribute (binary %s)", policy->name); return -1; case YNL_PT_NUL_STR: - if (len && (!policy->len || len <= policy->len) && !data[len - 1]) + if ((!policy->len || len <= policy->len) && !data[len - 1]) break; yerr(yarg->ys, YNL_ERROR_ATTR_INVALID, "Invalid attribute (string %s)", policy->name); -- Gitee From e7252fcc55c3032b87c2f19be759abad2605f177 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:47 +0800 Subject: [PATCH 1327/1421] Revert "btrfs: avoid NULL pointer dereference if no valid csum tree" This reverts commit be578a10557b9b6b30903e98a6020ad7e657084a. --- fs/btrfs/scrub.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index da49bdb70375..6be092bb814f 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -1538,8 +1538,8 @@ static int scrub_find_fill_first_stripe(struct btrfs_block_group *bg, u64 extent_gen; int ret; - if (unlikely(!extent_root || !csum_root)) { - btrfs_err(fs_info, "no valid extent or csum root for scrub"); + if (unlikely(!extent_root)) { + btrfs_err(fs_info, "no valid extent root for scrub"); return -EUCLEAN; } memset(stripe->sectors, 0, sizeof(struct scrub_sector_verification) * -- Gitee From 24055b2f0519b360cabbb9c514a2a5caeeecc814 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:48 +0800 Subject: [PATCH 1328/1421] Revert "btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref" This reverts commit 91fd2a92bcd250fb7641baae5eae2e8358bbdb7e. --- include/trace/events/btrfs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h index 8ea1674069fe..3c4d5ef6d446 100644 --- a/include/trace/events/btrfs.h +++ b/include/trace/events/btrfs.h @@ -1956,7 +1956,7 @@ DECLARE_EVENT_CLASS(btrfs__prelim_ref, TP_PROTO(const struct btrfs_fs_info *fs_info, const struct prelim_ref *oldref, const struct prelim_ref *newref, u64 tree_size), - TP_ARGS(fs_info, oldref, newref, tree_size), + TP_ARGS(fs_info, newref, oldref, tree_size), TP_STRUCT__entry_btrfs( __field( u64, root_id ) -- Gitee From 39fcd193f8e875812c80619e7937fa42085eb572 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:48 +0800 Subject: [PATCH 1329/1421] Revert "cifs: Fix changing times and read-only attr over SMB1 smb_set_file_info() function" This reverts commit 5c809d9b413d5a20e10b0a169780ac88c3af5450. --- fs/smb/client/cifspdu.h | 5 +- fs/smb/client/cifsproto.h | 4 -- fs/smb/client/cifssmb.c | 57 ------------------- fs/smb/client/smb1ops.c | 112 +++----------------------------------- 4 files changed, 12 insertions(+), 166 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index ca33f6cd6a80..c46d418c1c0c 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -1226,9 +1226,10 @@ typedef struct smb_com_query_information_rsp { typedef struct smb_com_setattr_req { struct smb_hdr hdr; /* wct = 8 */ __le16 attr; - __le32 last_write_time; + __le16 time_low; + __le16 time_high; __le16 reserved[5]; /* must be zero */ - __le16 ByteCount; + __u16 ByteCount; __u8 BufferFormat; /* 4 = ASCII */ unsigned char fileName[]; } __attribute__((packed)) SETATTR_REQ; diff --git a/fs/smb/client/cifsproto.h b/fs/smb/client/cifsproto.h index c6d325666b5c..858492220437 100644 --- a/fs/smb/client/cifsproto.h +++ b/fs/smb/client/cifsproto.h @@ -398,10 +398,6 @@ extern int CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon); extern int CIFSSMBQFSPosixInfo(const unsigned int xid, struct cifs_tcon *tcon, struct kstatfs *FSData); -extern int SMBSetInformation(const unsigned int xid, struct cifs_tcon *tcon, - const char *fileName, __le32 attributes, __le64 write_time, - const struct nls_table *nls_codepage, - struct cifs_sb_info *cifs_sb); extern int CIFSSMBSetPathInfo(const unsigned int xid, struct cifs_tcon *tcon, const char *fileName, const FILE_BASIC_INFO *data, const struct nls_table *nls_codepage, diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c index b91184ebce02..769950adb776 100644 --- a/fs/smb/client/cifssmb.c +++ b/fs/smb/client/cifssmb.c @@ -5157,63 +5157,6 @@ CIFSSMBSetFileSize(const unsigned int xid, struct cifs_tcon *tcon, return rc; } -int -SMBSetInformation(const unsigned int xid, struct cifs_tcon *tcon, - const char *fileName, __le32 attributes, __le64 write_time, - const struct nls_table *nls_codepage, - struct cifs_sb_info *cifs_sb) -{ - SETATTR_REQ *pSMB; - SETATTR_RSP *pSMBr; - struct timespec64 ts; - int bytes_returned; - int name_len; - int rc; - - cifs_dbg(FYI, "In %s path %s\n", __func__, fileName); - -retry: - rc = smb_init(SMB_COM_SETATTR, 8, tcon, (void **) &pSMB, - (void **) &pSMBr); - if (rc) - return rc; - - if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { - name_len = - cifsConvertToUTF16((__le16 *) pSMB->fileName, - fileName, PATH_MAX, nls_codepage, - cifs_remap(cifs_sb)); - name_len++; /* trailing null */ - name_len *= 2; - } else { - name_len = copy_path_name(pSMB->fileName, fileName); - } - /* Only few attributes can be set by this command, others are not accepted by Win9x. */ - pSMB->attr = cpu_to_le16(le32_to_cpu(attributes) & - (ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_ARCHIVE)); - /* Zero write time value (in both NT and SETATTR formats) means to not change it. */ - if (le64_to_cpu(write_time) != 0) { - ts = cifs_NTtimeToUnix(write_time); - pSMB->last_write_time = cpu_to_le32(ts.tv_sec); - } - pSMB->BufferFormat = 0x04; - name_len++; /* account for buffer type byte */ - inc_rfc1001_len(pSMB, (__u16)name_len); - pSMB->ByteCount = cpu_to_le16(name_len); - - rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); - if (rc) - cifs_dbg(FYI, "Send error in %s = %d\n", __func__, rc); - - cifs_buf_release(pSMB); - - if (rc == -EAGAIN) - goto retry; - - return rc; -} - /* Some legacy servers such as NT4 require that the file times be set on an open handle, rather than by pathname - this is awkward due to potential access conflicts on the open, but it is unavoidable for these diff --git a/fs/smb/client/smb1ops.c b/fs/smb/client/smb1ops.c index e62d9cc592e0..58dcd6bdce98 100644 --- a/fs/smb/client/smb1ops.c +++ b/fs/smb/client/smb1ops.c @@ -912,9 +912,6 @@ smb_set_file_info(struct inode *inode, const char *full_path, struct cifs_fid fid; struct cifs_open_parms oparms; struct cifsFileInfo *open_file; - FILE_BASIC_INFO new_buf; - struct cifs_open_info_data query_data; - __le64 write_time = buf->LastWriteTime; struct cifsInodeInfo *cinode = CIFS_I(inode); struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); struct tcon_link *tlink = NULL; @@ -922,58 +919,20 @@ smb_set_file_info(struct inode *inode, const char *full_path, /* if the file is already open for write, just use that fileid */ open_file = find_writable_file(cinode, FIND_WR_FSUID_ONLY); - if (open_file) { fid.netfid = open_file->fid.netfid; netpid = open_file->pid; tcon = tlink_tcon(open_file->tlink); - } else { - tlink = cifs_sb_tlink(cifs_sb); - if (IS_ERR(tlink)) { - rc = PTR_ERR(tlink); - tlink = NULL; - goto out; - } - tcon = tlink_tcon(tlink); + goto set_via_filehandle; } - /* - * Non-NT servers interprets zero time value in SMB_SET_FILE_BASIC_INFO - * over TRANS2_SET_FILE_INFORMATION as a valid time value. NT servers - * interprets zero time value as do not change existing value on server. - * API of ->set_file_info() callback expects that zero time value has - * the NT meaning - do not change. Therefore if server is non-NT and - * some time values in "buf" are zero, then fetch missing time values. - */ - if (!(tcon->ses->capabilities & CAP_NT_SMBS) && - (!buf->CreationTime || !buf->LastAccessTime || - !buf->LastWriteTime || !buf->ChangeTime)) { - rc = cifs_query_path_info(xid, tcon, cifs_sb, full_path, &query_data); - if (rc) { - if (open_file) { - cifsFileInfo_put(open_file); - open_file = NULL; - } - goto out; - } - /* - * Original write_time from buf->LastWriteTime is preserved - * as SMBSetInformation() interprets zero as do not change. - */ - new_buf = *buf; - buf = &new_buf; - if (!buf->CreationTime) - buf->CreationTime = query_data.fi.CreationTime; - if (!buf->LastAccessTime) - buf->LastAccessTime = query_data.fi.LastAccessTime; - if (!buf->LastWriteTime) - buf->LastWriteTime = query_data.fi.LastWriteTime; - if (!buf->ChangeTime) - buf->ChangeTime = query_data.fi.ChangeTime; + tlink = cifs_sb_tlink(cifs_sb); + if (IS_ERR(tlink)) { + rc = PTR_ERR(tlink); + tlink = NULL; + goto out; } - - if (open_file) - goto set_via_filehandle; + tcon = tlink_tcon(tlink); rc = CIFSSMBSetPathInfo(xid, tcon, full_path, buf, cifs_sb->local_nls, cifs_sb); @@ -994,45 +953,8 @@ smb_set_file_info(struct inode *inode, const char *full_path, .fid = &fid, }; - if (S_ISDIR(inode->i_mode) && !(tcon->ses->capabilities & CAP_NT_SMBS)) { - /* Opening directory path is not possible on non-NT servers. */ - rc = -EOPNOTSUPP; - } else { - /* - * Use cifs_open_file() instead of CIFS_open() as the - * cifs_open_file() selects the correct function which - * works also on non-NT servers. - */ - rc = cifs_open_file(xid, &oparms, &oplock, NULL); - /* - * Opening path for writing on non-NT servers is not - * possible when the read-only attribute is already set. - * Non-NT server in this case returns -EACCES. For those - * servers the only possible way how to clear the read-only - * bit is via SMB_COM_SETATTR command. - */ - if (rc == -EACCES && - (cinode->cifsAttrs & ATTR_READONLY) && - le32_to_cpu(buf->Attributes) != 0 && /* 0 = do not change attrs */ - !(le32_to_cpu(buf->Attributes) & ATTR_READONLY) && - !(tcon->ses->capabilities & CAP_NT_SMBS)) - rc = -EOPNOTSUPP; - } - - /* Fallback to SMB_COM_SETATTR command when absolutelty needed. */ - if (rc == -EOPNOTSUPP) { - cifs_dbg(FYI, "calling SetInformation since SetPathInfo for attrs/times not supported by this server\n"); - rc = SMBSetInformation(xid, tcon, full_path, - buf->Attributes != 0 ? buf->Attributes : cpu_to_le32(cinode->cifsAttrs), - write_time, - cifs_sb->local_nls, cifs_sb); - if (rc == 0) - cinode->cifsAttrs = le32_to_cpu(buf->Attributes); - else - rc = -EACCES; - goto out; - } - + cifs_dbg(FYI, "calling SetFileInfo since SetPathInfo for times not supported by this server\n"); + rc = CIFS_open(xid, &oparms, &oplock, NULL); if (rc != 0) { if (rc == -EIO) rc = -EINVAL; @@ -1040,7 +962,6 @@ smb_set_file_info(struct inode *inode, const char *full_path, } netpid = current->tgid; - cifs_dbg(FYI, "calling SetFileInfo since SetPathInfo for attrs/times not supported by this server\n"); set_via_filehandle: rc = CIFSSMBSetFileInfo(xid, tcon, buf, fid.netfid, netpid); @@ -1051,21 +972,6 @@ smb_set_file_info(struct inode *inode, const char *full_path, CIFSSMBClose(xid, tcon, fid.netfid); else cifsFileInfo_put(open_file); - - /* - * Setting the read-only bit is not honered on non-NT servers when done - * via open-semantics. So for setting it, use SMB_COM_SETATTR command. - * This command works only after the file is closed, so use it only when - * operation was called without the filehandle. - */ - if (open_file == NULL && - !(tcon->ses->capabilities & CAP_NT_SMBS) && - le32_to_cpu(buf->Attributes) & ATTR_READONLY) { - SMBSetInformation(xid, tcon, full_path, - buf->Attributes, - 0 /* do not change write time */, - cifs_sb->local_nls, cifs_sb); - } out: if (tlink != NULL) cifs_put_tlink(tlink); -- Gitee From 8507ebded959619b7cc0b77ed7cd40a1ad395409 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:48 +0800 Subject: [PATCH 1330/1421] Revert "cifs: Fix and improve cifs_query_path_info() and cifs_query_file_info()" This reverts commit 8863f3425d0523c2c399cf66dc75d6c43127e0d2. --- fs/smb/client/smb1ops.c | 103 ++++------------------------------------ 1 file changed, 8 insertions(+), 95 deletions(-) diff --git a/fs/smb/client/smb1ops.c b/fs/smb/client/smb1ops.c index 58dcd6bdce98..0ba0f680205c 100644 --- a/fs/smb/client/smb1ops.c +++ b/fs/smb/client/smb1ops.c @@ -541,104 +541,24 @@ static int cifs_query_path_info(const unsigned int xid, const char *full_path, struct cifs_open_info_data *data) { - int rc = -EOPNOTSUPP; + int rc; FILE_ALL_INFO fi = {}; - struct cifs_search_info search_info = {}; - bool non_unicode_wildcard = false; data->symlink = false; data->adjust_tz = false; + /* could do find first instead but this returns more info */ + rc = CIFSSMBQPathInfo(xid, tcon, full_path, &fi, 0 /* not legacy */, cifs_sb->local_nls, + cifs_remap(cifs_sb)); /* - * First try CIFSSMBQPathInfo() function which returns more info - * (NumberOfLinks) than CIFSFindFirst() fallback function. - * Some servers like Win9x do not support SMB_QUERY_FILE_ALL_INFO over - * TRANS2_QUERY_PATH_INFORMATION, but supports it with filehandle over - * TRANS2_QUERY_FILE_INFORMATION (function CIFSSMBQFileInfo(). But SMB - * Open command on non-NT servers works only for files, does not work - * for directories. And moreover Win9x SMB server returns bogus data in - * SMB_QUERY_FILE_ALL_INFO Attributes field. So for non-NT servers, - * do not even use CIFSSMBQPathInfo() or CIFSSMBQFileInfo() function. - */ - if (tcon->ses->capabilities & CAP_NT_SMBS) - rc = CIFSSMBQPathInfo(xid, tcon, full_path, &fi, 0 /* not legacy */, - cifs_sb->local_nls, cifs_remap(cifs_sb)); - - /* - * Non-UNICODE variant of fallback functions below expands wildcards, - * so they cannot be used for querying paths with wildcard characters. - */ - if (rc && !(tcon->ses->capabilities & CAP_UNICODE) && strpbrk(full_path, "*?\"><")) - non_unicode_wildcard = true; - - /* - * Then fallback to CIFSFindFirst() which works also with non-NT servers - * but does not does not provide NumberOfLinks. - */ - if ((rc == -EOPNOTSUPP || rc == -EINVAL) && - !non_unicode_wildcard) { - if (!(tcon->ses->capabilities & tcon->ses->server->vals->cap_nt_find)) - search_info.info_level = SMB_FIND_FILE_INFO_STANDARD; - else - search_info.info_level = SMB_FIND_FILE_FULL_DIRECTORY_INFO; - rc = CIFSFindFirst(xid, tcon, full_path, cifs_sb, NULL, - CIFS_SEARCH_CLOSE_ALWAYS | CIFS_SEARCH_CLOSE_AT_END, - &search_info, false); - if (rc == 0) { - if (!(tcon->ses->capabilities & tcon->ses->server->vals->cap_nt_find)) { - FIND_FILE_STANDARD_INFO *di; - int offset = tcon->ses->server->timeAdj; - - di = (FIND_FILE_STANDARD_INFO *)search_info.srch_entries_start; - fi.CreationTime = cpu_to_le64(cifs_UnixTimeToNT(cnvrtDosUnixTm( - di->CreationDate, di->CreationTime, offset))); - fi.LastAccessTime = cpu_to_le64(cifs_UnixTimeToNT(cnvrtDosUnixTm( - di->LastAccessDate, di->LastAccessTime, offset))); - fi.LastWriteTime = cpu_to_le64(cifs_UnixTimeToNT(cnvrtDosUnixTm( - di->LastWriteDate, di->LastWriteTime, offset))); - fi.ChangeTime = fi.LastWriteTime; - fi.Attributes = cpu_to_le32(le16_to_cpu(di->Attributes)); - fi.AllocationSize = cpu_to_le64(le32_to_cpu(di->AllocationSize)); - fi.EndOfFile = cpu_to_le64(le32_to_cpu(di->DataSize)); - } else { - FILE_FULL_DIRECTORY_INFO *di; - - di = (FILE_FULL_DIRECTORY_INFO *)search_info.srch_entries_start; - fi.CreationTime = di->CreationTime; - fi.LastAccessTime = di->LastAccessTime; - fi.LastWriteTime = di->LastWriteTime; - fi.ChangeTime = di->ChangeTime; - fi.Attributes = di->ExtFileAttributes; - fi.AllocationSize = di->AllocationSize; - fi.EndOfFile = di->EndOfFile; - fi.EASize = di->EaSize; - } - fi.NumberOfLinks = cpu_to_le32(1); - fi.DeletePending = 0; - fi.Directory = !!(le32_to_cpu(fi.Attributes) & ATTR_DIRECTORY); - cifs_buf_release(search_info.ntwrk_buf_start); - } else if (!full_path[0]) { - /* - * CIFSFindFirst() does not work on root path if the - * root path was exported on the server from the top - * level path (drive letter). - */ - rc = -EOPNOTSUPP; - } - } - - /* - * If everything failed then fallback to the legacy SMB command - * SMB_COM_QUERY_INFORMATION which works with all servers, but - * provide just few information. + * BB optimize code so we do not make the above call when server claims + * no NT SMB support and the above call failed at least once - set flag + * in tcon or mount. */ - if ((rc == -EOPNOTSUPP || rc == -EINVAL) && !non_unicode_wildcard) { + if ((rc == -EOPNOTSUPP) || (rc == -EINVAL)) { rc = SMBQueryInformation(xid, tcon, full_path, &fi, cifs_sb->local_nls, cifs_remap(cifs_sb)); data->adjust_tz = true; - } else if ((rc == -EOPNOTSUPP || rc == -EINVAL) && non_unicode_wildcard) { - /* Path with non-UNICODE wildcard character cannot exist. */ - rc = -ENOENT; } if (!rc) { @@ -735,13 +655,6 @@ static int cifs_query_file_info(const unsigned int xid, struct cifs_tcon *tcon, int rc; FILE_ALL_INFO fi = {}; - /* - * CIFSSMBQFileInfo() for non-NT servers returns bogus data in - * Attributes fields. So do not use this command for non-NT servers. - */ - if (!(tcon->ses->capabilities & CAP_NT_SMBS)) - return -EOPNOTSUPP; - if (cfile->symlink_target) { data->symlink_target = kstrdup(cfile->symlink_target, GFP_KERNEL); if (!data->symlink_target) -- Gitee From 03bcb6a9e755b125d6e41065a8d6015d50be21a2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:49 +0800 Subject: [PATCH 1331/1421] Revert "io_uring/fdinfo: annotate racy sq/cq head/tail reads" This reverts commit 9cd52f8e42d50b20d84e0544204b584f25565c0f. --- io_uring/fdinfo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/io_uring/fdinfo.c b/io_uring/fdinfo.c index a26cf840e623..976e9500f651 100644 --- a/io_uring/fdinfo.c +++ b/io_uring/fdinfo.c @@ -81,11 +81,11 @@ __cold void io_uring_show_fdinfo(struct seq_file *m, struct file *f) seq_printf(m, "SqMask:\t0x%x\n", sq_mask); seq_printf(m, "SqHead:\t%u\n", sq_head); seq_printf(m, "SqTail:\t%u\n", sq_tail); - seq_printf(m, "CachedSqHead:\t%u\n", data_race(ctx->cached_sq_head)); + seq_printf(m, "CachedSqHead:\t%u\n", ctx->cached_sq_head); seq_printf(m, "CqMask:\t0x%x\n", cq_mask); seq_printf(m, "CqHead:\t%u\n", cq_head); seq_printf(m, "CqTail:\t%u\n", cq_tail); - seq_printf(m, "CachedCqTail:\t%u\n", data_race(ctx->cached_cq_tail)); + seq_printf(m, "CachedCqTail:\t%u\n", ctx->cached_cq_tail); seq_printf(m, "SQEs:\t%u\n", sq_tail - sq_head); sq_entries = min(sq_tail - sq_head, ctx->sq_entries); for (i = 0; i < sq_entries; i++) { -- Gitee From b29a26684a69c6f8db392d4c9650ce924d56c3db Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:49 +0800 Subject: [PATCH 1332/1421] Revert "nvmet-tcp: don't restore null sk_state_change" This reverts commit 84f1e3b73d3b44c4a9b147c332f2f76573bea112. --- drivers/nvme/target/tcp.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c index 6a539c3b8b53..a0af659a4c4a 100644 --- a/drivers/nvme/target/tcp.c +++ b/drivers/nvme/target/tcp.c @@ -1456,9 +1456,6 @@ static void nvmet_tcp_restore_socket_callbacks(struct nvmet_tcp_queue *queue) { struct socket *sock = queue->sock; - if (!queue->state_change) - return; - write_lock_bh(&sock->sk->sk_callback_lock); sock->sk->sk_data_ready = queue->data_ready; sock->sk->sk_state_change = queue->state_change; -- Gitee From 5e8802d021052ef5e02a922e524794eb5ad60fc1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:49 +0800 Subject: [PATCH 1333/1421] Revert "nvme-pci: add quirks for WDC Blue SN550 15b7:5009" This reverts commit 9e29f9c16fc1d61c8269c2b0030a2023ea8bfa2c. --- drivers/nvme/host/pci.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 1a33be577397..91c2dacb9043 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -3455,9 +3455,6 @@ static const struct pci_device_id nvme_id_table[] = { NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_DEVICE(0x15b7, 0x5008), /* Sandisk SN530 */ .driver_data = NVME_QUIRK_BROKEN_MSI }, - { PCI_DEVICE(0x15b7, 0x5009), /* Sandisk SN550 */ - .driver_data = NVME_QUIRK_BROKEN_MSI | - NVME_QUIRK_NO_DEEPEST_PS }, { PCI_DEVICE(0x1987, 0x5012), /* Phison E12 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1987, 0x5016), /* Phison E16 */ -- Gitee From c3023639bac3e9bd16e9bcf0e46de36ed0e28e96 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:49 +0800 Subject: [PATCH 1334/1421] Revert "nvme-pci: add quirks for device 126f:1001" This reverts commit e986d4f0568ca62b9c9138f543a39617827fc9cd. --- drivers/nvme/host/pci.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 91c2dacb9043..1e5c8220e365 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -3429,9 +3429,6 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1217, 0x8760), /* O2 Micro 64GB Steam Deck */ .driver_data = NVME_QUIRK_DMAPOOL_ALIGN_512, }, - { PCI_DEVICE(0x126f, 0x1001), /* Silicon Motion generic */ - .driver_data = NVME_QUIRK_NO_DEEPEST_PS | - NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS | NVME_QUIRK_BOGUS_NID, }, -- Gitee From 82f8b1f713d6a0a18f24eee0d2d3c3c4f2d8d08e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:49 +0800 Subject: [PATCH 1335/1421] Revert "ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx" This reverts commit e0a6e28066d81aea3f17b86ac2b76e60551065c6. --- sound/pci/hda/patch_realtek.c | 42 ----------------------------------- 1 file changed, 42 deletions(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 77e9c7a928ef..a13795e405a4 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -6790,41 +6790,6 @@ static void alc285_fixup_hp_spectre_x360_eb1(struct hda_codec *codec, } } -/* GPIO1 = amplifier on/off */ -static void alc285_fixup_hp_spectre_x360_df1(struct hda_codec *codec, - const struct hda_fixup *fix, - int action) -{ - struct alc_spec *spec = codec->spec; - static const hda_nid_t conn[] = { 0x02 }; - static const struct hda_pintbl pincfgs[] = { - { 0x14, 0x90170110 }, /* front/high speakers */ - { 0x17, 0x90170130 }, /* back/bass speakers */ - { } - }; - - // enable mute led - alc285_fixup_hp_mute_led_coefbit(codec, fix, action); - - switch (action) { - case HDA_FIXUP_ACT_PRE_PROBE: - /* needed for amp of back speakers */ - spec->gpio_mask |= 0x01; - spec->gpio_dir |= 0x01; - snd_hda_apply_pincfgs(codec, pincfgs); - /* share DAC to have unified volume control */ - snd_hda_override_conn_list(codec, 0x14, ARRAY_SIZE(conn), conn); - snd_hda_override_conn_list(codec, 0x17, ARRAY_SIZE(conn), conn); - break; - case HDA_FIXUP_ACT_INIT: - /* need to toggle GPIO to enable the amp of back speakers */ - alc_update_gpio_data(codec, 0x01, true); - msleep(100); - alc_update_gpio_data(codec, 0x01, false); - break; - } -} - static void alc285_fixup_hp_spectre_x360(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -7436,7 +7401,6 @@ enum { ALC280_FIXUP_HP_9480M, ALC245_FIXUP_HP_X360_AMP, ALC285_FIXUP_HP_SPECTRE_X360_EB1, - ALC285_FIXUP_HP_SPECTRE_X360_DF1, ALC285_FIXUP_HP_ENVY_X360, ALC288_FIXUP_DELL_HEADSET_MODE, ALC288_FIXUP_DELL1_MIC_NO_PRESENCE, @@ -9475,10 +9439,6 @@ static const struct hda_fixup alc269_fixups[] = { .type = HDA_FIXUP_FUNC, .v.func = alc285_fixup_hp_spectre_x360_eb1 }, - [ALC285_FIXUP_HP_SPECTRE_X360_DF1] = { - .type = HDA_FIXUP_FUNC, - .v.func = alc285_fixup_hp_spectre_x360_df1 - }, [ALC285_FIXUP_HP_ENVY_X360] = { .type = HDA_FIXUP_FUNC, .v.func = alc285_fixup_hp_envy_x360, @@ -10078,7 +10038,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x103c, 0x86c1, "HP Laptop 15-da3001TU", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2), SND_PCI_QUIRK(0x103c, 0x86c7, "HP Envy AiO 32", ALC274_FIXUP_HP_ENVY_GPIO), SND_PCI_QUIRK(0x103c, 0x86e7, "HP Spectre x360 15-eb0xxx", ALC285_FIXUP_HP_SPECTRE_X360_EB1), - SND_PCI_QUIRK(0x103c, 0x863e, "HP Spectre x360 15-df1xxx", ALC285_FIXUP_HP_SPECTRE_X360_DF1), SND_PCI_QUIRK(0x103c, 0x86e8, "HP Spectre x360 15-eb0xxx", ALC285_FIXUP_HP_SPECTRE_X360_EB1), SND_PCI_QUIRK(0x103c, 0x86f9, "HP Spectre x360 13-aw0xxx", ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x8716, "HP Elite Dragonfly G2 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), @@ -10827,7 +10786,6 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {.id = ALC295_FIXUP_HP_OMEN, .name = "alc295-hp-omen"}, {.id = ALC285_FIXUP_HP_SPECTRE_X360, .name = "alc285-hp-spectre-x360"}, {.id = ALC285_FIXUP_HP_SPECTRE_X360_EB1, .name = "alc285-hp-spectre-x360-eb1"}, - {.id = ALC285_FIXUP_HP_SPECTRE_X360_DF1, .name = "alc285-hp-spectre-x360-df1"}, {.id = ALC285_FIXUP_HP_ENVY_X360, .name = "alc285-hp-envy-x360"}, {.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP, .name = "alc287-ideapad-bass-spk-amp"}, {.id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN, .name = "alc287-yoga9-bass-spk-pin"}, -- Gitee From 16897cc01ef248c84a532cfa3826a913cc415f6f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:50 +0800 Subject: [PATCH 1336/1421] Revert "ASoC: Intel: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013" This reverts commit fb278560b1253117b2bb345e1feab77372ea7d3d. --- sound/soc/intel/boards/bytcr_rt5640.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c index 6a85e8fdcae6..ce80adc30fe9 100644 --- a/sound/soc/intel/boards/bytcr_rt5640.c +++ b/sound/soc/intel/boards/bytcr_rt5640.c @@ -576,19 +576,6 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = { BYT_RT5640_SSP0_AIF2 | BYT_RT5640_MCLK_EN), }, - { /* Acer Aspire SW3-013 */ - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Acer"), - DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW3-013"), - }, - .driver_data = (void *)(BYT_RT5640_DMIC1_MAP | - BYT_RT5640_JD_SRC_JD2_IN4N | - BYT_RT5640_OVCD_TH_2000UA | - BYT_RT5640_OVCD_SF_0P75 | - BYT_RT5640_DIFF_MIC | - BYT_RT5640_SSP0_AIF1 | - BYT_RT5640_MCLK_EN), - }, { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"), -- Gitee From 65414fd093247e576b2f76a34daa03ae4a74a402 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:50 +0800 Subject: [PATCH 1337/1421] Revert "ASoC: cs42l43: Disable headphone clamps during type detection" This reverts commit 065fea309030b9f698297cc8085abee7c216220a. --- sound/soc/codecs/cs42l43-jack.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sound/soc/codecs/cs42l43-jack.c b/sound/soc/codecs/cs42l43-jack.c index 6d8455c1bee6..0b8e88b19888 100644 --- a/sound/soc/codecs/cs42l43-jack.c +++ b/sound/soc/codecs/cs42l43-jack.c @@ -642,10 +642,6 @@ static int cs42l43_run_type_detect(struct cs42l43_codec *priv) reinit_completion(&priv->type_detect); - regmap_update_bits(cs42l43->regmap, CS42L43_STEREO_MIC_CLAMP_CTRL, - CS42L43_SMIC_HPAMP_CLAMP_DIS_FRC_VAL_MASK, - CS42L43_SMIC_HPAMP_CLAMP_DIS_FRC_VAL_MASK); - cs42l43_start_hs_bias(priv, true); regmap_update_bits(cs42l43->regmap, CS42L43_HS2, CS42L43_HSDET_MODE_MASK, 0x3 << CS42L43_HSDET_MODE_SHIFT); @@ -657,9 +653,6 @@ static int cs42l43_run_type_detect(struct cs42l43_codec *priv) CS42L43_HSDET_MODE_MASK, 0x2 << CS42L43_HSDET_MODE_SHIFT); cs42l43_stop_hs_bias(priv); - regmap_update_bits(cs42l43->regmap, CS42L43_STEREO_MIC_CLAMP_CTRL, - CS42L43_SMIC_HPAMP_CLAMP_DIS_FRC_VAL_MASK, 0); - if (!time_left) return -ETIMEDOUT; -- Gitee From a0478fdc307b6ec60c88e1b391dddd5440be2fbe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:50 +0800 Subject: [PATCH 1338/1421] Revert "pinctrl: meson: define the pull up/down resistor value as 60 kOhm" This reverts commit 58b5c125da21447968be9bcc75e904b093c95616. --- drivers/pinctrl/meson/pinctrl-meson.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c index 5cc00fdc48d8..524424ee6c4e 100644 --- a/drivers/pinctrl/meson/pinctrl-meson.c +++ b/drivers/pinctrl/meson/pinctrl-meson.c @@ -486,7 +486,7 @@ static int meson_pinconf_get(struct pinctrl_dev *pcdev, unsigned int pin, case PIN_CONFIG_BIAS_PULL_DOWN: case PIN_CONFIG_BIAS_PULL_UP: if (meson_pinconf_get_pull(pc, pin) == param) - arg = 60000; + arg = 1; else return -EINVAL; break; -- Gitee From d1188d9dd850dd8fd383ac65cc7f6fdd363c4632 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:50 +0800 Subject: [PATCH 1339/1421] Revert "book3s64/radix: Fix compile errors when CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=n" This reverts commit 7fab1017ad5510de72ee097191a5362912d8e04f. --- arch/powerpc/mm/book3s64/radix_pgtable.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c index aff3b37e32d6..28460e334080 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -912,7 +912,7 @@ int __meminit radix__vmemmap_create_mapping(unsigned long start, return 0; } -#ifdef CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP + bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *pgmap) { if (radix_enabled()) @@ -920,7 +920,6 @@ bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *pgmap) return false; } -#endif int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node, unsigned long addr, unsigned long next) -- Gitee From 89cc4a078701326f542d4f5af9dd86ea0cbc33ae Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:50 +0800 Subject: [PATCH 1340/1421] Revert "ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of()" This reverts commit 9b254814e3e58a91d6746eaa6c437605d7387b9a. --- sound/soc/fsl/imx-card.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/fsl/imx-card.c b/sound/soc/fsl/imx-card.c index bb304de5cc38..7128bcf3a743 100644 --- a/sound/soc/fsl/imx-card.c +++ b/sound/soc/fsl/imx-card.c @@ -517,7 +517,7 @@ static int imx_card_parse_of(struct imx_card_data *data) if (!card->dai_link) return -ENOMEM; - data->link_data = devm_kcalloc(dev, num_links, sizeof(*link_data), GFP_KERNEL); + data->link_data = devm_kcalloc(dev, num_links, sizeof(*link), GFP_KERNEL); if (!data->link_data) return -ENOMEM; -- Gitee From fcc760e5859ea0c57789313f7e51ca3fe49473f0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:51 +0800 Subject: [PATCH 1341/1421] Revert "drm: Add valid clones check" This reverts commit ca8674f74916dc06709ba7dadf74938b1fef5e01. --- drivers/gpu/drm/drm_atomic_helper.c | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 1aa59586c8f8..f3681970887c 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -573,30 +573,6 @@ mode_valid(struct drm_atomic_state *state) return 0; } -static int drm_atomic_check_valid_clones(struct drm_atomic_state *state, - struct drm_crtc *crtc) -{ - struct drm_encoder *drm_enc; - struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, - crtc); - - drm_for_each_encoder_mask(drm_enc, crtc->dev, crtc_state->encoder_mask) { - if (!drm_enc->possible_clones) { - DRM_DEBUG("enc%d possible_clones is 0\n", drm_enc->base.id); - continue; - } - - if ((crtc_state->encoder_mask & drm_enc->possible_clones) != - crtc_state->encoder_mask) { - DRM_DEBUG("crtc%d failed valid clone check for mask 0x%x\n", - crtc->base.id, crtc_state->encoder_mask); - return -EINVAL; - } - } - - return 0; -} - /** * drm_atomic_helper_check_modeset - validate state object for modeset changes * @dev: DRM device @@ -768,10 +744,6 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ret = drm_atomic_add_affected_planes(state, crtc); if (ret != 0) return ret; - - ret = drm_atomic_check_valid_clones(state, crtc); - if (ret != 0) - return ret; } /* -- Gitee From 3b778a0c662316002e437c3ceacb37f7c9d240fe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:51 +0800 Subject: [PATCH 1342/1421] Revert "drm/panel-edp: Add Starry 116KHD024006" This reverts commit 7b05b44e9a71fe2b0148e3be87d7125f2771a477. --- drivers/gpu/drm/panel/panel-edp.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c index 53b3b24d7d7c..94fe2f3836a9 100644 --- a/drivers/gpu/drm/panel/panel-edp.c +++ b/drivers/gpu/drm/panel/panel-edp.c @@ -1923,7 +1923,6 @@ static const struct edp_panel_entry edp_panels[] = { EDP_PANEL_ENTRY('S', 'H', 'P', 0x1523, &sharp_lq140m1jw46.delay, "LQ140M1JW46"), EDP_PANEL_ENTRY('S', 'H', 'P', 0x154c, &delay_200_500_p2e100, "LQ116M1JW10"), - EDP_PANEL_ENTRY('S', 'T', 'A', 0x0004, &delay_200_500_e200, "116KHD024006"), EDP_PANEL_ENTRY('S', 'T', 'A', 0x0100, &delay_100_500_e200, "2081116HHD028001-51D"), { /* sentinal */ } -- Gitee From 6c591b3861f8a3fb2cc66470734ec0af6f845153 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:51 +0800 Subject: [PATCH 1343/1421] Revert "drm/atomic: clarify the rules around drm_atomic_state->allow_modeset" This reverts commit 801d7fa3f82e10b7855e0818b4384391b4c85b6b. --- include/drm/drm_atomic.h | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h index f3e7e3e5078d..9a022caacf93 100644 --- a/include/drm/drm_atomic.h +++ b/include/drm/drm_atomic.h @@ -372,27 +372,8 @@ struct drm_atomic_state { * * Allow full modeset. This is used by the ATOMIC IOCTL handler to * implement the DRM_MODE_ATOMIC_ALLOW_MODESET flag. Drivers should - * generally not consult this flag, but instead look at the output of - * drm_atomic_crtc_needs_modeset(). The detailed rules are: - * - * - Drivers must not consult @allow_modeset in the atomic commit path. - * Use drm_atomic_crtc_needs_modeset() instead. - * - * - Drivers must consult @allow_modeset before adding unrelated struct - * drm_crtc_state to this commit by calling - * drm_atomic_get_crtc_state(). See also the warning in the - * documentation for that function. - * - * - Drivers must never change this flag, it is under the exclusive - * control of userspace. - * - * - Drivers may consult @allow_modeset in the atomic check path, if - * they have the choice between an optimal hardware configuration - * which requires a modeset, and a less optimal configuration which - * can be committed without a modeset. An example would be suboptimal - * scanout FIFO allocation resulting in increased idle power - * consumption. This allows userspace to avoid flickering and delays - * for the normal composition loop at reasonable cost. + * never consult this flag, instead looking at the output of + * drm_atomic_crtc_needs_modeset(). */ bool allow_modeset : 1; /** -- Gitee From bf082dc64187455c00632c06af8014b06953668c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:51 +0800 Subject: [PATCH 1344/1421] Revert "drm: bridge: adv7511: fill stream capabilities" This reverts commit df85c0cb0eccece42a382104df040b9eacc0a70b. --- drivers/gpu/drm/bridge/adv7511/adv7511_audio.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_audio.c b/drivers/gpu/drm/bridge/adv7511/adv7511_audio.c index 24e1e11acf69..8f786592143b 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_audio.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_audio.c @@ -244,9 +244,7 @@ static const struct hdmi_codec_pdata codec_data = { .ops = &adv7511_codec_ops, .max_i2s_channels = 2, .i2s = 1, - .no_i2s_capture = 1, .spdif = 1, - .no_spdif_capture = 1, }; int adv7511_audio_init(struct device *dev, struct adv7511 *adv7511) -- Gitee From 0779449c31da068fc08779e7a26cf8837e76677d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:52 +0800 Subject: [PATCH 1345/1421] Revert "wifi: ath12k: Fix end offset bit definition in monitor ring descriptor" This reverts commit d2983436ec607b307ff0c95ac4aff97d8076716a. --- drivers/net/wireless/ath/ath12k/hal_desc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/hal_desc.h b/drivers/net/wireless/ath/ath12k/hal_desc.h index 1bb840c2bef5..6c17adc6d60b 100644 --- a/drivers/net/wireless/ath/ath12k/hal_desc.h +++ b/drivers/net/wireless/ath/ath12k/hal_desc.h @@ -2918,7 +2918,7 @@ struct hal_mon_buf_ring { #define HAL_MON_DEST_COOKIE_BUF_ID GENMASK(17, 0) -#define HAL_MON_DEST_INFO0_END_OFFSET GENMASK(11, 0) +#define HAL_MON_DEST_INFO0_END_OFFSET GENMASK(15, 0) #define HAL_MON_DEST_INFO0_FLUSH_DETECTED BIT(16) #define HAL_MON_DEST_INFO0_END_OF_PPDU BIT(17) #define HAL_MON_DEST_INFO0_INITIATOR BIT(18) -- Gitee From 475b55176cc912f05c748b00557ac6e17c8a3b0c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:52 +0800 Subject: [PATCH 1346/1421] Revert "wifi: ath9k: return by of_get_mac_address" This reverts commit 0feabfc5bb8cce292da033875c3e319e22a5da43. --- drivers/net/wireless/ath/ath9k/init.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index 58386906598a..4f00400c7ffb 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c @@ -691,9 +691,7 @@ static int ath9k_of_init(struct ath_softc *sc) ah->ah_flags |= AH_NO_EEP_SWAP; } - ret = of_get_mac_address(np, common->macaddr); - if (ret == -EPROBE_DEFER) - return ret; + of_get_mac_address(np, common->macaddr); return 0; } -- Gitee From c643e665e0b8c78d431fdef3a1347b706f0d08dd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:52 +0800 Subject: [PATCH 1347/1421] Revert "accel/qaic: Mask out SR-IOV PCI resources" This reverts commit 4a99167c1fe1451b4bff391d9a69793e59b840f2. --- drivers/accel/qaic/qaic_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/accel/qaic/qaic_drv.c b/drivers/accel/qaic/qaic_drv.c index e69bfb30b44e..b5de82e6eb4d 100644 --- a/drivers/accel/qaic/qaic_drv.c +++ b/drivers/accel/qaic/qaic_drv.c @@ -400,7 +400,7 @@ static int init_pci(struct qaic_device *qdev, struct pci_dev *pdev) int bars; int ret; - bars = pci_select_bars(pdev, IORESOURCE_MEM) & 0x3f; + bars = pci_select_bars(pdev, IORESOURCE_MEM); /* make sure the device has the expected BARs */ if (bars != (BIT(0) | BIT(2) | BIT(4))) { -- Gitee From ae083338d8aefb68855e29f916f5bf2e3d774074 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:52 +0800 Subject: [PATCH 1348/1421] Revert "wifi: ath12k: fix ath12k_hal_tx_cmd_ext_desc_setup() info1 override" This reverts commit 4bddbc01573154ed994b8767424c10e3b3506807. --- drivers/net/wireless/ath/ath12k/dp_tx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/dp_tx.c b/drivers/net/wireless/ath/ath12k/dp_tx.c index 474e0d4d406e..25a9d4c4fae7 100644 --- a/drivers/net/wireless/ath/ath12k/dp_tx.c +++ b/drivers/net/wireless/ath/ath12k/dp_tx.c @@ -118,7 +118,7 @@ static void ath12k_hal_tx_cmd_ext_desc_setup(struct ath12k_base *ab, void *cmd, le32_encode_bits(ti->data_len, HAL_TX_MSDU_EXT_INFO1_BUF_LEN); - tcl_ext_cmd->info1 |= le32_encode_bits(1, HAL_TX_MSDU_EXT_INFO1_EXTN_OVERRIDE) | + tcl_ext_cmd->info1 = le32_encode_bits(1, HAL_TX_MSDU_EXT_INFO1_EXTN_OVERRIDE) | le32_encode_bits(ti->encap_type, HAL_TX_MSDU_EXT_INFO1_ENCAP_TYPE) | le32_encode_bits(ti->encrypt_type, -- Gitee From f7b0ab6d5a1ec09035361ae3e09d2b829931d641 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:53 +0800 Subject: [PATCH 1349/1421] Revert "regulator: ad5398: Add device tree support" This reverts commit 02d343a211a1d5d2e9fce5fc6712f4f2b413778f. --- drivers/regulator/ad5398.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/regulator/ad5398.c b/drivers/regulator/ad5398.c index 404cbe32711e..40f7dba42b5a 100644 --- a/drivers/regulator/ad5398.c +++ b/drivers/regulator/ad5398.c @@ -14,7 +14,6 @@ #include #include #include -#include #define AD5398_CURRENT_EN_MASK 0x8000 @@ -222,20 +221,15 @@ static int ad5398_probe(struct i2c_client *client) const struct ad5398_current_data_format *df = (struct ad5398_current_data_format *)id->driver_data; + if (!init_data) + return -EINVAL; + chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); if (!chip) return -ENOMEM; config.dev = &client->dev; - if (client->dev.of_node) - init_data = of_get_regulator_init_data(&client->dev, - client->dev.of_node, - &ad5398_reg); - if (!init_data) - return -EINVAL; - config.init_data = init_data; - config.of_node = client->dev.of_node; config.driver_data = chip; chip->client = client; -- Gitee From fd25c1488322d4caa80a1829c751c39d03ba27e4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:53 +0800 Subject: [PATCH 1350/1421] Revert "spi: zynqmp-gqspi: Always acknowledge interrupts" This reverts commit 0d4ba32616a9b7aece4d8dfd6f6db9841bae563b. --- drivers/spi/spi-zynqmp-gqspi.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c index b5deb4fe3b83..3503e6c0a5c9 100644 --- a/drivers/spi/spi-zynqmp-gqspi.c +++ b/drivers/spi/spi-zynqmp-gqspi.c @@ -799,6 +799,7 @@ static void zynqmp_process_dma_irq(struct zynqmp_qspi *xqspi) static irqreturn_t zynqmp_qspi_irq(int irq, void *dev_id) { struct zynqmp_qspi *xqspi = (struct zynqmp_qspi *)dev_id; + irqreturn_t ret = IRQ_NONE; u32 status, mask, dma_status = 0; status = zynqmp_gqspi_read(xqspi, GQSPI_ISR_OFST); @@ -813,24 +814,27 @@ static irqreturn_t zynqmp_qspi_irq(int irq, void *dev_id) dma_status); } - if (!mask && !dma_status) - return IRQ_NONE; - - if (mask & GQSPI_ISR_TXNOT_FULL_MASK) + if (mask & GQSPI_ISR_TXNOT_FULL_MASK) { zynqmp_qspi_filltxfifo(xqspi, GQSPI_TX_FIFO_FILL); + ret = IRQ_HANDLED; + } - if (dma_status & GQSPI_QSPIDMA_DST_I_STS_DONE_MASK) + if (dma_status & GQSPI_QSPIDMA_DST_I_STS_DONE_MASK) { zynqmp_process_dma_irq(xqspi); - else if (!(mask & GQSPI_IER_RXEMPTY_MASK) && - (mask & GQSPI_IER_GENFIFOEMPTY_MASK)) + ret = IRQ_HANDLED; + } else if (!(mask & GQSPI_IER_RXEMPTY_MASK) && + (mask & GQSPI_IER_GENFIFOEMPTY_MASK)) { zynqmp_qspi_readrxfifo(xqspi, GQSPI_RX_FIFO_FILL); + ret = IRQ_HANDLED; + } if (xqspi->bytes_to_receive == 0 && xqspi->bytes_to_transfer == 0 && ((status & GQSPI_IRQ_MASK) == GQSPI_IRQ_MASK)) { zynqmp_gqspi_write(xqspi, GQSPI_IDR_OFST, GQSPI_ISR_IDR_MASK); complete(&xqspi->data_completion); + ret = IRQ_HANDLED; } - return IRQ_HANDLED; + return ret; } /** -- Gitee From f68bcbebbc230108b57a4cfb06a9521237518c68 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:53 +0800 Subject: [PATCH 1351/1421] Revert "wifi: rtw89: add wiphy_lock() to work that isn't held wiphy_lock() yet" This reverts commit 1320fe2152e102a447e3b7ee4201fce457dadba8. --- drivers/net/wireless/realtek/rtw89/regd.c | 2 -- drivers/net/wireless/realtek/rtw89/ser.c | 4 ---- 2 files changed, 6 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/regd.c b/drivers/net/wireless/realtek/rtw89/regd.c index 91f0895d9f54..9e2328db1865 100644 --- a/drivers/net/wireless/realtek/rtw89/regd.c +++ b/drivers/net/wireless/realtek/rtw89/regd.c @@ -451,7 +451,6 @@ void rtw89_regd_notifier(struct wiphy *wiphy, struct regulatory_request *request struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); struct rtw89_dev *rtwdev = hw->priv; - wiphy_lock(wiphy); mutex_lock(&rtwdev->mutex); rtw89_leave_ps_mode(rtwdev); @@ -469,7 +468,6 @@ void rtw89_regd_notifier(struct wiphy *wiphy, struct regulatory_request *request exit: mutex_unlock(&rtwdev->mutex); - wiphy_unlock(wiphy); } static void __rtw89_reg_6ghz_power_recalc(struct rtw89_dev *rtwdev) diff --git a/drivers/net/wireless/realtek/rtw89/ser.c b/drivers/net/wireless/realtek/rtw89/ser.c index 45165cf3e824..01b17b8f4ff9 100644 --- a/drivers/net/wireless/realtek/rtw89/ser.c +++ b/drivers/net/wireless/realtek/rtw89/ser.c @@ -156,11 +156,9 @@ static void ser_state_run(struct rtw89_ser *ser, u8 evt) rtw89_debug(rtwdev, RTW89_DBG_SER, "ser: %s receive %s\n", ser_st_name(ser), ser_ev_name(ser, evt)); - wiphy_lock(rtwdev->hw->wiphy); mutex_lock(&rtwdev->mutex); rtw89_leave_lps(rtwdev); mutex_unlock(&rtwdev->mutex); - wiphy_unlock(rtwdev->hw->wiphy); ser->st_tbl[ser->state].st_func(ser, evt); } @@ -678,11 +676,9 @@ static void ser_l2_reset_st_hdl(struct rtw89_ser *ser, u8 evt) switch (evt) { case SER_EV_STATE_IN: - wiphy_lock(rtwdev->hw->wiphy); mutex_lock(&rtwdev->mutex); ser_l2_reset_st_pre_hdl(ser); mutex_unlock(&rtwdev->mutex); - wiphy_unlock(rtwdev->hw->wiphy); ieee80211_restart_hw(rtwdev->hw); ser_set_alarm(ser, SER_RECFG_TIMEOUT, SER_EV_L2_RECFG_TIMEOUT); -- Gitee From 9829022ec00d840c24d2443af5a377cf4eee8a27 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:53 +0800 Subject: [PATCH 1352/1421] Revert "wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate" This reverts commit 832dfeae1d8e0f4caf6af9f548cb6293a13dfe3e. --- drivers/net/wireless/realtek/rtw88/rtw8822b.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c index 99318a82b43f..3017a9760da8 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c @@ -975,11 +975,11 @@ static void rtw8822b_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc, } static void -rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, - u8 rs, u32 *phy_pwr_idx) +rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs) { struct rtw_hal *hal = &rtwdev->hal; static const u32 offset_txagc[2] = {0x1d00, 0x1d80}; + static u32 phy_pwr_idx; u8 rate, rate_idx, pwr_index, shift; int j; @@ -987,12 +987,12 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, rate = rtw_rate_section[rs][j]; pwr_index = hal->tx_pwr_tbl[path][rate]; shift = rate & 0x3; - *phy_pwr_idx |= ((u32)pwr_index << (shift * 8)); + phy_pwr_idx |= ((u32)pwr_index << (shift * 8)); if (shift == 0x3) { rate_idx = rate & 0xfc; rtw_write32(rtwdev, offset_txagc[path] + rate_idx, - *phy_pwr_idx); - *phy_pwr_idx = 0; + phy_pwr_idx); + phy_pwr_idx = 0; } } } @@ -1000,13 +1000,11 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev) { struct rtw_hal *hal = &rtwdev->hal; - u32 phy_pwr_idx = 0; int rs, path; for (path = 0; path < hal->rf_path_num; path++) { for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) - rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs, - &phy_pwr_idx); + rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs); } } -- Gitee From 6a94a5ca7c2bc838565a8d4ff5595c431d1b294f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:54 +0800 Subject: [PATCH 1353/1421] Revert "wifi: rtl8xxxu: retry firmware download on error" This reverts commit a002b0413dc8b396bdbbf1385f8c7b3078f54148. --- .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index 05e77d2bda37..6e47dde93890 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -900,10 +900,9 @@ rtl8xxxu_writeN(struct rtl8xxxu_priv *priv, u16 addr, u8 *buf, u16 len) return len; write_error: - if (rtl8xxxu_debug & RTL8XXXU_DEBUG_REG_WRITE) - dev_info(&udev->dev, - "%s: Failed to write block at addr: %04x size: %04x\n", - __func__, addr, blocksize); + dev_info(&udev->dev, + "%s: Failed to write block at addr: %04x size: %04x\n", + __func__, addr, blocksize); return -EAGAIN; } @@ -4074,14 +4073,8 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw) */ rtl8xxxu_write16(priv, REG_TRXFF_BNDY + 2, fops->trxff_boundary); - for (int retry = 5; retry >= 0 ; retry--) { - ret = rtl8xxxu_download_firmware(priv); - dev_dbg(dev, "%s: download_firmware %i\n", __func__, ret); - if (ret != -EAGAIN) - break; - if (retry) - dev_dbg(dev, "%s: retry firmware download\n", __func__); - } + ret = rtl8xxxu_download_firmware(priv); + dev_dbg(dev, "%s: download_firmware %i\n", __func__, ret); if (ret) goto exit; ret = rtl8xxxu_start_firmware(priv); -- Gitee From 7e0427e3dc0e7a57e8f6d2787113103a57fd2aff Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:54 +0800 Subject: [PATCH 1354/1421] Revert "perf/amd/ibs: Fix ->config to sample period calculation for OP PMU" This reverts commit baa76fbba6c8231735011e644df0a91ded740d75. --- arch/x86/events/amd/ibs.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c index fac3d97111b0..85731f121feb 100644 --- a/arch/x86/events/amd/ibs.c +++ b/arch/x86/events/amd/ibs.c @@ -272,7 +272,7 @@ static int perf_ibs_init(struct perf_event *event) { struct hw_perf_event *hwc = &event->hw; struct perf_ibs *perf_ibs; - u64 config; + u64 max_cnt, config; int ret; perf_ibs = get_ibs_pmu(event->attr.type); @@ -306,19 +306,10 @@ static int perf_ibs_init(struct perf_event *event) if (!hwc->sample_period) hwc->sample_period = 0x10; } else { - u64 period = 0; - - if (perf_ibs == &perf_ibs_op) { - period = (config & IBS_OP_MAX_CNT) << 4; - if (ibs_caps & IBS_CAPS_OPCNTEXT) - period |= config & IBS_OP_MAX_CNT_EXT_MASK; - } else { - period = (config & IBS_FETCH_MAX_CNT) << 4; - } - + max_cnt = config & perf_ibs->cnt_mask; config &= ~perf_ibs->cnt_mask; - event->attr.sample_period = period; - hwc->sample_period = period; + event->attr.sample_period = max_cnt << 4; + hwc->sample_period = event->attr.sample_period; } if (!hwc->sample_period) -- Gitee From 71a76a07a7645d19c0e312a1da2eb6711e7df502 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:54 +0800 Subject: [PATCH 1355/1421] Revert "perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt" This reverts commit 0b3cf2998ac5e71ca76723fee1b35811cf1ec05e. --- arch/x86/events/amd/ibs.c | 3 +-- arch/x86/include/asm/perf_event.h | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c index 85731f121feb..f483874fa20f 100644 --- a/arch/x86/events/amd/ibs.c +++ b/arch/x86/events/amd/ibs.c @@ -1219,8 +1219,7 @@ static __init int perf_ibs_op_init(void) if (ibs_caps & IBS_CAPS_OPCNTEXT) { perf_ibs_op.max_period |= IBS_OP_MAX_CNT_EXT_MASK; perf_ibs_op.config_mask |= IBS_OP_MAX_CNT_EXT_MASK; - perf_ibs_op.cnt_mask |= (IBS_OP_MAX_CNT_EXT_MASK | - IBS_OP_CUR_CNT_EXT_MASK); + perf_ibs_op.cnt_mask |= IBS_OP_MAX_CNT_EXT_MASK; } if (ibs_caps & IBS_CAPS_ZEN4) diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h index ba2a3935dc62..384e8a7db482 100644 --- a/arch/x86/include/asm/perf_event.h +++ b/arch/x86/include/asm/perf_event.h @@ -501,7 +501,6 @@ struct pebs_xmm { */ #define IBS_OP_CUR_CNT (0xFFF80ULL<<32) #define IBS_OP_CUR_CNT_RAND (0x0007FULL<<32) -#define IBS_OP_CUR_CNT_EXT_MASK (0x7FULL<<52) #define IBS_OP_CNT_CTL (1ULL<<19) #define IBS_OP_VAL (1ULL<<18) #define IBS_OP_ENABLE (1ULL<<17) -- Gitee From a14468f6ab7193fce81e4babf7f301a7bb275cca Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:54 +0800 Subject: [PATCH 1356/1421] Revert "firmware: arm_scmi: Relax duplicate name constraint across protocol ids" This reverts commit 6f176e74a7c257cae23a6b801b8d45f0bb509375. --- drivers/firmware/arm_scmi/bus.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c index e1b949aedf9e..51eeaf14367d 100644 --- a/drivers/firmware/arm_scmi/bus.c +++ b/drivers/firmware/arm_scmi/bus.c @@ -42,7 +42,7 @@ static atomic_t scmi_syspower_registered = ATOMIC_INIT(0); * This helper let an SCMI driver request specific devices identified by the * @id_table to be created for each active SCMI instance. * - * The requested device name MUST NOT be already existent for this protocol; + * The requested device name MUST NOT be already existent for any protocol; * at first the freshly requested @id_table is annotated in the IDR table * @scmi_requested_devices and then the requested device is advertised to any * registered party via the @scmi_requested_devices_nh notification chain. @@ -52,6 +52,7 @@ static atomic_t scmi_syspower_registered = ATOMIC_INIT(0); static int scmi_protocol_device_request(const struct scmi_device_id *id_table) { int ret = 0; + unsigned int id = 0; struct list_head *head, *phead = NULL; struct scmi_requested_dev *rdev; @@ -66,13 +67,19 @@ static int scmi_protocol_device_request(const struct scmi_device_id *id_table) } /* - * Find the matching protocol rdev list and then search of any - * existent equally named device...fails if any duplicate found. + * Search for the matching protocol rdev list and then search + * of any existent equally named device...fails if any duplicate found. */ mutex_lock(&scmi_requested_devices_mtx); - phead = idr_find(&scmi_requested_devices, id_table->protocol_id); - if (phead) { - head = phead; + idr_for_each_entry(&scmi_requested_devices, head, id) { + if (!phead) { + /* A list found registered in the IDR is never empty */ + rdev = list_first_entry(head, struct scmi_requested_dev, + node); + if (rdev->id_table->protocol_id == + id_table->protocol_id) + phead = head; + } list_for_each_entry(rdev, head, node) { if (!strcmp(rdev->id_table->name, id_table->name)) { pr_err("Ignoring duplicate request [%d] %s\n", -- Gitee From c1ccc93aa78d05c9472f9d151847ecc5a993aea0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:55 +0800 Subject: [PATCH 1357/1421] Revert "bpftool: Fix readlink usage in get_fd_type" This reverts commit 86abd10a6bc0d2761a20fb8e2bcdaa0230570306. --- tools/bpf/bpftool/common.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c index 0a764426d935..9b75639434b8 100644 --- a/tools/bpf/bpftool/common.c +++ b/tools/bpf/bpftool/common.c @@ -461,11 +461,10 @@ int get_fd_type(int fd) p_err("can't read link type: %s", strerror(errno)); return -1; } - if (n == sizeof(buf)) { + if (n == sizeof(path)) { p_err("can't read link type: path too long!"); return -1; } - buf[n] = '\0'; if (strstr(buf, "bpf-map")) return BPF_OBJ_MAP; -- Gitee From dadcaf9eac605ab322750632cedfaa2092001ad1 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:55 +0800 Subject: [PATCH 1358/1421] Revert "drm/ast: Find VBIOS mode from regular display size" This reverts commit 7bcc7ce83bdd3773f5f93ecc76916a49d194aa22. --- drivers/gpu/drm/ast/ast_mode.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index 5f58da6ebaad..3de0f457fff6 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -132,7 +132,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format, return false; } - switch (mode->hdisplay) { + switch (mode->crtc_hdisplay) { case 640: vbios_mode->enh_table = &res_640x480[refresh_rate_index]; break; @@ -146,7 +146,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format, vbios_mode->enh_table = &res_1152x864[refresh_rate_index]; break; case 1280: - if (mode->vdisplay == 800) + if (mode->crtc_vdisplay == 800) vbios_mode->enh_table = &res_1280x800[refresh_rate_index]; else vbios_mode->enh_table = &res_1280x1024[refresh_rate_index]; @@ -158,7 +158,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format, vbios_mode->enh_table = &res_1440x900[refresh_rate_index]; break; case 1600: - if (mode->vdisplay == 900) + if (mode->crtc_vdisplay == 900) vbios_mode->enh_table = &res_1600x900[refresh_rate_index]; else vbios_mode->enh_table = &res_1600x1200[refresh_rate_index]; @@ -167,7 +167,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format, vbios_mode->enh_table = &res_1680x1050[refresh_rate_index]; break; case 1920: - if (mode->vdisplay == 1080) + if (mode->crtc_vdisplay == 1080) vbios_mode->enh_table = &res_1920x1080[refresh_rate_index]; else vbios_mode->enh_table = &res_1920x1200[refresh_rate_index]; @@ -211,7 +211,6 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format, hborder = (vbios_mode->enh_table->flags & HBorder) ? 8 : 0; vborder = (vbios_mode->enh_table->flags & VBorder) ? 8 : 0; - adjusted_mode->crtc_hdisplay = vbios_mode->enh_table->hde; adjusted_mode->crtc_htotal = vbios_mode->enh_table->ht; adjusted_mode->crtc_hblank_start = vbios_mode->enh_table->hde + hborder; adjusted_mode->crtc_hblank_end = vbios_mode->enh_table->ht - hborder; @@ -221,7 +220,6 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format, vbios_mode->enh_table->hfp + vbios_mode->enh_table->hsync); - adjusted_mode->crtc_vdisplay = vbios_mode->enh_table->vde; adjusted_mode->crtc_vtotal = vbios_mode->enh_table->vt; adjusted_mode->crtc_vblank_start = vbios_mode->enh_table->vde + vborder; adjusted_mode->crtc_vblank_end = vbios_mode->enh_table->vt - vborder; -- Gitee From 0d595fce96637ec469caff52530de3043ee44f3b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:55 +0800 Subject: [PATCH 1359/1421] Revert "ASoC: rt722-sdca: Add some missing readable registers" This reverts commit a04ac5b5fbc050ae43201c54a10c6d0a53f66d86. --- sound/soc/codecs/rt722-sdca-sdw.c | 49 ++----------------------------- 1 file changed, 3 insertions(+), 46 deletions(-) diff --git a/sound/soc/codecs/rt722-sdca-sdw.c b/sound/soc/codecs/rt722-sdca-sdw.c index c0bb1b4b2dcb..c382cb6be602 100644 --- a/sound/soc/codecs/rt722-sdca-sdw.c +++ b/sound/soc/codecs/rt722-sdca-sdw.c @@ -28,50 +28,9 @@ static bool rt722_sdca_readable_register(struct device *dev, unsigned int reg) 0): case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_GE49, RT722_SDCA_CTL_DETECTED_MODE, 0): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_XU03, RT722_SDCA_CTL_SELECTED_MODE, - 0): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_USER_FU05, - RT722_SDCA_CTL_FU_MUTE, CH_L) ... - SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_USER_FU05, - RT722_SDCA_CTL_FU_MUTE, CH_R): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_XU0D, - RT722_SDCA_CTL_SELECTED_MODE, 0): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_USER_FU0F, - RT722_SDCA_CTL_FU_MUTE, CH_L) ... - SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_USER_FU0F, - RT722_SDCA_CTL_FU_MUTE, CH_R): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_PDE40, - RT722_SDCA_CTL_REQ_POWER_STATE, 0): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_PDE12, - RT722_SDCA_CTL_REQ_POWER_STATE, 0): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_CS01, - RT722_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): - case SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT722_SDCA_ENT_CS11, - RT722_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): - case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT722_SDCA_ENT_USER_FU1E, - RT722_SDCA_CTL_FU_MUTE, CH_01) ... - SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT722_SDCA_ENT_USER_FU1E, - RT722_SDCA_CTL_FU_MUTE, CH_04): - case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT722_SDCA_ENT_IT26, - RT722_SDCA_CTL_VENDOR_DEF, 0): - case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT722_SDCA_ENT_PDE2A, - RT722_SDCA_CTL_REQ_POWER_STATE, 0): - case SDW_SDCA_CTL(FUNC_NUM_MIC_ARRAY, RT722_SDCA_ENT_CS1F, - RT722_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): - case SDW_SDCA_CTL(FUNC_NUM_HID, RT722_SDCA_ENT_HID01, - RT722_SDCA_CTL_HIDTX_CURRENT_OWNER, 0) ... - SDW_SDCA_CTL(FUNC_NUM_HID, RT722_SDCA_ENT_HID01, - RT722_SDCA_CTL_HIDTX_MESSAGE_LENGTH, 0): - case SDW_SDCA_CTL(FUNC_NUM_AMP, RT722_SDCA_ENT_USER_FU06, - RT722_SDCA_CTL_FU_MUTE, CH_L) ... - SDW_SDCA_CTL(FUNC_NUM_AMP, RT722_SDCA_ENT_USER_FU06, - RT722_SDCA_CTL_FU_MUTE, CH_R): - case SDW_SDCA_CTL(FUNC_NUM_AMP, RT722_SDCA_ENT_OT23, - RT722_SDCA_CTL_VENDOR_DEF, CH_08): - case SDW_SDCA_CTL(FUNC_NUM_AMP, RT722_SDCA_ENT_PDE23, - RT722_SDCA_CTL_REQ_POWER_STATE, 0): - case SDW_SDCA_CTL(FUNC_NUM_AMP, RT722_SDCA_ENT_CS31, - RT722_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): + case SDW_SDCA_CTL(FUNC_NUM_HID, RT722_SDCA_ENT_HID01, RT722_SDCA_CTL_HIDTX_CURRENT_OWNER, + 0) ... SDW_SDCA_CTL(FUNC_NUM_HID, RT722_SDCA_ENT_HID01, + RT722_SDCA_CTL_HIDTX_MESSAGE_LENGTH, 0): case RT722_BUF_ADDR_HID1 ... RT722_BUF_ADDR_HID2: return true; default: @@ -115,7 +74,6 @@ static bool rt722_sdca_mbq_readable_register(struct device *dev, unsigned int re case 0x5600000 ... 0x5600007: case 0x5700000 ... 0x5700004: case 0x5800000 ... 0x5800004: - case 0x5810000: case 0x5b00003: case 0x5c00011: case 0x5d00006: @@ -123,7 +81,6 @@ static bool rt722_sdca_mbq_readable_register(struct device *dev, unsigned int re case 0x5f00030: case 0x6100000 ... 0x6100051: case 0x6100055 ... 0x6100057: - case 0x6100060: case 0x6100062: case 0x6100064 ... 0x6100065: case 0x6100067: -- Gitee From b6bf00a5b9ec87ac9f24b567247212f9944d63fb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:55 +0800 Subject: [PATCH 1360/1421] Revert "ASoC: codecs: pcm3168a: Allow for 24-bit in provider mode" This reverts commit a109395e0cfb4e4337a51187b03174225170f183. --- sound/soc/codecs/pcm3168a.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c index 329549936bd5..9d6431338fb7 100644 --- a/sound/soc/codecs/pcm3168a.c +++ b/sound/soc/codecs/pcm3168a.c @@ -494,9 +494,9 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, } break; case 24: - if (!provider_mode && ((format == SND_SOC_DAIFMT_DSP_A) || - (format == SND_SOC_DAIFMT_DSP_B))) { - dev_err(component->dev, "24-bit slots not supported in consumer mode using DSP\n"); + if (provider_mode || (format == SND_SOC_DAIFMT_DSP_A) || + (format == SND_SOC_DAIFMT_DSP_B)) { + dev_err(component->dev, "24-bit slots not supported in provider mode, or consumer mode using DSP\n"); return -EINVAL; } break; -- Gitee From 58a4e997040e9371945926cd628f1ff518f84be3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:56 +0800 Subject: [PATCH 1361/1421] Revert "arm64: zynqmp: add clock-output-names property in clock nodes" This reverts commit 40cf1c7954252d27c1814ce24cd1414743f19309. --- arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi index 995bd8ce9d43..ccaca29200bb 100644 --- a/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi +++ b/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi @@ -10,44 +10,39 @@ #include / { - pss_ref_clk: pss-ref-clk { + pss_ref_clk: pss_ref_clk { bootph-all; compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <33333333>; - clock-output-names = "pss_ref_clk"; }; - video_clk: video-clk { + video_clk: video_clk { bootph-all; compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <27000000>; - clock-output-names = "video_clk"; }; - pss_alt_ref_clk: pss-alt-ref-clk { + pss_alt_ref_clk: pss_alt_ref_clk { bootph-all; compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <0>; - clock-output-names = "pss_alt_ref_clk"; }; - gt_crx_ref_clk: gt-crx-ref-clk { + gt_crx_ref_clk: gt_crx_ref_clk { bootph-all; compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <108000000>; - clock-output-names = "gt_crx_ref_clk"; }; - aux_ref_clk: aux-ref-clk { + aux_ref_clk: aux_ref_clk { bootph-all; compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <27000000>; - clock-output-names = "aux_ref_clk"; }; }; -- Gitee From 82c9c5c5fabb113b14f51800d760a35f1f6b0d9b Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:56 +0800 Subject: [PATCH 1362/1421] Revert "HID: usbkbd: Fix the bit shift number for LED_KANA" This reverts commit f80bb3875f55e5a4b5b7d7c5557c61b055f24ab3. --- drivers/hid/usbhid/usbkbd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hid/usbhid/usbkbd.c b/drivers/hid/usbhid/usbkbd.c index af6bc76dbf64..c439ed2f16db 100644 --- a/drivers/hid/usbhid/usbkbd.c +++ b/drivers/hid/usbhid/usbkbd.c @@ -160,7 +160,7 @@ static int usb_kbd_event(struct input_dev *dev, unsigned int type, return -1; spin_lock_irqsave(&kbd->leds_lock, flags); - kbd->newleds = (!!test_bit(LED_KANA, dev->led) << 4) | (!!test_bit(LED_COMPOSE, dev->led) << 3) | + kbd->newleds = (!!test_bit(LED_KANA, dev->led) << 3) | (!!test_bit(LED_COMPOSE, dev->led) << 3) | (!!test_bit(LED_SCROLLL, dev->led) << 2) | (!!test_bit(LED_CAPSL, dev->led) << 1) | (!!test_bit(LED_NUML, dev->led)); -- Gitee From ad9ba2396cb7fe898c0f4521024d702175004260 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:56 +0800 Subject: [PATCH 1363/1421] Revert "wifi: ath12k: Avoid napi_sync() before napi_enable()" This reverts commit 0c307978595b48cabbb5c64c082c157ad6306607. --- drivers/net/wireless/ath/ath12k/core.h | 1 - drivers/net/wireless/ath/ath12k/pci.c | 13 +++---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h index 18dfd7aab610..33f4706af880 100644 --- a/drivers/net/wireless/ath/ath12k/core.h +++ b/drivers/net/wireless/ath/ath12k/core.h @@ -125,7 +125,6 @@ struct ath12k_ext_irq_grp { u32 num_irq; u32 grp_id; u64 timestamp; - bool napi_enabled; struct napi_struct napi; struct net_device napi_ndev; }; diff --git a/drivers/net/wireless/ath/ath12k/pci.c b/drivers/net/wireless/ath/ath12k/pci.c index 5fd80f90ecaf..041a9602f0e1 100644 --- a/drivers/net/wireless/ath/ath12k/pci.c +++ b/drivers/net/wireless/ath/ath12k/pci.c @@ -442,11 +442,8 @@ static void __ath12k_pci_ext_irq_disable(struct ath12k_base *ab) ath12k_pci_ext_grp_disable(irq_grp); - if (irq_grp->napi_enabled) { - napi_synchronize(&irq_grp->napi); - napi_disable(&irq_grp->napi); - irq_grp->napi_enabled = false; - } + napi_synchronize(&irq_grp->napi); + napi_disable(&irq_grp->napi); } } @@ -979,11 +976,7 @@ void ath12k_pci_ext_irq_enable(struct ath12k_base *ab) for (i = 0; i < ATH12K_EXT_IRQ_GRP_NUM_MAX; i++) { struct ath12k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i]; - if (!irq_grp->napi_enabled) { - napi_enable(&irq_grp->napi); - irq_grp->napi_enabled = true; - } - + napi_enable(&irq_grp->napi); ath12k_pci_ext_grp_enable(irq_grp); } } -- Gitee From 377c7ef73c89a17113df3b8d8a37dc9415ca759a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:56 +0800 Subject: [PATCH 1364/1421] Revert "scsi: st: Restore some drive settings after reset" This reverts commit f175e29214a5f40a91d6302e33ebfa82c7d18b41. --- drivers/scsi/st.c | 24 +++--------------------- drivers/scsi/st.h | 2 -- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index f9ab45c4bb40..fb193caa4a3f 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c @@ -953,6 +953,7 @@ static void reset_state(struct scsi_tape *STp) STp->partition = find_partition(STp); if (STp->partition < 0) STp->partition = 0; + STp->new_partition = STp->partition; } } @@ -2926,17 +2927,14 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon if (cmd_in == MTSETDENSITY) { (STp->buffer)->b_data[4] = arg; STp->density_changed = 1; /* At least we tried ;-) */ - STp->changed_density = arg; } else if (cmd_in == SET_DENS_AND_BLK) (STp->buffer)->b_data[4] = arg >> 24; else (STp->buffer)->b_data[4] = STp->density; if (cmd_in == MTSETBLK || cmd_in == SET_DENS_AND_BLK) { ltmp = arg & MT_ST_BLKSIZE_MASK; - if (cmd_in == MTSETBLK) { + if (cmd_in == MTSETBLK) STp->blksize_changed = 1; /* At least we tried ;-) */ - STp->changed_blksize = arg; - } } else ltmp = STp->block_size; (STp->buffer)->b_data[9] = (ltmp >> 16); @@ -3637,25 +3635,9 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg) retval = (-EIO); goto out; } - reset_state(STp); /* Clears pos_unknown */ + reset_state(STp); /* remove this when the midlevel properly clears was_reset */ STp->device->was_reset = 0; - - /* Fix the device settings after reset, ignore errors */ - if (mtc.mt_op == MTREW || mtc.mt_op == MTSEEK || - mtc.mt_op == MTEOM) { - if (STp->can_partitions) { - /* STp->new_partition contains the - * latest partition set - */ - STp->partition = 0; - switch_partition(STp); - } - if (STp->density_changed) - st_int_ioctl(STp, MTSETDENSITY, STp->changed_density); - if (STp->blksize_changed) - st_int_ioctl(STp, MTSETBLK, STp->changed_blksize); - } } if (mtc.mt_op != MTNOP && mtc.mt_op != MTSETBLK && diff --git a/drivers/scsi/st.h b/drivers/scsi/st.h index 6d31b894ee84..1aaaf5369a40 100644 --- a/drivers/scsi/st.h +++ b/drivers/scsi/st.h @@ -165,7 +165,6 @@ struct scsi_tape { unsigned char compression_changed; unsigned char drv_buffer; unsigned char density; - unsigned char changed_density; unsigned char door_locked; unsigned char autorew_dev; /* auto-rewind device */ unsigned char rew_at_close; /* rewind necessary at close */ @@ -173,7 +172,6 @@ struct scsi_tape { unsigned char cleaning_req; /* cleaning requested? */ unsigned char first_tur; /* first TEST UNIT READY */ int block_size; - int changed_blksize; int min_block; int max_block; int recover_count; /* From tape opening */ -- Gitee From 5119e3bac52fba7ddf3ad671afb441fdbd15f7b2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:57 +0800 Subject: [PATCH 1365/1421] Revert "scsi: lpfc: Free phba irq in lpfc_sli4_enable_msi() when pci_irq_vector() fails" This reverts commit 6d6d00a4d8d467a9098e7b616862ed0e675d4f91. --- drivers/scsi/lpfc/lpfc_init.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index 7c8e0e1d36da..424b39a8155c 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c @@ -13180,7 +13180,6 @@ lpfc_sli4_enable_msi(struct lpfc_hba *phba) eqhdl = lpfc_get_eq_hdl(0); rc = pci_irq_vector(phba->pcidev, 0); if (rc < 0) { - free_irq(phba->pcidev->irq, phba); pci_free_irq_vectors(phba->pcidev); lpfc_printf_log(phba, KERN_WARNING, LOG_INIT, "0496 MSI pci_irq_vec failed (%d)\n", rc); @@ -13261,7 +13260,6 @@ lpfc_sli4_enable_intr(struct lpfc_hba *phba, uint32_t cfg_mode) eqhdl = lpfc_get_eq_hdl(0); retval = pci_irq_vector(phba->pcidev, 0); if (retval < 0) { - free_irq(phba->pcidev->irq, phba); lpfc_printf_log(phba, KERN_WARNING, LOG_INIT, "0502 INTR pci_irq_vec failed (%d)\n", retval); -- Gitee From 599b3d41dc1c88c7e78af625031807e30048be40 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:57 +0800 Subject: [PATCH 1366/1421] Revert "scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine" This reverts commit 1282b11105c9f7216487a6014f0185fe254f52e0. --- drivers/scsi/lpfc/lpfc_hbadisc.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 5c9bc8af3c2d..0ad8a10002ce 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -5646,7 +5646,6 @@ static struct lpfc_nodelist * __lpfc_findnode_did(struct lpfc_vport *vport, uint32_t did) { struct lpfc_nodelist *ndlp; - struct lpfc_nodelist *np = NULL; uint32_t data1; list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { @@ -5661,20 +5660,14 @@ __lpfc_findnode_did(struct lpfc_vport *vport, uint32_t did) ndlp, ndlp->nlp_DID, ndlp->nlp_flag, data1, ndlp->nlp_rpi, ndlp->active_rrqs_xri_bitmap); - - /* Check for new or potentially stale node */ - if (ndlp->nlp_state != NLP_STE_UNUSED_NODE) - return ndlp; - np = ndlp; + return ndlp; } } - if (!np) - /* FIND node did NOT FOUND */ - lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE, - "0932 FIND node did x%x NOT FOUND.\n", did); - - return np; + /* FIND node did NOT FOUND */ + lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE, + "0932 FIND node did x%x NOT FOUND.\n", did); + return NULL; } struct lpfc_nodelist * -- Gitee From 5ca998afed4277b5d563302c4120111c65422341 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:57 +0800 Subject: [PATCH 1367/1421] Revert "net/mana: fix warning in the writer of client oob" This reverts commit cd8540b414c6b1a1863aac5f7071f24ad564e78b. --- drivers/net/ethernet/microsoft/mana/gdma_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c b/drivers/net/ethernet/microsoft/mana/gdma_main.c index 9ed965d61e35..ae014e21eb60 100644 --- a/drivers/net/ethernet/microsoft/mana/gdma_main.c +++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c @@ -1036,7 +1036,7 @@ static u32 mana_gd_write_client_oob(const struct gdma_wqe_request *wqe_req, header->inline_oob_size_div4 = client_oob_size / sizeof(u32); if (oob_in_sgl) { - WARN_ON_ONCE(wqe_req->num_sge < 2); + WARN_ON_ONCE(!pad_data || wqe_req->num_sge < 2); header->client_oob_in_sgl = 1; -- Gitee From 3008db35e805bc0d1945862d4b13ae56273f8efb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:57 +0800 Subject: [PATCH 1368/1421] Revert "ice: count combined queues using Rx/Tx count" This reverts commit c938984a28773b68f184bc10144af6094a67f90a. --- drivers/net/ethernet/intel/ice/ice_ethtool.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c index dd58b2372dc0..39b5f24be7e4 100644 --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c @@ -3329,7 +3329,8 @@ static u32 ice_get_combined_cnt(struct ice_vsi *vsi) ice_for_each_q_vector(vsi, q_idx) { struct ice_q_vector *q_vector = vsi->q_vectors[q_idx]; - combined += min(q_vector->num_ring_tx, q_vector->num_ring_rx); + if (q_vector->rx.rx_ring && q_vector->tx.tx_ring) + combined++; } return combined; -- Gitee From 98ad24fb57ba96ca28094eaeae95b663cf19abac Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:58 +0800 Subject: [PATCH 1369/1421] Revert "perf: Avoid the read if the count is already updated" This reverts commit 1441124a7ee02d5e3e27866f75918961f5b4e45f. --- include/linux/perf_event.h | 8 +------- kernel/events/core.c | 33 +++++++++++++++++---------------- kernel/events/ring_buffer.c | 1 - 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 90c782749b05..fcb834dd75c2 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1016,13 +1016,7 @@ struct perf_output_handle { struct perf_buffer *rb; unsigned long wakeup; unsigned long size; - union { - u64 flags; /* perf_output*() */ - u64 aux_flags; /* perf_aux_output*() */ - struct { - u64 skip_read : 1; - }; - }; + u64 aux_flags; union { void *addr; unsigned long head; diff --git a/kernel/events/core.c b/kernel/events/core.c index 5dd6424e62fa..987807b1040a 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -1163,12 +1163,6 @@ static void perf_assert_pmu_disabled(struct pmu *pmu) WARN_ON_ONCE(*this_cpu_ptr(pmu->pmu_disable_count) == 0); } -static inline void perf_pmu_read(struct perf_event *event) -{ - if (event->state == PERF_EVENT_STATE_ACTIVE) - event->pmu->read(event); -} - static void get_ctx(struct perf_event_context *ctx) { refcount_inc(&ctx->refcount); @@ -3403,7 +3397,8 @@ static void __perf_event_sync_stat(struct perf_event *event, * we know the event must be on the current CPU, therefore we * don't need to use it. */ - perf_pmu_read(event); + if (event->state == PERF_EVENT_STATE_ACTIVE) + event->pmu->read(event); perf_event_update_time(event); @@ -4529,8 +4524,15 @@ static void __perf_event_read(void *info) pmu->read(event); - for_each_sibling_event(sub, event) - perf_pmu_read(sub); + for_each_sibling_event(sub, event) { + if (sub->state == PERF_EVENT_STATE_ACTIVE) { + /* + * Use sibling's PMU rather than @event's since + * sibling could be on different (eg: software) PMU. + */ + sub->pmu->read(sub); + } + } data->ret = pmu->commit_txn(pmu); @@ -7295,8 +7297,9 @@ static void perf_output_read_group(struct perf_output_handle *handle, if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) values[n++] = running; - if ((leader != event) && !handle->skip_read) - perf_pmu_read(leader); + if ((leader != event) && + (leader->state == PERF_EVENT_STATE_ACTIVE)) + leader->pmu->read(leader); values[n++] = perf_event_count(leader); if (read_format & PERF_FORMAT_ID) @@ -7309,8 +7312,9 @@ static void perf_output_read_group(struct perf_output_handle *handle, for_each_sibling_event(sub, leader) { n = 0; - if ((sub != event) && !handle->skip_read) - perf_pmu_read(sub); + if ((sub != event) && + (sub->state == PERF_EVENT_STATE_ACTIVE)) + sub->pmu->read(sub); values[n++] = perf_event_count(sub); if (read_format & PERF_FORMAT_ID) @@ -7365,9 +7369,6 @@ void perf_output_sample(struct perf_output_handle *handle, { u64 sample_type = data->type; - if (data->sample_flags & PERF_SAMPLE_READ) - handle->skip_read = 1; - perf_output_put(handle, *header); if (sample_type & PERF_SAMPLE_IDENTIFIER) diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c index dc1193b779c0..52de76ef8723 100644 --- a/kernel/events/ring_buffer.c +++ b/kernel/events/ring_buffer.c @@ -181,7 +181,6 @@ __perf_output_begin(struct perf_output_handle *handle, handle->rb = rb; handle->event = event; - handle->flags = 0; have_lost = local_read(&rb->lost); if (unlikely(have_lost)) { -- Gitee From ad4ed23988c936e3901e1e3442b626f72f8b2111 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:58 +0800 Subject: [PATCH 1370/1421] Revert "rcu: fix header guard for rcu_all_qs()" This reverts commit 8ce1784f0f3e92650aee7ff95dec3f30ac152492. --- include/linux/rcutree.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h index 559f758bf2ea..126f6b418f6a 100644 --- a/include/linux/rcutree.h +++ b/include/linux/rcutree.h @@ -104,7 +104,7 @@ extern int rcu_scheduler_active; void rcu_end_inkernel_boot(void); bool rcu_inkernel_boot_has_ended(void); bool rcu_is_watching(void); -#ifndef CONFIG_PREEMPT_RCU +#ifndef CONFIG_PREEMPTION void rcu_all_qs(void); #endif -- Gitee From e3fd336f07581a6f58323b4d8e1411bd0a68320e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:58 +0800 Subject: [PATCH 1371/1421] Revert "rcu: handle unstable rdp in rcu_read_unlock_strict()" This reverts commit b5f3b58488c7e573303286e226ea0034b00b853a. --- include/linux/rcupdate.h | 2 +- kernel/rcu/tree_plugin.h | 11 +---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 27531a0b3a6e..72da69cc5764 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -97,9 +97,9 @@ static inline void __rcu_read_lock(void) static inline void __rcu_read_unlock(void) { + preempt_enable(); if (IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD)) rcu_read_unlock_strict(); - preempt_enable(); } static inline int rcu_preempt_depth(void) diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 94b715139f52..dccfc4649639 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -821,17 +821,8 @@ void rcu_read_unlock_strict(void) { struct rcu_data *rdp; - if (irqs_disabled() || in_atomic_preempt_off() || !rcu_state.gp_kthread) + if (irqs_disabled() || preempt_count() || !rcu_state.gp_kthread) return; - - /* - * rcu_report_qs_rdp() can only be invoked with a stable rdp and - * from the local CPU. - * - * The in_atomic_preempt_off() check ensures that we come here holding - * the last preempt_count (which will get dropped once we return to - * __rcu_read_unlock(). - */ rdp = this_cpu_ptr(&rcu_data); rdp->cpu_no_qs.b.norm = false; rcu_report_qs_rdp(rdp); -- Gitee From e8858c4954abd618a75271287b363889d181d31c Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:58 +0800 Subject: [PATCH 1372/1421] Revert "rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y" This reverts commit df45617ada6ae0c89a612f794d57b62a693d846d. --- kernel/rcu/tree_plugin.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index dccfc4649639..41021080ad25 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -963,16 +963,13 @@ static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp) */ static void rcu_flavor_sched_clock_irq(int user) { - if (user || rcu_is_cpu_rrupt_from_idle() || - (IS_ENABLED(CONFIG_PREEMPT_COUNT) && - (preempt_count() == HARDIRQ_OFFSET))) { + if (user || rcu_is_cpu_rrupt_from_idle()) { /* * Get here if this CPU took its interrupt from user - * mode, from the idle loop without this being a nested - * interrupt, or while not holding the task preempt count - * (with PREEMPT_COUNT=y). In this case, the CPU is in a - * quiescent state, so note it. + * mode or from the idle loop, and if this is not a + * nested interrupt. In this case, the CPU is in + * a quiescent state, so note it. * * No memory barrier is required here because rcu_qs() * references only CPU-local variables that other CPUs -- Gitee From d32db3b7791ad8133380b5b76482983b5cc637c6 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:59 +0800 Subject: [PATCH 1373/1421] Revert "ice: treat dyn_allowed only as suggestion" This reverts commit ee0970f1053af20f493148ba8e34b05077694c7c. --- drivers/net/ethernet/intel/ice/ice_irq.c | 25 ++++++++++++------------ drivers/net/ethernet/intel/ice/ice_lib.c | 2 -- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_irq.c b/drivers/net/ethernet/intel/ice/ice_irq.c index 09f9c7ba5279..ad82ff7d1995 100644 --- a/drivers/net/ethernet/intel/ice/ice_irq.c +++ b/drivers/net/ethernet/intel/ice/ice_irq.c @@ -45,7 +45,7 @@ static void ice_free_irq_res(struct ice_pf *pf, u16 index) /** * ice_get_irq_res - get an interrupt resource * @pf: board private structure - * @dyn_allowed: allow entry to be dynamically allocated + * @dyn_only: force entry to be dynamically allocated * * Allocate new irq entry in the free slot of the tracker. Since xarray * is used, always allocate new entry at the lowest possible index. Set @@ -53,12 +53,11 @@ static void ice_free_irq_res(struct ice_pf *pf, u16 index) * * Returns allocated irq entry or NULL on failure. */ -static struct ice_irq_entry *ice_get_irq_res(struct ice_pf *pf, - bool dyn_allowed) +static struct ice_irq_entry *ice_get_irq_res(struct ice_pf *pf, bool dyn_only) { - struct xa_limit limit = { .max = pf->irq_tracker.num_entries - 1, + struct xa_limit limit = { .max = pf->irq_tracker.num_entries, .min = 0 }; - unsigned int num_static = pf->irq_tracker.num_static - 1; + unsigned int num_static = pf->irq_tracker.num_static; struct ice_irq_entry *entry; unsigned int index; int ret; @@ -67,9 +66,9 @@ static struct ice_irq_entry *ice_get_irq_res(struct ice_pf *pf, if (!entry) return NULL; - /* only already allocated if the caller says so */ - if (!dyn_allowed) - limit.max = num_static; + /* skip preallocated entries if the caller says so */ + if (dyn_only) + limit.min = num_static; ret = xa_alloc(&pf->irq_tracker.entries, &index, entry, limit, GFP_KERNEL); @@ -79,7 +78,7 @@ static struct ice_irq_entry *ice_get_irq_res(struct ice_pf *pf, entry = NULL; } else { entry->index = index; - entry->dynamic = index > num_static; + entry->dynamic = index >= num_static; } return entry; @@ -273,7 +272,7 @@ int ice_init_interrupt_scheme(struct ice_pf *pf) /** * ice_alloc_irq - Allocate new interrupt vector * @pf: board private structure - * @dyn_allowed: allow dynamic allocation of the interrupt + * @dyn_only: force dynamic allocation of the interrupt * * Allocate new interrupt vector for a given owner id. * return struct msi_map with interrupt details and track @@ -286,20 +285,20 @@ int ice_init_interrupt_scheme(struct ice_pf *pf) * interrupt will be allocated with pci_msix_alloc_irq_at. * * Some callers may only support dynamically allocated interrupts. - * This is indicated with dyn_allowed flag. + * This is indicated with dyn_only flag. * * On failure, return map with negative .index. The caller * is expected to check returned map index. * */ -struct msi_map ice_alloc_irq(struct ice_pf *pf, bool dyn_allowed) +struct msi_map ice_alloc_irq(struct ice_pf *pf, bool dyn_only) { int sriov_base_vector = pf->sriov_base_vector; struct msi_map map = { .index = -ENOENT }; struct device *dev = ice_pf_to_dev(pf); struct ice_irq_entry *entry; - entry = ice_get_irq_res(pf, dyn_allowed); + entry = ice_get_irq_res(pf, dyn_only); if (!entry) return map; diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c index a6a290514e54..1fc4805353eb 100644 --- a/drivers/net/ethernet/intel/ice/ice_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_lib.c @@ -587,8 +587,6 @@ ice_vsi_alloc_def(struct ice_vsi *vsi, struct ice_channel *ch) return -ENOMEM; } - vsi->irq_dyn_alloc = pci_msix_can_alloc_dyn(vsi->back->pdev); - switch (vsi->type) { case ICE_VSI_SWITCHDEV_CTRL: /* Setup eswitch MSIX irq handler for VSI */ -- Gitee From 707147f1fed6d190cec24c4b557a1afedc6afb23 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:59 +0800 Subject: [PATCH 1374/1421] Revert "bridge: mdb: Allow replace of a host-joined group" This reverts commit 919c3b35a94665d5a589b4ba18c596950d1aa236. --- net/bridge/br_mdb.c | 2 +- tools/testing/selftests/net/forwarding/bridge_mdb.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c index 96bea0c8408f..7305f5f8215c 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c @@ -1030,7 +1030,7 @@ static int br_mdb_add_group(const struct br_mdb_config *cfg, /* host join */ if (!port) { - if (mp->host_joined && !(cfg->nlflags & NLM_F_REPLACE)) { + if (mp->host_joined) { NL_SET_ERR_MSG_MOD(extack, "Group is already joined by host"); return -EEXIST; } diff --git a/tools/testing/selftests/net/forwarding/bridge_mdb.sh b/tools/testing/selftests/net/forwarding/bridge_mdb.sh index c151374ddf04..a3678dfe5848 100755 --- a/tools/testing/selftests/net/forwarding/bridge_mdb.sh +++ b/tools/testing/selftests/net/forwarding/bridge_mdb.sh @@ -149,7 +149,7 @@ cfg_test_host_common() check_err $? "Failed to add $name host entry" bridge mdb replace dev br0 port br0 grp $grp $state vid 10 &> /dev/null - check_err $? "Failed to replace $name host entry" + check_fail $? "Managed to replace $name host entry" bridge mdb del dev br0 port br0 grp $grp $state vid 10 bridge mdb get dev br0 grp $grp vid 10 &> /dev/null -- Gitee From 1b4df3986dbeff730e78df563fa4223c052358f3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:39:59 +0800 Subject: [PATCH 1375/1421] Revert "r8169: don't scan PHY addresses > 0" This reverts commit c5247086aa5aedb4835f7ed0010766e9183e81c8. --- drivers/net/ethernet/realtek/r8169_main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 5af932a5e70c..7e5258b2c429 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -5125,7 +5125,6 @@ static int r8169_mdio_register(struct rtl8169_private *tp) new_bus->priv = tp; new_bus->parent = &pdev->dev; new_bus->irq[0] = PHY_MAC_INTERRUPT; - new_bus->phy_mask = GENMASK(31, 1); snprintf(new_bus->id, MII_BUS_ID_SIZE, "r8169-%x-%x", pci_domain_nr(pdev->bus), pci_dev_id(pdev)); -- Gitee From 3637421a30b8b96eb52c75e91a885cb9e6e95e26 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:57 +0800 Subject: [PATCH 1376/1421] Revert "ipv4: ip_gre: Fix set but not used warning in ipgre_err() if IPv4-only" This reverts commit 8faf4ea2fdcabe640917d005bbd180678ed93c9c. --- net/ipv4/ip_gre.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index f261e29adc7c..890c15510b42 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -140,6 +140,7 @@ static int ipgre_err(struct sk_buff *skb, u32 info, const struct iphdr *iph; const int type = icmp_hdr(skb)->type; const int code = icmp_hdr(skb)->code; + unsigned int data_len = 0; struct ip_tunnel *t; if (tpi->proto == htons(ETH_P_TEB)) @@ -180,6 +181,7 @@ static int ipgre_err(struct sk_buff *skb, u32 info, case ICMP_TIME_EXCEEDED: if (code != ICMP_EXC_TTL) return 0; + data_len = icmp_hdr(skb)->un.reserved[1] * 4; /* RFC 4884 4.1 */ break; case ICMP_REDIRECT: @@ -187,16 +189,10 @@ static int ipgre_err(struct sk_buff *skb, u32 info, } #if IS_ENABLED(CONFIG_IPV6) - if (tpi->proto == htons(ETH_P_IPV6)) { - unsigned int data_len = 0; - - if (type == ICMP_TIME_EXCEEDED) - data_len = icmp_hdr(skb)->un.reserved[1] * 4; /* RFC 4884 4.1 */ - - if (!ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, - type, data_len)) - return 0; - } + if (tpi->proto == htons(ETH_P_IPV6) && + !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, + type, data_len)) + return 0; #endif if (t->parms.iph.daddr == 0 || -- Gitee From e0895b37feb0b1a71e3c310a5b7f4f076611c205 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:57 +0800 Subject: [PATCH 1377/1421] Revert "vxlan: Annotate FDB data races" This reverts commit 4171b081d8164af20fa774b57ab07387227b8830. --- drivers/net/vxlan/vxlan_core.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index 2ed879a0abc6..822cf49d8267 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -227,9 +227,9 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan, be32_to_cpu(fdb->vni))) goto nla_put_failure; - ci.ndm_used = jiffies_to_clock_t(now - READ_ONCE(fdb->used)); + ci.ndm_used = jiffies_to_clock_t(now - fdb->used); ci.ndm_confirmed = 0; - ci.ndm_updated = jiffies_to_clock_t(now - READ_ONCE(fdb->updated)); + ci.ndm_updated = jiffies_to_clock_t(now - fdb->updated); ci.ndm_refcnt = 0; if (nla_put(skb, NDA_CACHEINFO, sizeof(ci), &ci)) @@ -435,8 +435,8 @@ static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan, struct vxlan_fdb *f; f = __vxlan_find_mac(vxlan, mac, vni); - if (f && READ_ONCE(f->used) != jiffies) - WRITE_ONCE(f->used, jiffies); + if (f && f->used != jiffies) + f->used = jiffies; return f; } @@ -1010,12 +1010,12 @@ static int vxlan_fdb_update_existing(struct vxlan_dev *vxlan, !(f->flags & NTF_VXLAN_ADDED_BY_USER)) { if (f->state != state) { f->state = state; - WRITE_ONCE(f->updated, jiffies); + f->updated = jiffies; notify = 1; } if (f->flags != fdb_flags) { f->flags = fdb_flags; - WRITE_ONCE(f->updated, jiffies); + f->updated = jiffies; notify = 1; } } @@ -1049,7 +1049,7 @@ static int vxlan_fdb_update_existing(struct vxlan_dev *vxlan, } if (ndm_flags & NTF_USE) - WRITE_ONCE(f->used, jiffies); + f->used = jiffies; if (notify) { if (rd == NULL) @@ -1478,7 +1478,7 @@ static bool vxlan_snoop(struct net_device *dev, src_mac, &rdst->remote_ip.sa, &src_ip->sa); rdst->remote_ip = *src_ip; - WRITE_ONCE(f->updated, jiffies); + f->updated = jiffies; vxlan_fdb_notify(vxlan, f, rdst, RTM_NEWNEIGH, true, NULL); } else { u32 hash_index = fdb_head_index(vxlan, src_mac, vni); @@ -2920,7 +2920,7 @@ static void vxlan_cleanup(struct timer_list *t) if (f->flags & NTF_EXT_LEARNED) continue; - timeout = READ_ONCE(f->used) + vxlan->cfg.age_interval * HZ; + timeout = f->used + vxlan->cfg.age_interval * HZ; if (time_before_eq(timeout, jiffies)) { netdev_dbg(vxlan->dev, "garbage collect %pM\n", -- Gitee From 1c5d31be465aea37468119e70020d5c6723a92f8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:57 +0800 Subject: [PATCH 1378/1421] Revert "net/mlx5e: Avoid WARN_ON when configuring MQPRIO with HTB offload enabled" This reverts commit abd1b8d16732133c488895f5c829b205efcbe841. --- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index 5c6f01abdcb9..d9dc7280302e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -3627,11 +3627,8 @@ static int mlx5e_setup_tc_mqprio(struct mlx5e_priv *priv, /* MQPRIO is another toplevel qdisc that can't be attached * simultaneously with the offloaded HTB. */ - if (mlx5e_selq_is_htb_enabled(&priv->selq)) { - NL_SET_ERR_MSG_MOD(mqprio->extack, - "MQPRIO cannot be configured when HTB offload is enabled."); - return -EOPNOTSUPP; - } + if (WARN_ON(mlx5e_selq_is_htb_enabled(&priv->selq))) + return -EINVAL; switch (mqprio->mode) { case TC_MQPRIO_MODE_DCB: -- Gitee From 3213cd45d88346e4b270fd93ed1c9b689253426e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:57 +0800 Subject: [PATCH 1379/1421] Revert "media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available" This reverts commit 6662d8874872479cd6d417ce4eceb756b0326393. --- .../media/platform/qcom/camss/camss-csid.c | 60 ++++++++----------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media/platform/qcom/camss/camss-csid.c index b90e2e690f3a..6360314f04a6 100644 --- a/drivers/media/platform/qcom/camss/camss-csid.c +++ b/drivers/media/platform/qcom/camss/camss-csid.c @@ -239,13 +239,11 @@ static int csid_set_stream(struct v4l2_subdev *sd, int enable) int ret; if (enable) { - if (csid->testgen.nmodes != CSID_PAYLOAD_MODE_DISABLED) { - ret = v4l2_ctrl_handler_setup(&csid->ctrls); - if (ret < 0) { - dev_err(csid->camss->dev, - "could not sync v4l2 controls: %d\n", ret); - return ret; - } + ret = v4l2_ctrl_handler_setup(&csid->ctrls); + if (ret < 0) { + dev_err(csid->camss->dev, + "could not sync v4l2 controls: %d\n", ret); + return ret; } if (!csid->testgen.enabled && @@ -320,8 +318,7 @@ static void csid_try_format(struct csid_device *csid, break; case MSM_CSID_PAD_SRC: - if (csid->testgen.nmodes == CSID_PAYLOAD_MODE_DISABLED || - csid->testgen_mode->cur.val == 0) { + if (csid->testgen_mode->cur.val == 0) { /* Test generator is disabled, */ /* keep pad formats in sync */ u32 code = fmt->code; @@ -371,8 +368,7 @@ static int csid_enum_mbus_code(struct v4l2_subdev *sd, code->code = csid->formats[code->index].code; } else { - if (csid->testgen.nmodes == CSID_PAYLOAD_MODE_DISABLED || - csid->testgen_mode->cur.val == 0) { + if (csid->testgen_mode->cur.val == 0) { struct v4l2_mbus_framefmt *sink_fmt; sink_fmt = __csid_get_format(csid, sd_state, @@ -754,8 +750,7 @@ static int csid_link_setup(struct media_entity *entity, /* If test generator is enabled */ /* do not allow a link from CSIPHY to CSID */ - if (csid->testgen.nmodes != CSID_PAYLOAD_MODE_DISABLED && - csid->testgen_mode->cur.val != 0) + if (csid->testgen_mode->cur.val != 0) return -EBUSY; sd = media_entity_to_v4l2_subdev(remote->entity); @@ -848,28 +843,25 @@ int msm_csid_register_entity(struct csid_device *csid, MSM_CSID_NAME, csid->id); v4l2_set_subdevdata(sd, csid); - if (csid->testgen.nmodes != CSID_PAYLOAD_MODE_DISABLED) { - ret = v4l2_ctrl_handler_init(&csid->ctrls, 1); - if (ret < 0) { - dev_err(dev, "Failed to init ctrl handler: %d\n", ret); - return ret; - } + ret = v4l2_ctrl_handler_init(&csid->ctrls, 1); + if (ret < 0) { + dev_err(dev, "Failed to init ctrl handler: %d\n", ret); + return ret; + } - csid->testgen_mode = - v4l2_ctrl_new_std_menu_items(&csid->ctrls, - &csid_ctrl_ops, V4L2_CID_TEST_PATTERN, - csid->testgen.nmodes, 0, 0, - csid->testgen.modes); + csid->testgen_mode = v4l2_ctrl_new_std_menu_items(&csid->ctrls, + &csid_ctrl_ops, V4L2_CID_TEST_PATTERN, + csid->testgen.nmodes, 0, 0, + csid->testgen.modes); - if (csid->ctrls.error) { - dev_err(dev, "Failed to init ctrl: %d\n", csid->ctrls.error); - ret = csid->ctrls.error; - goto free_ctrl; - } - - csid->subdev.ctrl_handler = &csid->ctrls; + if (csid->ctrls.error) { + dev_err(dev, "Failed to init ctrl: %d\n", csid->ctrls.error); + ret = csid->ctrls.error; + goto free_ctrl; } + csid->subdev.ctrl_handler = &csid->ctrls; + ret = csid_init_formats(sd, NULL); if (ret < 0) { dev_err(dev, "Failed to init format: %d\n", ret); @@ -899,8 +891,7 @@ int msm_csid_register_entity(struct csid_device *csid, media_cleanup: media_entity_cleanup(&sd->entity); free_ctrl: - if (csid->testgen.nmodes != CSID_PAYLOAD_MODE_DISABLED) - v4l2_ctrl_handler_free(&csid->ctrls); + v4l2_ctrl_handler_free(&csid->ctrls); return ret; } @@ -913,6 +904,5 @@ void msm_csid_unregister_entity(struct csid_device *csid) { v4l2_device_unregister_subdev(&csid->subdev); media_entity_cleanup(&csid->subdev.entity); - if (csid->testgen.nmodes != CSID_PAYLOAD_MODE_DISABLED) - v4l2_ctrl_handler_free(&csid->ctrls); + v4l2_ctrl_handler_free(&csid->ctrls); } -- Gitee From 983bcabf23fb4eb025afc3d3f529819798581b28 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:58 +0800 Subject: [PATCH 1380/1421] Revert "f2fs: introduce f2fs_base_attr for global sysfs entries" This reverts commit cb68599ecb73d27595aecd8a07086d713e1ef6b0. --- fs/f2fs/sysfs.c | 74 +++++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 52 deletions(-) diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index c4b0661888a1..180feefc4a9c 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c @@ -61,12 +61,6 @@ struct f2fs_attr { int id; }; -struct f2fs_base_attr { - struct attribute attr; - ssize_t (*show)(struct f2fs_base_attr *a, char *buf); - ssize_t (*store)(struct f2fs_base_attr *a, const char *buf, size_t len); -}; - static ssize_t f2fs_sbi_show(struct f2fs_attr *a, struct f2fs_sb_info *sbi, char *buf); @@ -797,25 +791,6 @@ static void f2fs_sb_release(struct kobject *kobj) complete(&sbi->s_kobj_unregister); } -static ssize_t f2fs_base_attr_show(struct kobject *kobj, - struct attribute *attr, char *buf) -{ - struct f2fs_base_attr *a = container_of(attr, - struct f2fs_base_attr, attr); - - return a->show ? a->show(a, buf) : 0; -} - -static ssize_t f2fs_base_attr_store(struct kobject *kobj, - struct attribute *attr, - const char *buf, size_t len) -{ - struct f2fs_base_attr *a = container_of(attr, - struct f2fs_base_attr, attr); - - return a->store ? a->store(a, buf, len) : 0; -} - /* * Note that there are three feature list entries: * 1) /sys/fs/f2fs/features @@ -834,13 +809,14 @@ static ssize_t f2fs_base_attr_store(struct kobject *kobj, * please add new on-disk feature in this list only. * - ref. F2FS_SB_FEATURE_RO_ATTR() */ -static ssize_t f2fs_feature_show(struct f2fs_base_attr *a, char *buf) +static ssize_t f2fs_feature_show(struct f2fs_attr *a, + struct f2fs_sb_info *sbi, char *buf) { return sysfs_emit(buf, "supported\n"); } #define F2FS_FEATURE_RO_ATTR(_name) \ -static struct f2fs_base_attr f2fs_base_attr_##_name = { \ +static struct f2fs_attr f2fs_attr_##_name = { \ .attr = {.name = __stringify(_name), .mode = 0444 }, \ .show = f2fs_feature_show, \ } @@ -1190,38 +1166,37 @@ static struct attribute *f2fs_attrs[] = { }; ATTRIBUTE_GROUPS(f2fs); -#define BASE_ATTR_LIST(name) (&f2fs_base_attr_##name.attr) static struct attribute *f2fs_feat_attrs[] = { #ifdef CONFIG_FS_ENCRYPTION - BASE_ATTR_LIST(encryption), - BASE_ATTR_LIST(test_dummy_encryption_v2), + ATTR_LIST(encryption), + ATTR_LIST(test_dummy_encryption_v2), #if IS_ENABLED(CONFIG_UNICODE) - BASE_ATTR_LIST(encrypted_casefold), + ATTR_LIST(encrypted_casefold), #endif #endif /* CONFIG_FS_ENCRYPTION */ #ifdef CONFIG_BLK_DEV_ZONED - BASE_ATTR_LIST(block_zoned), + ATTR_LIST(block_zoned), #endif - BASE_ATTR_LIST(atomic_write), - BASE_ATTR_LIST(extra_attr), - BASE_ATTR_LIST(project_quota), - BASE_ATTR_LIST(inode_checksum), - BASE_ATTR_LIST(flexible_inline_xattr), - BASE_ATTR_LIST(quota_ino), - BASE_ATTR_LIST(inode_crtime), - BASE_ATTR_LIST(lost_found), + ATTR_LIST(atomic_write), + ATTR_LIST(extra_attr), + ATTR_LIST(project_quota), + ATTR_LIST(inode_checksum), + ATTR_LIST(flexible_inline_xattr), + ATTR_LIST(quota_ino), + ATTR_LIST(inode_crtime), + ATTR_LIST(lost_found), #ifdef CONFIG_FS_VERITY - BASE_ATTR_LIST(verity), + ATTR_LIST(verity), #endif - BASE_ATTR_LIST(sb_checksum), + ATTR_LIST(sb_checksum), #if IS_ENABLED(CONFIG_UNICODE) - BASE_ATTR_LIST(casefold), + ATTR_LIST(casefold), #endif - BASE_ATTR_LIST(readonly), + ATTR_LIST(readonly), #ifdef CONFIG_F2FS_FS_COMPRESSION - BASE_ATTR_LIST(compression), + ATTR_LIST(compression), #endif - BASE_ATTR_LIST(pin_file), + ATTR_LIST(pin_file), NULL, }; ATTRIBUTE_GROUPS(f2fs_feat); @@ -1288,14 +1263,9 @@ static struct kset f2fs_kset = { .kobj = {.ktype = &f2fs_ktype}, }; -static const struct sysfs_ops f2fs_feat_attr_ops = { - .show = f2fs_base_attr_show, - .store = f2fs_base_attr_store, -}; - static const struct kobj_type f2fs_feat_ktype = { .default_groups = f2fs_feat_groups, - .sysfs_ops = &f2fs_feat_attr_ops, + .sysfs_ops = &f2fs_attr_ops, }; static struct kobject f2fs_feat = { -- Gitee From 2da44b7a6dfda85c6c97f79e5c5d9e1dee80f1df Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:58 +0800 Subject: [PATCH 1381/1421] Revert "hwmon: (xgene-hwmon) use appropriate type for the latency value" This reverts commit a4f44ee83c119e83ac23a7230b4c6c80ce414245. --- drivers/hwmon/xgene-hwmon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hwmon/xgene-hwmon.c b/drivers/hwmon/xgene-hwmon.c index 6768dbf39039..207084d55044 100644 --- a/drivers/hwmon/xgene-hwmon.c +++ b/drivers/hwmon/xgene-hwmon.c @@ -111,7 +111,7 @@ struct xgene_hwmon_dev { phys_addr_t comm_base_addr; void *pcc_comm_addr; - unsigned int usecs_lat; + u64 usecs_lat; }; /* -- Gitee From 1bb7a10eb6de6f919e23abc0a1e2a3a0d2839b89 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:58 +0800 Subject: [PATCH 1382/1421] Revert "clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs" This reverts commit 8361b36f35aee3d5416d3185b5b0154226ac012d. --- drivers/clk/qcom/camcc-sm8250.c | 56 ++++++++++++++++----------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/drivers/clk/qcom/camcc-sm8250.c b/drivers/clk/qcom/camcc-sm8250.c index e29706d78287..9b32c56a5bc5 100644 --- a/drivers/clk/qcom/camcc-sm8250.c +++ b/drivers/clk/qcom/camcc-sm8250.c @@ -411,7 +411,7 @@ static struct clk_rcg2 cam_cc_bps_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -433,7 +433,7 @@ static struct clk_rcg2 cam_cc_camnoc_axi_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -454,7 +454,7 @@ static struct clk_rcg2 cam_cc_cci_0_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -469,7 +469,7 @@ static struct clk_rcg2 cam_cc_cci_1_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -490,7 +490,7 @@ static struct clk_rcg2 cam_cc_cphy_rx_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -511,7 +511,7 @@ static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -526,7 +526,7 @@ static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -556,7 +556,7 @@ static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -571,7 +571,7 @@ static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -586,7 +586,7 @@ static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -611,7 +611,7 @@ static struct clk_rcg2 cam_cc_fast_ahb_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -634,7 +634,7 @@ static struct clk_rcg2 cam_cc_fd_core_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -649,7 +649,7 @@ static struct clk_rcg2 cam_cc_icp_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -673,7 +673,7 @@ static struct clk_rcg2 cam_cc_ife_0_clk_src = { .parent_data = cam_cc_parent_data_2, .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -710,7 +710,7 @@ static struct clk_rcg2 cam_cc_ife_0_csid_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -734,7 +734,7 @@ static struct clk_rcg2 cam_cc_ife_1_clk_src = { .parent_data = cam_cc_parent_data_3, .num_parents = ARRAY_SIZE(cam_cc_parent_data_3), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -749,7 +749,7 @@ static struct clk_rcg2 cam_cc_ife_1_csid_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -771,7 +771,7 @@ static struct clk_rcg2 cam_cc_ife_lite_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -786,7 +786,7 @@ static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -810,7 +810,7 @@ static struct clk_rcg2 cam_cc_ipe_0_clk_src = { .parent_data = cam_cc_parent_data_4, .num_parents = ARRAY_SIZE(cam_cc_parent_data_4), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -825,7 +825,7 @@ static struct clk_rcg2 cam_cc_jpeg_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -847,7 +847,7 @@ static struct clk_rcg2 cam_cc_mclk0_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -862,7 +862,7 @@ static struct clk_rcg2 cam_cc_mclk1_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -877,7 +877,7 @@ static struct clk_rcg2 cam_cc_mclk2_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -892,7 +892,7 @@ static struct clk_rcg2 cam_cc_mclk3_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -907,7 +907,7 @@ static struct clk_rcg2 cam_cc_mclk4_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -922,7 +922,7 @@ static struct clk_rcg2 cam_cc_mclk5_clk_src = { .parent_data = cam_cc_parent_data_1, .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; @@ -993,7 +993,7 @@ static struct clk_rcg2 cam_cc_slow_ahb_clk_src = { .parent_data = cam_cc_parent_data_0, .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_ops, }, }; -- Gitee From ca83ce280b7f4d6872aab920e874be57d58355e2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:58 +0800 Subject: [PATCH 1383/1421] Revert "wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU" This reverts commit 7fa680facaa38cebad2165c901518d1768db0688. --- drivers/net/wireless/realtek/rtw88/mac.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/mac.c b/drivers/net/wireless/realtek/rtw88/mac.c index 929182424b8b..0c1c1ff31085 100644 --- a/drivers/net/wireless/realtek/rtw88/mac.c +++ b/drivers/net/wireless/realtek/rtw88/mac.c @@ -783,8 +783,7 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, if (!check_firmware_size(data, size)) return -EINVAL; - if (rtwdev->chip->ltecoex_addr && - !ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) + if (!ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) return -EBUSY; wlan_cpu_enable(rtwdev, false); @@ -802,8 +801,7 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, wlan_cpu_enable(rtwdev, true); - if (rtwdev->chip->ltecoex_addr && - !ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { + if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { ret = -EBUSY; goto dlfw_fail; } -- Gitee From 2933d3e58414fe5447f268a1fa302a9a7a9a4689 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:58 +0800 Subject: [PATCH 1384/1421] Revert "wifi: rtw88: Fix download_firmware_validate() for RTL8814AU" This reverts commit 34d8429b4763d4da7178f6520ace359abdedc8b3. --- drivers/net/wireless/realtek/rtw88/reg.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/reg.h b/drivers/net/wireless/realtek/rtw88/reg.h index 0e76bc07bdde..7c6c11d50ff3 100644 --- a/drivers/net/wireless/realtek/rtw88/reg.h +++ b/drivers/net/wireless/realtek/rtw88/reg.h @@ -108,7 +108,6 @@ #define BIT_SHIFT_ROM_PGE 16 #define BIT_FW_INIT_RDY BIT(15) #define BIT_FW_DW_RDY BIT(14) -#define BIT_CPU_CLK_SEL (BIT(12) | BIT(13)) #define BIT_RPWM_TOGGLE BIT(7) #define BIT_RAM_DL_SEL BIT(7) /* legacy only */ #define BIT_DMEM_CHKSUM_OK BIT(6) @@ -126,7 +125,7 @@ BIT_CHECK_SUM_OK) #define FW_READY_LEGACY (BIT_MCUFWDL_RDY | BIT_FWDL_CHK_RPT | \ BIT_WINTINI_RDY | BIT_RAM_DL_SEL) -#define FW_READY_MASK (0xffff & ~BIT_CPU_CLK_SEL) +#define FW_READY_MASK 0xffff #define REG_MCU_TST_CFG 0x84 #define VAL_FW_TRIGGER 0x1 -- Gitee From 753551cb97e5702a133fe24b56cf3eca71c8c454 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:59 +0800 Subject: [PATCH 1385/1421] Revert "ext4: remove writable userspace mappings before truncating page cache" This reverts commit e92c37f0d9e6079337c8b7dd9ee0892e1958ed1a. --- fs/ext4/ext4.h | 2 -- fs/ext4/extents.c | 19 ++++++++++---- fs/ext4/inode.c | 63 ----------------------------------------------- 3 files changed, 14 insertions(+), 70 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index a79952481380..1c6bb23dd9c7 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2996,8 +2996,6 @@ extern int ext4_inode_attach_jinode(struct inode *inode); extern int ext4_can_truncate(struct inode *inode); extern int ext4_truncate(struct inode *); extern int ext4_break_layouts(struct inode *); -extern int ext4_truncate_page_cache_block_range(struct inode *inode, - loff_t start, loff_t end); extern int ext4_punch_hole(struct file *file, loff_t offset, loff_t length); extern void ext4_set_inode_flags(struct inode *, bool init); extern int ext4_alloc_da_blocks(struct inode *inode); diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 057bedd0a505..a6ba89d19251 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4661,13 +4661,22 @@ static long ext4_zero_range(struct file *file, loff_t offset, goto out_mutex; } - /* Now release the pages and zero block aligned part of pages */ - ret = ext4_truncate_page_cache_block_range(inode, start, end); - if (ret) { - filemap_invalidate_unlock(mapping); - goto out_mutex; + /* + * For journalled data we need to write (and checkpoint) pages + * before discarding page cache to avoid inconsitent data on + * disk in case of crash before zeroing trans is committed. + */ + if (ext4_should_journal_data(inode)) { + ret = filemap_write_and_wait_range(mapping, start, + end - 1); + if (ret) { + filemap_invalidate_unlock(mapping); + goto out_mutex; + } } + /* Now release the pages and zero block aligned part of pages */ + truncate_pagecache_range(inode, start, end - 1); inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size, diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 86245e27be18..456f686136fc 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -3893,68 +3892,6 @@ int ext4_update_disksize_before_punch(struct inode *inode, loff_t offset, return ret; } -static inline void ext4_truncate_folio(struct inode *inode, - loff_t start, loff_t end) -{ - unsigned long blocksize = i_blocksize(inode); - struct folio *folio; - - /* Nothing to be done if no complete block needs to be truncated. */ - if (round_up(start, blocksize) >= round_down(end, blocksize)) - return; - - folio = filemap_lock_folio(inode->i_mapping, start >> PAGE_SHIFT); - if (IS_ERR(folio)) - return; - - if (folio_mkclean(folio)) - folio_mark_dirty(folio); - folio_unlock(folio); - folio_put(folio); -} - -int ext4_truncate_page_cache_block_range(struct inode *inode, - loff_t start, loff_t end) -{ - unsigned long blocksize = i_blocksize(inode); - int ret; - - /* - * For journalled data we need to write (and checkpoint) pages - * before discarding page cache to avoid inconsitent data on disk - * in case of crash before freeing or unwritten converting trans - * is committed. - */ - if (ext4_should_journal_data(inode)) { - ret = filemap_write_and_wait_range(inode->i_mapping, start, - end - 1); - if (ret) - return ret; - goto truncate_pagecache; - } - - /* - * If the block size is less than the page size, the file's mapped - * blocks within one page could be freed or converted to unwritten. - * So it's necessary to remove writable userspace mappings, and then - * ext4_page_mkwrite() can be called during subsequent write access - * to these partial folios. - */ - if (!IS_ALIGNED(start | end, PAGE_SIZE) && - blocksize < PAGE_SIZE && start < inode->i_size) { - loff_t page_boundary = round_up(start, PAGE_SIZE); - - ext4_truncate_folio(inode, start, min(page_boundary, end)); - if (end > page_boundary) - ext4_truncate_folio(inode, - round_down(end, PAGE_SIZE), end); - } - -truncate_pagecache: - truncate_pagecache_range(inode, start, end - 1); - return 0; -} - static void ext4_wait_dax_page(struct inode *inode) { filemap_invalidate_unlock(inode->i_mapping); -- Gitee From 45e8998bac21baefdb82ff1fef19ba226033a513 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:59 +0800 Subject: [PATCH 1386/1421] Revert "ext4: don't write back data before punch hole in nojournal mode" This reverts commit 92ac0e66107971fc0b7ebeb0ce58346d1919053c. --- fs/ext4/inode.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 456f686136fc..d3d28e658720 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3946,6 +3946,17 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) trace_ext4_punch_hole(inode, offset, length, 0); + /* + * Write out all dirty pages to avoid race conditions + * Then release them. + */ + if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { + ret = filemap_write_and_wait_range(mapping, offset, + offset + length - 1); + if (ret) + return ret; + } + inode_lock(inode); /* No need to punch hole beyond i_size */ @@ -4007,11 +4018,8 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) ret = ext4_update_disksize_before_punch(inode, offset, length); if (ret) goto out_dio; - - ret = ext4_truncate_page_cache_block_range(inode, - first_block_offset, last_block_offset + 1); - if (ret) - goto out_dio; + truncate_pagecache_range(inode, first_block_offset, + last_block_offset); } if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) -- Gitee From cce2920ab499b5a34f7c00a08734a10c49f2b1d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:59 +0800 Subject: [PATCH 1387/1421] Revert "leds: trigger: netdev: Configure LED blink interval for HW offload" This reverts commit 94c3da3dadc83c1b455138b8829d3e2975be854b. --- drivers/leds/trigger/ledtrig-netdev.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c index f8912fa60c49..79719fc8a08f 100644 --- a/drivers/leds/trigger/ledtrig-netdev.c +++ b/drivers/leds/trigger/ledtrig-netdev.c @@ -54,7 +54,6 @@ struct led_netdev_data { unsigned int last_activity; unsigned long mode; - unsigned long blink_delay; int link_speed; u8 duplex; @@ -70,10 +69,6 @@ static void set_baseline_state(struct led_netdev_data *trigger_data) /* Already validated, hw control is possible with the requested mode */ if (trigger_data->hw_control) { led_cdev->hw_control_set(led_cdev, trigger_data->mode); - if (led_cdev->blink_set) { - led_cdev->blink_set(led_cdev, &trigger_data->blink_delay, - &trigger_data->blink_delay); - } return; } @@ -391,11 +386,10 @@ static ssize_t interval_store(struct device *dev, size_t size) { struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); - struct led_classdev *led_cdev = trigger_data->led_cdev; unsigned long value; int ret; - if (trigger_data->hw_control && !led_cdev->blink_set) + if (trigger_data->hw_control) return -EINVAL; ret = kstrtoul(buf, 0, &value); @@ -404,13 +398,9 @@ static ssize_t interval_store(struct device *dev, /* impose some basic bounds on the timer interval */ if (value >= 5 && value <= 10000) { - if (trigger_data->hw_control) { - trigger_data->blink_delay = value; - } else { - cancel_delayed_work_sync(&trigger_data->work); + cancel_delayed_work_sync(&trigger_data->work); - atomic_set(&trigger_data->interval, msecs_to_jiffies(value)); - } + atomic_set(&trigger_data->interval, msecs_to_jiffies(value)); set_baseline_state(trigger_data); /* resets timer */ } -- Gitee From 7ac01d3ebe6ee7a27793c5f28030d70958b46a60 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:59 +0800 Subject: [PATCH 1388/1421] Revert "pstore: Change kmsg_bytes storage size to u32" This reverts commit 5f43aba131eba3d50cb329ae69831183053b6f42. --- fs/pstore/inode.c | 2 +- fs/pstore/internal.h | 4 ++-- fs/pstore/platform.c | 11 +++++------ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c index a1c97cd2720a..7dbbf3b6d98d 100644 --- a/fs/pstore/inode.c +++ b/fs/pstore/inode.c @@ -264,7 +264,7 @@ static void parse_options(char *options) static int pstore_show_options(struct seq_file *m, struct dentry *root) { if (kmsg_bytes != CONFIG_PSTORE_DEFAULT_KMSG_BYTES) - seq_printf(m, ",kmsg_bytes=%u", kmsg_bytes); + seq_printf(m, ",kmsg_bytes=%lu", kmsg_bytes); return 0; } diff --git a/fs/pstore/internal.h b/fs/pstore/internal.h index 0659b833c887..824ef8e84dab 100644 --- a/fs/pstore/internal.h +++ b/fs/pstore/internal.h @@ -6,7 +6,7 @@ #include #include -extern unsigned int kmsg_bytes; +extern unsigned long kmsg_bytes; #ifdef CONFIG_PSTORE_FTRACE extern void pstore_register_ftrace(void); @@ -35,7 +35,7 @@ static inline void pstore_unregister_pmsg(void) {} extern struct pstore_info *psinfo; -extern void pstore_set_kmsg_bytes(unsigned int bytes); +extern void pstore_set_kmsg_bytes(int); extern void pstore_get_records(int); extern void pstore_get_backend_records(struct pstore_info *psi, struct dentry *root, int quiet); diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 0b896621a3b1..7ec9a3529f73 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -97,8 +97,8 @@ module_param(compress, charp, 0444); MODULE_PARM_DESC(compress, "compression to use"); /* How much of the kernel log to snapshot */ -unsigned int kmsg_bytes = CONFIG_PSTORE_DEFAULT_KMSG_BYTES; -module_param(kmsg_bytes, uint, 0444); +unsigned long kmsg_bytes = CONFIG_PSTORE_DEFAULT_KMSG_BYTES; +module_param(kmsg_bytes, ulong, 0444); MODULE_PARM_DESC(kmsg_bytes, "amount of kernel log to snapshot (in bytes)"); static void *compress_workspace; @@ -112,9 +112,9 @@ static void *compress_workspace; static char *big_oops_buf; static size_t max_compressed_size; -void pstore_set_kmsg_bytes(unsigned int bytes) +void pstore_set_kmsg_bytes(int bytes) { - WRITE_ONCE(kmsg_bytes, bytes); + kmsg_bytes = bytes; } /* Tag each group of saved records with a sequence number */ @@ -387,7 +387,6 @@ static void pstore_dump(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason) { struct kmsg_dump_iter iter; - unsigned int remaining = READ_ONCE(kmsg_bytes); unsigned long total = 0; const char *why; unsigned int part = 1; @@ -410,7 +409,7 @@ static void pstore_dump(struct kmsg_dumper *dumper, kmsg_dump_rewind(&iter); oopscount++; - while (total < remaining) { + while (total < kmsg_bytes) { char *dst; size_t dst_size; int header_size; -- Gitee From bc45a54e36d04e8de28c8519dbc0a41d62968fa4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:45:59 +0800 Subject: [PATCH 1389/1421] Revert "r8152: add vendor/device ID pair for Dell Alienware AW1022z" This reverts commit 284158d21b3f6c297c5b0b2a188b4d78f8b568f5. --- drivers/net/usb/r8152.c | 1 - include/linux/usb/r8152.h | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 1e85cfe524e8..bbcefcc7ef8f 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -10032,7 +10032,6 @@ static const struct usb_device_id rtl8152_table[] = { { USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff) }, { USB_DEVICE(VENDOR_ID_TPLINK, 0x0601) }, { USB_DEVICE(VENDOR_ID_DLINK, 0xb301) }, - { USB_DEVICE(VENDOR_ID_DELL, 0xb097) }, { USB_DEVICE(VENDOR_ID_ASUS, 0x1976) }, {} }; diff --git a/include/linux/usb/r8152.h b/include/linux/usb/r8152.h index 2ca60828f28b..33a4c146dc19 100644 --- a/include/linux/usb/r8152.h +++ b/include/linux/usb/r8152.h @@ -30,7 +30,6 @@ #define VENDOR_ID_NVIDIA 0x0955 #define VENDOR_ID_TPLINK 0x2357 #define VENDOR_ID_DLINK 0x2001 -#define VENDOR_ID_DELL 0x413c #define VENDOR_ID_ASUS 0x0b05 #if IS_REACHABLE(CONFIG_USB_RTL8152) -- Gitee From 83581cf5d973da6f6da964a75d3a414c835ec4d4 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:00 +0800 Subject: [PATCH 1390/1421] Revert "ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure()." This reverts commit 5e5d4d2f57812c0ddd1c8e1e3f4732f855c5b1a9. --- net/ipv4/fib_rules.c | 4 ++-- net/ipv6/fib6_rules.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c index 298a9944a3d1..513f475c6a53 100644 --- a/net/ipv4/fib_rules.c +++ b/net/ipv4/fib_rules.c @@ -222,9 +222,9 @@ static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb, struct nlattr **tb, struct netlink_ext_ack *extack) { - struct fib4_rule *rule4 = (struct fib4_rule *)rule; - struct net *net = rule->fr_net; + struct net *net = sock_net(skb->sk); int err = -EINVAL; + struct fib4_rule *rule4 = (struct fib4_rule *) rule; if (!inet_validate_dscp(frh->tos)) { NL_SET_ERR_MSG(extack, diff --git a/net/ipv6/fib6_rules.c b/net/ipv6/fib6_rules.c index e0f0c5f8cccd..6eeab21512ba 100644 --- a/net/ipv6/fib6_rules.c +++ b/net/ipv6/fib6_rules.c @@ -350,9 +350,9 @@ static int fib6_rule_configure(struct fib_rule *rule, struct sk_buff *skb, struct nlattr **tb, struct netlink_ext_ack *extack) { - struct fib6_rule *rule6 = (struct fib6_rule *)rule; - struct net *net = rule->fr_net; int err = -EINVAL; + struct net *net = sock_net(skb->sk); + struct fib6_rule *rule6 = (struct fib6_rule *) rule; if (!inet_validate_dscp(frh->tos)) { NL_SET_ERR_MSG(extack, -- Gitee From e1d6fb5dbc6fa36543c8c5370c0497f793345683 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:00 +0800 Subject: [PATCH 1391/1421] Revert "arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src" This reverts commit 00a37fa2c4be4dad866168a7eb12ba03e4914d48. --- arch/powerpc/perf/core-book3s.c | 20 -------------------- arch/powerpc/perf/isa207-common.c | 4 +--- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c index 4bb84dc4393f..10b946e9c6e7 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -2229,10 +2229,6 @@ static struct pmu power_pmu = { #define PERF_SAMPLE_ADDR_TYPE (PERF_SAMPLE_ADDR | \ PERF_SAMPLE_PHYS_ADDR | \ PERF_SAMPLE_DATA_PAGE_SIZE) - -#define SIER_TYPE_SHIFT 15 -#define SIER_TYPE_MASK (0x7ull << SIER_TYPE_SHIFT) - /* * A counter has overflowed; update its count and record * things if requested. Note that interrupts are hard-disabled @@ -2301,22 +2297,6 @@ static void record_and_restart(struct perf_event *event, unsigned long val, is_kernel_addr(mfspr(SPRN_SIAR))) record = 0; - /* - * SIER[46-48] presents instruction type of the sampled instruction. - * In ISA v3.0 and before values "0" and "7" are considered reserved. - * In ISA v3.1, value "7" has been used to indicate "larx/stcx". - * Drop the sample if "type" has reserved values for this field with a - * ISA version check. - */ - if (event->attr.sample_type & PERF_SAMPLE_DATA_SRC && - ppmu->get_mem_data_src) { - val = (regs->dar & SIER_TYPE_MASK) >> SIER_TYPE_SHIFT; - if (val == 0 || (val == 7 && !cpu_has_feature(CPU_FTR_ARCH_31))) { - record = 0; - atomic64_inc(&event->lost_samples); - } - } - /* * Finally record data if requested. */ diff --git a/arch/powerpc/perf/isa207-common.c b/arch/powerpc/perf/isa207-common.c index 031a2b63c171..56301b2bc8ae 100644 --- a/arch/powerpc/perf/isa207-common.c +++ b/arch/powerpc/perf/isa207-common.c @@ -321,10 +321,8 @@ void isa207_get_mem_data_src(union perf_mem_data_src *dsrc, u32 flags, sier = mfspr(SPRN_SIER); val = (sier & ISA207_SIER_TYPE_MASK) >> ISA207_SIER_TYPE_SHIFT; - if (val != 1 && val != 2 && !(val == 7 && cpu_has_feature(CPU_FTR_ARCH_31))) { - dsrc->val = 0; + if (val != 1 && val != 2 && !(val == 7 && cpu_has_feature(CPU_FTR_ARCH_31))) return; - } idx = (sier & ISA207_SIER_LDST_MASK) >> ISA207_SIER_LDST_SHIFT; sub_idx = (sier & ISA207_SIER_DATA_SRC_MASK) >> ISA207_SIER_DATA_SRC_SHIFT; -- Gitee From a3eca5aa78901fb0e398e62544dbe8a6e2acaa49 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:00 +0800 Subject: [PATCH 1392/1421] Revert "powerpc/pseries/iommu: memory notifier incorrectly adds TCEs for pmemory" This reverts commit fea770ef06908ff270c8dff9b03d5f1070df3b89. --- arch/powerpc/include/asm/mmzone.h | 1 - arch/powerpc/mm/numa.c | 2 +- arch/powerpc/platforms/pseries/iommu.c | 29 ++++++++++++-------------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/arch/powerpc/include/asm/mmzone.h b/arch/powerpc/include/asm/mmzone.h index f2c4457c94c3..da827d2d0866 100644 --- a/arch/powerpc/include/asm/mmzone.h +++ b/arch/powerpc/include/asm/mmzone.h @@ -35,7 +35,6 @@ extern cpumask_var_t node_to_cpumask_map[]; #ifdef CONFIG_MEMORY_HOTPLUG extern unsigned long max_pfn; u64 memory_hotplug_max(void); -u64 hot_add_drconf_memory_max(void); #else #define memory_hotplug_max() memblock_end_of_DRAM() #endif diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 65a9df0b9e5a..f6c4ace3b221 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c @@ -1342,7 +1342,7 @@ int hot_add_scn_to_nid(unsigned long scn_addr) return nid; } -u64 hot_add_drconf_memory_max(void) +static u64 hot_add_drconf_memory_max(void) { struct device_node *memory = NULL; struct device_node *dn = NULL; diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index bf02f94a973d..b1e6d275cda9 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -1183,13 +1183,17 @@ static LIST_HEAD(failed_ddw_pdn_list); static phys_addr_t ddw_memory_hotplug_max(void) { - resource_size_t max_addr; + resource_size_t max_addr = memory_hotplug_max(); + struct device_node *memory; -#if defined(CONFIG_NUMA) && defined(CONFIG_MEMORY_HOTPLUG) - max_addr = hot_add_drconf_memory_max(); -#else - max_addr = memblock_end_of_DRAM(); -#endif + for_each_node_by_type(memory, "memory") { + struct resource res; + + if (of_address_to_resource(memory, 0, &res)) + continue; + + max_addr = max_t(resource_size_t, max_addr, res.end + 1); + } return max_addr; } @@ -1467,7 +1471,7 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn) window->direct = true; /* DDW maps the whole partition, so enable direct DMA mapping */ - ret = walk_system_ram_range(0, ddw_memory_hotplug_max() >> PAGE_SHIFT, + ret = walk_system_ram_range(0, memblock_end_of_DRAM() >> PAGE_SHIFT, win64->value, tce_setrange_multi_pSeriesLP_walk); if (ret) { dev_info(&dev->dev, "failed to map DMA window for %pOF: %d\n", @@ -1654,17 +1658,11 @@ static int iommu_mem_notifier(struct notifier_block *nb, unsigned long action, struct memory_notify *arg = data; int ret = 0; - /* This notifier can get called when onlining persistent memory as well. - * TCEs are not pre-mapped for persistent memory. Persistent memory will - * always be above ddw_memory_hotplug_max() - */ - switch (action) { case MEM_GOING_ONLINE: spin_lock(&dma_win_list_lock); list_for_each_entry(window, &dma_win_list, list) { - if (window->direct && (arg->start_pfn << PAGE_SHIFT) < - ddw_memory_hotplug_max()) { + if (window->direct) { ret |= tce_setrange_multi_pSeriesLP(arg->start_pfn, arg->nr_pages, window->prop); } @@ -1676,8 +1674,7 @@ static int iommu_mem_notifier(struct notifier_block *nb, unsigned long action, case MEM_OFFLINE: spin_lock(&dma_win_list_lock); list_for_each_entry(window, &dma_win_list, list) { - if (window->direct && (arg->start_pfn << PAGE_SHIFT) < - ddw_memory_hotplug_max()) { + if (window->direct) { ret |= tce_clearrange_multi_pSeriesLP(arg->start_pfn, arg->nr_pages, window->prop); } -- Gitee From 3ad82704110fad5ce965f4dfba80499f75320000 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:00 +0800 Subject: [PATCH 1393/1421] Revert "net: fec: Refactor MAC reset to function" This reverts commit 6cf63bc3e75af71aa11414f83e251de251de7648. --- drivers/net/ethernet/freescale/fec_main.c | 52 ++++++++++++----------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 291c88a76a27..7261838a09db 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1079,29 +1079,6 @@ static void fec_enet_enable_ring(struct net_device *ndev) } } -/* Whack a reset. We should wait for this. - * For i.MX6SX SOC, enet use AXI bus, we use disable MAC - * instead of reset MAC itself. - */ -static void fec_ctrl_reset(struct fec_enet_private *fep, bool allow_wol) -{ - u32 val; - - if (!allow_wol || !(fep->wol_flag & FEC_WOL_FLAG_SLEEP_ON)) { - if (fep->quirks & FEC_QUIRK_HAS_MULTI_QUEUES || - ((fep->quirks & FEC_QUIRK_NO_HARD_RESET) && fep->link)) { - writel(0, fep->hwp + FEC_ECNTRL); - } else { - writel(FEC_ECR_RESET, fep->hwp + FEC_ECNTRL); - udelay(10); - } - } else { - val = readl(fep->hwp + FEC_ECNTRL); - val |= (FEC_ECR_MAGICEN | FEC_ECR_SLEEP); - writel(val, fep->hwp + FEC_ECNTRL); - } -} - /* * This function is called to start or restart the FEC during a link * change, transmit timeout, or to reconfigure the FEC. The network @@ -1118,7 +1095,17 @@ fec_restart(struct net_device *ndev) if (fep->bufdesc_ex) fec_ptp_save_state(fep); - fec_ctrl_reset(fep, false); + /* Whack a reset. We should wait for this. + * For i.MX6SX SOC, enet use AXI bus, we use disable MAC + * instead of reset MAC itself. + */ + if (fep->quirks & FEC_QUIRK_HAS_MULTI_QUEUES || + ((fep->quirks & FEC_QUIRK_NO_HARD_RESET) && fep->link)) { + writel(0, fep->hwp + FEC_ECNTRL); + } else { + writel(1, fep->hwp + FEC_ECNTRL); + udelay(10); + } /* * enet-mac reset will reset mac address registers too, @@ -1372,7 +1359,22 @@ fec_stop(struct net_device *ndev) if (fep->bufdesc_ex) fec_ptp_save_state(fep); - fec_ctrl_reset(fep, true); + /* Whack a reset. We should wait for this. + * For i.MX6SX SOC, enet use AXI bus, we use disable MAC + * instead of reset MAC itself. + */ + if (!(fep->wol_flag & FEC_WOL_FLAG_SLEEP_ON)) { + if (fep->quirks & FEC_QUIRK_HAS_MULTI_QUEUES) { + writel(0, fep->hwp + FEC_ECNTRL); + } else { + writel(FEC_ECR_RESET, fep->hwp + FEC_ECNTRL); + udelay(10); + } + } else { + val = readl(fep->hwp + FEC_ECNTRL); + val |= (FEC_ECR_MAGICEN | FEC_ECR_SLEEP); + writel(val, fep->hwp + FEC_ECNTRL); + } writel(fep->phy_speed, fep->hwp + FEC_MII_SPEED); writel(FEC_DEFAULT_IMASK, fep->hwp + FEC_IMASK); -- Gitee From ace8e9ea5d01fdebcd2cc76b45278429c716b453 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:00 +0800 Subject: [PATCH 1394/1421] Revert "wifi: mac80211: remove misplaced drv_mgd_complete_tx() call" This reverts commit 22c57b7134899d2ad2a905c9785c6584e05250ad. --- net/mac80211/mlme.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 2c7e139efd53..37163d84104f 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -7822,6 +7822,7 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata, ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), true, req->reason_code, false); + drv_mgd_complete_tx(sdata->local, sdata, &info); return 0; } -- Gitee From a45d625a72aa2f5272a4dd96a5aabe5e9ca939b3 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:01 +0800 Subject: [PATCH 1395/1421] Revert "wifi: mac80211: don't unconditionally call drv_mgd_complete_tx()" This reverts commit 2813bf6ecc42a092059cdff050e9cf0c0fc26edd. --- net/mac80211/mlme.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 37163d84104f..42e2c84ed248 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -2959,8 +2959,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, if (tx) ieee80211_flush_queues(local, sdata, false); - if (tx || frame_buf) - drv_mgd_complete_tx(sdata->local, sdata, &info); + drv_mgd_complete_tx(sdata->local, sdata, &info); /* clear AP addr only after building the needed mgmt frames */ eth_zero_addr(sdata->deflink.u.mgd.bssid); -- Gitee From 9b7d5100109ed5c6e38fb1be1b608d804a527cb2 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:01 +0800 Subject: [PATCH 1396/1421] Revert "drm/v3d: Add clock handling" This reverts commit f8828d3f743832a2638714ab649dadfda4010522. --- drivers/gpu/drm/v3d/v3d_drv.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c index 0e8ea9901188..ffbbe9d527d3 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.c +++ b/drivers/gpu/drm/v3d/v3d_drv.c @@ -226,21 +226,11 @@ static int v3d_platform_drm_probe(struct platform_device *pdev) if (ret) return ret; - v3d->clk = devm_clk_get_optional(dev, NULL); - if (IS_ERR(v3d->clk)) - return dev_err_probe(dev, PTR_ERR(v3d->clk), "Failed to get V3D clock\n"); - - ret = clk_prepare_enable(v3d->clk); - if (ret) { - dev_err(&pdev->dev, "Couldn't enable the V3D clock\n"); - return ret; - } - mmu_debug = V3D_READ(V3D_MMU_DEBUG_INFO); mask = DMA_BIT_MASK(30 + V3D_GET_FIELD(mmu_debug, V3D_MMU_PA_WIDTH)); ret = dma_set_mask_and_coherent(dev, mask); if (ret) - goto clk_disable; + return ret; v3d->va_width = 30 + V3D_GET_FIELD(mmu_debug, V3D_MMU_VA_WIDTH); @@ -255,29 +245,28 @@ static int v3d_platform_drm_probe(struct platform_device *pdev) ret = PTR_ERR(v3d->reset); if (ret == -EPROBE_DEFER) - goto clk_disable; + return ret; v3d->reset = NULL; ret = map_regs(v3d, &v3d->bridge_regs, "bridge"); if (ret) { dev_err(dev, "Failed to get reset control or bridge regs\n"); - goto clk_disable; + return ret; } } if (v3d->ver < 41) { ret = map_regs(v3d, &v3d->gca_regs, "gca"); if (ret) - goto clk_disable; + return ret; } v3d->mmu_scratch = dma_alloc_wc(dev, 4096, &v3d->mmu_scratch_paddr, GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO); if (!v3d->mmu_scratch) { dev_err(dev, "Failed to allocate MMU scratch page\n"); - ret = -ENOMEM; - goto clk_disable; + return -ENOMEM; } ret = v3d_gem_init(drm); @@ -300,8 +289,6 @@ static int v3d_platform_drm_probe(struct platform_device *pdev) v3d_gem_destroy(drm); dma_free: dma_free_wc(dev, 4096, v3d->mmu_scratch, v3d->mmu_scratch_paddr); -clk_disable: - clk_disable_unprepare(v3d->clk); return ret; } @@ -316,8 +303,6 @@ static void v3d_platform_drm_remove(struct platform_device *pdev) dma_free_wc(v3d->drm.dev, 4096, v3d->mmu_scratch, v3d->mmu_scratch_paddr); - - clk_disable_unprepare(v3d->clk); } static struct platform_driver v3d_platform_driver = { -- Gitee From 0b03427034f2b63b71a2a9a3c80e73569855c602 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:01 +0800 Subject: [PATCH 1397/1421] Revert "net/mlx5e: reduce the max log mpwrq sz for ECPF and reps" This reverts commit d6f1f4f0a94faf5c3db0a7f663263cbba903e190. --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 ++ .../net/ethernet/mellanox/mlx5/core/en/params.c | 15 ++++----------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h index 9cf33ae48c21..20a6bc1a234f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -93,6 +93,8 @@ struct page_pool; #define MLX5_MPWRQ_DEF_LOG_STRIDE_SZ(mdev) \ MLX5_MPWRQ_LOG_STRIDE_SZ(mdev, order_base_2(MLX5E_RX_MAX_HEAD)) +#define MLX5_MPWRQ_MAX_LOG_WQE_SZ 18 + /* Keep in sync with mlx5e_mpwrq_log_wqe_sz. * These are theoretical maximums, which can be further restricted by * capabilities. These values are used for static resource allocations and diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/params.c b/drivers/net/ethernet/mellanox/mlx5/core/en/params.c index dcd5db907f10..775010e94cb7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/params.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/params.c @@ -9,9 +9,6 @@ #include #include -#define MLX5_MPWRQ_MAX_LOG_WQE_SZ 18 -#define MLX5_REP_MPWRQ_MAX_LOG_WQE_SZ 17 - static u8 mlx5e_mpwrq_min_page_shift(struct mlx5_core_dev *mdev) { u8 min_page_shift = MLX5_CAP_GEN_2(mdev, log_min_mkey_entity_size); @@ -105,22 +102,18 @@ u8 mlx5e_mpwrq_log_wqe_sz(struct mlx5_core_dev *mdev, u8 page_shift, enum mlx5e_mpwrq_umr_mode umr_mode) { u8 umr_entry_size = mlx5e_mpwrq_umr_entry_size(umr_mode); - u8 max_pages_per_wqe, max_log_wqe_size_calc; - u8 max_log_wqe_size_cap; + u8 max_pages_per_wqe, max_log_mpwqe_size; u16 max_wqe_size; /* Keep in sync with MLX5_MPWRQ_MAX_PAGES_PER_WQE. */ max_wqe_size = mlx5e_get_max_sq_aligned_wqebbs(mdev) * MLX5_SEND_WQE_BB; max_pages_per_wqe = ALIGN_DOWN(max_wqe_size - sizeof(struct mlx5e_umr_wqe), MLX5_UMR_FLEX_ALIGNMENT) / umr_entry_size; - max_log_wqe_size_calc = ilog2(max_pages_per_wqe) + page_shift; - - WARN_ON_ONCE(max_log_wqe_size_calc < MLX5E_ORDER2_MAX_PACKET_MTU); + max_log_mpwqe_size = ilog2(max_pages_per_wqe) + page_shift; - max_log_wqe_size_cap = mlx5_core_is_ecpf(mdev) ? - MLX5_REP_MPWRQ_MAX_LOG_WQE_SZ : MLX5_MPWRQ_MAX_LOG_WQE_SZ; + WARN_ON_ONCE(max_log_mpwqe_size < MLX5E_ORDER2_MAX_PACKET_MTU); - return min_t(u8, max_log_wqe_size_calc, max_log_wqe_size_cap); + return min_t(u8, max_log_mpwqe_size, MLX5_MPWRQ_MAX_LOG_WQE_SZ); } u8 mlx5e_mpwrq_pages_per_wqe(struct mlx5_core_dev *mdev, u8 page_shift, -- Gitee From 9e3ceca69b3921c421777b92181a901c08457cd8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:01 +0800 Subject: [PATCH 1398/1421] Revert "net/mlx5e: reduce rep rxq depth to 256 for ECPF" This reverts commit 1182a0afcbe7e8ec5c0108e72986040b33da015a. --- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c index 851c499faa79..39d8e63e8856 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -63,7 +63,6 @@ #define MLX5E_REP_PARAMS_DEF_LOG_SQ_SIZE \ max(0x7, MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE) #define MLX5E_REP_PARAMS_DEF_NUM_CHANNELS 1 -#define MLX5E_REP_PARAMS_DEF_LOG_RQ_SIZE 0x8 static const char mlx5e_rep_driver_name[] = "mlx5e_rep"; @@ -799,8 +798,6 @@ static void mlx5e_build_rep_params(struct net_device *netdev) /* RQ */ mlx5e_build_rq_params(mdev, params); - if (!mlx5e_is_uplink_rep(priv) && mlx5_core_is_ecpf(mdev)) - params->log_rq_mtu_frames = MLX5E_REP_PARAMS_DEF_LOG_RQ_SIZE; /* If netdev is already registered (e.g. move from nic profile to uplink, * RTNL lock must be held before triggering netdev notifiers. -- Gitee From 5ecc0febf6835524598af257ce32e5ddf15c0d31 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:02 +0800 Subject: [PATCH 1399/1421] Revert "net/mlx5e: set the tx_queue_len for pfifo_fast" This reverts commit 94362fccdd9ba1e1e6b929bcc6905e9ec177b5f5. --- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c index 39d8e63e8856..751d3ffcd2f6 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -829,8 +829,6 @@ static void mlx5e_build_rep_netdev(struct net_device *netdev, netdev->ethtool_ops = &mlx5e_rep_ethtool_ops; netdev->watchdog_timeo = 15 * HZ; - if (mlx5_core_is_ecpf(mdev)) - netdev->tx_queue_len = 1 << MLX5E_REP_PARAMS_DEF_LOG_SQ_SIZE; #if IS_ENABLED(CONFIG_MLX5_CLS_ACT) netdev->hw_features |= NETIF_F_HW_TC; -- Gitee From 18f39e9dda06b3b8107c7d1d40b0c1bfce462329 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:02 +0800 Subject: [PATCH 1400/1421] Revert "net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB" This reverts commit 5722f207647840a4f4f8703cd8815bef98948f20. --- drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c b/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c index c170503b3aac..08a75654f5f1 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c @@ -165,9 +165,6 @@ mlx5e_test_loopback_validate(struct sk_buff *skb, struct udphdr *udph; struct iphdr *iph; - if (skb_linearize(skb)) - goto out; - /* We are only going to peek, no need to clone the SKB */ if (MLX5E_TEST_PKT_SIZE - ETH_HLEN > skb_headlen(skb)) goto out; -- Gitee From fe5a20bc208c38ac2546fe24e928fc178db0616a Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:02 +0800 Subject: [PATCH 1401/1421] Revert "scsi: target: spc: Fix loop traversal in spc_rsoc_get_descr()" This reverts commit 52c7c6e2a5dfd41d2389ed705b6385a0d5fdefc2. --- drivers/target/target_core_spc.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c index 675f774be1d3..f110f932ba05 100644 --- a/drivers/target/target_core_spc.c +++ b/drivers/target/target_core_spc.c @@ -2151,10 +2151,8 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode) if (descr->serv_action_valid) return TCM_INVALID_CDB_FIELD; - if (!descr->enabled || descr->enabled(descr, cmd)) { + if (!descr->enabled || descr->enabled(descr, cmd)) *opcode = descr; - return TCM_NO_SENSE; - } break; case 0x2: /* @@ -2168,10 +2166,8 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode) if (descr->serv_action_valid && descr->service_action == requested_sa) { if (!descr->enabled || descr->enabled(descr, - cmd)) { + cmd)) *opcode = descr; - return TCM_NO_SENSE; - } } else if (!descr->serv_action_valid) return TCM_INVALID_CDB_FIELD; break; @@ -2184,15 +2180,13 @@ spc_rsoc_get_descr(struct se_cmd *cmd, struct target_opcode_descriptor **opcode) */ if (descr->service_action == requested_sa) if (!descr->enabled || descr->enabled(descr, - cmd)) { + cmd)) *opcode = descr; - return TCM_NO_SENSE; - } break; } } - return TCM_NO_SENSE; + return 0; } static sense_reason_t -- Gitee From d5236595734cd8e9625faf0bd250acafa734f6a0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:02 +0800 Subject: [PATCH 1402/1421] Revert "drm/amd/display/dm: drop hw_support check in amdgpu_dm_i2c_xfer()" This reverts commit 340f4fe7b8941cadff92e0391f7e4188e397a259. --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index be17aebf9b34..bcf0dc05c767 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7474,7 +7474,7 @@ static int amdgpu_dm_i2c_xfer(struct i2c_adapter *i2c_adap, int i; int result = -EIO; - if (!ddc_service->ddc_pin) + if (!ddc_service->ddc_pin || !ddc_service->ddc_pin->hw_info.hw_supported) return result; cmd.payloads = kcalloc(num, sizeof(struct i2c_payload), GFP_KERNEL); -- Gitee From 0b59628194d3d91de438c1b5ff77aefeb7d1947f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:03 +0800 Subject: [PATCH 1403/1421] Revert "drm/amdgpu: enlarge the VBIOS binary size limit" This reverts commit 66f10fba0b17c9e9856f4960dc2b61036b980e50. --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index ffa5e72a84eb..a4ab02c85f65 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -43,7 +43,7 @@ #include "amdgpu_securedisplay.h" #include "amdgpu_atomfirmware.h" -#define AMD_VBIOS_FILE_MAX_SIZE_B (1024*1024*16) +#define AMD_VBIOS_FILE_MAX_SIZE_B (1024*1024*3) static int psp_load_smu_fw(struct psp_context *psp); static int psp_rap_terminate(struct psp_context *psp); -- Gitee From 13fde21c491971eb95ba4381dee4f01cb85f27bb Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:03 +0800 Subject: [PATCH 1404/1421] Revert "drm/amd/display: Increase block_sequence array size" This reverts commit b72b0328504a59ab5b249faef1a4327d23f5e42e. --- drivers/gpu/drm/amd/display/dc/inc/core_types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h b/drivers/gpu/drm/amd/display/dc/inc/core_types.h index 4b284ce669ae..eaad1260bfd1 100644 --- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h +++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h @@ -532,7 +532,7 @@ struct dc_state { */ struct bw_context bw_ctx; - struct block_sequence block_sequence[100]; + struct block_sequence block_sequence[50]; unsigned int block_sequence_steps; struct dc_dmub_cmd dc_dmub_cmd[10]; unsigned int dmub_cmd_count; -- Gitee From de133aa8b2e143832b3e38ea9afa84b96c2f5868 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:03 +0800 Subject: [PATCH 1405/1421] Revert "drm/amd/display: Initial psr_version with correct setting" This reverts commit 3488594cc7dcf8c0589962be765bccc1d57d90b5. --- drivers/gpu/drm/amd/display/dc/core/dc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index 640d010b52be..c2efe18ceacd 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -266,7 +266,6 @@ static bool create_links( link->link_id.type = OBJECT_TYPE_CONNECTOR; link->link_id.id = CONNECTOR_ID_VIRTUAL; link->link_id.enum_id = ENUM_ID_1; - link->psr_settings.psr_version = DC_PSR_VERSION_UNSUPPORTED; link->link_enc = kzalloc(sizeof(*link->link_enc), GFP_KERNEL); if (!link->link_enc) { -- Gitee From 7e35778feef23eb21aa2d000c2bf4c5f8f3307d0 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:03 +0800 Subject: [PATCH 1406/1421] Revert "drm/amd/display: Update CR AUX RD interval interpretation" This reverts commit e36b05f42a16c83857d35baa08d47c9fbaf5d18b. --- .../display/dc/link/protocols/link_dp_training_8b_10b.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_8b_10b.c b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_8b_10b.c index 52261e7c11c0..2b4c15b0b407 100644 --- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_8b_10b.c +++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_8b_10b.c @@ -36,8 +36,7 @@ link->ctx->logger static int32_t get_cr_training_aux_rd_interval(struct dc_link *link, - const struct dc_link_settings *link_settings, - enum lttpr_mode lttpr_mode) + const struct dc_link_settings *link_settings) { union training_aux_rd_interval training_rd_interval; uint32_t wait_in_micro_secs = 100; @@ -50,8 +49,6 @@ static int32_t get_cr_training_aux_rd_interval(struct dc_link *link, DP_TRAINING_AUX_RD_INTERVAL, (uint8_t *)&training_rd_interval, sizeof(training_rd_interval)); - if (lttpr_mode != LTTPR_MODE_NON_TRANSPARENT) - wait_in_micro_secs = 400; if (training_rd_interval.bits.TRAINIG_AUX_RD_INTERVAL) wait_in_micro_secs = training_rd_interval.bits.TRAINIG_AUX_RD_INTERVAL * 4000; } @@ -113,6 +110,7 @@ void decide_8b_10b_training_settings( */ lt_settings->link_settings.link_spread = link->dp_ss_off ? LINK_SPREAD_DISABLED : LINK_SPREAD_05_DOWNSPREAD_30KHZ; + lt_settings->cr_pattern_time = get_cr_training_aux_rd_interval(link, link_setting); lt_settings->eq_pattern_time = get_eq_training_aux_rd_interval(link, link_setting); lt_settings->pattern_for_cr = decide_cr_training_pattern(link_setting); lt_settings->pattern_for_eq = decide_eq_training_pattern(link, link_setting); @@ -121,7 +119,6 @@ void decide_8b_10b_training_settings( lt_settings->disallow_per_lane_settings = true; lt_settings->always_match_dpcd_with_hw_lane_settings = true; lt_settings->lttpr_mode = dp_decide_8b_10b_lttpr_mode(link); - lt_settings->cr_pattern_time = get_cr_training_aux_rd_interval(link, link_setting, lt_settings->lttpr_mode); dp_hw_to_dpcd_lane_settings(lt_settings, lt_settings->hw_lane_settings, lt_settings->dpcd_lane_settings); } -- Gitee From 9d9f5d3ed55894602d0b057dbdb934e0644a4c8e Mon Sep 17 00:00:00 2001 From: Li Nan Date: Mon, 1 Sep 2025 20:46:03 +0800 Subject: [PATCH 1407/1421] Revert "drm/amdgpu: reset psp->cmd to NULL after releasing the buffer" This reverts commit fb331e1102fc6a35d0c7e970ff94d021395d4b49. --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index a4ab02c85f65..6a24e8ceb944 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -506,6 +506,7 @@ static int psp_sw_fini(void *handle) { struct amdgpu_device *adev = (struct amdgpu_device *)handle; struct psp_context *psp = &adev->psp; + struct psp_gfx_cmd_resp *cmd = psp->cmd; psp_memory_training_fini(psp); @@ -515,8 +516,8 @@ static int psp_sw_fini(void *handle) amdgpu_ucode_release(&psp->cap_fw); amdgpu_ucode_release(&psp->toc_fw); - kfree(psp->cmd); - psp->cmd = NULL; + kfree(cmd); + cmd = NULL; psp_free_shared_bufs(psp); -- Gitee From 489061347aaa9e8818dc0511dda7655dfa8a1101 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:20 +0800 Subject: [PATCH 1408/1421] Revert "drm/amd/display: Don't try AUX transactions on disconnected link" This reverts commit 5af700fed1e2fa9fd9874162069d5110c05295b2. --- .../gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c index f01a3df58455..9bde0c8bf914 100644 --- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c +++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c @@ -74,8 +74,7 @@ void dp_disable_link_phy(struct dc_link *link, struct dc *dc = link->ctx->dc; if (!link->wa_flags.dp_keep_receiver_powered && - !link->skip_implict_edp_power_control && - link->type != dc_connection_none) + !link->skip_implict_edp_power_control) dpcd_write_rx_power_ctrl(link, false); dc->hwss.disable_link_output(link, link_res, signal); @@ -160,9 +159,8 @@ enum dc_status dp_set_fec_ready(struct dc_link *link, const struct link_resource } else { if (link->fec_state == dc_link_fec_ready) { fec_config = 0; - if (link->type != dc_connection_none) - core_link_write_dpcd(link, DP_FEC_CONFIGURATION, - &fec_config, sizeof(fec_config)); + core_link_write_dpcd(link, DP_FEC_CONFIGURATION, + &fec_config, sizeof(fec_config)); link_enc->funcs->fec_set_ready(link_enc, false); link->fec_state = dc_link_fec_not_ready; -- Gitee From a0f2e8b9ab0a0947bf8b71eb113a50bb504c714f Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:20 +0800 Subject: [PATCH 1409/1421] Revert "drm/amdgpu: Set snoop bit for SDMA for MI series" This reverts commit cbc0c6f43ef62ec3991303396add3048c2be468f. --- drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c | 25 ---------- drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c | 27 ----------- drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c | 31 ------------ .../asic_reg/mmhub/mmhub_9_4_1_offset.h | 32 ------------- .../asic_reg/mmhub/mmhub_9_4_1_sh_mask.h | 48 ------------------- 5 files changed, 163 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c index 553f4f24f5ad..9086f2fdfaf4 100644 --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c @@ -172,30 +172,6 @@ static void mmhub_v1_7_init_tlb_regs(struct amdgpu_device *adev) WREG32_SOC15(MMHUB, 0, regMC_VM_MX_L1_TLB_CNTL, tmp); } -/* Set snoop bit for SDMA so that SDMA writes probe-invalidates RW lines */ -static void mmhub_v1_7_init_snoop_override_regs(struct amdgpu_device *adev) -{ - uint32_t tmp; - int i; - uint32_t distance = regDAGB1_WRCLI_GPU_SNOOP_OVERRIDE - - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE; - - for (i = 0; i < 5; i++) { /* DAGB instances */ - tmp = RREG32_SOC15_OFFSET(MMHUB, 0, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, i * distance); - tmp |= (1 << 15); /* SDMA client is BIT15 */ - WREG32_SOC15_OFFSET(MMHUB, 0, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, i * distance, tmp); - - tmp = RREG32_SOC15_OFFSET(MMHUB, 0, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, i * distance); - tmp |= (1 << 15); - WREG32_SOC15_OFFSET(MMHUB, 0, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, i * distance, tmp); - } - -} - static void mmhub_v1_7_init_cache_regs(struct amdgpu_device *adev) { uint32_t tmp; @@ -361,7 +337,6 @@ static int mmhub_v1_7_gart_enable(struct amdgpu_device *adev) mmhub_v1_7_init_system_aperture_regs(adev); mmhub_v1_7_init_tlb_regs(adev); mmhub_v1_7_init_cache_regs(adev); - mmhub_v1_7_init_snoop_override_regs(adev); mmhub_v1_7_enable_system_domain(adev); mmhub_v1_7_disable_identity_aperture(adev); diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c index c7bdccff785b..3d8e579d5c4e 100644 --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c @@ -213,32 +213,6 @@ static void mmhub_v1_8_init_tlb_regs(struct amdgpu_device *adev) } } -/* Set snoop bit for SDMA so that SDMA writes probe-invalidates RW lines */ -static void mmhub_v1_8_init_snoop_override_regs(struct amdgpu_device *adev) -{ - uint32_t tmp, inst_mask; - int i, j; - uint32_t distance = regDAGB1_WRCLI_GPU_SNOOP_OVERRIDE - - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE; - - inst_mask = adev->aid_mask; - for_each_inst(i, inst_mask) { - for (j = 0; j < 5; j++) { /* DAGB instances */ - tmp = RREG32_SOC15_OFFSET(MMHUB, i, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, j * distance); - tmp |= (1 << 15); /* SDMA client is BIT15 */ - WREG32_SOC15_OFFSET(MMHUB, i, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, j * distance, tmp); - - tmp = RREG32_SOC15_OFFSET(MMHUB, i, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, j * distance); - tmp |= (1 << 15); - WREG32_SOC15_OFFSET(MMHUB, i, - regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, j * distance, tmp); - } - } -} - static void mmhub_v1_8_init_cache_regs(struct amdgpu_device *adev) { uint32_t tmp, inst_mask; @@ -444,7 +418,6 @@ static int mmhub_v1_8_gart_enable(struct amdgpu_device *adev) mmhub_v1_8_init_system_aperture_regs(adev); mmhub_v1_8_init_tlb_regs(adev); mmhub_v1_8_init_cache_regs(adev); - mmhub_v1_8_init_snoop_override_regs(adev); mmhub_v1_8_enable_system_domain(adev); mmhub_v1_8_disable_identity_aperture(adev); diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c index 9713cb59d1c1..5718e4d40e66 100644 --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c @@ -198,36 +198,6 @@ static void mmhub_v9_4_init_tlb_regs(struct amdgpu_device *adev, int hubid) hubid * MMHUB_INSTANCE_REGISTER_OFFSET, tmp); } -/* Set snoop bit for SDMA so that SDMA writes probe-invalidates RW lines */ -static void mmhub_v9_4_init_snoop_override_regs(struct amdgpu_device *adev, int hubid) -{ - uint32_t tmp; - int i; - uint32_t distance = mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE - - mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE; - uint32_t huboffset = hubid * MMHUB_INSTANCE_REGISTER_OFFSET; - - for (i = 0; i < 5 - (2 * hubid); i++) { - /* DAGB instances 0 to 4 are in hub0 and 5 to 7 are in hub1 */ - tmp = RREG32_SOC15_OFFSET(MMHUB, 0, - mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, - huboffset + i * distance); - tmp |= (1 << 15); /* SDMA client is BIT15 */ - WREG32_SOC15_OFFSET(MMHUB, 0, - mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, - huboffset + i * distance, tmp); - - tmp = RREG32_SOC15_OFFSET(MMHUB, 0, - mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, - huboffset + i * distance); - tmp |= (1 << 15); - WREG32_SOC15_OFFSET(MMHUB, 0, - mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, - huboffset + i * distance, tmp); - } - -} - static void mmhub_v9_4_init_cache_regs(struct amdgpu_device *adev, int hubid) { uint32_t tmp; @@ -422,7 +392,6 @@ static int mmhub_v9_4_gart_enable(struct amdgpu_device *adev) if (!amdgpu_sriov_vf(adev)) mmhub_v9_4_init_cache_regs(adev, i); - mmhub_v9_4_init_snoop_override_regs(adev, i); mmhub_v9_4_enable_system_domain(adev, i); if (!amdgpu_sriov_vf(adev)) mmhub_v9_4_disable_identity_aperture(adev, i); diff --git a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h index b2252deabc17..c488d4a50cf4 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h @@ -203,10 +203,6 @@ #define mmDAGB0_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB0_WR_MISC_CREDIT 0x0058 #define mmDAGB0_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE 0x005b -#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x005c -#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB0_WRCLI_ASK_PENDING 0x005d #define mmDAGB0_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB0_WRCLI_GO_PENDING 0x005e @@ -459,10 +455,6 @@ #define mmDAGB1_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB1_WR_MISC_CREDIT 0x00d8 #define mmDAGB1_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE 0x00db -#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x00dc -#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB1_WRCLI_ASK_PENDING 0x00dd #define mmDAGB1_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB1_WRCLI_GO_PENDING 0x00de @@ -715,10 +707,6 @@ #define mmDAGB2_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB2_WR_MISC_CREDIT 0x0158 #define mmDAGB2_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE 0x015b -#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x015c -#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB2_WRCLI_ASK_PENDING 0x015d #define mmDAGB2_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB2_WRCLI_GO_PENDING 0x015e @@ -971,10 +959,6 @@ #define mmDAGB3_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB3_WR_MISC_CREDIT 0x01d8 #define mmDAGB3_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE 0x01db -#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x01dc -#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB3_WRCLI_ASK_PENDING 0x01dd #define mmDAGB3_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB3_WRCLI_GO_PENDING 0x01de @@ -1227,10 +1211,6 @@ #define mmDAGB4_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB4_WR_MISC_CREDIT 0x0258 #define mmDAGB4_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE 0x025b -#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x025c -#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB4_WRCLI_ASK_PENDING 0x025d #define mmDAGB4_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB4_WRCLI_GO_PENDING 0x025e @@ -4813,10 +4793,6 @@ #define mmDAGB5_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB5_WR_MISC_CREDIT 0x3058 #define mmDAGB5_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE 0x305b -#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x305c -#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB5_WRCLI_ASK_PENDING 0x305d #define mmDAGB5_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB5_WRCLI_GO_PENDING 0x305e @@ -5069,10 +5045,6 @@ #define mmDAGB6_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB6_WR_MISC_CREDIT 0x30d8 #define mmDAGB6_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE 0x30db -#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x30dc -#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB6_WRCLI_ASK_PENDING 0x30dd #define mmDAGB6_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB6_WRCLI_GO_PENDING 0x30de @@ -5325,10 +5297,6 @@ #define mmDAGB7_WR_DATA_CREDIT_BASE_IDX 1 #define mmDAGB7_WR_MISC_CREDIT 0x3158 #define mmDAGB7_WR_MISC_CREDIT_BASE_IDX 1 -#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE 0x315b -#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1 -#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x315c -#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1 #define mmDAGB7_WRCLI_ASK_PENDING 0x315d #define mmDAGB7_WRCLI_ASK_PENDING_BASE_IDX 1 #define mmDAGB7_WRCLI_GO_PENDING 0x315e diff --git a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h index 5069d2fd467f..2969fbf282b7 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h @@ -1532,12 +1532,6 @@ //DAGB0_WRCLI_DBUS_GO_PENDING #define DAGB0_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB0_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB0_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB0_DAGB_DLY #define DAGB0_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB0_DAGB_DLY__CLI__SHIFT 0x8 @@ -3213,12 +3207,6 @@ //DAGB1_WRCLI_DBUS_GO_PENDING #define DAGB1_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB1_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB1_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB1_DAGB_DLY #define DAGB1_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB1_DAGB_DLY__CLI__SHIFT 0x8 @@ -4894,12 +4882,6 @@ //DAGB2_WRCLI_DBUS_GO_PENDING #define DAGB2_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB2_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB2_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB2_DAGB_DLY #define DAGB2_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB2_DAGB_DLY__CLI__SHIFT 0x8 @@ -6575,12 +6557,6 @@ //DAGB3_WRCLI_DBUS_GO_PENDING #define DAGB3_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB3_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB3_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB3_DAGB_DLY #define DAGB3_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB3_DAGB_DLY__CLI__SHIFT 0x8 @@ -8256,12 +8232,6 @@ //DAGB4_WRCLI_DBUS_GO_PENDING #define DAGB4_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB4_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB4_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB4_DAGB_DLY #define DAGB4_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB4_DAGB_DLY__CLI__SHIFT 0x8 @@ -28767,12 +28737,6 @@ //DAGB5_WRCLI_DBUS_GO_PENDING #define DAGB5_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB5_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB5_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB5_DAGB_DLY #define DAGB5_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB5_DAGB_DLY__CLI__SHIFT 0x8 @@ -30448,12 +30412,6 @@ //DAGB6_WRCLI_DBUS_GO_PENDING #define DAGB6_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB6_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB6_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB6_DAGB_DLY #define DAGB6_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB6_DAGB_DLY__CLI__SHIFT 0x8 @@ -32129,12 +32087,6 @@ //DAGB7_WRCLI_DBUS_GO_PENDING #define DAGB7_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0 #define DAGB7_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL -//DAGB7_WRCLI_GPU_SNOOP_OVERRIDE -#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0 -#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL -//DAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE -#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0 -#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL //DAGB7_DAGB_DLY #define DAGB7_DAGB_DLY__DLY__SHIFT 0x0 #define DAGB7_DAGB_DLY__CLI__SHIFT 0x8 -- Gitee From 40ac3e0f5eb63b5d40b3b1b0fc6a4fb9439a8491 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:21 +0800 Subject: [PATCH 1410/1421] Revert "soundwire: amd: change the soundwire wake enable/disable sequence" This reverts commit 2b7ffef229cca5d334e6da8e64a15e4a600d8ffa. --- drivers/soundwire/amd_manager.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manager.c index 31b203ebbae0..79173ab540a6 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1138,7 +1138,6 @@ static int __maybe_unused amd_suspend(struct device *dev) amd_sdw_wake_enable(amd_manager, false); return amd_sdw_clock_stop(amd_manager); } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { - amd_sdw_wake_enable(amd_manager, false); /* * As per hardware programming sequence on AMD platforms, * clock stop should be invoked first before powering-off @@ -1166,7 +1165,6 @@ static int __maybe_unused amd_suspend_runtime(struct device *dev) amd_sdw_wake_enable(amd_manager, true); return amd_sdw_clock_stop(amd_manager); } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { - amd_sdw_wake_enable(amd_manager, true); ret = amd_sdw_clock_stop(amd_manager); if (ret) return ret; -- Gitee From 495738778098cb2734f57f7d1f308fee793d4d50 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:21 +0800 Subject: [PATCH 1411/1421] Revert "phy: core: don't require set_mode() callback for phy_get_mode() to work" This reverts commit d1c42603f571e6f60fc205fd67418f3af031e72f. --- drivers/phy/phy-core.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c index 9417372a0155..a892e1d7e2d0 100644 --- a/drivers/phy/phy-core.c +++ b/drivers/phy/phy-core.c @@ -400,14 +400,13 @@ EXPORT_SYMBOL_GPL(phy_power_off); int phy_set_mode_ext(struct phy *phy, enum phy_mode mode, int submode) { - int ret = 0; + int ret; - if (!phy) + if (!phy || !phy->ops->set_mode) return 0; mutex_lock(&phy->mutex); - if (phy->ops->set_mode) - ret = phy->ops->set_mode(phy, mode, submode); + ret = phy->ops->set_mode(phy, mode, submode); if (!ret) phy->attrs.mode = mode; mutex_unlock(&phy->mutex); -- Gitee From 8ce2023575a8e1b91f44f73213613d7cb01c1a32 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:21 +0800 Subject: [PATCH 1412/1421] Revert "serial: sh-sci: Update the suspend/resume support" This reverts commit c5e96b76e0c017c824bcd2efbbc1d9004260485b. --- drivers/tty/serial/sh-sci.c | 71 ++----------------------------------- 1 file changed, 2 insertions(+), 69 deletions(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 3041ec21ab50..4350a69d97d7 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -104,15 +104,6 @@ struct plat_sci_reg { u8 offset, size; }; -struct sci_suspend_regs { - u16 scsmr; - u16 scscr; - u16 scfcr; - u16 scsptr; - u8 scbrr; - u8 semr; -}; - struct sci_port_params { const struct plat_sci_reg regs[SCIx_NR_REGS]; unsigned int fifosize; @@ -143,8 +134,6 @@ struct sci_port { struct dma_chan *chan_tx; struct dma_chan *chan_rx; - struct reset_control *rstc; - #ifdef CONFIG_SERIAL_SH_SCI_DMA struct dma_chan *chan_tx_saved; struct dma_chan *chan_rx_saved; @@ -164,7 +153,6 @@ struct sci_port { int rx_trigger; struct timer_list rx_fifo_timer; int rx_fifo_timeout; - struct sci_suspend_regs suspend_regs; u16 hscif_tot; bool has_rtscts; @@ -3337,7 +3325,6 @@ static struct plat_sci_port *sci_parse_dt(struct platform_device *pdev, } sp = &sci_ports[id]; - sp->rstc = rstc; *dev_id = id; p->type = SCI_OF_TYPE(data); @@ -3486,57 +3473,13 @@ static int sci_probe(struct platform_device *dev) return 0; } -static void sci_console_save(struct sci_port *s) -{ - struct sci_suspend_regs *regs = &s->suspend_regs; - struct uart_port *port = &s->port; - - if (sci_getreg(port, SCSMR)->size) - regs->scsmr = sci_serial_in(port, SCSMR); - if (sci_getreg(port, SCSCR)->size) - regs->scscr = sci_serial_in(port, SCSCR); - if (sci_getreg(port, SCFCR)->size) - regs->scfcr = sci_serial_in(port, SCFCR); - if (sci_getreg(port, SCSPTR)->size) - regs->scsptr = sci_serial_in(port, SCSPTR); - if (sci_getreg(port, SCBRR)->size) - regs->scbrr = sci_serial_in(port, SCBRR); - if (sci_getreg(port, SEMR)->size) - regs->semr = sci_serial_in(port, SEMR); -} - -static void sci_console_restore(struct sci_port *s) -{ - struct sci_suspend_regs *regs = &s->suspend_regs; - struct uart_port *port = &s->port; - - if (sci_getreg(port, SCSMR)->size) - sci_serial_out(port, SCSMR, regs->scsmr); - if (sci_getreg(port, SCSCR)->size) - sci_serial_out(port, SCSCR, regs->scscr); - if (sci_getreg(port, SCFCR)->size) - sci_serial_out(port, SCFCR, regs->scfcr); - if (sci_getreg(port, SCSPTR)->size) - sci_serial_out(port, SCSPTR, regs->scsptr); - if (sci_getreg(port, SCBRR)->size) - sci_serial_out(port, SCBRR, regs->scbrr); - if (sci_getreg(port, SEMR)->size) - sci_serial_out(port, SEMR, regs->semr); -} - static __maybe_unused int sci_suspend(struct device *dev) { struct sci_port *sport = dev_get_drvdata(dev); - if (sport) { + if (sport) uart_suspend_port(&sci_uart_driver, &sport->port); - if (!console_suspend_enabled && uart_console(&sport->port)) - sci_console_save(sport); - else - return reset_control_assert(sport->rstc); - } - return 0; } @@ -3544,18 +3487,8 @@ static __maybe_unused int sci_resume(struct device *dev) { struct sci_port *sport = dev_get_drvdata(dev); - if (sport) { - if (!console_suspend_enabled && uart_console(&sport->port)) { - sci_console_restore(sport); - } else { - int ret = reset_control_deassert(sport->rstc); - - if (ret) - return ret; - } - + if (sport) uart_resume_port(&sci_uart_driver, &sport->port); - } return 0; } -- Gitee From 74ccc1fcc785e22c79087d8492a7efa7e7c383bd Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:22 +0800 Subject: [PATCH 1413/1421] Revert "sched: Reduce the default slice to avoid tasks getting an extra tick" This reverts commit 6a42fccf8c8884f96ee5398d268ac43f6b646314. --- kernel/sched/fair.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 74b319785b44..76732f1afb89 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -121,10 +121,10 @@ unsigned int sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_LOG; /* * Minimal preemption granularity for CPU-bound tasks: * - * (default: 0.70 msec * (1 + ilog(ncpus)), units: nanoseconds) + * (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds) */ -unsigned int sysctl_sched_base_slice = 700000ULL; -static unsigned int normalized_sysctl_sched_base_slice = 700000ULL; +unsigned int sysctl_sched_base_slice = 750000ULL; +static unsigned int normalized_sysctl_sched_base_slice = 750000ULL; /* * This value is kept at sysctl_sched_latency/sysctl_sched_min_granularity -- Gitee From c97fe404fba26fb88fd6f1e74b53f863df9e6938 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:22 +0800 Subject: [PATCH 1414/1421] Revert "x86/traps: Cleanup and robustify decode_bug()" This reverts commit 2ebfc63f6d4dfcde6b3e96aa5d0d3e3119a2e1af. --- arch/x86/include/asm/bug.h | 5 +-- arch/x86/include/asm/ibt.h | 4 +- arch/x86/kernel/traps.c | 82 ++++++++++---------------------------- 3 files changed, 26 insertions(+), 65 deletions(-) diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h index 9a0f29be1a9e..806649c7f23d 100644 --- a/arch/x86/include/asm/bug.h +++ b/arch/x86/include/asm/bug.h @@ -22,9 +22,8 @@ #define SECOND_BYTE_OPCODE_UD2 0x0b #define BUG_NONE 0xffff -#define BUG_UD2 0xfffe -#define BUG_UD1 0xfffd -#define BUG_UD1_UBSAN 0xfffc +#define BUG_UD1 0xfffe +#define BUG_UD2 0xfffd #ifdef CONFIG_GENERIC_BUG diff --git a/arch/x86/include/asm/ibt.h b/arch/x86/include/asm/ibt.h index b778ae6e67ee..1e59581d500c 100644 --- a/arch/x86/include/asm/ibt.h +++ b/arch/x86/include/asm/ibt.h @@ -41,7 +41,7 @@ _ASM_PTR fname "\n\t" \ ".popsection\n\t" -static __always_inline __attribute_const__ u32 gen_endbr(void) +static inline __attribute_const__ u32 gen_endbr(void) { u32 endbr; @@ -56,7 +56,7 @@ static __always_inline __attribute_const__ u32 gen_endbr(void) return endbr; } -static __always_inline __attribute_const__ u32 gen_endbr_poison(void) +static inline __attribute_const__ u32 gen_endbr_poison(void) { /* * 4 byte NOP that isn't NOP4 (in fact it is OSP NOP3), such that it diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 8718d58dd0fb..d8d9bc5a9b32 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -92,17 +92,10 @@ __always_inline int is_valid_bugaddr(unsigned long addr) /* * Check for UD1 or UD2, accounting for Address Size Override Prefixes. - * If it's a UD1, further decode to determine its use: - * - * UBSan{0}: 67 0f b9 00 ud1 (%eax),%eax - * UBSan{10}: 67 0f b9 40 10 ud1 0x10(%eax),%eax - * static_call: 0f b9 cc ud1 %esp,%ecx - * - * Notably UBSAN uses EAX, static_call uses ECX. + * If it's a UD1, get the ModRM byte to pass along to UBSan. */ -__always_inline int decode_bug(unsigned long addr, s32 *imm, int *len) +__always_inline int decode_bug(unsigned long addr, u32 *imm) { - unsigned long start = addr; u8 v; if (addr < TASK_SIZE_MAX) @@ -115,42 +108,24 @@ __always_inline int decode_bug(unsigned long addr, s32 *imm, int *len) return BUG_NONE; v = *(u8 *)(addr++); - if (v == SECOND_BYTE_OPCODE_UD2) { - *len = addr - start; + if (v == SECOND_BYTE_OPCODE_UD2) return BUG_UD2; - } - if (v != SECOND_BYTE_OPCODE_UD1) + if (!IS_ENABLED(CONFIG_UBSAN_TRAP) || v != SECOND_BYTE_OPCODE_UD1) return BUG_NONE; - *imm = 0; - v = *(u8 *)(addr++); /* ModRM */ - - if (X86_MODRM_MOD(v) != 3 && X86_MODRM_RM(v) == 4) - addr++; /* SIB */ - - /* Decode immediate, if present */ - switch (X86_MODRM_MOD(v)) { - case 0: if (X86_MODRM_RM(v) == 5) - addr += 4; /* RIP + disp32 */ - break; - - case 1: *imm = *(s8 *)addr; - addr += 1; - break; - - case 2: *imm = *(s32 *)addr; - addr += 4; - break; - - case 3: break; - } - - /* record instruction length */ - *len = addr - start; + /* Retrieve the immediate (type value) for the UBSAN UD1 */ + v = *(u8 *)(addr++); + if (X86_MODRM_RM(v) == 4) + addr++; - if (X86_MODRM_REG(v) == 0) /* EAX */ - return BUG_UD1_UBSAN; + *imm = 0; + if (X86_MODRM_MOD(v) == 1) + *imm = *(u8 *)addr; + else if (X86_MODRM_MOD(v) == 2) + *imm = *(u32 *)addr; + else + WARN_ONCE(1, "Unexpected MODRM_MOD: %u\n", X86_MODRM_MOD(v)); return BUG_UD1; } @@ -281,10 +256,10 @@ static inline void handle_invalid_op(struct pt_regs *regs) static noinstr bool handle_bug(struct pt_regs *regs) { bool handled = false; - int ud_type, ud_len; - s32 ud_imm; + int ud_type; + u32 imm; - ud_type = decode_bug(regs->ip, &ud_imm, &ud_len); + ud_type = decode_bug(regs->ip, &imm); if (ud_type == BUG_NONE) return handled; @@ -304,28 +279,15 @@ static noinstr bool handle_bug(struct pt_regs *regs) */ if (regs->flags & X86_EFLAGS_IF) raw_local_irq_enable(); - - switch (ud_type) { - case BUG_UD2: + if (ud_type == BUG_UD2) { if (report_bug(regs->ip, regs) == BUG_TRAP_TYPE_WARN || handle_cfi_failure(regs) == BUG_TRAP_TYPE_WARN) { - regs->ip += ud_len; + regs->ip += LEN_UD2; handled = true; } - break; - - case BUG_UD1_UBSAN: - if (IS_ENABLED(CONFIG_UBSAN_TRAP)) { - pr_crit("%s at %pS\n", - report_ubsan_failure(regs, ud_imm), - (void *)regs->ip); - } - break; - - default: - break; + } else if (IS_ENABLED(CONFIG_UBSAN_TRAP)) { + pr_crit("%s at %pS\n", report_ubsan_failure(regs, imm), (void *)regs->ip); } - if (regs->flags & X86_EFLAGS_IF) raw_local_irq_disable(); instrumentation_end(); -- Gitee From 779683916099ed204f88a4303545c3e4838f5bf8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:22 +0800 Subject: [PATCH 1415/1421] Revert "clk: qcom: clk-alpha-pll: Do not use random stack value for recalc rate" This reverts commit 2215b292919cd241cdbebafda65f77e53b5109f3. --- drivers/clk/qcom/clk-alpha-pll.c | 52 ++++++++++---------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/drivers/clk/qcom/clk-alpha-pll.c b/drivers/clk/qcom/clk-alpha-pll.c index 732ca46703ba..80aadafffacd 100644 --- a/drivers/clk/qcom/clk-alpha-pll.c +++ b/drivers/clk/qcom/clk-alpha-pll.c @@ -645,19 +645,14 @@ clk_alpha_pll_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 alpha_width = pll_alpha_width(pll); - if (regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l)) - return 0; - - if (regmap_read(pll->clkr.regmap, PLL_USER_CTL(pll), &ctl)) - return 0; + regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l); + regmap_read(pll->clkr.regmap, PLL_USER_CTL(pll), &ctl); if (ctl & PLL_ALPHA_EN) { - if (regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL(pll), &low)) - return 0; + regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL(pll), &low); if (alpha_width > 32) { - if (regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL_U(pll), - &high)) - return 0; + regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL_U(pll), + &high); a = (u64)high << 32 | low; } else { a = low & GENMASK(alpha_width - 1, 0); @@ -849,11 +844,8 @@ alpha_pll_huayra_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 l, alpha = 0, ctl, alpha_m, alpha_n; - if (regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l)) - return 0; - - if (regmap_read(pll->clkr.regmap, PLL_USER_CTL(pll), &ctl)) - return 0; + regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l); + regmap_read(pll->clkr.regmap, PLL_USER_CTL(pll), &ctl); if (ctl & PLL_ALPHA_EN) { regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL(pll), &alpha); @@ -1047,11 +1039,8 @@ clk_trion_pll_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 l, frac, alpha_width = pll_alpha_width(pll); - if (regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l)) - return 0; - - if (regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL(pll), &frac)) - return 0; + regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l); + regmap_read(pll->clkr.regmap, PLL_ALPHA_VAL(pll), &frac); return alpha_pll_calc_rate(parent_rate, l, frac, alpha_width); } @@ -1109,8 +1098,7 @@ clk_alpha_pll_postdiv_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) struct clk_alpha_pll_postdiv *pll = to_clk_alpha_pll_postdiv(hw); u32 ctl; - if (regmap_read(pll->clkr.regmap, PLL_USER_CTL(pll), &ctl)) - return 0; + regmap_read(pll->clkr.regmap, PLL_USER_CTL(pll), &ctl); ctl >>= PLL_POST_DIV_SHIFT; ctl &= PLL_POST_DIV_MASK(pll); @@ -1326,11 +1314,8 @@ static unsigned long alpha_pll_fabia_recalc_rate(struct clk_hw *hw, struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 l, frac, alpha_width = pll_alpha_width(pll); - if (regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l)) - return 0; - - if (regmap_read(pll->clkr.regmap, PLL_FRAC(pll), &frac)) - return 0; + regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l); + regmap_read(pll->clkr.regmap, PLL_FRAC(pll), &frac); return alpha_pll_calc_rate(parent_rate, l, frac, alpha_width); } @@ -1480,8 +1465,7 @@ clk_trion_pll_postdiv_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) struct regmap *regmap = pll->clkr.regmap; u32 i, div = 1, val; - if (regmap_read(regmap, PLL_USER_CTL(pll), &val)) - return 0; + regmap_read(regmap, PLL_USER_CTL(pll), &val); val >>= pll->post_div_shift; val &= PLL_POST_DIV_MASK(pll); @@ -2355,12 +2339,9 @@ static unsigned long alpha_pll_lucid_evo_recalc_rate(struct clk_hw *hw, struct regmap *regmap = pll->clkr.regmap; u32 l, frac; - if (regmap_read(regmap, PLL_L_VAL(pll), &l)) - return 0; + regmap_read(regmap, PLL_L_VAL(pll), &l); l &= LUCID_EVO_PLL_L_VAL_MASK; - - if (regmap_read(regmap, PLL_ALPHA_VAL(pll), &frac)) - return 0; + regmap_read(regmap, PLL_ALPHA_VAL(pll), &frac); return alpha_pll_calc_rate(parent_rate, l, frac, pll_alpha_width(pll)); } @@ -2435,8 +2416,7 @@ static unsigned long clk_rivian_evo_pll_recalc_rate(struct clk_hw *hw, struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 l; - if (regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l)) - return 0; + regmap_read(pll->clkr.regmap, PLL_L_VAL(pll), &l); return parent_rate * l; } -- Gitee From ca8bdb710907f78d1dda0314ac33557e20d9b2b7 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:23 +0800 Subject: [PATCH 1416/1421] Revert "clk: qcom: ipq5018: allow it to be bulid on arm32" This reverts commit acd93648626a8708d8b4822b64432ffffce3dfa0. --- drivers/clk/qcom/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig index 95cbea8d380c..1de1661037b1 100644 --- a/drivers/clk/qcom/Kconfig +++ b/drivers/clk/qcom/Kconfig @@ -148,7 +148,7 @@ config IPQ_GCC_4019 config IPQ_GCC_5018 tristate "IPQ5018 Global Clock Controller" - depends on ARM || ARM64 || COMPILE_TEST + depends on ARM64 || COMPILE_TEST help Support for global clock controller on ipq5018 devices. Say Y if you want to use peripheral devices such as UART, SPI, -- Gitee From 0864779b5d7b1430969f0adfd332eb7bb1e5635d Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 10:07:23 +0800 Subject: [PATCH 1417/1421] Revert "net/mlx4_core: Avoid impossible mlx4_db_alloc() order value" This reverts commit b82aecee86ced889513e28b861781285fee8f49e. --- drivers/net/ethernet/mellanox/mlx4/alloc.c | 6 +++--- include/linux/mlx4/device.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/alloc.c b/drivers/net/ethernet/mellanox/mlx4/alloc.c index f2bded847e61..b330020dc0d6 100644 --- a/drivers/net/ethernet/mellanox/mlx4/alloc.c +++ b/drivers/net/ethernet/mellanox/mlx4/alloc.c @@ -682,9 +682,9 @@ static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device) } static int mlx4_alloc_db_from_pgdir(struct mlx4_db_pgdir *pgdir, - struct mlx4_db *db, unsigned int order) + struct mlx4_db *db, int order) { - unsigned int o; + int o; int i; for (o = order; o <= 1; ++o) { @@ -712,7 +712,7 @@ static int mlx4_alloc_db_from_pgdir(struct mlx4_db_pgdir *pgdir, return 0; } -int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, unsigned int order) +int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order) { struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_db_pgdir *pgdir; diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 86f0f2a25a3d..27f42f713c89 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h @@ -1135,7 +1135,7 @@ int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, struct mlx4_buf *buf); -int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, unsigned int order); +int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order); void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db); int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres, -- Gitee From 7200487877e2e4c8ea1f8015749777249a82fbf5 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 14:37:51 +0800 Subject: [PATCH 1418/1421] Revert "media: v4l: Memset argument to 0 before calling get_mbus_config pad op" This reverts commit 0b8185c10674040d269827af9b9da735ddfa0463. --- drivers/media/v4l2-core/v4l2-subdev.c | 2 -- include/media/v4l2-subdev.h | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c index cb3ad72a3e54..5f115438d072 100644 --- a/drivers/media/v4l2-core/v4l2-subdev.c +++ b/drivers/media/v4l2-core/v4l2-subdev.c @@ -351,8 +351,6 @@ static int call_enum_dv_timings(struct v4l2_subdev *sd, static int call_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad, struct v4l2_mbus_config *config) { - memset(config, 0, sizeof(*config)); - return check_pad(sd, pad) ? : sd->ops->pad->get_mbus_config(sd, pad, config); } diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index 0740dfc6c048..b4fcd0164048 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h @@ -822,9 +822,7 @@ struct v4l2_subdev_state { * possible configuration from the remote end, likely calling * this operation as close as possible to stream on time. The * operation shall fail if the pad index it has been called on - * is not valid or in case of unrecoverable failures. The - * config argument has been memset to 0 just before calling - * the op. + * is not valid or in case of unrecoverable failures. * * @set_routing: enable or disable data connection routes described in the * subdevice routing table. -- Gitee From a0fe6c1def839bb99b5de8a3b4d5bba6f8970ae8 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 14:37:51 +0800 Subject: [PATCH 1419/1421] Revert "media: i2c: imx219: Correct the minimum vblanking value" This reverts commit 3cfafc0e068d5218a3822c2082d90d1f711a664e. --- drivers/media/i2c/imx219.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c index a3d5a8a7c660..a14e571dc62b 100644 --- a/drivers/media/i2c/imx219.c +++ b/drivers/media/i2c/imx219.c @@ -77,7 +77,7 @@ #define IMX219_VTS_30FPS_640x480 0x06e3 #define IMX219_VTS_MAX 0xffff -#define IMX219_VBLANK_MIN 32 +#define IMX219_VBLANK_MIN 4 /*Frame Length Line*/ #define IMX219_FLL_MIN 0x08a6 -- Gitee From e64f3a739e4092de6028275b46b5b192aecf3b05 Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 14:37:52 +0800 Subject: [PATCH 1420/1421] Revert "kunit: tool: Use qboot on QEMU x86_64" This reverts commit d525dde614182b166bd4407f1b5bd519681df3c2. --- tools/testing/kunit/qemu_configs/x86_64.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/testing/kunit/qemu_configs/x86_64.py b/tools/testing/kunit/qemu_configs/x86_64.py index 4a6bf4e048f5..dc7949076863 100644 --- a/tools/testing/kunit/qemu_configs/x86_64.py +++ b/tools/testing/kunit/qemu_configs/x86_64.py @@ -7,6 +7,4 @@ CONFIG_SERIAL_8250_CONSOLE=y''', qemu_arch='x86_64', kernel_path='arch/x86/boot/bzImage', kernel_command_line='console=ttyS0', - # qboot is faster than SeaBIOS and doesn't mess up - # the terminal. - extra_qemu_params=['-bios', 'qboot.rom']) + extra_qemu_params=[]) -- Gitee From a453ed000461cece3fed14c39f0bc9064049dcfe Mon Sep 17 00:00:00 2001 From: Li Nan Date: Wed, 3 Sep 2025 14:37:52 +0800 Subject: [PATCH 1421/1421] Revert "smack: Revert "smackfs: Added check catlen"" This reverts commit bd9b104e5079a8b8b00b343c2969cf7e84b39489. --- security/smack/smackfs.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index 1e35c9f807b2..d27e8b916bfb 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c @@ -830,7 +830,7 @@ static int smk_open_cipso(struct inode *inode, struct file *file) static ssize_t smk_set_cipso(struct file *file, const char __user *buf, size_t count, loff_t *ppos, int format) { - struct netlbl_lsm_catmap *old_cat; + struct netlbl_lsm_catmap *old_cat, *new_cat = NULL; struct smack_known *skp; struct netlbl_lsm_secattr ncats; char mapcatset[SMK_CIPSOLEN]; @@ -917,8 +917,19 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf, smack_catset_bit(cat, mapcatset); } - - rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN); + ncats.flags = 0; + if (catlen == 0) { + ncats.attr.mls.cat = NULL; + ncats.attr.mls.lvl = maplevel; + new_cat = netlbl_catmap_alloc(GFP_ATOMIC); + if (new_cat) + new_cat->next = ncats.attr.mls.cat; + ncats.attr.mls.cat = new_cat; + skp->smk_netlabel.flags &= ~(1U << 3); + rc = 0; + } else { + rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN); + } if (rc >= 0) { old_cat = skp->smk_netlabel.attr.mls.cat; rcu_assign_pointer(skp->smk_netlabel.attr.mls.cat, ncats.attr.mls.cat); -- Gitee