linux/arch/powerpc/kernel
Michael Neuling 16c29d180b powerpc: Fix swapcontext system for VSX + old ucontext size
Since VSX support was added, we now have two sizes of ucontext_t;
the older, smaller size without the extra VSX state, and the new
larger size with the extra VSX state.  A program using the
sys_swapcontext system call and supplying smaller ucontext_t
structures will currently get an EINVAL error if the task has
used VSX (e.g. because of calling library code that uses VSX) and
the old_ctx argument is non-NULL (i.e. the program is asking for
its current context to be saved).  Thus the program will start
getting EINVAL errors on calls that previously worked.

This commit changes this behaviour so that we don't send an EINVAL in
this case.  It will now return the smaller context but the VSX MSR bit
will always be cleared to indicate that the ucontext_t doesn't include
the extra VSX state, even if the task has executed VSX instructions.

Both 32 and 64 bit cases are updated.

[paulus@samba.org - also fix some access_ok() and get_user() calls]

Thanks to Ben Herrenschmidt for noticing this problem.

Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-10-31 16:12:00 +11:00
..
vdso32
vdso64
.gitignore powerpc: Ignore generated vmlinux.lds in git 2008-10-07 14:26:18 +11:00
align.c powerpc: Fix uninitialised variable in VSX alignment code 2008-09-03 20:53:14 +10:00
asm-offsets.c Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm 2008-10-16 15:36:00 -07:00
audit.c
btext.c powerpc: Use the common ascii hex helpers 2008-08-20 16:34:57 +10:00
clock.c
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S powerpc: Remove use of CONFIG_PPC_MERGE 2008-08-04 13:18:17 +10:00
cpu_setup_pa6t.S
cpu_setup_ppc970.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
cputable.c powerpc/40x: Add AMCC PowerPC 405EZ to cputable 2008-10-17 10:31:18 -04:00
crash_dump.c powerpc: Support for relocatable kdump kernel 2008-10-22 15:01:22 +11:00
crash.c
dma-iommu.c powerpc: Drop archdata numa_node 2008-09-24 16:26:43 -05:00
dma.c powerpc: Fix DMA offset for non-coherent DMA 2008-10-14 10:35:26 +11:00
entry_32.S powerpc: Add TIF_NOTIFY_RESUME support for tracehook 2008-07-28 16:30:50 +10:00
entry_64.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
firmware.c
fpu.S
ftrace.c
head_8xx.S
head_32.S powerpc: Fix 32-bit SMP boot on CHRP 2008-10-15 10:13:29 +11:00
head_40x.S
head_44x.S
head_64.S powerpc/ppc64/kdump: Better flag for running relocatable 2008-10-31 16:11:49 +11:00
head_booke.h
head_fsl_booke.S powerpc: remove non-dependent load fsl_booke PTE_64BIT 2008-10-13 11:09:59 -05:00
ibmebus.c powerpc/ibmebus: Restore "name" sysfs attribute on ibmebus devices 2008-08-20 09:50:21 +10:00
idle_6xx.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_e500.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_power4.S
idle.c powerpc: Fix failure to shutdown with CPU hotplug 2008-09-30 13:25:06 +10:00
init_task.c
io.c
iomap.c
iommu.c powerpc: Use is_kdump_kernel() 2008-10-31 16:11:47 +11:00
irq.c powerpc: Make the irq reverse mapping radix tree lockless 2008-09-15 11:08:45 -07:00
isa-bridge.c
kgdb.c kgdb, x86, arm, mips, powerpc: ignore user space single stepping 2008-09-26 10:36:41 -05:00
kprobes.c kprobes: improve kretprobe scalability with hashed locking 2008-07-25 10:53:30 -07:00
l2cr_6xx.S
legacy_serial.c powerpc/powermac: Fixup default serial port device for pmac_zilog 2008-07-28 16:30:53 +10:00
lparcfg.c powerpc: Replace __FUNCTION__ with __func__ 2008-08-20 16:34:57 +10:00
machine_kexec_32.c kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
machine_kexec_64.c powerpc: Kexec exit should not use magic numbers 2008-10-31 16:11:44 +11:00
machine_kexec.c powerpc: Support for relocatable kdump kernel 2008-10-22 15:01:22 +11:00
Makefile powerpc: Merge 32 and 64-bit dma code 2008-09-24 16:26:45 -05:00
misc_32.S powerpc: Fix error path in kernel_thread function 2008-10-10 15:55:18 +11:00
misc_64.S powerpc: Kexec exit should not use magic numbers 2008-10-31 16:11:44 +11:00
misc.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
module_32.c
module_64.c Fix compile failure with non modular builds 2008-09-17 09:14:42 -07:00
module.c powerpc: Remove dead module_find_bug code 2008-08-18 14:22:35 +10:00
msi.c
nvram_64.c
of_device.c powerpc: Drop archdata numa_node 2008-09-24 16:26:43 -05:00
of_platform.c
paca.c powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
pci_32.c powerpc: Fix link errors on 32-bit machines using legacy DMA 2008-10-15 10:13:29 +11:00
pci_64.c powerpc: Merge 32 and 64-bit dma code 2008-09-24 16:26:45 -05:00
pci_dn.c
pci-common.c powerpc: Further compile fixup for STRICT_MM_TYPECHECKS 2008-10-22 11:00:26 +11:00
pmc.c
ppc32.h
ppc_ksyms.c powerpc: Introduce local (non-broadcast) forms of tlb invalidates 2008-09-24 16:29:40 -05:00
proc_ppc64.c
process.c powerpc: Remove use of CONFIG_PPC_MERGE 2008-08-04 13:18:17 +10:00
prom_init_check.sh powerpc: Fix build issue with CONFIG_RELOCATABLE=y 2008-10-21 15:17:49 +11:00
prom_init.c powerpc: Delete unused prom_strtoul and prom_memparse 2008-10-21 15:20:08 +11:00
prom_parse.c powerpc: Fix OF parsing of 64 bits PCI addresses 2008-07-22 10:39:34 +10:00
prom.c powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
ptrace32.c powerpc: Correctly hookup PTRACE_GET/SETVSRREGS for 32 bit processes 2008-07-30 15:26:54 +10:00
ptrace.c powerpc: Don't use the wrong thread_struct for ptrace get/set VSX regs 2008-07-30 15:26:54 +10:00
reloc_64.S powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
rtas_flash.c SL*B: drop kmem cache argument from constructor 2008-07-26 12:00:07 -07:00
rtas_pci.c
rtas-proc.c
rtas-rtc.c
rtas.c powerpc: Zero fill the return values of rtas argument buffer 2008-08-11 10:09:56 +10:00
setup_32.c powerpc: Reflect the used arguments in machine_init() prototype 2008-10-14 10:35:26 +11:00
setup_64.c powerpc: Fix compiler warning for the relocatable kernel 2008-10-31 16:11:54 +11:00
setup-common.c powerpc: Move memory size print into common show_cpuinfo for 32-bit 2008-10-22 11:00:25 +11:00
setup.h
signal_32.c powerpc: Fix swapcontext system for VSX + old ucontext size 2008-10-31 16:12:00 +11:00
signal_64.c powerpc: Fix swapcontext system for VSX + old ucontext size 2008-10-31 16:12:00 +11:00
signal.c powerpc: Add TIF_NOTIFY_RESUME support for tracehook 2008-07-28 16:30:50 +10:00
signal.h x86, um: get rid of uml signal.h 2008-10-22 22:55:20 -07:00
smp-tbsync.c
smp.c Merge commit 'origin' 2008-10-15 11:31:54 +11:00
softemu8xx.c Remove asm/a.out.h files for all architectures without a.out support. 2008-09-06 19:30:24 +01:00
stacktrace.c powerpc: Removed duplicated include in stacktrace.c 2008-07-28 16:30:47 +10:00
suspend.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
swsusp_32.S
swsusp_64.c
swsusp_asm64.S powerpc: Fix 64-bit hibernation with 64k pages 2008-10-07 14:26:20 +11:00
swsusp.c
sys_ppc32.c compat: generic compat get/settimeofday 2008-10-16 11:21:33 -07:00
syscalls.c
sysfs.c powerpc: Fix build warnings introduced by PMC support on 32-bit 2008-09-18 17:57:50 -05:00
systbl_chk.c
systbl_chk.sh
systbl.S
tau_6xx.c
time.c
traps.c Remove asm/a.out.h files for all architectures without a.out support. 2008-09-06 19:30:24 +01:00
udbg_16550.c powerpc: Unsigned speed cannot be negative in udbg_16559.c 2008-10-21 15:17:47 +11:00
udbg.c
vdso.c powerpc: Remove use of CONFIG_PPC_MERGE 2008-08-04 13:18:17 +10:00
vecemu.c
vector.S
vio.c powerpc: Drop archdata numa_node 2008-09-24 16:26:43 -05:00
vmlinux.lds.S powerpc: Work around ld bug in older binutils 2008-10-31 16:11:52 +11:00