Removing dead code
Subsystems (2)
cover Removing dead code
Hi all!
As part of the VAMOS[0] research project at the University of
Erlangen we are looking at multiple integrity errors in linux' configuration system.
I've been running a check on the arch/um sourcetree for config
Items not defined in Kconfig and found 10 such cases. Sourcecode blocks depending on these Items are not reachable from a vanilla kernel -- dead code. I've seen such dead blocks made on purpose e.g. while integrating new features into the kernel but generally they're just useless.
Each of the patches in this patchset removes on such dead
config Item, I'd be glad if you consider applying them. I've been doing deeper analysis of such issues before and can do so again but I'm not so sure they were fastly usefull.
I build the patches against a vanilla kernel in order to
try if the kernel compiles with this patches. As reported earlier today the build currently fails for plain um but adding this patchset doesn't change the failing in any way. That was a i386 build.
Please keep me informed of this patch getting confirmed /
merged so we can keep track of it.
Regards
Christoph Egger
[0] http://vamos1.informatik.uni-erlangen.de/
Christoph Egger (3):
Removing dead PROC_MM
Removing conditionalizing containing exactly the same code Removing dead copy&paste code
arch/um/kernel/ptrace.c | 21 --------------------- arch/um/sys-i386/asm/archparam.h | 4 ---- arch/um/sys-i386/shared/sysdep/system.h | 11 +---------- arch/um/sys-ppc/misc.S | 6 ------ arch/um/sys-ppc/shared/sysdep/ptrace.h | 5 +---- arch/um/sys-x86_64/shared/sysdep/system.h | 10 +--------- 6 files changed, 3 insertions(+), 54 deletions(-)
PATCH 1/3 Removing dead PROC_MM
PROC_MM doesn't exist in Kconfig. Looking around it looks like a left-over from 2.6.0 or even 2.4 times, last mentioned in a fedora patch for 2.6.10. I believe it's time to get rid of that last tiny parts here that are still around.
--- arch/um/kernel/ptrace.c | 21 --------------------- 1 files changed, 0 insertions(+), 21 deletions(-)
arch/um/kernel/ptrace.c +0 -21
@@ -7,9 +7,6 @@#include "linux/ptrace.h" #include "linux/sched.h" #include "asm/uaccess.h" -#ifdef CONFIG_PROC_MM -#include "proc_mm.h" -#endif #include "skas_ptrace.h"
@@ -158,24 +155,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) break; }#endif -#ifdef CONFIG_PROC_MM -case PTRACE_SWITCH_MM : { -struct mm_struct *old = child->mm; -struct mm_struct *new =proc_mm_get_mm (data); - -if (IS_ERR (new)) { - ret =PTR_ERR (new); -break ; - } - -atomic_inc (&new->mm_users); - child->mm = new; - child->active_mm = new; -mmput (old); - ret =0 ; -break ; - } -#endif #ifdef PTRACE_ARCH_PRCTL case PTRACE_ARCH_PRCTL :/* XXX Calls ptrace on the host - needs some SMP thinking */
Signature · 1 line
1.7.0.4
PATCH 2/3 Removing conditionalizing containing exactly the same code
In reply to Christoph EggerFound this because there's no PPC64 in um, however both branches of this ifdef contain the exactly same code (modulo comment).
--- arch/um/sys-ppc/shared/sysdep/ptrace.h | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-)
arch/um/sys-ppc/shared/sysdep/ptrace.h +1 -4
@@ -9,11 +9,8 @@/* the following taken from <asm-ppc/ptrace.h> */ -#ifdef CONFIG_PPC64 -#define PPC_REG unsigned long/*long*/ -#else #define PPC_REG unsigned long -#endif +struct sys_pt_regs_s {PPC_REG gpr[32 ];PPC_REG nip;
Signature · 1 line
1.7.0.4
PATCH 3/3 Removing dead copy&paste code
In reply to Christoph EggerIn arch/um there's a lot of code that is copied from their original arch (but out of sync) and contains code blocks that are either dead because these options disappearedd or because the arch/x86 Kconfig stuff doesn't reach arch/um.
X86_OOSTORE is a bit tricky because it's in itself seemingly available on arch/um but depends on MTRR which isn't in arch/um.
--- arch/um/sys-i386/asm/archparam.h | 4 ---- arch/um/sys-i386/shared/sysdep/system.h | 11 +---------- arch/um/sys-ppc/misc.S | 6 ------ arch/um/sys-x86_64/shared/sysdep/system.h | 10 +--------- 4 files changed, 2 insertions(+), 29 deletions(-)
arch/um/sys-i386/asm/archparam.h +0 -4
@@ -6,11 +6,7 @@#ifndef __UM_ARCHPARAM_I386_H#define __UM_ARCHPARAM_I386_H -#ifdef CONFIG_X86_PAE -#define LAST_PKMAP 512 -#else #define LAST_PKMAP 1024 -#endif #endif
arch/um/sys-i386/shared/sysdep/system.h +1 -10
@@ -10,12 +10,7 @@#include <linux/kernel.h> #include <linux/irqflags.h> -/* entries in ARCH_DLINFO: */ -#ifdef CONFIG_IA32_EMULATION -# define AT_VECTOR_SIZE_ARCH 2 -#else -# define AT_VECTOR_SIZE_ARCH 1 -#endif +#define AT_VECTOR_SIZE_ARCH 1extern unsigned long arch_align_stack (unsigned long sp);
@@ -101,11 +96,7 @@ void default_idle(void);#else # define smp_rmb () barrier()#endif -#ifdef CONFIG_X86_OOSTORE -# define smp_wmb () wmb() -#else # define smp_wmb () barrier() -#endif #define smp_read_barrier_depends () read_barrier_depends()#define set_mb (var, value) do { (void)xchg(&var, value); } while (0)#else
arch/um/sys-ppc/misc.S +0 -6
@@ -18,15 +18,9 @@ #include <asm/processor.h> #include "ppc_asm.h" -#if defined(CONFIG_4xx) || defined(CONFIG_8xx) -#define CACHE_LINE_SIZE 16 -#define LG_CACHE_LINE_SIZE 4 -#define MAX_COPY_PREFETCH 1 -#else #define CACHE_LINE_SIZE 32 #define LG_CACHE_LINE_SIZE 5 #define MAX_COPY_PREFETCH 4 -#endif /* CONFIG_4xx || CONFIG_8xx */ .text
arch/um/sys-x86_64/shared/sysdep/system.h +1 -9
@@ -11,11 +11,7 @@#include <linux/irqflags.h> /* entries in ARCH_DLINFO: */ -#ifdef CONFIG_IA32_EMULATION -# define AT_VECTOR_SIZE_ARCH 2 -#else -# define AT_VECTOR_SIZE_ARCH 1 -#endif +#define AT_VECTOR_SIZE_ARCH 1extern unsigned long arch_align_stack (unsigned long sp);
@@ -101,11 +97,7 @@ void default_idle(void);#else # define smp_rmb () barrier()#endif -#ifdef CONFIG_X86_OOSTORE -# define smp_wmb () wmb() -#else # define smp_wmb () barrier() -#endif #define smp_read_barrier_depends () read_barrier_depends()#define set_mb (var, value) do { (void)xchg(&var, value); } while (0)#else
Signature · 1 line
1.7.0.4