6.17.7-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainercover 6.17.7-rc1 review
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.17.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.17.7-rc1
Menglong Dong <[email protected]>
arch: Add the macro COMPILE_OFFSETS to all the asm-offsets.c
Tejun Heo <[email protected]>
sched_ext: Make qmap dump operation non-destructive
Filipe Manana <[email protected]>
btrfs: use smp_mb__after_atomic() when forcing COW in create_pending_snapshot()
Qu Wenruo <[email protected]>
btrfs: tree-checker: add inode extref checks
Filipe Manana <[email protected]>
btrfs: abort transaction if we fail to update inode in log replay dir fixup
Filipe Manana <[email protected]>
btrfs: use level argument in log tree walk callback replay_one_buffer()
Filipe Manana <[email protected]>
btrfs: always drop log root tree reference in btrfs_replay_log()
Thorsten Blum <[email protected]>
btrfs: scrub: replace max_t()/min_t() with clamp() in scrub_throttle_dev_io()
Naohiro Aota <[email protected]>
btrfs: zoned: refine extent allocator hint selection
Johannes Thumshirn <[email protected]>
btrfs: zoned: return error from btrfs_zone_finish_endio()
Filipe Manana <[email protected]>
btrfs: abort transaction in the process_one_buffer() log tree walk callback
Filipe Manana <[email protected]>
btrfs: abort transaction on specific error places when walking log tree
Chen Ridong <[email protected]>
cpuset: Use new excpus for nocpu error check when enabling root partition
Avadhut Naik <[email protected]>
EDAC/mc_sysfs: Increase legacy channel support to 16
David Kaplan <[email protected]>
x86/bugs: Fix reporting of LFENCE retpoline
Aaron Lu <[email protected]>
sched/fair: update_cfs_group() for throttled cfs_rqs
David Kaplan <[email protected]>
x86/bugs: Add attack vector controls for VMSCAPE
Tejun Heo <[email protected]>
sched_ext: Keep bypass on between enable failure and scx_disable_workfn()
Jiri Olsa <[email protected]>
seccomp: passthrough uprobe systemcall without filtering
Kuan-Wei Chiu <[email protected]>
EDAC: Fix wrong executable file modes for C source files
Josh Poimboeuf <[email protected]>
perf: Skip user unwind if the task is a kernel thread
Josh Poimboeuf <[email protected]>
perf: Have get_perf_callchain() return NULL if crosstask and user are set
Steven Rostedt <[email protected]>
perf: Use current->flags & PF_KTHREAD|PF_USER_WORKER instead of current->mm == NULL
Dapeng Mi <[email protected]>
perf/x86/intel: Add ICL_FIXED_0_ADAPTIVE bit into INTEL_FIXED_BITS_MASK
Kyle Manna <[email protected]>
EDAC/ie31200: Add two more Intel Alder Lake-S SoCs for EDAC support
Richard Guy Briggs <[email protected]>
audit: record fanotify event regardless of presence of rules
Charles Keepax <[email protected]>
genirq/manage: Add buslock back in to enable_irq()
Charles Keepax <[email protected]>
genirq/manage: Add buslock back in to __disable_irq_nosync()
Charles Keepax <[email protected]>
genirq/chip: Add buslock back in to irq_set_handler()
David Kaplan <[email protected]>
x86/bugs: Qualify RETBLEED_INTEL_MSG
David Kaplan <[email protected]>
x86/bugs: Report correct retbleed mitigation status
Haofeng Li <[email protected]>
timekeeping: Fix aux clocks sysfs initialization loop bound
Tejun Heo <[email protected]>
sched_ext: Sync error_irq_work before freeing scx_sched
Tejun Heo <[email protected]>
sched_ext: Put event_stats_cpu in struct scx_sched_pcpu
Tejun Heo <[email protected]>
sched_ext: Move internal type and accessor definitions to ext_internal.h
-------------
Diffstat:
.../admin-guide/hw-vuln/attack_vector_controls.rst | 1 + Makefile | 4 +- arch/alpha/kernel/asm-offsets.c | 1 + arch/arc/kernel/asm-offsets.c | 1 + arch/arm/kernel/asm-offsets.c | 2 + arch/arm64/kernel/asm-offsets.c | 1 + arch/csky/kernel/asm-offsets.c | 1 + arch/hexagon/kernel/asm-offsets.c | 1 + arch/loongarch/kernel/asm-offsets.c | 2 + arch/m68k/kernel/asm-offsets.c | 1 + arch/microblaze/kernel/asm-offsets.c | 1 + arch/mips/kernel/asm-offsets.c | 2 + arch/nios2/kernel/asm-offsets.c | 1 + arch/openrisc/kernel/asm-offsets.c | 1 + arch/parisc/kernel/asm-offsets.c | 1 + arch/powerpc/kernel/asm-offsets.c | 1 + arch/riscv/kernel/asm-offsets.c | 1 + arch/s390/kernel/asm-offsets.c | 1 + arch/sh/kernel/asm-offsets.c | 1 + arch/sparc/kernel/asm-offsets.c | 1 + arch/um/kernel/asm-offsets.c | 2 + arch/x86/events/intel/core.c | 10 +- arch/x86/include/asm/perf_event.h | 6 +- arch/x86/kernel/cpu/bugs.c | 27 +- arch/x86/kvm/pmu.h | 2 +- arch/xtensa/kernel/asm-offsets.c | 1 + drivers/edac/ecs.c | 0 drivers/edac/edac_mc_sysfs.c | 24 + drivers/edac/ie31200_edac.c | 4 + drivers/edac/mem_repair.c | 0 drivers/edac/scrub.c | 0 fs/btrfs/disk-io.c | 2 +- fs/btrfs/extent-tree.c | 6 +- fs/btrfs/inode.c | 7 +- fs/btrfs/scrub.c | 3 +- fs/btrfs/transaction.c | 2 +- fs/btrfs/tree-checker.c | 37 + fs/btrfs/tree-log.c | 64 +- fs/btrfs/zoned.c | 8 +- fs/btrfs/zoned.h | 9 +- include/linux/audit.h | 2 +- kernel/cgroup/cpuset.c | 6 +- kernel/events/callchain.c | 16 +- kernel/events/core.c | 7 +- kernel/irq/chip.c | 2 +- kernel/irq/manage.c | 4 +- kernel/sched/build_policy.c | 1 + kernel/sched/ext.c | 1056 +------------------ kernel/sched/ext.h | 23 - kernel/sched/ext_internal.h | 1064 ++++++++++++++++++++ kernel/sched/fair.c | 3 - kernel/seccomp.c | 32 +- kernel/time/timekeeping.c | 2 +- tools/sched_ext/scx_qmap.bpf.c | 18 +- 54 files changed, 1326 insertions(+), 1150 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/35 sched_ext: Move internal type and accessor definitions to ext_internal.h
6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
[ Upstream commit 0c2b8356e430229efef42b03bd765a2a7ecf73fd ]
There currently isn't a place to place SCX-internal types and accessors to be shared between ext.c and ext_idle.c. Create kernel/sched/ext_internal.h and move internal type and accessor definitions there. This trims ext.c a bit and makes future additions easier. Pure code reorganization. No functional changes.
Stable-dep-of: efeeaac9ae97 ("sched_ext: Sync error_irq_work before freeing scx_sched")
--- kernel/sched/build_policy.c | 1 + kernel/sched/ext.c | 1034 ---------------------------------- kernel/sched/ext.h | 23 - kernel/sched/ext_internal.h | 1061 +++++++++++++++++++++++++++++++++++ 4 files changed, 1062 insertions(+), 1057 deletions(-) create mode 100644 kernel/sched/ext_internal.h
kernel/sched/build_policy.c +1 -0
@@ -58,6 +58,7 @@#include "deadline.c" #ifdef CONFIG_SCHED_CLASS_EXT +# include "ext_internal.h" # include "ext.c" # include "ext_idle.c" #endif
kernel/sched/ext.c +0 -1034
1,040 lines not on this page · raw message
kernel/sched/ext.h +0 -23
@@ -8,29 +8,6 @@*/ #ifdef CONFIG_SCHED_CLASS_EXT -static inline bool scx_kf_allowed_if_unlocked (void ) -{ -return !current->scx.kf_mask; -} - -static inline bool scx_rq_bypassing (struct rq *rq) -{ -return unlikely (rq->scx.flags &SCX_RQ_BYPASSING ); -} - -DECLARE_STATIC_KEY_FALSE (scx_ops_allow_queued_wakeup); - -DECLARE_PER_CPU(struct rq *, scx_locked_rq_state); - -/* -* Return the rq currently locked from an scx callback, or NULL if no rq is -* locked. -*/ -static inline struct rq *scx_locked_rq (void ) -{ -return __this_cpu_read (scx_locked_rq_state); -} -void scx_tick (struct rq *rq);void init_scx_entity (struct sched_ext_entity *scx);void scx_pre_fork (struct task_struct *p);
kernel/sched/ext_internal.h new file +1061 -0
1,061 lines not on this page · raw message
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 2/35 sched_ext: Put event_stats_cpu in struct scx_sched_pcpu
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
[ Upstream commit bcb7c2305682c77a8bfdbfe37106b314ac10110f ]
scx_sched.event_stats_cpu is the percpu counters that are used to track stats. Introduce struct scx_sched_pcpu and move the counters inside. This will ease adding more per-cpu fields. No functional changes.
Stable-dep-of: efeeaac9ae97 ("sched_ext: Sync error_irq_work before freeing scx_sched")
--- kernel/sched/ext.c | 18 +++++++++--------- kernel/sched/ext_internal.h | 17 ++++++++++------- 2 files changed, 19 insertions(+), 16 deletions(-)
kernel/sched/ext.c +9 -9
@@ -630,7 +630,7 @@ static struct task_struct *scx_task_iter_next_locked(struct scx_task_iter *iter)* This can be used when preemption is not disabled. */ #define scx_add_event (sch, name, cnt) do { \ - this_cpu_add((sch)->event_stats_cpu->name, (cnt)); \ + this_cpu_add((sch)->pcpu->event_stats.name, (cnt)); \ trace_sched_ext_event(#name, (cnt)); \ } while(0)
@@ -643,7 +643,7 @@ static struct task_struct *scx_task_iter_next_locked(struct scx_task_iter *iter)* This should be used only when preemption is disabled. */ #define __scx_add_event (sch, name, cnt) do { \ - __this_cpu_add((sch)->event_stats_cpu->name, (cnt)); \ + __this_cpu_add((sch)->pcpu->event_stats.name, (cnt)); \ trace_sched_ext_event(#name, cnt); \ } while(0)
@@ -3538,7 +3538,7 @@ static void scx_sched_free_rcu_work(struct work_struct *work)int node;kthread_stop (sch->helper->task); -free_percpu (sch->event_stats_cpu); +free_percpu (sch->pcpu);for_each_node_state (node,N_POSSIBLE )kfree (sch->global_dsqs[node]);
@@ -4439,13 +4439,13 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops) sch->global_dsqs[node] = dsq; } - sch->event_stats_cpu = alloc_percpu(struct scx_event_stats); -if (!sch->event_stats_cpu) + sch->pcpu = alloc_percpu(struct scx_sched_pcpu); +if (!sch->pcpu) goto err_free_gdsqs; sch->helper =kthread_run_worker (0 ,"sched_ext_helper" );if (!sch->helper) - goto err_free_event_stats; + goto err_free_pcpu;sched_set_fifo (sch->helper->task);atomic_set (&sch->exit_kind,SCX_EXIT_NONE );
@@ -4463,8 +4463,8 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops) err_stop_helper:kthread_stop (sch->helper->task); -err_free_event_stats: -free_percpu (sch->event_stats_cpu); +err_free_pcpu: +free_percpu (sch->pcpu); err_free_gdsqs:for_each_node_state (node,N_POSSIBLE )kfree (sch->global_dsqs[node]);
@@ -6490,7 +6490,7 @@ static void scx_read_events(struct scx_sched *sch, struct scx_event_stats *event/* Aggregate per-CPU event counters into @events. */ memset (events,0 ,sizeof (*events));for_each_possible_cpu (cpu) { - e_cpu =per_cpu_ptr (sch->event_stats_cpu, cpu); + e_cpu = &per_cpu_ptr (sch->pcpu, cpu)->event_stats;scx_agg_event (events, e_cpu,SCX_EV_SELECT_CPU_FALLBACK );scx_agg_event (events, e_cpu,SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE );scx_agg_event (events, e_cpu,SCX_EV_DISPATCH_KEEP_LAST );
kernel/sched/ext_internal.h +10 -7
@@ -846,6 +846,15 @@ struct scx_event_stats {s64 SCX_EV_BYPASS_ACTIVATE ; }; +struct scx_sched_pcpu { +/* +* The event counters are in a per-CPU variable to minimize the +* accounting overhead. A system-wide view on the event counter is +* constructed when requested by scx_bpf_events(). +*/ +struct scx_event_stats event_stats; +}; +struct scx_sched {struct sched_ext_ops ops; DECLARE_BITMAP(has_op, SCX_OPI_END);
@@ -860,13 +869,7 @@ struct scx_sched {*/ struct rhashtable dsq_hash;struct scx_dispatch_q **global_dsqs; - -/* -* The event counters are in a per-CPU variable to minimize the -* accounting overhead. A system-wide view on the event counter is -* constructed when requested by scx_bpf_events(). -*/ -struct scx_event_stats __percpu *event_stats_cpu; +struct scx_sched_pcpu __percpu *pcpu;bool warned_zero_slice;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 3/35 sched_ext: Sync error_irq_work before freeing scx_sched
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
[ Upstream commit efeeaac9ae9763f9c953e69633c86bc3031e39b5 ]
By the time scx_sched_free_rcu_work() runs, the scx_sched is no longer reachable. However, a previously queued error_irq_work may still be pending or running. Ensure it completes before proceeding with teardown.
--- kernel/sched/ext.c | 2 ++ 1 file changed, 2 insertions(+)
kernel/sched/ext.c +2 -0
@@ -3537,7 +3537,9 @@ static void scx_sched_free_rcu_work(struct work_struct *work)struct scx_dispatch_q *dsq;int node; +irq_work_sync (&sch->error_irq_work);kthread_stop (sch->helper->task); +free_percpu (sch->pcpu);for_each_node_state (node,N_POSSIBLE )
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 4/35 timekeeping: Fix aux clocks sysfs initialization loop bound
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Haofeng Li <[email protected]>
[ Upstream commit 39a9ed0fb6dac58547afdf9b6cb032d326a3698f ]
The loop in tk_aux_sysfs_init() uses i <= MAX_AUX_CLOCKS as the termination condition, which results in 9 iterations (i=0 to 8) when MAX_AUX_CLOCKS is defined as 8. However, the kernel is designed to support only up to 8 auxiliary clocks.
This off-by-one error causes the creation of a 9th sysfs entry that exceeds the intended auxiliary clock range.
Fix the loop bound to use i < MAX_AUX_CLOCKS to ensure exactly 8 auxiliary clock entries are created, matching the design specification.
--- kernel/time/timekeeping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/time/timekeeping.c +1 -1
@@ -3070,7 +3070,7 @@ static int __init tk_aux_sysfs_init(void)return -ENOMEM ; } -for (int i =0 ; i <=MAX_AUX_CLOCKS ; i++) { +for (int i =0 ; i <MAX_AUX_CLOCKS ; i++) {char id[2 ] = { [0 ] ='0' + i, };struct kobject *clk =kobject_create_and_add (id, auxo);
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 5/35 x86/bugs: Report correct retbleed mitigation status
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Kaplan <[email protected]>
[ Upstream commit 930f2361fe542a00de9ce6070b1b6edb976f1165 ]
On Intel CPUs, the default retbleed mitigation is IBRS/eIBRS but this requires that a similar spectre_v2 mitigation is applied. If the user selects a different spectre_v2 mitigation (like spectre_v2=retpoline) a warning is printed but sysfs will still report 'Mitigation: IBRS' or 'Mitigation: Enhanced IBRS'. This is incorrect because retbleed is not mitigated, and IBRS is not actually set.
Fix this by choosing RETBLEED_MITIGATION_NONE in this scenario so the kernel correctly reports the system as vulnerable to retbleed.
Stable-dep-of: 204ced4108f5 ("x86/bugs: Qualify RETBLEED_INTEL_MSG")
--- arch/x86/kernel/cpu/bugs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/bugs.c +3 -1
@@ -1460,8 +1460,10 @@ static void __init retbleed_update_mitigation(void) retbleed_mitigation =RETBLEED_MITIGATION_EIBRS ;break ;default : -if (retbleed_mitigation !=RETBLEED_MITIGATION_STUFF ) +if (retbleed_mitigation !=RETBLEED_MITIGATION_STUFF ) {pr_err (RETBLEED_INTEL_MSG ); + retbleed_mitigation =RETBLEED_MITIGATION_NONE ; + } } }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 6/35 x86/bugs: Qualify RETBLEED_INTEL_MSG
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Kaplan <[email protected]>
[ Upstream commit 204ced4108f5d38f6804968fd9543cc69c3f8da6 ]
When retbleed mitigation is disabled, the kernel already prints an info message that the system is vulnerable. Recent code restructuring also inadvertently led to RETBLEED_INTEL_MSG being printed as an error, which is unnecessary as retbleed mitigation was already explicitly disabled (by config option, cmdline, etc.).
Qualify this print statement so the warning is not printed unless an actual retbleed mitigation was selected and is being disabled due to incompatibility with spectre_v2.
--- arch/x86/kernel/cpu/bugs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/bugs.c +3 -1
@@ -1461,7 +1461,9 @@ static void __init retbleed_update_mitigation(void)break ;default :if (retbleed_mitigation !=RETBLEED_MITIGATION_STUFF ) { -pr_err (RETBLEED_INTEL_MSG ); +if (retbleed_mitigation !=RETBLEED_MITIGATION_NONE ) +pr_err (RETBLEED_INTEL_MSG ); + retbleed_mitigation =RETBLEED_MITIGATION_NONE ; } }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 7/35 genirq/chip: Add buslock back in to irq_set_handler()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Charles Keepax <[email protected]>
[ Upstream commit 5d7e45dd670e42df4836afeaa9baf9d41ca4b434 ]
The locking was changed from a buslock to a plain lock, but the patch description states there was no functional change. Assuming this was accidental so reverting to using the buslock.
--- kernel/irq/chip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/irq/chip.c +1 -1
@@ -1030,7 +1030,7 @@ __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle,void __irq_set_handler (unsigned int irq,irq_flow_handler_t handle,int is_chained,const char *name) { - scoped_irqdesc_get_and_lock(irq, 0) + scoped_irqdesc_get_and_buslock(irq, 0)__irq_do_set_handler (scoped_irqdesc, handle, is_chained, name); }EXPORT_SYMBOL_GPL (__irq_set_handler);
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 8/35 genirq/manage: Add buslock back in to __disable_irq_nosync()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Charles Keepax <[email protected]>
[ Upstream commit 56363e25f79fe83e63039c5595b8cd9814173d37 ]
The locking was changed from a buslock to a plain lock, but the patch description states there was no functional change. Assuming this was accidental so reverting to using the buslock.
--- kernel/irq/manage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/irq/manage.c +1 -1
@@ -659,7 +659,7 @@ void __disable_irq(struct irq_desc *desc)static int __disable_irq_nosync (unsigned int irq) { - scoped_irqdesc_get_and_lock(irq, IRQ_GET_DESC_CHECK_GLOBAL) { + scoped_irqdesc_get_and_buslock(irq, IRQ_GET_DESC_CHECK_GLOBAL) {__disable_irq (scoped_irqdesc);return 0 ; }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 9/35 genirq/manage: Add buslock back in to enable_irq()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Charles Keepax <[email protected]>
[ Upstream commit ef3330b99c01bda53f2a189b58bed8f6b7397f28 ]
The locking was changed from a buslock to a plain lock, but the patch description states there was no functional change. Assuming this was accidental so reverting to using the buslock.
--- kernel/irq/manage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/irq/manage.c +1 -1
@@ -789,7 +789,7 @@ void __enable_irq(struct irq_desc *desc)*/ void enable_irq (unsigned int irq) { - scoped_irqdesc_get_and_lock(irq, IRQ_GET_DESC_CHECK_GLOBAL) { + scoped_irqdesc_get_and_buslock(irq, IRQ_GET_DESC_CHECK_GLOBAL) {struct irq_desc *desc = scoped_irqdesc;if (WARN (!desc->irq_data.chip,"enable_irq before setup/request_irq: irq %u\n" , irq))
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 10/35 audit: record fanotify event regardless of presence of rules
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Richard Guy Briggs <[email protected]>
[ Upstream commit ce8370e2e62a903e18be7dd0e0be2eee079501e1 ]
When no audit rules are in place, fanotify event results are unconditionally dropped due to an explicit check for the existence of any audit rules. Given this is a report from another security sub-system, allow it to be recorded regardless of the existence of any audit rules.
To test, install and run the fapolicyd daemon with default config. Then as an unprivileged user, create and run a very simple binary that should be denied. Then check for an event with
ausearch -m FANOTIFY -ts recent
--- include/linux/audit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/audit.h +1 -1
@@ -527,7 +527,7 @@ static inline void audit_log_kern_module(const char *name)static inline void audit_fanotify (u32 response,struct fanotify_response_info_audit_rule *friar) { -if (!audit_dummy_context ()) +if (audit_enabled)__audit_fanotify (response, friar); }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 11/35 EDAC/ie31200: Add two more Intel Alder Lake-S SoCs for EDAC support
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kyle Manna <[email protected]>
[ Upstream commit 71b69f817e91b588030d7d47ddbdc4857a92eb4e ]
Host Device IDs (DID0) correspond to:
* Intel Core i7-12700K
* Intel Core i5-12600K
See documentation:
* 12th Generation Intel® Core™ Processors Datasheet
* Volume 1 of 2, Doc. No.: 655258, Rev.: 011
* https://edc.intel.com/output/DownloadPdfDocument?id=8297 (PDF)
--- drivers/edac/ie31200_edac.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/edac/ie31200_edac.c +4 -0
@@ -99,6 +99,8 @@/* Alder Lake-S */ #define PCI_DEVICE_ID_INTEL_IE31200_ADL_S_1 0x4660 +#define PCI_DEVICE_ID_INTEL_IE31200_ADL_S_2 0x4668/* 8P+4E, e.g. i7-12700K */ +#define PCI_DEVICE_ID_INTEL_IE31200_ADL_S_3 0x4648/* 6P+4E, e.g. i5-12600K */ /* Bartlett Lake-S */ #define PCI_DEVICE_ID_INTEL_IE31200_BTL_S_1 0x4639
@@ -761,6 +763,8 @@ static const struct pci_device_id ie31200_pci_tbl[] = { { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_RPL_S_6), (kernel_ulong_t)&rpl_s_cfg}, { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_RPL_HX_1), (kernel_ulong_t)&rpl_s_cfg}, { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_ADL_S_1), (kernel_ulong_t)&rpl_s_cfg}, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_ADL_S_2), (kernel_ulong_t)&rpl_s_cfg}, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_ADL_S_3), (kernel_ulong_t)&rpl_s_cfg}, { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_BTL_S_1), (kernel_ulong_t)&rpl_s_cfg}, { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_BTL_S_2), (kernel_ulong_t)&rpl_s_cfg}, { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IE31200_BTL_S_3), (kernel_ulong_t)&rpl_s_cfg},
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 12/35 perf/x86/intel: Add ICL_FIXED_0_ADAPTIVE bit into INTEL_FIXED_BITS_MASK
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dapeng Mi <[email protected]>
[ Upstream commit 2676dbf9f4fb7f6739d1207c0f1deaf63124642a ]
ICL_FIXED_0_ADAPTIVE is missed to be added into INTEL_FIXED_BITS_MASK, add it.
With help of this new INTEL_FIXED_BITS_MASK, intel_pmu_enable_fixed() can be optimized. The old fixed counter control bits can be unconditionally cleared with INTEL_FIXED_BITS_MASK and then set new control bits base on new configuration.
--- arch/x86/events/intel/core.c | 10 +++------- arch/x86/include/asm/perf_event.h | 6 +++++- arch/x86/kvm/pmu.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-)
arch/x86/events/intel/core.c +3 -7
@@ -2845,8 +2845,8 @@ static void intel_pmu_enable_fixed(struct perf_event *event) {struct cpu_hw_events *cpuc =this_cpu_ptr (&cpu_hw_events);struct hw_perf_event *hwc = &event->hw; -u64 mask, bits =0 ;int idx = hwc->idx; +u64 bits =0 ;if (is_topdown_idx (idx)) {struct cpu_hw_events *cpuc =this_cpu_ptr (&cpu_hw_events);
@@ -2885,14 +2885,10 @@ static void intel_pmu_enable_fixed(struct perf_event *event) idx -=INTEL_PMC_IDX_FIXED ; bits =intel_fixed_bits_by_idx (idx, bits); - mask =intel_fixed_bits_by_idx (idx,INTEL_FIXED_BITS_MASK ); - -if (x86_pmu.intel_cap.pebs_baseline && event->attr.precise_ip) { +if (x86_pmu.intel_cap.pebs_baseline && event->attr.precise_ip) bits |=intel_fixed_bits_by_idx (idx,ICL_FIXED_0_ADAPTIVE ); - mask |=intel_fixed_bits_by_idx (idx,ICL_FIXED_0_ADAPTIVE ); - } - cpuc->fixed_ctrl_val &= ~mask; + cpuc->fixed_ctrl_val &= ~intel_fixed_bits_by_idx (idx,INTEL_FIXED_BITS_MASK ); cpuc->fixed_ctrl_val |= bits; }
arch/x86/include/asm/perf_event.h +5 -1
@@ -35,7 +35,6 @@#define ARCH_PERFMON_EVENTSEL_EQ (1ULL << 36)#define ARCH_PERFMON_EVENTSEL_UMASK2 (0xFFULL << 40) -#define INTEL_FIXED_BITS_MASK 0xFULL#define INTEL_FIXED_BITS_STRIDE 4#define INTEL_FIXED_0_KERNEL (1ULL << 0)#define INTEL_FIXED_0_USER (1ULL << 1)
@@ -48,6 +47,11 @@#define ICL_EVENTSEL_ADAPTIVE (1ULL << 34)#define ICL_FIXED_0_ADAPTIVE (1ULL << 32) +#define INTEL_FIXED_BITS_MASK \ + (INTEL_FIXED_0_KERNEL | INTEL_FIXED_0_USER | \ + INTEL_FIXED_0_ANYTHREAD | INTEL_FIXED_0_ENABLE_PMI | \ + ICL_FIXED_0_ADAPTIVE) +#define intel_fixed_bits_by_idx (_idx, _bits) \ ((_bits) << ((_idx) * INTEL_FIXED_BITS_STRIDE))
arch/x86/kvm/pmu.h +1 -1
@@ -13,7 +13,7 @@#define MSR_IA32_MISC_ENABLE_PMU_RO_MASK (MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL | \ MSR_IA32_MISC_ENABLE_BTS_UNAVAIL) -/* retrieve the 4 bits for EN and PMI out of IA32_FIXED_CTR_CTRL */ +/* retrieve a fixed counter bits out of IA32_FIXED_CTR_CTRL */ #define fixed_ctrl_field (ctrl_reg, idx) \ (((ctrl_reg) >> ((idx) * INTEL_FIXED_BITS_STRIDE)) & INTEL_FIXED_BITS_MASK)
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 13/35 perf: Use current->flags & PF_KTHREAD|PF_USER_WORKER instead of current->mm == NULL
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steven Rostedt <[email protected]>
[ Upstream commit 90942f9fac05702065ff82ed0bade0d08168d4ea ]
To determine if a task is a kernel thread or not, it is more reliable to use (current->flags & (PF_KTHREAD|PF_USER_WORKERi)) than to rely on current->mm being NULL. That is because some kernel tasks (io_uring helpers) may have a mm field.
--- kernel/events/callchain.c | 6 +++--- kernel/events/core.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-)
kernel/events/callchain.c +3 -3
@@ -242,10 +242,10 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,if (user) {if (!user_mode (regs)) { -if (current->mm) - regs =task_pt_regs (current); -else +if (current->flags & (PF_KTHREAD |PF_USER_WORKER )) regs =NULL ; +else + regs =task_pt_regs (current); }if (regs) {
kernel/events/core.c +2 -2
@@ -7440,7 +7440,7 @@ static void perf_sample_regs_user(struct perf_regs *regs_user,if (user_mode (regs)) { regs_user->abi =perf_reg_abi (current); regs_user->regs = regs; - }else if (!(current->flags &PF_KTHREAD )) { + }else if (!(current->flags & (PF_KTHREAD |PF_USER_WORKER ))) {perf_get_regs_user (regs_user, regs); }else { regs_user->abi =PERF_SAMPLE_REGS_ABI_NONE ;
@@ -8080,7 +8080,7 @@ static u64 perf_virt_to_phys(u64 virt)* Try IRQ-safe get_user_page_fast_only first. * If failed, leave phys_addr as 0. */ -if (current->mm !=NULL ) { +if (!(current->flags & (PF_KTHREAD |PF_USER_WORKER ))) {struct page *p;pagefault_disable ();
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 14/35 perf: Have get_perf_callchain() return NULL if crosstask and user are set
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Josh Poimboeuf <[email protected]>
[ Upstream commit 153f9e74dec230f2e070e16fa061bc7adfd2c450 ]
get_perf_callchain() doesn't support cross-task unwinding for user space stacks, have it return NULL if both the crosstask and user arguments are set.
--- kernel/events/callchain.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
kernel/events/callchain.c +5 -5
@@ -224,6 +224,10 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,struct perf_callchain_entry_ctx ctx;int rctx, start_entry_idx; +/* crosstask is not supported for user stacks */ +if (crosstask && user && !kernel) +return NULL ; + entry =get_callchain_entry (&rctx);if (!entry)return NULL ;
@@ -240,7 +244,7 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,perf_callchain_kernel (&ctx, regs); } -if (user) { +if (user && !crosstask) {if (!user_mode (regs)) {if (current->flags & (PF_KTHREAD |PF_USER_WORKER )) regs =NULL ;
@@ -249,9 +253,6 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user, }if (regs) { -if (crosstask) - goto exit_put; -if (add_mark)perf_callchain_store_context (&ctx,PERF_CONTEXT_USER );
@@ -261,7 +262,6 @@ get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user, } } -exit_put:put_callchain_entry (rctx);return entry;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 15/35 perf: Skip user unwind if the task is a kernel thread
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Josh Poimboeuf <[email protected]>
[ Upstream commit 16ed389227651330879e17bd83d43bd234006722 ]
If the task is not a user thread, there's no user stack to unwind.
--- kernel/events/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
kernel/events/core.c +2 -1
@@ -8192,7 +8192,8 @@ struct perf_callchain_entry * perf_callchain(struct perf_event *event, struct pt_regs *regs) { bool kernel = !event->attr.exclude_callchain_kernel; -bool user = !event->attr.exclude_callchain_user; +bool user = !event->attr.exclude_callchain_user && + !(current->flags & (PF_KTHREAD |PF_USER_WORKER ));/* Disallow cross-task user callchains. */ bool crosstask = event->ctx->task && event->ctx->task != current;const u32 max_stack = event->attr.sample_max_stack;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 16/35 EDAC: Fix wrong executable file modes for C source files
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kuan-Wei Chiu <[email protected]>
[ Upstream commit 71965cae7db394ff5ba3b2d2befe4e136ceec268 ]
Three EDAC source files were mistakenly marked as executable when adding the EDAC scrub controls.
These are plain C source files and should not carry the executable bit. Correcting their modes follows the principle of least privilege and avoids unnecessary execute permissions in the repository.
[ bp: Massage commit message. ]
--- drivers/edac/ecs.c | 0 drivers/edac/mem_repair.c | 0 drivers/edac/scrub.c | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 drivers/edac/ecs.c mode change 100755 => 100644 drivers/edac/mem_repair.c mode change 100755 => 100644 drivers/edac/scrub.c
drivers/edac/ecs.c +0 -0
drivers/edac/mem_repair.c +0 -0
drivers/edac/scrub.c +0 -0
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 17/35 seccomp: passthrough uprobe systemcall without filtering
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiri Olsa <[email protected]>
[ Upstream commit 89d1d8434d246c96309a6068dfcf9e36dc61227b ]
Adding uprobe as another exception to the seccomp filter alongside with the uretprobe syscall.
Same as the uretprobe the uprobe syscall is installed by kernel as replacement for the breakpoint exception and is limited to x86_64 arch and isn't expected to ever be supported in i386.
--- kernel/seccomp.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-)
kernel/seccomp.c +25 -7
@@ -741,6 +741,26 @@ seccomp_prepare_user_filter(const char __user *user_filter) }#ifdef SECCOMP_ARCH_NATIVE +static bool seccomp_uprobe_exception (struct seccomp_data *sd) +{ +#if defined __NR_uretprobe || defined __NR_uprobe +#ifdef SECCOMP_ARCH_COMPAT + if (sd->arch == SECCOMP_ARCH_NATIVE) +#endif + { +#ifdef __NR_uretprobe +if (sd->nr == __NR_uretprobe) +return true; +#endif +#ifdef __NR_uprobe +if (sd->nr == __NR_uprobe) +return true; +#endif + } +#endif +return false; +} +/** * seccomp_is_const_allow - check if filter is constant allow with given data * @fprog: The BPF programs
@@ -758,13 +778,8 @@ static bool seccomp_is_const_allow(struct sock_fprog_kern *fprog,return false;/* Our single exception to filtering. */ -#ifdef __NR_uretprobe -#ifdef SECCOMP_ARCH_COMPAT - if (sd->arch == SECCOMP_ARCH_NATIVE) -#endif -if (sd->nr == __NR_uretprobe) -return true; -#endif +if (seccomp_uprobe_exception (sd)) +return true;for (pc =0 ; pc < fprog->len; pc++) {struct sock_filter *insn = &fprog->filter[pc];
@@ -1042,6 +1057,9 @@ static const int mode1_syscalls[] = { __NR_seccomp_read, __NR_seccomp_write, __NR_seccomp_exit, __NR_seccomp_sigreturn, #ifdef __NR_uretprobe __NR_uretprobe, +#endif +#ifdef __NR_uprobe + __NR_uprobe, #endif -1, /* negative terminated */ };
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 18/35 sched_ext: Keep bypass on between enable failure and scx_disable_workfn()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
[ Upstream commit 4a1d9d73aabc8f97f48c4f84f936de3b265ffd6f ]
scx_enable() turns on the bypass mode while enable is in progress. If enabling fails, it turns off the bypass mode and then triggers scx_error(). scx_error() will trigger scx_disable_workfn() which will turn on the bypass mode again and unload the failed scheduler.
This moves the system out of bypass mode between the enable error path and the disable path, which is unnecessary and can be brittle - e.g. the thread running scx_enable() may already be on the failed scheduler and can be switched out before it triggers scx_error() leading to a stall. The watchdog would eventually kick in, so the situation isn't critical but is still suboptimal.
There is nothing to be gained by turning off the bypass mode between scx_enable() failure and scx_disable_workfn(). Keep bypass on.
--- kernel/sched/ext.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/sched/ext.c +1 -1
@@ -4763,7 +4763,7 @@ static int scx_enable(struct sched_ext_ops *ops, struct bpf_link *link) err_disable_unlock_all:scx_cgroup_unlock ();percpu_up_write (&scx_fork_rwsem); -scx_bypass (false); +/* we'll soon enter disable path, keep bypass on */ err_disable:mutex_unlock (&scx_enable_mutex);/*
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 19/35 x86/bugs: Add attack vector controls for VMSCAPE
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Kaplan <[email protected]>
[ Upstream commit 5799d5d8a6c877f03ad5b5a640977053be45059a ]
Use attack vector controls to select whether VMSCAPE requires mitigation, similar to other bugs.
--- .../admin-guide/hw-vuln/attack_vector_controls.rst | 1 + arch/x86/kernel/cpu/bugs.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-)
Documentation/admin-guide/hw-vuln/attack_vector_controls.rst +1 -0
@@ -218,6 +218,7 @@ SRSO X X X X SSB X TAA X X X X * (Note 2) TSA X X X X +VMSCAPE X =============== ============== ============ ============= ============== ============ ======== Notes:
arch/x86/kernel/cpu/bugs.c +10 -4
@@ -434,6 +434,9 @@ static bool __init should_mitigate_vuln(unsigned int bug)case X86_BUG_SPEC_STORE_BYPASS :return cpu_attack_vector_mitigated (CPU_MITIGATE_USER_USER ); +case X86_BUG_VMSCAPE : +return cpu_attack_vector_mitigated (CPU_MITIGATE_GUEST_HOST ); +default :WARN (1 ,"Unknown bug %x\n" , bug);return false;
@@ -3308,15 +3311,18 @@ early_param("vmscape", vmscape_parse_cmdline);static void __init vmscape_select_mitigation (void ) { -if (cpu_mitigations_off () || - !boot_cpu_has_bug (X86_BUG_VMSCAPE ) || +if (!boot_cpu_has_bug (X86_BUG_VMSCAPE ) || !boot_cpu_has (X86_FEATURE_IBPB )) { vmscape_mitigation =VMSCAPE_MITIGATION_NONE ;return ; } -if (vmscape_mitigation ==VMSCAPE_MITIGATION_AUTO ) - vmscape_mitigation =VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER ; +if (vmscape_mitigation ==VMSCAPE_MITIGATION_AUTO ) { +if (should_mitigate_vuln (X86_BUG_VMSCAPE )) + vmscape_mitigation =VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER ; +else + vmscape_mitigation =VMSCAPE_MITIGATION_NONE ; + } }static void __init vmscape_update_mitigation (void )
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 20/35 sched/fair: update_cfs_group() for throttled cfs_rqs
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Aaron Lu <[email protected]>
[ Upstream commit fcd394866e3db344cbe0bb485d7e3f741ac07245 ]
With task based throttle model, tasks in a throttled hierarchy are allowed to continue to run if they are running in kernel mode. For this reason, PELT clock is not stopped for these cfs_rqs in throttled hierarchy when they still have tasks running or queued.
Since PELT clock is not stopped, whether to allow update_cfs_group() doing its job for cfs_rqs which are in throttled hierarchy but still have tasks running/queued is a question.
The good side is, continue to run update_cfs_group() can get these cfs_rq entities with an up2date weight and that up2date weight can be useful to derive an accurate load for the CPU as well as ensure fairness if multiple tasks of different cgroups are running on the same CPU. OTOH, as Benjamin Segall pointed: when unthrottle comes around the most likely correct distribution is the distribution we had at the time of throttle.
In reality, either way may not matter that much if tasks in throttled hierarchy don't run in kernel mode for too long. But in case that happens, let these cfs_rq entities have an up2date weight seems a good thing to do.
--- kernel/sched/fair.c | 3 --- 1 file changed, 3 deletions(-)
kernel/sched/fair.c +0 -3
@@ -3957,9 +3957,6 @@ static void update_cfs_group(struct sched_entity *se)if (!gcfs_rq || !gcfs_rq->load.weight)return ; -if (throttled_hierarchy (gcfs_rq)) -return ; - shares =calc_group_shares (gcfs_rq);if (unlikely (se->load.weight != shares))reweight_entity (cfs_rq_of (se), se, shares);
Signature · 1 line
2.51.0
Re: [PATCH 6.17 20/35] sched/fair: update_cfs_group() for throttled cfs_rqs
Hello,
Quoted 4 lines · Greg Kroah-Hartman
6.17-stable review patch. If anyone has any objections, please let me know.
------------------
Quoted 8 lines
From: Aaron Lu <[email protected]>
[ Upstream commit
fcd394866e3db344cbe0bb485d7e3f741ac07245]With task based throttle model, tasks in a throttled hierarchy are allowed to continue to run if they are running in kernel mode. For this reason, PELT clock is not stopped for these
cfs_rqsin throttled hierarchy when they still have tasks running or queued.
This commit is needed only when the "task based throttle model" is used and that "task based throttle model" feature is merged in v6.18 kernel, so I don't think we need this commit for 6.17 based kernels.
Thanks,
Aaron
Quoted 42 lines
Since PELT clock is not stopped, whether to allow
update_cfs_group()doing its job forcfs_rqswhich are in throttled hierarchy but still have tasks running/queued is a question.The good side is, continue to run
update_cfs_group()can get thesecfs_rqentities with an up2date weight and that up2date weight can be useful to derive an accurate load for the CPU as well as ensure fairness if multiple tasks of different cgroups are running on the same CPU. OTOH, as Benjamin Segall pointed: when unthrottle comes around the most likely correct distribution is the distribution we had at the time of throttle.In reality, either way may not matter that much if tasks in throttled hierarchy don't run in kernel mode for too long. But in case that happens, let these
cfs_rqentities have an up2date weight seems a good thing to do.Signed-off-by Aaron Lu <[email protected]>Signed-off-by Peter Zijlstra (Intel) <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- kernel/sched/fair.c | 3 --- 1 file changed, 3 deletions(-)kernel/sched/fair.c +0
-4@@ -3957,9 +3957,6 @@ static void update_cfs_group(struct sched_entity *se)if (!gcfs_rq || !gcfs_rq->load.weight)return ; -if (throttled_hierarchy (gcfs_rq)) -return ; - shares =calc_group_shares (gcfs_rq);if (unlikely (se->load.weight != shares))reweight_entity (cfs_rq_of (se), se, shares); --2.51.0
Greg Kroah-Hartman
maintainerRe: [PATCH 6.17 20/35] sched/fair: update_cfs_group() for throttled cfs_rqs
Quoted 11 lines · Aaron Lu
Hello,
Quoted 8 lines · Greg Kroah-Hartman
6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Aaron Lu <[email protected]>
[ Upstream commit
fcd394866e3db344cbe0bb485d7e3f741ac07245]
Quoted 8 lines
Quoted 4 lines
With task based throttle model, tasks in a throttled hierarchy are allowed to continue to run if they are running in kernel mode. For this reason, PELT clock is not stopped for these
cfs_rqsin throttled hierarchy when they still have tasks running or queued.This commit is needed only when the "task based throttle model" is used and that "task based throttle model" feature is merged in v6.18 kernel, so I don't think we need this commit for 6.17 based kernels.
Now dropped, thanks.
greg k-h
Greg Kroah-Hartman
maintainerPATCH 21/35 x86/bugs: Fix reporting of LFENCE retpoline
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Kaplan <[email protected]>
[ Upstream commit d1cc1baef67ac6c09b74629ca053bf3fb812f7dc ]
The LFENCE retpoline mitigation is not secure but the kernel prints inconsistent messages about this fact. The dmesg log says 'Mitigation:
LFENCE', implying the system is mitigated. But sysfs reports 'Vulnerable:
LFENCE' implying the system (correctly) is not mitigated.
Fix this by printing a consistent 'Vulnerable: LFENCE' string everywhere when this mitigation is selected.
--- arch/x86/kernel/cpu/bugs.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
arch/x86/kernel/cpu/bugs.c +1 -4
@@ -2052,7 +2052,7 @@ static void __init spectre_v2_user_apply_mitigation(void)static const char *const spectre_v2_strings[] = { [SPECTRE_V2_NONE ] ="Vulnerable" , [SPECTRE_V2_RETPOLINE ] ="Mitigation: Retpolines" , - [SPECTRE_V2_LFENCE ] ="Mitigation: LFENCE" , + [SPECTRE_V2_LFENCE ] ="Vulnerable: LFENCE" , [SPECTRE_V2_EIBRS ] ="Mitigation: Enhanced / Automatic IBRS" , [SPECTRE_V2_EIBRS_LFENCE ] ="Mitigation: Enhanced / Automatic IBRS + LFENCE" , [SPECTRE_V2_EIBRS_RETPOLINE ] ="Mitigation: Enhanced / Automatic IBRS + Retpolines" ,
@@ -3636,9 +3636,6 @@ static const char *spectre_bhi_state(void)static ssize_t spectre_v2_show_state (char *buf) { -if (spectre_v2_enabled ==SPECTRE_V2_LFENCE ) -return sysfs_emit (buf,"Vulnerable: LFENCE\n" ); -if (spectre_v2_enabled ==SPECTRE_V2_EIBRS &&unprivileged_ebpf_enabled ())return sysfs_emit (buf,"Vulnerable: eIBRS with unprivileged eBPF\n" );
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 22/35 EDAC/mc_sysfs: Increase legacy channel support to 16
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Avadhut Naik <[email protected]>
[ Upstream commit 6e1c2c6c2c40ce99e0d2633b212f43c702c1a002 ]
Newer AMD systems can support up to 16 channels per EDAC "mc" device. These are detected by the EDAC module running on the device, and the current EDAC interface is appropriately enumerated.
The legacy EDAC sysfs interface however, provides device attributes for channels 0 through 11 only. Consequently, the last four channels, 12 through 15, will not be enumerated and will not be visible through the legacy sysfs interface.
Add additional device attributes to ensure that all 16 channels, if present, are enumerated by and visible through the legacy EDAC sysfs interface.
--- drivers/edac/edac_mc_sysfs.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
drivers/edac/edac_mc_sysfs.c +24 -0
@@ -305,6 +305,14 @@ DEVICE_CHANNEL(ch10_dimm_label, S_IRUGO | S_IWUSR, channel_dimm_label_show, channel_dimm_label_store, 10);DEVICE_CHANNEL (ch11_dimm_label,S_IRUGO |S_IWUSR , channel_dimm_label_show, channel_dimm_label_store,11 ); +DEVICE_CHANNEL (ch12_dimm_label,S_IRUGO |S_IWUSR , + channel_dimm_label_show, channel_dimm_label_store,12 ); +DEVICE_CHANNEL (ch13_dimm_label,S_IRUGO |S_IWUSR , + channel_dimm_label_show, channel_dimm_label_store,13 ); +DEVICE_CHANNEL (ch14_dimm_label,S_IRUGO |S_IWUSR , + channel_dimm_label_show, channel_dimm_label_store,14 ); +DEVICE_CHANNEL (ch15_dimm_label,S_IRUGO |S_IWUSR , + channel_dimm_label_show, channel_dimm_label_store,15 );/* Total possible dynamic DIMM Label attribute file table */ static struct attribute *dynamic_csrow_dimm_attr[] = {
@@ -320,6 +328,10 @@ static struct attribute *dynamic_csrow_dimm_attr[] = { &dev_attr_legacy_ch9_dimm_label.attr.attr, &dev_attr_legacy_ch10_dimm_label.attr.attr, &dev_attr_legacy_ch11_dimm_label.attr.attr, + &dev_attr_legacy_ch12_dimm_label.attr.attr, + &dev_attr_legacy_ch13_dimm_label.attr.attr, + &dev_attr_legacy_ch14_dimm_label.attr.attr, + &dev_attr_legacy_ch15_dimm_label.attr.attr, NULL };
@@ -348,6 +360,14 @@ DEVICE_CHANNEL(ch10_ce_count, S_IRUGO, channel_ce_count_show, NULL, 10);DEVICE_CHANNEL (ch11_ce_count,S_IRUGO , channel_ce_count_show,NULL ,11 ); +DEVICE_CHANNEL (ch12_ce_count,S_IRUGO , + channel_ce_count_show,NULL ,12 ); +DEVICE_CHANNEL (ch13_ce_count,S_IRUGO , + channel_ce_count_show,NULL ,13 ); +DEVICE_CHANNEL (ch14_ce_count,S_IRUGO , + channel_ce_count_show,NULL ,14 ); +DEVICE_CHANNEL (ch15_ce_count,S_IRUGO , + channel_ce_count_show,NULL ,15 );/* Total possible dynamic ce_count attribute file table */ static struct attribute *dynamic_csrow_ce_count_attr[] = {
@@ -363,6 +383,10 @@ static struct attribute *dynamic_csrow_ce_count_attr[] = { &dev_attr_legacy_ch9_ce_count.attr.attr, &dev_attr_legacy_ch10_ce_count.attr.attr, &dev_attr_legacy_ch11_ce_count.attr.attr, + &dev_attr_legacy_ch12_ce_count.attr.attr, + &dev_attr_legacy_ch13_ce_count.attr.attr, + &dev_attr_legacy_ch14_ce_count.attr.attr, + &dev_attr_legacy_ch15_ce_count.attr.attr, NULL };
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 23/35 cpuset: Use new excpus for nocpu error check when enabling root partition
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Ridong <[email protected]>
[ Upstream commit 59d5de3655698679ad8fd2cc82228de4679c4263 ]
A previous patch fixed a bug where new_prs should be assigned before checking housekeeping conflicts. This patch addresses another potential
issue: the nocpu error check currently uses the xcpus which is not updated. Although no issue has been observed so far, the check should be performed using the new effective exclusive cpus.
The comment has been removed because the function returns an error if nocpu checking fails, which is unrelated to the parent.
--- kernel/cgroup/cpuset.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
kernel/cgroup/cpuset.c +1 -5
@@ -1728,11 +1728,7 @@ static int update_parent_effective_cpumask(struct cpuset *cs, int cmd,if (prstate_housekeeping_conflict (new_prs, xcpus))return PERR_HKEEPING ; -/* -* A parent can be left with no CPU as long as there is no -* task directly associated with the parent partition. -*/ -if (nocpu) +if (tasks_nocpu_error (parent, cs, xcpus))return PERR_NOCPUS ;/*
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 24/35 btrfs: abort transaction on specific error places when walking log tree
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit 6ebd726b104fa99d47c0d45979e6a6109844ac18 ]
We do several things while walking a log tree (for replaying and for freeing a log tree) like reading extent buffers and cleaning them up, but we don't immediately abort the transaction, or turn the fs into an error state, when one of these things fails. Instead we the transaction abort or turn the fs into error state in the caller of the entry point function that walks a log tree - walk_log_tree() - which means we don't get to know exactly where an error came from.
Improve on this by doing a transaction abort / turn fs into error state after each such failure so that when it happens we have a better understanding where the failure comes from. This deliberately leaves the transaction abort / turn fs into error state in the callers of walk_log_tree() as to ensure we don't get into an inconsistent state in case we forget to do it deeper in call chain. It also deliberately does not do it after errors from the calls to the callback defined in struct walk_control::process_func(), as we will do it later on another patch.
--- fs/btrfs/tree-log.c | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-)
fs/btrfs/tree-log.c +28 -5
@@ -2630,15 +2630,24 @@ static int unaccount_log_buffer(struct btrfs_fs_info *fs_info, u64 start)static int clean_log_buffer (struct btrfs_trans_handle *trans,struct extent_buffer *eb) { +int ret; +btrfs_tree_lock (eb);btrfs_clear_buffer_dirty (trans, eb);wait_on_extent_buffer_writeback (eb);btrfs_tree_unlock (eb); -if (trans) -return btrfs_pin_reserved_extent (trans, eb); +if (trans) { + ret =btrfs_pin_reserved_extent (trans, eb); +if (ret) +btrfs_abort_transaction (trans, ret); +return ret; + } -return unaccount_log_buffer (eb->fs_info, eb->start); + ret =unaccount_log_buffer (eb->fs_info, eb->start); +if (ret) +btrfs_handle_fs_error (eb->fs_info, ret,NULL ); +return ret; } static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans,
@@ -2674,8 +2683,14 @@ static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, next =btrfs_find_create_tree_block (fs_info, bytenr,btrfs_header_owner (cur), *level -1 ); -if (IS_ERR (next)) -return PTR_ERR (next); +if (IS_ERR (next)) { + ret =PTR_ERR (next); +if (trans) +btrfs_abort_transaction (trans, ret); +else +btrfs_handle_fs_error (fs_info, ret,NULL ); +return ret; + }if (*level ==1 ) { ret = wc->process_func(root, next, wc, ptr_gen,
@@ -2690,6 +2705,10 @@ static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, ret =btrfs_read_extent_buffer (next, &check);if (ret) {free_extent_buffer (next); +if (trans) +btrfs_abort_transaction (trans, ret); +else +btrfs_handle_fs_error (fs_info, ret,NULL );return ret; }
@@ -2705,6 +2724,10 @@ static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, ret =btrfs_read_extent_buffer (next, &check);if (ret) {free_extent_buffer (next); +if (trans) +btrfs_abort_transaction (trans, ret); +else +btrfs_handle_fs_error (fs_info, ret,NULL );return ret; }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 25/35 btrfs: abort transaction in the process_one_buffer() log tree walk callback
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit e6dd405b6671b9753b98d8bdf76f8f0ed36c11cd ]
In the process_one_buffer() log tree walk callback we return errors to the log tree walk caller and then the caller aborts the transaction, if we have one, or turns the fs into error state if we don't have one. While this reduces code it makes it harder to figure out where exactly an error came from. So add the transaction aborts after every failure inside the process_one_buffer() callback, so that it helps figuring out why failures happen.
--- fs/btrfs/tree-log.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
fs/btrfs/tree-log.c +16 -4
@@ -347,6 +347,7 @@ static int process_one_buffer(struct btrfs_root *log,struct extent_buffer *eb, struct walk_control *wc, u64 gen, int level) { + struct btrfs_trans_handle *trans = wc->trans;struct btrfs_fs_info *fs_info = log->fs_info;int ret =0 ;
@@ -361,18 +362,29 @@ static int process_one_buffer(struct btrfs_root *log, }; ret =btrfs_read_extent_buffer (eb, &check); -if (ret) +if (ret) { +if (trans) +btrfs_abort_transaction (trans, ret); +else +btrfs_handle_fs_error (fs_info, ret,NULL );return ret; + } }if (wc->pin) { - ret =btrfs_pin_extent_for_log_replay (wc->trans, eb); -if (ret) +ASSERT (trans !=NULL ); + ret =btrfs_pin_extent_for_log_replay (trans, eb); +if (ret) { +btrfs_abort_transaction (trans, ret);return ret; + }if (btrfs_buffer_uptodate (eb, gen,0 ) && -btrfs_header_level (eb) ==0 ) +btrfs_header_level (eb) ==0 ) { ret =btrfs_exclude_logged_extents (eb); +if (ret) +btrfs_abort_transaction (trans, ret); + } }return ret; }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 26/35 btrfs: zoned: return error from btrfs_zone_finish_endio()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Thumshirn <[email protected]>
[ Upstream commit 3c44cd3c79fcb38a86836dea6ff8fec322a9e68c ]
Now that btrfs_zone_finish_endio_workfn() is directly calling do_zone_finish() the only caller of btrfs_zone_finish_endio() is btrfs_finish_one_ordered().
btrfs_finish_one_ordered() already has error handling in-place so btrfs_zone_finish_endio() can return an error if the block group lookup fails.
Also as btrfs_zone_finish_endio() already checks for zoned filesystems and returns early, there's no need to do this in the caller.
--- fs/btrfs/inode.c | 7 ++++--- fs/btrfs/zoned.c | 8 +++++--- fs/btrfs/zoned.h | 9 ++++++--- 3 files changed, 15 insertions(+), 9 deletions(-)
fs/btrfs/inode.c +4 -3
@@ -3107,9 +3107,10 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent) goto out; } -if (btrfs_is_zoned (fs_info)) -btrfs_zone_finish_endio (fs_info, ordered_extent->disk_bytenr, - ordered_extent->disk_num_bytes); + ret =btrfs_zone_finish_endio (fs_info, ordered_extent->disk_bytenr, + ordered_extent->disk_num_bytes); +if (ret) + goto out;if (test_bit (BTRFS_ORDERED_TRUNCATED , &ordered_extent->flags)) { truncated = true;
fs/btrfs/zoned.c +5 -3
@@ -2464,16 +2464,17 @@ bool btrfs_can_activate_zone(struct btrfs_fs_devices *fs_devices, u64 flags)return ret; } -void btrfs_zone_finish_endio (struct btrfs_fs_info *fs_info,u64 logical,u64 length) +int btrfs_zone_finish_endio (struct btrfs_fs_info *fs_info,u64 logical,u64 length) {struct btrfs_block_group *block_group;u64 min_alloc_bytes;if (!btrfs_is_zoned (fs_info)) -return ; +return 0 ; block_group =btrfs_lookup_block_group (fs_info, logical); -ASSERT (block_group); +if (WARN_ON_ONCE (!block_group)) +return -ENOENT ;/* No MIXED_BG on zoned btrfs. */ if (block_group->flags &BTRFS_BLOCK_GROUP_DATA )
@@ -2490,6 +2491,7 @@ void btrfs_zone_finish_endio(struct btrfs_fs_info *fs_info, u64 logical, u64 len out:btrfs_put_block_group (block_group); +return 0 ; }static void btrfs_zone_finish_endio_workfn (struct work_struct *work)
fs/btrfs/zoned.h +6 -3
@@ -83,7 +83,7 @@ int btrfs_sync_zone_write_pointer(struct btrfs_device *tgt_dev, u64 logical,bool btrfs_zone_activate (struct btrfs_block_group *block_group);int btrfs_zone_finish (struct btrfs_block_group *block_group);bool btrfs_can_activate_zone (struct btrfs_fs_devices *fs_devices,u64 flags); -void btrfs_zone_finish_endio (struct btrfs_fs_info *fs_info,u64 logical, +int btrfs_zone_finish_endio (struct btrfs_fs_info *fs_info,u64 logical,u64 length);void btrfs_schedule_zone_finish_bg (struct btrfs_block_group *bg,struct extent_buffer *eb);
@@ -234,8 +234,11 @@ static inline bool btrfs_can_activate_zone(struct btrfs_fs_devices *fs_devices,return true; } -static inline void btrfs_zone_finish_endio (struct btrfs_fs_info *fs_info, -u64 logical,u64 length) { } +static inline int btrfs_zone_finish_endio (struct btrfs_fs_info *fs_info, +u64 logical,u64 length) +{ +return 0 ; +}static inline void btrfs_schedule_zone_finish_bg (struct btrfs_block_group *bg,struct extent_buffer *eb) { }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 27/35 btrfs: zoned: refine extent allocator hint selection
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Naohiro Aota <[email protected]>
[ Upstream commit 0d703963d297964451783e1a0688ebdf74cd6151 ]
The hint block group selection in the extent allocator is wrong in the first place, as it can select the dedicated data relocation block group for the normal data allocation.
Since we separated the normal data space_info and the data relocation space_info, we can easily identify a block group is for data relocation or not. Do not choose it for the normal data allocation.
--- fs/btrfs/extent-tree.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
fs/btrfs/extent-tree.c +4 -2
@@ -4297,7 +4297,8 @@ static int prepare_allocation_clustered(struct btrfs_fs_info *fs_info, }static int prepare_allocation_zoned (struct btrfs_fs_info *fs_info, -struct find_free_extent_ctl *ffe_ctl) +struct find_free_extent_ctl *ffe_ctl, +struct btrfs_space_info *space_info) {if (ffe_ctl->for_treelog) {spin_lock (&fs_info->treelog_bg_lock);
@@ -4321,6 +4322,7 @@ static int prepare_allocation_zoned(struct btrfs_fs_info *fs_info,u64 avail = block_group->zone_capacity - block_group->alloc_offset;if (block_group_bits (block_group, ffe_ctl->flags) && + block_group->space_info == space_info && avail >= ffe_ctl->num_bytes) { ffe_ctl->hint_byte = block_group->start;break ;
@@ -4342,7 +4344,7 @@ static int prepare_allocation(struct btrfs_fs_info *fs_info,return prepare_allocation_clustered (fs_info, ffe_ctl, space_info, ins);case BTRFS_EXTENT_ALLOC_ZONED : -return prepare_allocation_zoned (fs_info, ffe_ctl); +return prepare_allocation_zoned (fs_info, ffe_ctl, space_info);default :BUG (); }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 28/35 btrfs: scrub: replace max_t()/min_t() with clamp() in scrub_throttle_dev_io()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thorsten Blum <[email protected]>
[ Upstream commit a7f3dfb8293c4cee99743132d69863a92e8f4875 ]
Replace max_t() followed by min_t() with a single clamp().
As was pointed by David Laight in
https://lore.kernel.org/linux-btrfs/20250906122458.75dfc8f0@pumpkin/
the calculation may overflow u32 when the input value is too large, so clamp_t() is not used. In practice the expected values are in range of megabytes to gigabytes (throughput limit) so the bug would not happen.
--- fs/btrfs/scrub.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
fs/btrfs/scrub.c +1 -2
@@ -1369,8 +1369,7 @@ static void scrub_throttle_dev_io(struct scrub_ctx *sctx, struct btrfs_device *d* Slice is divided into intervals when the IO is submitted, adjust by * bwlimit and maximum of 64 intervals. */ - div =max_t (u32,1 , (u32)(bwlimit / (16 *1024 *1024 ))); - div =min_t (u32,64 , div); + div =clamp (bwlimit / (16 *1024 *1024 ),1 ,64 );/* Start new epoch, set deadline */ now =ktime_get ();
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 29/35 btrfs: always drop log root tree reference in btrfs_replay_log()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit 2f5b8095ea47b142c56c09755a8b1e14145a2d30 ]
Currently we have this odd behaviour:
1) At btrfs_replay_log() we drop the reference of the log root tree if the call to btrfs_recover_log_trees() failed;
2) But if the call to btrfs_recover_log_trees() did not fail, we don't drop the reference in btrfs_replay_log() - we expect that btrfs_recover_log_trees() does it in case it returns success.
Let's simplify this and make btrfs_replay_log() always drop the reference on the log root tree, not only this simplifies code as it's what makes sense since it's btrfs_replay_log() who grabbed the reference in the first place.
--- fs/btrfs/disk-io.c | 2 +- fs/btrfs/tree-log.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
fs/btrfs/disk-io.c +1 -1
@@ -2087,10 +2087,10 @@ static int btrfs_replay_log(struct btrfs_fs_info *fs_info,/* returns with log_tree_root freed on success */ ret =btrfs_recover_log_trees (log_tree_root); +btrfs_put_root (log_tree_root);if (ret) {btrfs_handle_fs_error (fs_info, ret,"Failed to recover log tree" ); -btrfs_put_root (log_tree_root);return ret; }
fs/btrfs/tree-log.c +0 -1
@@ -7469,7 +7469,6 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree) log_root_tree->log_root =NULL ;clear_bit (BTRFS_FS_LOG_RECOVERING , &fs_info->flags); -btrfs_put_root (log_root_tree);return 0 ; error:
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 30/35 btrfs: use level argument in log tree walk callback replay_one_buffer()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit 6cb7f0b8c9b0d6a35682335fea88bd26f089306f ]
We already have the extent buffer's level in an argument, there's no need to first ensure the extent buffer's data is loaded (by calling btrfs_read_extent_buffer()) and then call btrfs_header_level() to check the level. So use the level argument and do the check before calling btrfs_read_extent_buffer().
--- fs/btrfs/tree-log.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
fs/btrfs/tree-log.c +3 -5
@@ -2461,15 +2461,13 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,int i;int ret; +if (level !=0 ) +return 0 ; + ret =btrfs_read_extent_buffer (eb, &check);if (ret)return ret; - level =btrfs_header_level (eb); - -if (level !=0 ) -return 0 ; - path =btrfs_alloc_path ();if (!path)return -ENOMEM ;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 31/35 btrfs: abort transaction if we fail to update inode in log replay dir fixup
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit 5a0565cad3ef7cbf4cf43d1dd1e849b156205292 ]
If we fail to update the inode at link_to_fixup_dir(), we don't abort the transaction and propagate the error up the call chain, which makes it hard to pinpoint the error to the inode update. So abort the transaction if the inode update call fails, so that if it happens we known immediately.
--- fs/btrfs/tree-log.c | 2 ++ 1 file changed, 2 insertions(+)
fs/btrfs/tree-log.c +2 -0
@@ -1796,6 +1796,8 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,else inc_nlink (vfs_inode); ret =btrfs_update_inode (trans, inode); +if (ret) +btrfs_abort_transaction (trans, ret); }else if (ret == -EEXIST ) { ret =0 ; }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 32/35 btrfs: tree-checker: add inode extref checks
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Qu Wenruo <[email protected]>
[ Upstream commit aab9458b9f0019e97fae394c2d6d9d1a03addfb3 ]
Like inode refs, inode extrefs have a variable length name, which means we have to do a proper check to make sure no header nor name can exceed the item limits.
The check itself is very similar to check_inode_ref(), just a different structure (btrfs_inode_extref vs btrfs_inode_ref).
--- fs/btrfs/tree-checker.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
fs/btrfs/tree-checker.c +37 -0
@@ -183,6 +183,7 @@ static bool check_prev_ino(struct extent_buffer *leaf,/* Only these key->types needs to be checked */ ASSERT (key->type ==BTRFS_XATTR_ITEM_KEY || key->type ==BTRFS_INODE_REF_KEY || + key->type ==BTRFS_INODE_EXTREF_KEY || key->type ==BTRFS_DIR_INDEX_KEY || key->type ==BTRFS_DIR_ITEM_KEY || key->type ==BTRFS_EXTENT_DATA_KEY );
@@ -1782,6 +1783,39 @@ static int check_inode_ref(struct extent_buffer *leaf,return 0 ; } +static int check_inode_extref (struct extent_buffer *leaf, +struct btrfs_key *key,struct btrfs_key *prev_key, +int slot) +{ +unsigned long ptr =btrfs_item_ptr_offset (leaf, slot); +unsigned long end = ptr +btrfs_item_size (leaf, slot); + +if (unlikely (!check_prev_ino (leaf, key, slot, prev_key))) +return -EUCLEAN ; + +while (ptr < end) { +struct btrfs_inode_extref *extref = (struct btrfs_inode_extref *)ptr; +u16 namelen; + +if (unlikely (ptr +sizeof (*extref)) > end) { +inode_ref_err (leaf, slot, +"inode extref overflow, ptr %lu end %lu inode_extref size %zu" , + ptr, end,sizeof (*extref)); +return -EUCLEAN ; + } + + namelen =btrfs_inode_extref_name_len (leaf, extref); +if (unlikely (ptr +sizeof (*extref) + namelen > end)) { +inode_ref_err (leaf, slot, +"inode extref overflow, ptr %lu end %lu namelen %u" , + ptr, end, namelen); +return -EUCLEAN ; + } + ptr +=sizeof (*extref) + namelen; + } +return 0 ; +} +static int check_raid_stripe_extent (const struct extent_buffer *leaf,const struct btrfs_key *key,int slot) {
@@ -1893,6 +1927,9 @@ static enum btrfs_tree_block_status check_leaf_item(struct extent_buffer *leaf,case BTRFS_INODE_REF_KEY : ret =check_inode_ref (leaf, key, prev_key, slot);break ; +case BTRFS_INODE_EXTREF_KEY : + ret =check_inode_extref (leaf, key, prev_key, slot); +break ;case BTRFS_BLOCK_GROUP_ITEM_KEY : ret =check_block_group_item (leaf, key, slot);break ;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 33/35 btrfs: use smp_mb__after_atomic() when forcing COW in create_pending_snapshot()
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Filipe Manana <[email protected]>
[ Upstream commit 45c222468d33202c07c41c113301a4b9c8451b8f ]
After setting the BTRFS_ROOT_FORCE_COW flag on the root we are doing a full write barrier, smp_wmb(), but we don't need to, all we need is a smp_mb__after_atomic(). The use of the smp_wmb() is from the old days when we didn't use a bit and used instead an int field in the root to signal if cow is forced. After the int field was changed to a bit in the root's state (flags field), we forgot to update the memory barrier in create_pending_snapshot() to smp_mb__after_atomic(), but we did the change in commit_fs_roots() after clearing BTRFS_ROOT_FORCE_COW. That happened in commit 27cdeb7096b8 ("Btrfs: use bitfield instead of integer data type for the some variants in btrfs_root"). On the reader side, in should_cow_block(), we also use the counterpart smp_mb__before_atomic() which generates further confusion.
So change the smp_wmb() to smp_mb__after_atomic(). In fact we don't even need any barrier at all since create_pending_snapshot() is called in the critical section of a transaction commit and therefore no one can concurrently join/attach the transaction, or start a new one, until the transaction is unblocked. By the time someone starts a new transaction and enters should_cow_block(), a lot of implicit memory barriers already took place by having acquired several locks such as fs_info->trans_lock and extent buffer locks on the root node at least. Nevertlheless, for consistency use smp_mb__after_atomic() after setting the force cow bit in create_pending_snapshot().
--- fs/btrfs/transaction.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/btrfs/transaction.c +1 -1
@@ -1806,7 +1806,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, }/* see comments in should_cow_block() */ set_bit (BTRFS_ROOT_FORCE_COW , &root->state); -smp_wmb (); +smp_mb__after_atomic ();btrfs_set_root_node (new_root_item, tmp);/* record when the snapshot was created in key.offset */
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 34/35 sched_ext: Make qmap dump operation non-destructive
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tejun Heo <[email protected]>
[ Upstream commit d452972858e5cfa4262320ab74fe8f016460b96f ]
The qmap dump operation was destructively consuming queue entries while displaying them. As dump can be triggered anytime, this can easily lead to stalls. Add a temporary dump_store queue and modify the dump logic to pop entries, display them, and then restore them back to the original queue. This allows dump operations to be performed without affecting the scheduler's queue state.
Note that if racing against new enqueues during dump, ordering can get mixed up, but this is acceptable for debugging purposes.
--- tools/sched_ext/scx_qmap.bpf.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
tools/sched_ext/scx_qmap.bpf.c +17 -1
@@ -56,7 +56,8 @@ struct qmap { queue1 SEC(".maps"), queue2 SEC(".maps"), queue3 SEC(".maps"), - queue4 SEC(".maps"); + queue4 SEC(".maps"), + dump_store SEC(".maps");struct { __uint(type, BPF_MAP_TYPE_ARRAY_OF_MAPS);
@@ -578,11 +579,26 @@ void BPF_STRUCT_OPS(qmap_dump, struct scx_dump_ctx *dctx)return ;scx_bpf_dump ("QMAP FIFO[%d]:" , i); + +/* +* Dump can be invoked anytime and there is no way to iterate in +* a non-destructive way. Pop and store in dump_store and then +* restore afterwards. If racing against new enqueues, ordering +* can get mixed up. +*/ bpf_repeat(4096) {if (bpf_map_pop_elem (fifo, &pid))break ; +bpf_map_push_elem (&dump_store, &pid,0 );scx_bpf_dump (" %d" , pid); } + + bpf_repeat(4096) { +if (bpf_map_pop_elem (&dump_store, &pid)) +break ; +bpf_map_push_elem (fifo, &pid,0 ); + } +scx_bpf_dump ("\n" ); } }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 35/35 arch: Add the macro COMPILE_OFFSETS to all the asm-offsets.c
In reply to Greg Kroah-Hartman6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Menglong Dong <[email protected]>
[ Upstream commit 35561bab768977c9e05f1f1a9bc00134c85f3e28 ]
The include/generated/asm-offsets.h is generated in Kbuild during compiling from arch/SRCARCH/kernel/asm-offsets.c. When we want to generate another similar offset header file, circular dependency can happen.
For example, we want to generate a offset file include/generated/test.h, which is included in include/sched/sched.h. If we generate asm-offsets.h first, it will fail, as include/sched/sched.h is included in asm-offsets.c and include/generated/test.h doesn't exist; If we generate test.h first, it can't success neither, as include/generated/asm-offsets.h is included by it.
In x86_64, the macro COMPILE_OFFSETS is used to avoid such circular dependency. We can generate asm-offsets.h first, and if the COMPILE_OFFSETS is defined, we don't include the "generated/test.h".
And we define the macro COMPILE_OFFSETS for all the asm-offsets.c for this purpose.
--- arch/alpha/kernel/asm-offsets.c | 1 + arch/arc/kernel/asm-offsets.c | 1 + arch/arm/kernel/asm-offsets.c | 2 ++ arch/arm64/kernel/asm-offsets.c | 1 + arch/csky/kernel/asm-offsets.c | 1 + arch/hexagon/kernel/asm-offsets.c | 1 + arch/loongarch/kernel/asm-offsets.c | 2 ++ arch/m68k/kernel/asm-offsets.c | 1 + arch/microblaze/kernel/asm-offsets.c | 1 + arch/mips/kernel/asm-offsets.c | 2 ++ arch/nios2/kernel/asm-offsets.c | 1 + arch/openrisc/kernel/asm-offsets.c | 1 + arch/parisc/kernel/asm-offsets.c | 1 + arch/powerpc/kernel/asm-offsets.c | 1 + arch/riscv/kernel/asm-offsets.c | 1 + arch/s390/kernel/asm-offsets.c | 1 + arch/sh/kernel/asm-offsets.c | 1 + arch/sparc/kernel/asm-offsets.c | 1 + arch/um/kernel/asm-offsets.c | 2 ++ arch/xtensa/kernel/asm-offsets.c | 1 + 20 files changed, 24 insertions(+)
arch/alpha/kernel/asm-offsets.c +1 -0
@@ -4,6 +4,7 @@* This code generates raw asm output which is post-processed to extract * and format the required data. */ +#define COMPILE_OFFSETS #include <linux/types.h> #include <linux/stddef.h>
arch/arc/kernel/asm-offsets.c +1 -0
@@ -2,6 +2,7 @@/* * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) */ +#define COMPILE_OFFSETS #include <linux/sched.h> #include <linux/mm.h>
arch/arm/kernel/asm-offsets.c +2 -0
@@ -7,6 +7,8 @@* This code generates raw asm output which is post-processed to extract * and format the required data. */ +#define COMPILE_OFFSETS +#include <linux/compiler.h> #include <linux/sched.h> #include <linux/mm.h>
arch/arm64/kernel/asm-offsets.c +1 -0
@@ -6,6 +6,7 @@* 2001-2002 Keith Owens * Copyright (C) 2012 ARM Ltd. */ +#define COMPILE_OFFSETS #include <linux/arm_sdei.h> #include <linux/sched.h>
arch/csky/kernel/asm-offsets.c +1 -0
@@ -1,5 +1,6 @@// SPDX-License-Identifier: GPL-2.0 // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd. +#define COMPILE_OFFSETS #include <linux/sched.h> #include <linux/kernel_stat.h>
arch/hexagon/kernel/asm-offsets.c +1 -0
@@ -8,6 +8,7 @@* * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved. */ +#define COMPILE_OFFSETS #include <linux/compat.h> #include <linux/types.h>
arch/loongarch/kernel/asm-offsets.c +2 -0
@@ -4,6 +4,8 @@* * Copyright (C) 2020-2022 Loongson Technology Corporation Limited */ +#define COMPILE_OFFSETS +#include <linux/types.h> #include <linux/sched.h> #include <linux/mm.h>
arch/m68k/kernel/asm-offsets.c +1 -0
@@ -9,6 +9,7 @@* #defines from the assembly-language output. */ +#define COMPILE_OFFSETS #define ASM_OFFSETS_C #include <linux/stddef.h>
arch/microblaze/kernel/asm-offsets.c +1 -0
@@ -7,6 +7,7 @@* License. See the file "COPYING" in the main directory of this archive * for more details. */ +#define COMPILE_OFFSETS #include <linux/init.h> #include <linux/stddef.h>
arch/mips/kernel/asm-offsets.c +2 -0
@@ -9,6 +9,8 @@* Kevin Kissell, [email protected] and Carsten Langgaard, [email protected] * Copyright (C) 2000 MIPS Technologies, Inc. */ +#define COMPILE_OFFSETS +#include <linux/compat.h> #include <linux/types.h> #include <linux/sched.h>
arch/nios2/kernel/asm-offsets.c +1 -0
@@ -2,6 +2,7 @@/* * Copyright (C) 2011 Tobias Klauser <[email protected]> */ +#define COMPILE_OFFSETS #include <linux/stddef.h> #include <linux/sched.h>
arch/openrisc/kernel/asm-offsets.c +1 -0
@@ -18,6 +18,7 @@* compile this file to assembler, and then extract the * #defines from the assembly-language output. */ +#define COMPILE_OFFSETS #include <linux/signal.h> #include <linux/sched.h>
arch/parisc/kernel/asm-offsets.c +1 -0
@@ -13,6 +13,7 @@* Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org> * Copyright (C) 2003 James Bottomley <jejb at parisc-linux.org> */ +#define COMPILE_OFFSETS #include <linux/types.h> #include <linux/sched.h>
arch/powerpc/kernel/asm-offsets.c +1 -0
@@ -8,6 +8,7 @@* compile this file to assembler, and then extract the * #defines from the assembly-language output. */ +#define COMPILE_OFFSETS #include <linux/compat.h> #include <linux/signal.h>
arch/riscv/kernel/asm-offsets.c +1 -0
@@ -3,6 +3,7 @@* Copyright (C) 2012 Regents of the University of California * Copyright (C) 2017 SiFive */ +#define COMPILE_OFFSETS #include <linux/kbuild.h> #include <linux/mm.h>
arch/s390/kernel/asm-offsets.c +1 -0
@@ -4,6 +4,7 @@* This code generates raw asm output which is post-processed to extract * and format the required data. */ +#define COMPILE_OFFSETS #include <linux/kbuild.h> #include <linux/sched.h>
arch/sh/kernel/asm-offsets.c +1 -0
@@ -8,6 +8,7 @@* compile this file to assembler, and then extract the * #defines from the assembly-language output. */ +#define COMPILE_OFFSETS #include <linux/stddef.h> #include <linux/types.h>
arch/sparc/kernel/asm-offsets.c +1 -0
@@ -10,6 +10,7 @@* * On sparc, thread_info data is static and TI_XXX offsets are computed by hand. */ +#define COMPILE_OFFSETS #include <linux/sched.h> #include <linux/mm_types.h>
arch/um/kernel/asm-offsets.c +2 -0
@@ -1 +1,3 @@ +#define COMPILE_OFFSETS +#include <sysdep/kernel-offsets.h>
arch/xtensa/kernel/asm-offsets.c +1 -0
@@ -11,6 +11,7 @@* * Chris Zankel <[email protected]> */ +#define COMPILE_OFFSETS #include <asm/processor.h> #include <asm/coprocessor.h>
Signature · 1 line
2.51.0
Hi
no regressions here on x86_64 (RKL, Intel 11th Gen. CPU)
Thanks
Am 31.10.2025 um 15:01 schrieb Greg Kroah-Hartman:
Quoted 4 lines
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Builds, boots and works on my 2-socket Ivy Bridge Xeon E5-2697 v2 server. No dmesg oddities or regressions found.
Beste Grüße,
Peter Schneider
Signature · 8 lines
Climb the mountain not to plant your flag, but to embrace the challenge, enjoy the air and behold the view. Climb it so you can see the world, not so the world can see you. -- David McCullough Jr. OpenPGP: 0xA3828BD796CCE11A8CADE8866E3A92C92C3FF244 Download: https://www.peters-netzplatz.de/download/pschneider1968_pub.asc https://keys.mailvelope.com/pks/lookup?op=get&[email protected] https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
Hyy Greg,
Quoted 15 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.
Quoted 5 lines
thanks,
greg k-h
-------------
Build and Boot Report for 6.17.7-rc1
The kernel version 6.17.7-rc1 was built and boot-tested using qemu-x86_64 and qemu-arm64 with the default configuration (defconfig). The build and boot processes completed successfully, and the kernel operated as expected in the virtualized environments without any issues.
Build Details :
Builds : arm64, x86_64
Kernel Version: 6.17.7-rc1
Configuration : defconfig
Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Commit : 7914a8bbc909547c8cb9b1af5fbc4f1741e9e680
Best regards,
Dileep Malepu
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v6.17:
10 builds: 10 pass, 0 fail
28 boots: 28 pass, 0 fail
120 tests: 120 pass, 0 failLinux version: 6.17.7-rc1-g7914a8bbc909
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
tegra194-p3509-0000+p3668-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra30-cardhu-a04Jon
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
CIP testing did not find any problems here:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.17.y
Best regards,
Pavel
Signature · 2 lines
In cooperation with DENX Software Engineering GmbH, HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
Thanks! Build tested on all Alpine architectures and boot-tested on x86_64.
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
Tested rc1 against the Fedora build system (aarch64, ppc64le, s390x, x86_64), and boot tested x86_64. No regressions noted.
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
## Build
* kernel: 6.17.7-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git commit: 7914a8bbc909547c8cb9b1af5fbc4f1741e9e680
* git describe: v6.17.6-36-g7914a8bbc909
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.17.y/build/v6.17.6-36-g7914a8bbc909
## Test Regressions (compared to v6.17.4-346-g10e3f8e671f7)
## Metric Regressions (compared to v6.17.4-346-g10e3f8e671f7)
## Test Fixes (compared to v6.17.4-346-g10e3f8e671f7)
## Metric Fixes (compared to v6.17.4-346-g10e3f8e671f7)
## Test result summary
total: 126960, pass: 107190, fail: 4404, skip: 15366, xfail: 0
## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 139 total, 139 passed, 0 failed
* arm64: 57 total, 53 passed, 3 failed, 1 skipped
* i386: 18 total, 18 passed, 0 failed
* mips: 34 total, 33 passed, 1 failed
* parisc: 4 total, 4 passed, 0 failed
* powerpc: 40 total, 39 passed, 1 failed
* riscv: 25 total, 25 passed, 0 failed
* s390: 22 total, 22 passed, 0 failed
* sh: 5 total, 5 passed, 0 failed
* sparc: 4 total, 3 passed, 1 failed
* x86_64: 49 total, 48 passed, 1 failed
## Test suites summary
* boot
* commands
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-efivarfs
* kselftest-exec
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-kcmp
* kselftest-kvm
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-mincore
* kselftest-mm
* kselftest-mqueue
* kselftest-net
* kselftest-net-mptcp
* kselftest-openat2
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-rust
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-tc-testing
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user_events
* kselftest-vDSO
* kselftest-x86
* kunit
* kvm-unit-tests
* lava
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-build-clang
* log-parser-build-gcc
* log-parser-test
* ltp-capability
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-hugetlb
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* perf
* rcutorture
* rt-tests-cyclicdeadline
* rt-tests-pi-stress
* rt-tests-pmqtest
* rt-tests-rt-migrate-test
* rt-tests-signaltest
--
Linaro LKFT
https://lkft.linaro.org
compiled and booted 6.17.7-rc1+
dmesg -l warn shows some,
file attached
Signature · 2 lines
software engineer rajagiri school of engineering and technology
[ 0.245615] VMSCAPE: SMT on, STIBP is required for full protection. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/vmscape.html for more details. [ 0.573429] Could not retrieve perf counters (-19) [ 0.645732] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp [ 15.658366] amdgpu 0000:04:00.0: amdgpu: failed to load ucode RLC_RESTORE_LIST_CNTL(0x29) [ 15.658370] amdgpu 0000:04:00.0: amdgpu: psp gfx command LOAD_IP_FW(0x6) failed and response status is (0xFFFF300F) [ 15.658903] amdgpu 0000:04:00.0: amdgpu: failed to load ucode RLC_RESTORE_LIST_GPM_MEM(0x2A) [ 15.658907] amdgpu 0000:04:00.0: amdgpu: psp gfx command LOAD_IP_FW(0x6) failed and response status is (0xFFFF000F) [ 15.659439] amdgpu 0000:04:00.0: amdgpu: failed to load ucode RLC_RESTORE_LIST_SRM_MEM(0x2B) [ 15.659442] amdgpu 0000:04:00.0: amdgpu: psp gfx command LOAD_IP_FW(0x6) failed and response status is (0xFFFF000F) [ 18.997390] systemd-sysv-generator[331]: SysV service '/etc/init.d/lpd' lacks a native systemd unit file, automatically generating a unit file for compatibility. [ 18.997397] systemd-sysv-generator[331]: Please update package to include a native systemd unit file. [ 18.997400] systemd-sysv-generator[331]: ! This compatibility logic is deprecated, expect removal soon. ! [ 18.999274] systemd-sysv-generator[331]: SysV service '/etc/init.d/lightdm' lacks a native systemd unit file, automatically generating a unit file for compatibility. [ 18.999279] systemd-sysv-generator[331]: Please update package to include a native systemd unit file. [ 18.999281] systemd-sysv-generator[331]: ! This compatibility logic is deprecated, expect removal soon. ! [ 19.004111] systemd-sysv-generator[331]: SysV service '/etc/init.d/fetchmail' lacks a native systemd unit file, automatically generating a unit file for compatibility. [ 19.004116] systemd-sysv-generator[331]: Please update package to include a native systemd unit file. [ 19.004119] systemd-sysv-generator[331]: ! This compatibility logic is deprecated, expect removal soon. ! [ 24.463999] nvme nvme0: using unchecked data buffer [ 28.174979] kauditd_printk_skb: 126 callbacks suppressed
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
# Librecast Test Results
020/020 [ OK ] liblcrq
010/010 [ OK ] libmld
120/120 [ OK ] liblibrecast
CPU/kernel: Linux auntie 6.17.7-rc1-g7914a8bbc909 #125 SMP PREEMPT_DYNAMIC Fri Oct 31 20:03:10 -00 2025 x86_64 AMD Ryzen 9 9950X 16-Core Processor AuthenticAMD GNU/Linux
Quoted 8 lines · On Fri, 31 Oct 2025 15:01:08 +0100 Greg Kroah-Hartman…
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
Boot-tested under QEMU for Rust x86_64, arm64 and riscv64; built-tested for arm and loongarch64:
Thanks!
Cheers,
Miguel
Hi Greg
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
6.17.7-rc1 tested.
Build successfully completed.
Boot successfully completed.
No dmesg regressions.
Video output normal.
Sound output normal.
Lenovo ThinkPad X1 Carbon Gen10(Intel i7-1260P(x86_64) arch linux)
[ 0.000000] Linux version 6.17.7-rc1rv-g7914a8bbc909
(takeshi@ThinkPadX1Gen10J0764) (gcc (GCC) 15.2.1 20250813, GNU ld (GNU Binutils) 2.45.0) #1 SMP PREEMPT_DYNAMIC Sun Nov 2 11:13:09 JST 2025
Thanks
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.17.7 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 02 Nov 2025 14:00:34 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.17.7-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.17.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian