linux/include
Roland McGrath 6ea65ff79c [PATCH] i386: clear segment register padding in core dumps
The segment register slots in struct pt_regs are padded to 32 bits.
Some of these are stored with instructions like "pushl %es", which
leaves the high 16 bits as they were.  So the high bits of these
fields in struct pt_regs contain kernel stack garbage.  These bits are
ignored by everything and never leak to user space, except in core
dumps.  The user struct pt_regs is always at the base of the thread's
kernel stack and so it seems unlikely the information that leaks from
here is ever worthwhile so as to be a security concern, but I'm not
sure about that.  It has been this way for ages; userland consumers of
core dumps all mask off these high bits themselves.  So it is not urgent.

This change masks off the padding bits of the segment register slots
in core dumps.  ptrace already masks off these high bits, so this
makes the values in core dumps consistent with what ptrace would
report just before the process died.

As I read the processor manuals, the cs and ss values will always be
padded with zero bits rather than stack garbage.  But unlike "pushl %es",
this is not simple to test with a userland program.  So I added the two
instructions rather than wonder if they are really never necessary.

I think that x86_64 does not have this problem (for either 32-bit or
64-bit processes).  It only uses "mov" instructions from segment
registers, which zero-extend.

Signed-off-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-03-23 15:32:58 -07:00
..
acpi Pull bugzilla-8171 into release branch 2007-03-20 11:06:00 -04:00
asm-alpha
asm-arm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2007-03-19 20:05:16 -07:00
asm-arm26
asm-avr32 [PATCH] gpio_direction_output() needs an initial value 2007-03-16 19:25:04 -07:00
asm-cris
asm-frv
asm-generic Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant" 2007-03-06 19:38:01 -08:00
asm-h8300
asm-i386 [PATCH] i386: clear segment register padding in core dumps 2007-03-23 15:32:58 -07:00
asm-ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-03-21 19:45:50 -07:00
asm-m32r [PATCH] m32r dma-mapping.h should simply include generic/dma-mapping-broken.h 2007-03-14 15:27:49 -07:00
asm-m68k [PATCH] m68k dma-mapping: gfp_t annotations 2007-03-14 15:27:51 -07:00
asm-m68knommu [PATCH] m68knommu: GPIO line defines for the ColdFire 5282 2007-03-06 18:08:38 -08:00
asm-mips ide: remove static prototypes from include/asm-mips/mach-au1x00/au1xxx_ide.h 2007-03-17 21:57:24 +01:00
asm-parisc
asm-powerpc [POWERPC] Avoid hypervisor statistics calculation in real mode 2007-03-22 15:01:43 +11:00
asm-ppc
asm-s390 [S390] Wire up sys_utimes. 2007-03-19 13:19:07 +01:00
asm-sh sh: Fix bogus regs pointer in do_IRQ(). 2007-03-14 13:03:35 +09:00
asm-sh64
asm-sparc [PATCH] sparc: have dma-mapping.h include generic/dma-mapping-broken in non-PCI case 2007-03-14 15:27:49 -07:00
asm-sparc64 [SPARC64]: Get DEBUG_PAGEALLOC working again. 2007-03-16 17:20:28 -07:00
asm-um
asm-v850
asm-x86_64 x86-64: add "local_apic_timer_c2_ok" here too 2007-03-23 11:32:31 -07:00
asm-xtensa
crypto
keys
linux [PATCH] lockdep: lockdep_depth vs. debug_locks 2007-03-22 19:39:06 -07:00
math-emu
media
mtd
net [SCTP]: Reset some transport and association variables on restart 2007-03-20 00:09:45 -07:00
pcmcia
rdma
rxrpc
scsi
sound [ALSA] version 1.0.14rc3 2007-03-14 08:25:52 +01:00
video
Kbuild