From 40f0b323673af1464d9afc497bdb0c1be8f6c43b Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Jul 2012 02:57:54 +0000 Subject: [PATCH] linux-image: Include package version along with kernel release in stack traces Currently only some architectures (arm,ia64,powerpc,s390,sh,x86) include the kernel release. Don't add the package version on other architectures at this time, as it's less obvious where it should go. svn path=/dists/sid/linux/; revision=19290 --- debian/changelog | 2 + debian/patches/debian/version.patch | 211 +++++++++++++++++++++++++++- 2 files changed, 210 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index f739b19df..6f18db76a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ linux (3.2.23-2) UNRELEASED; urgency=low * linux-image: Include package version in utsname version string ('uname -v' output) (Closes: #638878) * linux-source: Drop support for version.$DISTRIBUTION + * [arm,ia64,powerpc,s390,sh,x86] linux-image: Include package version + in stack traces from WARN, BUG, Oops etc. -- Ben Hutchings Tue, 24 Jul 2012 02:20:37 +0100 diff --git a/debian/patches/debian/version.patch b/debian/patches/debian/version.patch index 0f296e6b9..c72ccb916 100644 --- a/debian/patches/debian/version.patch +++ b/debian/patches/debian/version.patch @@ -1,6 +1,6 @@ From: Ben Hutchings -Subject: Add header file with package version information -Date: Tue, 24 Jul 2012 02:15:43 +0100 +Subject: Include package version along with kernel release in stack traces +Date: Tue, 24 Jul 2012 03:13:10 +0100 For distribution binary packages we assume $DISTRIBUTION_OFFICIAL_BUILD, $DISTRIBUTOR and $DISTRIBUTION_VERSION @@ -23,7 +23,7 @@ are set. +ifneq ($(DISTRIBUTION_OFFICIAL_BUILD),) +define filechk_package.h -+ echo \#define LINUX_PACKAGE_ID \"$(DISTRIBUTOR) $(DISTRIBUTION_VERSION)\" ++ echo \#define LINUX_PACKAGE_ID \" $(DISTRIBUTOR) $(DISTRIBUTION_VERSION)\" +endef +else +define filechk_package.h @@ -43,3 +43,208 @@ are set. PHONY += headerdep headerdep: $(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \ +--- a/arch/s390/kernel/traps.c ++++ b/arch/s390/kernel/traps.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -166,11 +167,12 @@ static void show_last_breaking_event(str + */ + void dump_stack(void) + { +- printk("CPU: %d %s %s %.*s\n", ++ printk("CPU: %d %s %s %.*s%s\n", + task_thread_info(current)->cpu, print_tainted(), + init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + printk("Process %s (pid: %d, task: %p, ksp: %p)\n", + current->comm, current->pid, current, + (void *) current->thread.ksp); +@@ -217,11 +219,12 @@ void show_registers(struct pt_regs *regs + void show_regs(struct pt_regs *regs) + { + print_modules(); +- printk("CPU: %d %s %s %.*s\n", ++ printk("CPU: %d %s %s %.*s%s\n", + task_thread_info(current)->cpu, print_tainted(), + init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + printk("Process %s (pid: %d, task: %p, ksp: %p)\n", + current->comm, current->pid, current, + (void *) current->thread.ksp); +--- a/arch/x86/um/sysrq_64.c ++++ b/arch/x86/um/sysrq_64.c +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + #include + #include "sysrq.h" +@@ -16,8 +17,9 @@ void __show_regs(struct pt_regs *regs) + { + printk("\n"); + print_modules(); +- printk(KERN_INFO "Pid: %d, comm: %.20s %s %s\n", task_pid_nr(current), +- current->comm, print_tainted(), init_utsname()->release); ++ printk(KERN_INFO "Pid: %d, comm: %.20s %s %s%s\n", task_pid_nr(current), ++ current->comm, print_tainted(), init_utsname()->release, ++ LINUX_PACKAGE_ID); + printk(KERN_INFO "RIP: %04lx:[<%016lx>]\n", PT_REGS_CS(regs) & 0xffff, + PT_REGS_RIP(regs)); + printk(KERN_INFO "RSP: %016lx EFLAGS: %08lx\n", PT_REGS_SP(regs), +--- a/arch/x86/kernel/process.c ++++ b/arch/x86/kernel/process.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -105,11 +106,12 @@ void show_regs_common(void) + board = dmi_get_system_info(DMI_BOARD_NAME); + + printk(KERN_CONT "\n"); +- printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s", ++ printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s%s", + current->pid, current->comm, print_tainted(), + init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + printk(KERN_CONT " %s %s", vendor, product); + if (board) + printk(KERN_CONT "/%s", board); +--- a/arch/x86/kernel/dumpstack.c ++++ b/arch/x86/kernel/dumpstack.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + #include + +@@ -185,11 +186,12 @@ void dump_stack(void) + unsigned long stack; + + bp = stack_frame(current, NULL); +- printk("Pid: %d, comm: %.20s %s %s %.*s\n", ++ printk("Pid: %d, comm: %.20s %s %s %.*s%s\n", + current->pid, current->comm, print_tainted(), + init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + show_trace(NULL, NULL, &stack, bp); + } + EXPORT_SYMBOL(dump_stack); +--- a/arch/ia64/kernel/process.c ++++ b/arch/ia64/kernel/process.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -111,9 +112,9 @@ show_regs (struct pt_regs *regs) + print_modules(); + printk("\nPid: %d, CPU %d, comm: %20s\n", task_pid_nr(current), + smp_processor_id(), current->comm); +- printk("psr : %016lx ifs : %016lx ip : [<%016lx>] %s (%s)\n", ++ printk("psr : %016lx ifs : %016lx ip : [<%016lx>] %s (%s%s)\n", + regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(), +- init_utsname()->release); ++ init_utsname()->release, LINUX_PACKAGE_ID); + print_symbol("ip is at %s\n", ip); + printk("unat: %016lx pfs : %016lx rsc : %016lx\n", + regs->ar_unat, regs->ar_pfs, regs->ar_rsc); +--- a/arch/arm/kernel/process.c ++++ b/arch/arm/kernel/process.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -261,11 +262,12 @@ void __show_regs(struct pt_regs *regs) + unsigned long flags; + char buf[64]; + +- printk("CPU: %d %s (%s %.*s)\n", ++ printk("CPU: %d %s (%s %.*s%s)\n", + raw_smp_processor_id(), print_tainted(), + init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + print_symbol("PC is at %s\n", instruction_pointer(regs)); + print_symbol("LR is at %s\n", regs->ARM_lr); + printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" +--- a/arch/powerpc/kernel/process.c ++++ b/arch/powerpc/kernel/process.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -626,8 +627,9 @@ void show_regs(struct pt_regs * regs) + + printk("NIP: "REG" LR: "REG" CTR: "REG"\n", + regs->nip, regs->link, regs->ctr); +- printk("REGS: %p TRAP: %04lx %s (%s)\n", +- regs, regs->trap, print_tainted(), init_utsname()->release); ++ printk("REGS: %p TRAP: %04lx %s (%s%s)\n", ++ regs, regs->trap, print_tainted(), init_utsname()->release, ++ LINUX_PACKAGE_ID); + printk("MSR: "REG" ", regs->msr); + printbits(regs->msr, msr_bits); + printk(" CR: %08lx XER: %08lx\n", regs->ccr, regs->xer); +--- a/arch/sh/kernel/process_32.c ++++ b/arch/sh/kernel/process_32.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -32,10 +33,11 @@ void show_regs(struct pt_regs * regs) + { + printk("\n"); + printk("Pid : %d, Comm: \t\t%s\n", task_pid_nr(current), current->comm); +- printk("CPU : %d \t\t%s (%s %.*s)\n\n", ++ printk("CPU : %d \t\t%s (%s %.*s%s)\n\n", + smp_processor_id(), print_tainted(), init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), +- init_utsname()->version); ++ init_utsname()->version, ++ LINUX_PACKAGE_ID); + + print_symbol("PC is at %s\n", instruction_pointer(regs)); + print_symbol("PR is at %s\n", regs->pr);