summaryrefslogtreecommitdiff
path: root/kernel
AgeCommit message (Collapse)Author
23 hoursMerge branch 'for-next/kspp' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git
23 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock.git
23 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
24 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git
24 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git
24 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
24 hoursMerge branch 'master' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
24 hoursMerge branch 'next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git # Conflicts: # include/linux/audit.h
24 hoursMerge branch 'for-mfd-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
24 hoursMerge branch 'modules-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/modules/linux.git
24 hoursMerge branch 'master' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
24 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git # Conflicts: # kernel/bpf/verifier.c
25 hoursMerge branch 'linux-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
25 hoursMerge branch 'next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
25 hoursMerge branch 'for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git
25 hoursMerge branch 'fs-next' of linux-nextMark Brown
25 hoursMerge branch 'dma-mapping-for-next' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/mszyprowski/linux.git
25 hoursMerge branch 'mm-nonmm-unstable' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
25 hoursMerge branch 'mm-unstable' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
25 hoursMerge branch 'mm-nonmm-stable' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
25 hoursMerge branch 'mm-stable' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
25 hoursMerge branch 'dma-mapping-fixes' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/mszyprowski/linux.git
25 hoursMerge branch 'fixes' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git
25 hoursMerge branch 'master' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/
25 hoursMerge branch 'mm-hotfixes-unstable' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
26 hoursnext-20260312/vfs-braunerMark Brown
28 hoursmemblock, treewide: make memblock_free() handle late freeingMike Rapoport (Microsoft)
It shouldn't be responsibility of memblock users to detect if they free memory allocated from memblock late and should use memblock_free_late(). Make memblock_free() and memblock_phys_free() take care of late memory freeing and drop memblock_free_late(). Link: https://patch.msgid.link/20260323074836.3653702-9-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
30 hoursMerge branch into tip/master: 'timers/vdso'Ingo Molnar
# New commits in timers/vdso: 1b6c89285d37 ("timens: Remove dependency on the vDSO") 5dc9cf835aba ("vdso/timens: Move functions to new file") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'timers/core'Ingo Molnar
# New commits in timers/core: e9fb60a780fe ("posix-timers: Fix stale function name in comment") 551e49beb175 ("timers: Get this_cpu once while clearing the idle state") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'smp/core'Ingo Molnar
# New commits in smp/core: 7eb28030f641 ("smp: Use system_percpu_wq instead of system_wq") b0473dcd4b1d ("smp: Improve smp_call_function_single() CSD-lock diagnostics") ec39780d6a9e ("smp: Get this_cpu once in smp_call_function") cc5623947f3d ("smp: Add missing kernel-doc comments") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'sched/core'Ingo Molnar
# New commits in sched/core: 265439eb88fd ("MAINTAINERS: Add K Prateek Nayak to scheduler reviewers") 0e81fe79fec5 ("sched/core: Get this cpu once in ttwu_queue_cond()") 76504bce4ee6 ("sched/fair: Get this cpu once in find_new_ilb()") e379dce8af11 ("sched/topology: Fix sched_domain_span()") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'perf/core'Ingo Molnar
# New commits in perf/core: 6ee26b7a224b ("perf/x86/intel/p4: Fix unused variable warning in p4_pmu_init()") b191aa32be2c ("perf/x86/intel: Only check GP counters for PEBS constraints validation") 73cee0aad1ee ("perf/x86/amd/ibs: Fix comment typo in ibs_op_data") b2ea0f541d35 ("perf/amd/ibs: Advertise remote socket capability") 8ae68bfec975 ("perf/amd/ibs: Enable streaming store filter") 8c63c4af92ac ("perf/amd/ibs: Enable RIP bit63 hardware filtering") 35247fa60b74 ("perf/amd/ibs: Enable fetch latency filtering") efa5700ec0da ("perf/amd/ibs: Support IBS_{FETCH|OP}_CTL2[Dis] to eliminate RMW race") e267b4178134 ("perf/amd/ibs: Add new MSRs and CPUID bits definitions") f9d55ccf0199 ("perf/amd/ibs: Define macro for ldlat mask and shift") 1b044ff3c17e ("perf/amd/ibs: Avoid race between event add and NMI") b0a09142622a ("perf/amd/ibs: Avoid calling perf_allow_kernel() from the IBS NMI handler") 723a290326e0 ("perf/amd/ibs: Preserve PhyAddrVal bit when clearing PhyAddr MSR") 898138efc990 ("perf/amd/ibs: Limit ldlat->l3missonly dependency to Zen5") 01336b555978 ("perf/amd/ibs: Account interrupt for discarded samples") da45c8d5f051 ("perf/core: Simplify __detach_global_ctx_data()") bec2ee2390c9 ("perf/core: Try to allocate task_ctx_data quickly") 28c75fbfec8f ("perf/core: Pass GFP flags to attach_task_ctx_data()") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'locking/core'Ingo Molnar
# New commits in locking/core: a21c1e961de2 ("compiler: Simplify generic RELOC_HIDE()") b06e988c4c52 ("locking: Add lock context annotations in the spinlock implementation") c4d3b8c77d85 ("locking: Add lock context support in do_raw_{read,write}_trylock()") 756a0e011cfc ("locking: Fix rwlock support in <linux/spinlock_up.h>") 891626973b2f ("lockdep: Raise default stack trace limits when KASAN is enabled") 2deccd5c862a ("cleanup: Optimize guards") acb38872d4cb ("jump_label: remove workaround for old compilers in initializations") 428c56525bf5 ("jump_label: use ATOMIC_INIT() for initialization of .enabled") 16df04446e34 ("futex: Convert to compiler context analysis") 68bcd8b6e0b1 ("locking/rwsem: Fix logic error in rwsem_del_waiter()") 739690915ce1 ("locking/rwsem: Add context analysis") 90bb681dcdf7 ("locking/rtmutex: Add context analysis") 5c4326231cde ("locking/mutex: Add context analysis") 07574b8ebaac ("compiler-context-analysys: Add __cond_releases()") 25500ba7e77c ("locking/mutex: Remove the list_head from struct mutex") b9bdd4b68404 ("locking/semaphore: Remove the list_head from struct semaphore") 1ea4b473504b ("locking/rwsem: Remove the list_head from struct rw_semaphore") b91d5d4bcf12 ("rust: atomic: Update a safety comment in impl of `fetch_add()`") 0b864375d93d ("rust: sync: atomic: Update documentation for `fetch_add()`") c49cf341090b ("rust: sync: atomic: Add fetch_sub()") e2f9c86f33ab ("rust: sync: atomic: Add atomic operation helpers over raw pointers") 282866207020 ("rust: list: Use AtomicFlag in AtomicTracker") ec6fc66ac39b ("rust: sync: atomic: Add performance-optimal Flag type for atomic booleans") ac8f06ade38a ("rust: sync: atomic: Add Atomic<*{mut,const} T> support") 553c02fb588d ("rust: sync: atomic: Clarify the need of CONFIG_ARCH_SUPPORTS_ATOMIC_RMW") a92236bf239c ("rust: helpers: Generify the definitions of rust_helper_*_cmpxchg*") f92d22b00e3f ("rust: helpers: Generify the definitions of rust_helper_*_xchg*") ecc8e9fbaac3 ("rust: helpers: Generify the definitions of rust_helper_*_{read,set}*") bebf7bdc6253 ("rust: sync: atomic: Add example for Atomic::get_mut()") 4a5dc632e0b6 ("rust: sync: atomic: Remove bound `T: Sync` for `Atomic::from_ptr()`") 0da9ca4c08e7 ("futex: add missing function parameter comments") 3dcef70e41ab ("ww-mutex: Fix the ww_acquire_ctx function annotations") 39be7b21af24 ("signal: Fix the lock_task_sighand() annotation") 38e18d825f72 ("locking: Fix rwlock and spinlock lock context annotations") 773b24bcedc1 ("arm64, compiler-context-analysis: Permit alias analysis through __READ_ONCE() with CONFIG_LTO=y") abf1be684dc2 ("arm64: Optimize __READ_ONCE() with CONFIG_LTO=y") 50214dc43820 ("locking/mutex: Add killable flavor to guard definitions") babcde3be8c9 ("locking/mutex: Fix wrong comment for CONFIG_DEBUG_LOCK_ALLOC") 8b65eb52d93e ("locking/mutex: Rename mutex_init_lockep()") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'irq/core'Ingo Molnar
# New commits in irq/core: 56c167a0c0fa ("genirq/matrix, LoongArch: Delete IRQ_MATRIX_BITS leftovers") 5a8103a6fb0a ("genirq: Document interaction between <linux/irq.h> and DT binding defines") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'timers/merge'Ingo Molnar
# New commits in timers/merge: 763aacf86f1b ("clocksource: Rewrite watchdog code completely") 1432f9d4e8aa ("clocksource: Don't use non-continuous clocksources as watchdog") 79ccb0693a99 ("x86/tsc: Handle CLOCK_SOURCE_VALID_FOR_HRES correctly") ced7072a3ad6 ("MIPS: Don't select CLOCKSOURCE_WATCHDOG") 2a14f7c5ee79 ("parisc: Remove unused clocksource flags") 88c316ff7694 ("hrtimer: Add a helper to retrieve a hrtimer from its timerqueue node") f27fc117cf8f ("hrtimer: Remove trailing comma after HRTIMER_MAX_CLOCK_BASES") f12ef5cb4e03 ("hrtimer: Mark index and clockid of clock base as const") bd803783dfa7 ("hrtimer: Drop unnecessary pointer indirection in hrtimer_expire_entry event") b94c076dd949 ("hrtimer: Drop spurious space in 'enum hrtimer_base_type'") 194675f16d73 ("hrtimer: Don't zero-initialize ret in hrtimer_nanosleep()") 8ef2807042d0 ("hrtimer: Remove hrtimer_get_expires_ns()") 112c685f0211 ("timekeeping: Mark offsets array as const") ba546d3d895c ("timekeeping/auxclock: Consistently use raw timekeeper for tk_setup_internals()") bb2705b4e036 ("timer_list: Print offset as signed integer") 754e38d2d1ae ("tracing: Use explicit array size instead of sentinel elements in symbol printing") 5aa9383813ac ("scripts/gdb: timerlist: Adapt to move of tk_core") 92f7ee408c23 ("hrtimer: Less agressive interrupt 'hang' handling") bed0053a6303 ("selftests: vDSO: vdso_test_correctness: Add a test for time()") a8b22a158a47 ("selftests: vDSO: vdso_test_correctness: Use facilities from parse_vdso.c") 38bc16aa47dc ("selftests: vDSO: vdso_test_correctness: Handle different tv_usec types") ad2af7768fac ("selftests: vDSO: vdso_test_correctness: Drop SYS_getcpu fallbacks") 50692c25ee2e ("selftests: vDSO: vdso_test_gettimeofday: Remove nolibc checks") 5abfa0c4da3b ("Revert "selftests: vDSO: parse_vdso: Use UAPI headers instead of libc headers"") 260b98f75b61 ("random: vDSO: Remove ifdeffery") fc880ff14acd ("random: vDSO: Trim vDSO includes") f5e386fe5f1c ("vdso/datapage: Trim down unnecessary includes") 750d8cc84901 ("vdso/datapage: Remove inclusion of gettimeofday.h") 8bd49acb4e81 ("vdso/helpers: Explicitly include vdso/processor.h") 9fc2232e285b ("vdso/gettimeofday: Add explicit includes") 32bd96605048 ("random: vDSO: Add explicit includes") 5dca096e865f ("MIPS: vdso: Explicitly include asm/vdso/vdso.h") a9d7e1ea5897 ("MIPS: vdso: Add include guard to asm/vdso/vdso.h") 55434071cdcf ("LoongArch: vDSO: Explicitly include asm/vdso/vdso.h") 9c89d8bd64b8 ("powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h") 3852dd5abc30 ("powerpc/vdso/gettimeofday: Explicitly include vdso/time32.h") 89e6796fa530 ("ARM: vdso: gettimeofday: Add explicit includes") 2b8cf39d7e0b ("arm64: vDSO: compat_gettimeofday: Add explicit includes") b18ec8b5e0ce ("arm64: vDSO: gettimeofday: Explicitly include vdso/clocksource.h") 0c02d6df15d4 ("vdso/gettimeofday: Move the unlikely() into vdso_read_retry()") a657bebd7f02 ("vdso/gettimeofday: Add a helper to test if a clock is namespaced") ed78b7b2c5ae ("vdso/gettimeofday: Add a helper to read the sequence lock of a time namespace aware clock") 08cd5e1de815 ("vdso/gettimeofday: Drop a few usages of __maybe_unused") c453b9abb4f4 ("clocksource: Remove ARCH_CLOCKSOURCE_DATA") 1628f6a74270 ("sparc64: vdso: Implement clock_gettime64()") 168d23e5762b ("sparc64: vdso2c: Remove symbol handling") fb57f3e7d5dc ("sparc64: vdso2c: Drop sym_vvar_start handling") 7c5fc16c7a56 ("sparc64: vdso: Switch to the generic vDSO library") e13e3059dcc2 ("sparc64: vdso: Introduce vdso/processor.h") d60c682bce3d ("sparc64: vdso: Move syscall fallbacks into header") 10fdbd9517e8 ("sparc64: vdso: Move hardware counter read into header") 7b4ee085e760 ("sparc64: vdso: Replace code patching with runtime conditional") 9fc4fe6e142a ("sparc64: vdso: Remove obsolete "fake section table" reservation") acc4f131d5d5 ("sparc64: vdso: Link with -z noexecstack") 05988dba1179 ("vdso/datastore: Allocate data pages dynamically") c0c9439ba307 ("vdso/datastore: Drop inclusion of linux/mmap_lock.h") dc432ab7130b ("vdso/datastore: Reduce scope of some variables in vvar_fault()") 62357a5888ea ("asm-generic/bitsperlong.h: Add sanity checks for __BITS_PER_LONG") 9b444349a2e9 ("powerpc/audit: Directly include unistd_32.h from compat_audit.c") 08b5dcb61399 ("s390: Add -m64 to KBUILD_CPPFLAGS") 273aaa8ef8e3 ("sparc64: vdso: Use 32-bit CHECKFLAGS for compat vDSO") 56f85f67b3e2 ("x86/vdso: Use 32-bit CHECKFLAGS for compat vDSO") a5ccec8fd10e ("vdso/datapage: Correct struct member kernel-doc") bc47b2e82391 ("time/kunit: Add .kunitconfig") ecfa23b486b2 ("jiffies: Remove unused __jiffy_arch_data") Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 hoursMerge branch into tip/master: 'sched/merge'Ingo Molnar
# New commits in sched/merge: fe7171d0d5df ("sched/fair: Simplify SIS_UTIL handling in select_idle_cpu()") f1320a8dd8ba ("sched/fair: Simplify the entry condition for update_idle_cpu_scan()") fa6874dfeee0 ("sched/fair: Remove superfluous rcu_read_lock() in the wakeup path") 8ca12326f592 ("PM: EM: Switch to rcu_dereference_all() in wakeup path") f494bfb04615 ("sched/core: Check for rcu_read_lock_any_held() in idle_get_state()") 10febd397591 ("sched/topology: Remove sched_domain_shared allocation with sd_data") bb7a5e44fc6f ("sched/topology: Switch to assigning "sd->shared" from s_data") 1cc8a33ca7e8 ("sched/topology: Allocate per-CPU sched_domain_shared in s_data") 5a7b576b3ec1 ("sched/topology: Extract "imb_numa_nr" calculation into a separate helper") 8e8e23dea43e ("sched/topology: Compute sd_weight considering cpuset partitions") 8d16e3c6f844 ("sched/fair: Fix comma operator misuse in NUMA fault accounting") 49b76317592e ("sched/wait: correct kernel-doc descriptions") 54a66e431eea ("sched/headers: Inline raw_spin_rq_unlock()") 4b9ef32c57a6 ("x86/mm/tlb: Make enter_lazy_tlb() always inline on x86") eef9f648fb0e ("sched/hrtick: Mark hrtick_clear() as always used") 53007d526e17 ("clocksource: Update clocksource::freq_khz on registration") 9d5e25b361b7 ("timekeeping: Initialize the coupled clocksource conversion completely") 9213aa4784cf ("sched: Default enable HRTICK when deferred rearming is enabled") 343f2f4dc542 ("hrtimer: Try to modify timers in place") b7418e6e9b87 ("hrtimer: Use linked timerqueue") 1339eeb73d6b ("timerqueue: Provide linked timerqueue") 671047943dce ("rbtree: Provide rbtree with links") 3601a1d85028 ("hrtimer: Optimize for_each_active_base()") a64ad57e41c7 ("hrtimer: Simplify run_hrtimer_queues()") 2bd1cc24fafc ("hrtimer: Rework next event evaluation") eddffab8282e ("hrtimer: Keep track of first expiring timer per clock base") b95c4442b021 ("hrtimer: Avoid re-evaluation when nothing changed") 15dd3a948855 ("hrtimer: Push reprogramming timers into the interrupt return path") b0a44fa5e2a2 ("sched/core: Prepare for deferred hrtimer rearming") 7e641e52cf5f ("softirq: Prepare for deferred hrtimer rearming") 0e98eb14814e ("entry: Prepare for deferred hrtimer rearming") a43b4856bc03 ("hrtimer: Prepare stubs for deferred rearming") 9e07a9c980ea ("hrtimer: Rename hrtimer_cpu_base::in_hrtirq to deferred_rearm") 288924384856 ("hrtimer: Re-arrange hrtimer_interrupt()") 8e10f6b81afb ("hrtimer: Add hrtimer_rearm tracepoint") 85a690d1c19c ("hrtimer: Separate remove/enqueue handling for local timers") c939191457fe ("hrtimer: Use NOHZ information for locality") 3288cd486376 ("hrtimer: Optimize for local timers") 22f011be7aaa ("hrtimer: Convert state and properties to boolean") 7d27eafe5465 ("hrtimer: Replace the bitfield in hrtimer_cpu_base") 8ffc9ea88136 ("hrtimer: Evaluate timer expiry only once") 0c6af0ea51bd ("hrtimer: Cleanup coding style and comments") 6abfc2bd5b0c ("hrtimer: Use guards where appropriate") f2e388a019e4 ("hrtimer: Reduce trace noise in hrtimer_start()") 513e744a0a4a ("hrtimer: Add debug object init assertion") f246ec3478cf ("x86/apic: Enable TSC coupled programming mode") 89f951a1e8ad ("clockevents: Provide support for clocksource coupled comparators") cd38bdb8e696 ("timekeeping: Provide infrastructure for coupled clockevents") 23028286128d ("x86/apic: Avoid the PVOPS indirection for the TSC deadline timer") 92d0e753d57e ("x86/apic: Remove pointless fence in lapic_next_deadline()") b27801189f7f ("x86: Inline TSC reads in timekeeping") 2e27beeb66e4 ("timekeeping: Allow inlining clocksource::read()") 70802807398c ("clockevents: Remove redundant CLOCK_EVT_FEAT_KTIME") adcec6a7f566 ("tick/sched: Avoid hrtimer_cancel/start() sequence") 0abec32a6836 ("sched/hrtick: Mark hrtick timer LAZY_REARM") b7dd64778aa3 ("hrtimer: Provide LAZY_REARM mode") c8cdb9b51640 ("sched/hrtick: Avoid tiny hrtick rearms") 96d1610e0b20 ("sched: Optimize hrtimer handling") c3a92213eb3d ("sched: Use hrtimer_highres_enabled()") 0a93d3086161 ("hrtimer: Provide a static branch based hrtimer_hres_enabled()") d19ff16c11db ("hrtimer: Avoid pointless reprogramming in __hrtimer_start_range_ns()") d70c1080a957 ("sched: Avoid ktime_get() indirection") 5d88e424ec1b ("sched/fair: Make hrtick resched hard") 97015376642f ("sched/fair: Simplify hrtick_update()") 558c18d3fbb6 ("sched/eevdf: Fix HRTICK duration") 2e7af192697e ("sched/deadline: Add reporting of runtime left & abs deadline to sched_getattr() for DEADLINE tasks") fd54d81c2c0e ("sched/fair: Skip SCHED_IDLE rq for SCHED_IDLE task") c2a57380df9d ("sched: Replace use of system_unbound_wq with system_dfl_wq") c0e1832ba6da ("sched: Fix incorrect schedstats for rt and dl thread") d3d663faa1d4 ("sched/fair: Filter false overloaded_group case for EAS") 926475806606 ("sched/fair: Update overutilized detection") db4551e2ba34 ("sched/fair: Use full weight to __calc_delta()") 101f3498b4bd ("sched/fair: Revert 6d71a9c61604 ("sched/fair: Fix EEVDF entity placement bug causing scheduling lag")") 4823725d9d1d ("sched/fair: Increase weight bits for avg_vruntime") 9fe89f022c05 ("sched/fair: More complex proportional newidle balance") Signed-off-by: Ingo Molnar <mingo@kernel.org>
32 hourstaskstats: set version in TGID exit notificationsYiyang Chen
delay accounting started populating taskstats records with a valid version field via fill_pid() and fill_tgid(). Later, commit ad4ecbcba728 ("[PATCH] delay accounting taskstats interface send tgid once") changed the TGID exit path to send the cached signal->stats aggregate directly instead of building the outgoing record through fill_tgid(). Unlike fill_tgid(), fill_tgid_exit() only accumulates accounting data and never initializes stats->version. As a result, TGID exit notifications can reach userspace with version == 0 even though PID exit notifications and TASKSTATS_CMD_GET replies carry a valid taskstats version. This is easy to reproduce with `tools/accounting/getdelays.c`. I have a small follow-up patch for that tool which: 1. increases the receive buffer/message size so the pid+tgid combined exit notification is not dropped/truncated 2. prints `stats->version`. With that patch, the reproducer is: Terminal 1: ./getdelays -d -v -l -m 0 Terminal 2: taskset -c 0 python3 -c 'import threading,time; t=threading.Thread(target=time.sleep,args=(0.1,)); t.start(); t.join()' That produces both PID and TGID exit notifications for the same process. The PID exit record reports a valid taskstats version, while the TGID exit record reports `version 0`. This patch (of 2): Set stats->version = TASKSTATS_VERSION after copying the cached TGID aggregate into the outgoing netlink payload so all taskstats records are self-describing again. Link: https://lkml.kernel.org/r/ba83d934e59edd431b693607de573eb9ca059309.1774810498.git.cyyzero16@gmail.com Fixes: ad4ecbcba728 ("[PATCH] delay accounting taskstats interface send tgid once") Signed-off-by: Yiyang Chen <cyyzero16@gmail.com> Cc: Balbir Singh <bsingharora@gmail.com> Cc: Dr. Thomas Orgis <thomas.orgis@uni-hamburg.de> Cc: Fan Yu <fan.yu9@zte.com.cn> Cc: Wang Yaxin <wang.yaxin@zte.com.cn> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourskallsyms: add KUnit tests for lineinfo featureSasha Levin
Add a KUnit test module (CONFIG_LINEINFO_KUNIT_TEST) that verifies the kallsyms lineinfo feature produces correct source file:line annotations in stack traces. Export sprint_backtrace() and sprint_backtrace_build_id() as GPL symbols so the test module can exercise the backtrace APIs. Assisted-by: Claude:claude-opus-4-6 Link: https://lkml.kernel.org/r/20260322131543.971079-5-sashal@kernel.org Signed-off-by: Sasha Levin <sashal@kernel.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Helge Deller <deller@gmx.de> Cc: James Bottomley <james.bottomley@HansenPartnership.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Juegren Gross <jgross@suse.com> Cc: Kees Cook <kees@kernel.org> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Luis Chamberalin <mcgrof@kernel.org> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Petr Pavlu <petr.pavlu@suse.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Richard Weinberger <richard@nod.at> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thorsten Leemhuis <linux@leemhuis.info> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourskallsyms: delta-compress lineinfo tables for ~2.7x size reductionSasha Levin
Replace the flat uncompressed parallel arrays (lineinfo_addrs[], lineinfo_file_ids[], lineinfo_lines[]) with a block-indexed, delta-encoded, ULEB128 varint compressed format. The sorted address array has small deltas between consecutive entries (typically 1-50 bytes), file IDs have high locality (delta often 0, same file), and line numbers change slowly. Delta-encoding followed by ULEB128 varint compression shrinks most values from 4 bytes to 1. Entries are grouped into blocks of 64. A small uncompressed block index (first addr + byte offset per block) enables O(log(N/64)) binary search, followed by sequential decode of at most 64 varints within the matching block. All decode state lives on the stack -- zero allocations, still safe for NMI/panic context. Measured on a defconfig+debug x86_64 build (3,017,154 entries, 4,822 source files, 47,144 blocks): Before (flat arrays): lineinfo_addrs[] 12,068,616 bytes (u32 x 3.0M) lineinfo_file_ids[] 6,034,308 bytes (u16 x 3.0M) lineinfo_lines[] 12,068,616 bytes (u32 x 3.0M) Total: 30,171,540 bytes (28.8 MiB, 10.0 bytes/entry) After (block-indexed delta + ULEB128): lineinfo_block_addrs[] 188,576 bytes (184 KiB) lineinfo_block_offsets[] 188,576 bytes (184 KiB) lineinfo_data[] 10,926,128 bytes (10.4 MiB) Total: 11,303,280 bytes (10.8 MiB, 3.7 bytes/entry) Savings: 18.0 MiB (2.7x reduction) Booted in QEMU and verified with SysRq-l that annotations still work: default_idle+0x9/0x10 (arch/x86/kernel/process.c:767) default_idle_call+0x6c/0xb0 (kernel/sched/idle.c:122) do_idle+0x335/0x490 (kernel/sched/idle.c:191) cpu_startup_entry+0x4e/0x60 (kernel/sched/idle.c:429) rest_init+0x1aa/0x1b0 (init/main.c:760) Assisted-by: Claude:claude-opus-4-6 Link: https://lkml.kernel.org/r/20260322131543.971079-4-sashal@kernel.org Signed-off-by: Sasha Levin <sashal@kernel.org> Suggested-by: Juergen Gross <jgross@suse.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Helge Deller <deller@gmx.de> Cc: James Bottomley <james.bottomley@HansenPartnership.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Kees Cook <kees@kernel.org> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Luis Chamberalin <mcgrof@kernel.org> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Petr Pavlu <petr.pavlu@suse.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Richard Weinberger <richard@nod.at> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thorsten Leemhuis <linux@leemhuis.info> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourskallsyms: extend lineinfo to loadable modulesSasha Levin
Add CONFIG_KALLSYMS_LINEINFO_MODULES, which extends the CONFIG_KALLSYMS_LINEINFO feature to loadable kernel modules. At build time, each .ko is post-processed by scripts/gen-mod-lineinfo.sh (modeled on gen-btf.sh) which runs scripts/gen_lineinfo --module on the .ko, generates a .mod_lineinfo section containing a compact binary table of .text-relative offsets, file IDs, line numbers, and filenames, and embeds it back into the .ko via objcopy. At runtime, module_lookup_lineinfo() performs a binary search on the module's .mod_lineinfo section, and __sprint_symbol() calls it for addresses that fall within a module. The lookup is NMI/panic-safe (no locks, no allocations) — the data lives in read-only module memory and is freed automatically when the module is unloaded. The gen_lineinfo tool gains --module mode which: - Uses .text section address as base (ET_REL files have no _text symbol) - Filters entries to .text-only (excludes .init.text/.exit.text) - Handles libdw's ET_REL path-doubling quirk in make_relative() - Outputs a flat binary-format section instead of named global symbols Per-module overhead is approximately 10 bytes per DWARF line entry. Assisted-by: Claude:claude-opus-4-6 Link: https://lkml.kernel.org/r/20260322131543.971079-3-sashal@kernel.org Signed-off-by: Sasha Levin <sashal@kernel.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Helge Deller <deller@gmx.de> Cc: James Bottomley <james.bottomley@HansenPartnership.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Juegren Gross <jgross@suse.com> Cc: Kees Cook <kees@kernel.org> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Luis Chamberalin <mcgrof@kernel.org> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Petr Pavlu <petr.pavlu@suse.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Richard Weinberger <richard@nod.at> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thorsten Leemhuis <linux@leemhuis.info> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourskallsyms: embed source file:line info in kernel stack tracesSasha Levin
Patch series "kallsyms: embed source file:line info in kernel stack traces", v4. This series adds CONFIG_KALLSYMS_LINEINFO, which embeds source file:line information directly in the kernel image so that stack traces annotate every frame with the originating source location - no external tools, no debug symbols at runtime, and safe to use in NMI/panic context. Motivation ========== The recent "slowly decommission bugzilla?" thread surfaced a recurring problem: when users encounter kernel crashes they see stack traces like `func+0x1ec/0x240` but have no way to identify which subsystem or maintainer to contact. Richard Weinberger proposed building a database mapping symbols to source files using nm/DWARF. Linus pointed to scripts/decode_stacktrace.sh as the existing solution. But as the discussion progressed, it became clear that decode_stacktrace.sh has significant practical barriers that prevent it from being useful in the common case. Problems with scripts/decode_stacktrace.sh ========================================== - Requires debug symbols: the script needs vmlinux with DWARF debug info. Many distros don't retain debug symbols for older or security kernels, and even when available, asking users to obtain matching debuginfo packages is a significant hurdle. - Requires toolchain: users need addr2line and nm installed. - Version-matching requirement: debug symbols must exactly match the running kernel binary. What this series does ===================== Patch 1: CONFIG_KALLSYMS_LINEINFO At build time, a host tool (scripts/gen_lineinfo) reads DWARF .debug_line from vmlinux, extracts address-to-file:line mappings, and embeds them as sorted lookup tables in .rodata. At runtime, kallsyms_lookup_lineinfo() binary-searches the table and __sprint_symbol() appends "(file:line)" to each stack frame. NMI/panic- safe (no locks, no allocations), KASLR-compatible. Patch 2: CONFIG_KALLSYMS_LINEINFO_MODULES Extends lineinfo to loadable modules. Each .ko gets a .mod_lineinfo section embedded at build time. The module loader picks it up at load time. Same zero-allocation, NMI-safe lookup. Patch 3: delta compression Block-indexed delta-encoding with LEB128 varints, implementing the approach suggested by Juergen Gross in the RFC review. Reduces overhead from ~44 MiB to ~11 MiB (~3.7 bytes/entry), addressing the primary size concern from the RFC. Patch 4: KUnit tests 30 KUnit tests covering the lineinfo lookup paths, delta-decode logic, boundary conditions, and integration with the backtrace formatting APIs. Example output ============== [ 11.206749] dump_stack_lvl+0x5d/0x80 (lib/dump_stack.c:94) [ 11.207403] vpanic+0x36e/0x620 (kernel/panic.c:650) [ 11.209324] panic+0xc9/0xd0 (kernel/panic.c:787) [ 11.213312] sysrq_handle_crash+0x1a/0x20 (drivers/tty/sysrq.c:154) [ 11.214005] __handle_sysrq.cold+0x66/0x256 (drivers/tty/sysrq.c:611) [ 11.214712] write_sysrq_trigger+0x65/0x80 (drivers/tty/sysrq.c:1221) [ 11.215424] proc_reg_write+0x1bd/0x3c0 (fs/proc/inode.c:330) [ 11.216061] vfs_write+0x1c6/0xff0 (fs/read_write.c:686) [ 11.218848] ksys_write+0xfa/0x200 (fs/read_write.c:740) [ 11.222394] do_syscall_64+0xf3/0x690 (arch/x86/entry/syscall_64.c:63) Size impact =========== Measured with a Debian kernel config: - bzImage: +3.6 MiB (14 MiB -> 18 MiB, +26%) - Runtime memory: +5.9 MiB (text+data+bss) - Code overhead: +5.0 KiB (.text, lookup functions only) - Data overhead: +5.9 MiB (.data, lineinfo tables) Lineinfo data breakdown: - lineinfo_data (delta-compressed): 5,728 KiB (97%) - lineinfo_block_addrs: 99 KiB - lineinfo_block_offsets: 99 KiB - lineinfo_filenames: 111 KiB - lineinfo_file_offsets: 17 KiB The ~5.9 MiB is after 2.7x delta compression; uncompressed would be ~16 MiB. This is a fraction of the cost of shipping full DWARF debug info (hundreds of MiB), which distros must store and serve for every kernel version. For distros, maintaining debug symbol repositories is expensive: storage, mirrors, and CDN bandwidth for hundreds of MiB per kernel build add up quickly. A ~5.9 MiB increase in the kernel image itself is a modest cost that eliminates the need for users to find, download, and version-match debuginfo packages just to make a crash report useful. For developers, the file:line annotations appear immediately in crash traces - no post-processing with decode_stacktrace.sh needed. This patch (of 4): Add CONFIG_KALLSYMS_LINEINFO, which embeds a compact address-to-line lookup table in the kernel image so stack traces directly print source file and line number information: root@localhost:~# echo c > /proc/sysrq-trigger [ 11.201987] sysrq: Trigger a crash [ 11.202831] Kernel panic - not syncing: sysrq triggered crash [ 11.206218] Call Trace: [ 11.206501] <TASK> [ 11.206749] dump_stack_lvl+0x5d/0x80 (lib/dump_stack.c:94) [ 11.207403] vpanic+0x36e/0x620 (kernel/panic.c:650) [ 11.208565] ? __lock_acquire+0x465/0x2240 (kernel/locking/lockdep.c:4674) [ 11.209324] panic+0xc9/0xd0 (kernel/panic.c:787) [ 11.211873] ? find_held_lock+0x2b/0x80 (kernel/locking/lockdep.c:5350) [ 11.212597] ? lock_release+0xd3/0x300 (kernel/locking/lockdep.c:5535) [ 11.213312] sysrq_handle_crash+0x1a/0x20 (drivers/tty/sysrq.c:154) [ 11.214005] __handle_sysrq.cold+0x66/0x256 (drivers/tty/sysrq.c:611) [ 11.214712] write_sysrq_trigger+0x65/0x80 (drivers/tty/sysrq.c:1221) [ 11.215424] proc_reg_write+0x1bd/0x3c0 (fs/proc/inode.c:330) [ 11.216061] vfs_write+0x1c6/0xff0 (fs/read_write.c:686) [ 11.218848] ksys_write+0xfa/0x200 (fs/read_write.c:740) [ 11.222394] do_syscall_64+0xf3/0x690 (arch/x86/entry/syscall_64.c:63) [ 11.223942] entry_SYSCALL_64_after_hwframe+0x77/0x7f (arch/x86/entry/entry_64.S:121) At build time, a new host tool (scripts/gen_lineinfo) reads DWARF .debug_line from vmlinux using libdw (elfutils), extracts all address-to-file:line mappings, and generates an assembly file with sorted parallel arrays (offsets from _text, file IDs, and line numbers). These are linked into vmlinux as .rodata. At runtime, kallsyms_lookup_lineinfo() does a binary search on the table and __sprint_symbol() appends "(file:line)" to each stack frame. The lookup uses offsets from _text so it works with KASLR, requires no locks or allocations, and is safe in any context including panic. The feature requires CONFIG_DEBUG_INFO (for DWARF data) and elfutils (libdw-dev) on the build host. Memory footprint measured with a 1852-option x86_64 config: Table: 4,597,583 entries from 4,841 source files lineinfo_addrs[] 4,597,583 x u32 = 17.5 MiB lineinfo_file_ids[] 4,597,583 x u16 = 8.8 MiB lineinfo_lines[] 4,597,583 x u32 = 17.5 MiB file_offsets + filenames ~ 0.1 MiB Total .rodata increase: ~ 44.0 MiB vmlinux (stripped): 529 MiB -> 573 MiB (+44 MiB / +8.3%) Note: this probably won't be something we roll into "production", but it might be useful for the average user given the relatively low memory footprint, in canary deployments for hyperscalers, or by default for folks who run tests/fuzzing/etc. Disclaimer: this was vibe coded over an afternoon with an AI coding assistant. The .config used for testing is a simple KVM guest configuration for local development and testing. Assisted-by: Claude:claude-opus-4-6 Link: https://lkml.kernel.org/r/20260322131543.971079-1-sashal@kernel.org Link: https://lkml.kernel.org/r/20260322131543.971079-2-sashal@kernel.org Signed-off-by: Sasha Levin <sashal@kernel.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Helge Deller <deller@gmx.de> Cc: James Bottomley <james.bottomley@HansenPartnership.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Juegren Gross <jgross@suse.com> Cc: Kees Cook <kees@kernel.org> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Luis Chamberalin <mcgrof@kernel.org> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Petr Pavlu <petr.pavlu@suse.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Richard Weinberger <richard@nod.at> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thorsten Leemhuis <linux@leemhuis.info> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourskernel-fork-validate-exit_signal-in-kernel_clone-fixOleg Nesterov
the comment above kernel_clone() should be updated Link: https://lkml.kernel.org/r/abwvgU17W8wuW2-J@redhat.com Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: Christian Brauner <brauner@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourskernel/fork: validate exit_signal in kernel_clone()Deepanshu Kartikey
When a child process exits, it sends exit_signal to its parent via do_notify_parent(). The clone() syscall constructs exit_signal as: (lower_32_bits(clone_flags) & CSIGNAL) CSIGNAL is 0xff, so values in the range 65-255 are possible. However, valid_signal() only accepts signals up to _NSIG (64 on x86_64). A non-zero non-valid exit_signal acts the same as exit_signal == 0: the parent process is not signaled when the child terminates. The syzkaller reproducer triggers this by calling clone() with flags=0x80, resulting in exit_signal = (0x80 & CSIGNAL) = 128, which exceeds _NSIG and is not a valid signal. The v1 of this patch added the check only in the clone() syscall handler, which is incomplete. kernel_clone() has other callers such as sys_ia32_clone() which would remain unprotected. Move the check to kernel_clone() to cover all callers. Since the valid_signal() check is now in kernel_clone() and covers all callers including clone3(), the same check in copy_clone_args_from_user() becomes redundant and is removed. The higher 32bits check for clone3() is kept as it is clone3() specific. Note that this is a user-visible change: previously, passing an invalid exit_signal to clone() was silently accepted. The man page for clone() does not document any defined behavior for invalid exit_signal values, so rejecting them with -EINVAL is the correct behavior. It is unlikely that any sane application relies on passing an invalid exit_signal. Link: https://lkml.kernel.org/r/20260316151956.563558-1-kartikey406@gmail.com Fixes: 3f2c788a1314 ("fork: prevent accidental access to clone3 features") Signed-off-by: Deepanshu Kartikey <Kartikey406@gmail.com> Reported-by: syzbot+bbe6b99feefc3a0842de@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=bbe6b99feefc3a0842de Tested-by: syzbot+bbe6b99feefc3a0842de@syzkaller.appspotmail.com Link: https://lore.kernel.org/all/20260307064202.353405-1-kartikey406@gmail.com/T/ [v1] Link: https://lore.kernel.org/all/20260316104536.558108-1-kartikey406@gmail.com/T/ [v2] Acked-by: Oleg Nesterov <oleg@redhat.com> Cc: Ben Segall <bsegall@google.com> Cc: Christian Brauner <brauner@kernel.org> Cc: David Hildenbrand <david@kernel.org> Cc: Dietmar Eggemann <dietmar.eggemann@arm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Kees Cook <kees@kernel.org> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> Cc: Lorenzo Stoakes (Oracle) <ljs@kernel.org> Cc: Mel Gorman <mgorman@suse.de> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Valentin Schneider <vschneid@redhat.com> Cc: Vincent Guittot <vincent.guittot@linaro.org> Cc: Vlastimil Babka <vbabka@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hourscrash_dump/dm-crypt: don't print in arch-specific codeCoiby Xu
Patch series "kdump: Enable LUKS-encrypted dump target support in ARM64 and PowerPC", v5. CONFIG_CRASH_DM_CRYPT has been introduced to support LUKS-encrypted device dump target by addressing two challenges [1], - Kdump kernel may not be able to decrypt the LUKS partition. For some machines, a system administrator may not have a chance to enter the password to decrypt the device in kdump initramfs after the 1st kernel crashes - LUKS2 by default use the memory-hard Argon2 key derivation function which is quite memory-consuming compared to the limited memory reserved for kdump. To also enable this feature for ARM64 and PowerPC, we need to add a device tree property dmcryptkeys [2] as similar to elfcorehdr to pass the memory address of the stored info of dm-crypt keys to the kdump kernel. This patch (of 3): When the vmcore dumping target is not a LUKS-encrypted target, it's expected that there is no dm-crypt key thus no need to return -ENOENT. Also print more logs in crash_load_dm_crypt_keys. The benefit is arch-specific code can be more succinct. Link: https://lkml.kernel.org/r/20260225060347.718905-1-coxu@redhat.com Link: https://lkml.kernel.org/r/20260225060347.718905-2-coxu@redhat.com Link: https://lore.kernel.org/all/20250502011246.99238-1-coxu@redhat.com/ [1] Link: https://github.com/devicetree-org/dt-schema/pull/181 [2] Signed-off-by: Coiby Xu <coxu@redhat.com> Suggested-by: Will Deacon <will@kernel.org> Cc: Arnaud Lefebvre <arnaud.lefebvre@clever-cloud.com> Cc: Baoquan he <bhe@redhat.com> Cc: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Cc: Dave Young <dyoung@redhat.com> Cc: Kairui Song <ryncsn@gmail.com> Cc: Krzysztof Kozlowski <krzk@kernel.org> Cc: Pingfan Liu <kernelfans@gmail.com> Cc: Rob Herring <robh@kernel.org> Cc: Sourabh Jain <sourabhjain@linux.ibm.com> Cc: Thomas Staudt <tstaudt@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hoursfooAndrew Morton
32 hoursliveupdate: defer file handler module refcounting to active sessionsPasha Tatashin
Stop pinning modules indefinitely upon file handler registration. Instead, dynamically increment the module reference count only when a live update session actively uses the file handler (e.g., during preservation or deserialization), and release it when the session ends. This allows modules providing live update handlers to be gracefully unloaded when no live update is in progress. Link: https://lkml.kernel.org/r/20260327033335.696621-11-pasha.tatashin@soleen.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: David Matlack <dmatlack@google.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Pratyush Yadav <pratyush@kernel.org> Cc: Samiullah Khawaja <skhawaja@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hoursliveupdate: make unregister functions return voidPasha Tatashin
Change liveupdate_unregister_file_handler and liveupdate_unregister_flb to return void instead of an error code. This follows the design principle that unregistration during module unload should not fail, as the unload cannot be stopped at that point. Link: https://lkml.kernel.org/r/20260327033335.696621-10-pasha.tatashin@soleen.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: David Matlack <dmatlack@google.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Pratyush Yadav <pratyush@kernel.org> Cc: Samiullah Khawaja <skhawaja@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hoursliveupdate: remove liveupdate_test_unregister()Pasha Tatashin
Now that file handler unregistration automatically unregisters all associated file handlers (FLBs), the liveupdate_test_unregister() function is no longer needed. Remove it along with its usages and declarations. Link: https://lkml.kernel.org/r/20260327033335.696621-9-pasha.tatashin@soleen.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: David Matlack <dmatlack@google.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Pratyush Yadav <pratyush@kernel.org> Cc: Samiullah Khawaja <skhawaja@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hoursliveupdate: auto unregister FLBs on file handler unregistrationPasha Tatashin
To ensure that unregistration is always successful and doesn't leave dangling resources, introduce auto-unregistration of FLBs: when a file handler is unregistered, all FLBs associated with it are automatically unregistered. Introduce a new helper luo_flb_unregister_all() which unregisters all FLBs linked to the given file handler. Link: https://lkml.kernel.org/r/20260327033335.696621-8-pasha.tatashin@soleen.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: David Matlack <dmatlack@google.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Pratyush Yadav <pratyush@kernel.org> Cc: Samiullah Khawaja <skhawaja@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 hoursliveupdate: remove luo_session_quiesce()Pasha Tatashin
Now that FLB module references are handled dynamically during active sessions, we can safely remove the luo_session_quiesce() and luo_session_resume() mechanism. Link: https://lkml.kernel.org/r/20260327033335.696621-7-pasha.tatashin@soleen.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: David Matlack <dmatlack@google.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Pratyush Yadav <pratyush@kernel.org> Cc: Samiullah Khawaja <skhawaja@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>