Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull regset conversion fix from Al Viro: "Fix a regression from an unnoticed bisect hazard in the regset series. A bunch of old (aout, originally) primitives used by coredumps became dead code after fdpic conversion to regsets. Removal of that dead code had been the first commit in the followups to regset series; unfortunately, it happened to hide the bisect hazard on sh (extern for fpregs_get() had not been updated in the main series when it should have been; followup simply made fpregs_get() static). And without that followup commit this bisect hazard became breakage in the mainline" Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: kill unused dump_fpu() instances
This commit is contained in:
@@ -530,52 +530,18 @@ do_copy_task_regs (struct task_struct *task, struct unw_frame_info *info, void *
|
||||
unw_get_ar(info, UNW_AR_SSD, &dst[56]);
|
||||
}
|
||||
|
||||
void
|
||||
do_dump_task_fpu (struct task_struct *task, struct unw_frame_info *info, void *arg)
|
||||
{
|
||||
elf_fpreg_t *dst = arg;
|
||||
int i;
|
||||
|
||||
memset(dst, 0, sizeof(elf_fpregset_t)); /* don't leak any "random" bits */
|
||||
|
||||
if (unw_unwind_to_user(info) < 0)
|
||||
return;
|
||||
|
||||
/* f0 is 0.0, f1 is 1.0 */
|
||||
|
||||
for (i = 2; i < 32; ++i)
|
||||
unw_get_fr(info, i, dst + i);
|
||||
|
||||
ia64_flush_fph(task);
|
||||
if ((task->thread.flags & IA64_THREAD_FPH_VALID) != 0)
|
||||
memcpy(dst + 32, task->thread.fph, 96*16);
|
||||
}
|
||||
|
||||
void
|
||||
do_copy_regs (struct unw_frame_info *info, void *arg)
|
||||
{
|
||||
do_copy_task_regs(current, info, arg);
|
||||
}
|
||||
|
||||
void
|
||||
do_dump_fpu (struct unw_frame_info *info, void *arg)
|
||||
{
|
||||
do_dump_task_fpu(current, info, arg);
|
||||
}
|
||||
|
||||
void
|
||||
ia64_elf_core_copy_regs (struct pt_regs *pt, elf_gregset_t dst)
|
||||
{
|
||||
unw_init_running(do_copy_regs, dst);
|
||||
}
|
||||
|
||||
int
|
||||
dump_fpu (struct pt_regs *pt, elf_fpregset_t dst)
|
||||
{
|
||||
unw_init_running(do_dump_fpu, dst);
|
||||
return 1; /* f0-f31 are always valid so we always return 1 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Flush thread state. This is called when a thread does an execve().
|
||||
*/
|
||||
|
Reference in New Issue
Block a user