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);