mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 14:02:06 -04:00
Merge tag 'mm-nonmm-stable-2025-05-31-15-28' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull non-MM updates from Andrew Morton:
- "hung_task: extend blocking task stacktrace dump to semaphore" from
Lance Yang enhances the hung task detector.
The detector presently dumps the blocking tasks's stack when it is
blocked on a mutex. Lance's series extends this to semaphores
- "nilfs2: improve sanity checks in dirty state propagation" from
Wentao Liang addresses a couple of minor flaws in nilfs2
- "scripts/gdb: Fixes related to lx_per_cpu()" from Illia Ostapyshyn
fixes a couple of issues in the gdb scripts
- "Support kdump with LUKS encryption by reusing LUKS volume keys" from
Coiby Xu addresses a usability problem with kdump.
When the dump device is LUKS-encrypted, the kdump kernel may not have
the keys to the encrypted filesystem. A full writeup of this is in
the series [0/N] cover letter
- "sysfs: add counters for lockups and stalls" from Max Kellermann adds
/sys/kernel/hardlockup_count and /sys/kernel/hardlockup_count and
/sys/kernel/rcu_stall_count
- "fork: Page operation cleanups in the fork code" from Pasha Tatashin
implements a number of code cleanups in fork.c
- "scripts/gdb/symbols: determine KASLR offset on s390 during early
boot" from Ilya Leoshkevich fixes some s390 issues in the gdb
scripts
* tag 'mm-nonmm-stable-2025-05-31-15-28' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (67 commits)
llist: make llist_add_batch() a static inline
delayacct: remove redundant code and adjust indentation
squashfs: add optional full compressed block caching
crash_dump, nvme: select CONFIGFS_FS as built-in
scripts/gdb/symbols: determine KASLR offset on s390 during early boot
scripts/gdb/symbols: factor out pagination_off()
scripts/gdb/symbols: factor out get_vmlinux()
kernel/panic.c: format kernel-doc comments
mailmap: update and consolidate Casey Connolly's name and email
nilfs2: remove wbc->for_reclaim handling
fork: define a local GFP_VMAP_STACK
fork: check charging success before zeroing stack
fork: clean-up naming of vm_stack/vm_struct variables in vmap stacks code
fork: clean-up ifdef logic around stack allocation
kernel/rcu/tree_stall: add /sys/kernel/rcu_stall_count
kernel/watchdog: add /sys/kernel/{hard,soft}lockup_count
x86/crash: make the page that stores the dm crypt keys inaccessible
x86/crash: pass dm crypt keys to kdump kernel
Revert "x86/mm: Remove unused __set_memory_prot()"
crash_dump: retrieve dm crypt keys in kdump kernel
...
This commit is contained in:
@@ -141,7 +141,7 @@ LxCpus()
|
||||
class PerCpu(gdb.Function):
|
||||
"""Return per-cpu variable.
|
||||
|
||||
$lx_per_cpu("VAR"[, CPU]): Return the per-cpu variable called VAR for the
|
||||
$lx_per_cpu(VAR[, CPU]): Return the per-cpu variable called VAR for the
|
||||
given CPU number. If CPU is omitted, the CPU of the current context is used.
|
||||
Note that VAR has to be quoted as string."""
|
||||
|
||||
@@ -158,7 +158,7 @@ PerCpu()
|
||||
class PerCpuPtr(gdb.Function):
|
||||
"""Return per-cpu pointer.
|
||||
|
||||
$lx_per_cpu_ptr("VAR"[, CPU]): Return the per-cpu pointer called VAR for the
|
||||
$lx_per_cpu_ptr(VAR[, CPU]): Return the per-cpu pointer called VAR for the
|
||||
given CPU number. If CPU is omitted, the CPU of the current context is used.
|
||||
Note that VAR has to be quoted as string."""
|
||||
|
||||
|
||||
@@ -38,19 +38,13 @@ if hasattr(gdb, 'Breakpoint'):
|
||||
# Disable pagination while reporting symbol (re-)loading.
|
||||
# The console input is blocked in this context so that we would
|
||||
# get stuck waiting for the user to acknowledge paged output.
|
||||
show_pagination = gdb.execute("show pagination", to_string=True)
|
||||
pagination = show_pagination.endswith("on.\n")
|
||||
gdb.execute("set pagination off")
|
||||
|
||||
if module_name in cmd.loaded_modules:
|
||||
gdb.write("refreshing all symbols to reload module "
|
||||
"'{0}'\n".format(module_name))
|
||||
cmd.load_all_symbols()
|
||||
else:
|
||||
cmd.load_module_symbols(module)
|
||||
|
||||
# restore pagination state
|
||||
gdb.execute("set pagination %s" % ("on" if pagination else "off"))
|
||||
with utils.pagination_off():
|
||||
if module_name in cmd.loaded_modules:
|
||||
gdb.write("refreshing all symbols to reload module "
|
||||
"'{0}'\n".format(module_name))
|
||||
cmd.load_all_symbols()
|
||||
else:
|
||||
cmd.load_module_symbols(module)
|
||||
|
||||
return False
|
||||
|
||||
@@ -60,6 +54,18 @@ def get_vmcore_s390():
|
||||
vmcore_info = 0x0e0c
|
||||
paddr_vmcoreinfo_note = gdb.parse_and_eval("*(unsigned long long *)" +
|
||||
hex(vmcore_info))
|
||||
if paddr_vmcoreinfo_note == 0 or paddr_vmcoreinfo_note & 1:
|
||||
# In the early boot case, extract vm_layout.kaslr_offset from the
|
||||
# vmlinux image in physical memory.
|
||||
if paddr_vmcoreinfo_note == 0:
|
||||
kaslr_offset_phys = 0
|
||||
else:
|
||||
kaslr_offset_phys = paddr_vmcoreinfo_note - 1
|
||||
with utils.pagination_off():
|
||||
gdb.execute("symbol-file {0} -o {1}".format(
|
||||
utils.get_vmlinux(), hex(kaslr_offset_phys)))
|
||||
kaslr_offset = gdb.parse_and_eval("vm_layout.kaslr_offset")
|
||||
return "KERNELOFFSET=" + hex(kaslr_offset)[2:]
|
||||
inferior = gdb.selected_inferior()
|
||||
elf_note = inferior.read_memory(paddr_vmcoreinfo_note, 12)
|
||||
n_namesz, n_descsz, n_type = struct.unpack(">III", elf_note)
|
||||
@@ -178,11 +184,7 @@ lx-symbols command."""
|
||||
saved_states.append({'breakpoint': bp, 'enabled': bp.enabled})
|
||||
|
||||
# drop all current symbols and reload vmlinux
|
||||
orig_vmlinux = 'vmlinux'
|
||||
for obj in gdb.objfiles():
|
||||
if (obj.filename.endswith('vmlinux') or
|
||||
obj.filename.endswith('vmlinux.debug')):
|
||||
orig_vmlinux = obj.filename
|
||||
orig_vmlinux = utils.get_vmlinux()
|
||||
gdb.execute("symbol-file", to_string=True)
|
||||
kerneloffset = get_kerneloffset()
|
||||
if kerneloffset is None:
|
||||
|
||||
@@ -200,7 +200,7 @@ def get_gdbserver_type():
|
||||
|
||||
def probe_kgdb():
|
||||
try:
|
||||
thread_info = gdb.execute("info thread 2", to_string=True)
|
||||
thread_info = gdb.execute("info thread 1", to_string=True)
|
||||
return "shadowCPU" in thread_info
|
||||
except gdb.error:
|
||||
return False
|
||||
@@ -251,3 +251,23 @@ def parse_vmcore(s):
|
||||
else:
|
||||
kerneloffset = int(match.group(1), 16)
|
||||
return VmCore(kerneloffset=kerneloffset)
|
||||
|
||||
|
||||
def get_vmlinux():
|
||||
vmlinux = 'vmlinux'
|
||||
for obj in gdb.objfiles():
|
||||
if (obj.filename.endswith('vmlinux') or
|
||||
obj.filename.endswith('vmlinux.debug')):
|
||||
vmlinux = obj.filename
|
||||
return vmlinux
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def pagination_off():
|
||||
show_pagination = gdb.execute("show pagination", to_string=True)
|
||||
pagination = show_pagination.endswith("on.\n")
|
||||
gdb.execute("set pagination off")
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
gdb.execute("set pagination %s" % ("on" if pagination else "off"))
|
||||
|
||||
Reference in New Issue
Block a user