Files
android_kernel_xiaomi_sm8450/arch/powerpc/include/asm
Cyril Bur c7a318ba86 powerpc/ptrace: Fix coredump since ptrace TM changes
Commit 8d460f6156 ("powerpc/process: Add the function
flush_tmregs_to_thread") added flush_tmregs_to_thread() and included
the assumption that it would only be called for a task which is not
current.

Although this is correct for ptrace, when generating a core dump, some
of the routines which call flush_tmregs_to_thread() are called. This
leads to a WARNing such as:

  Not expecting ptrace on self: TM regs may be incorrect
  ------------[ cut here ]------------
  WARNING: CPU: 123 PID: 7727 at arch/powerpc/kernel/process.c:1088 flush_tmregs_to_thread+0x78/0x80
  CPU: 123 PID: 7727 Comm: libvirtd Not tainted 4.8.0-rc1-gcc6x-g61e8a0d #1
  task: c000000fe631b600 task.stack: c000000fe63b0000
  NIP: c00000000001a1a8 LR: c00000000001a1a4 CTR: c000000000717780
  REGS: c000000fe63b3420 TRAP: 0700   Not tainted  (4.8.0-rc1-gcc6x-g61e8a0d)
  MSR: 900000010282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]>  CR: 28004222  XER: 20000000
  ...
  NIP [c00000000001a1a8] flush_tmregs_to_thread+0x78/0x80
  LR [c00000000001a1a4] flush_tmregs_to_thread+0x74/0x80
  Call Trace:
   flush_tmregs_to_thread+0x74/0x80 (unreliable)
   vsr_get+0x64/0x1a0
   elf_core_dump+0x604/0x1430
   do_coredump+0x5fc/0x1200
   get_signal+0x398/0x740
   do_signal+0x54/0x2b0
   do_notify_resume+0x98/0xb0
   ret_from_except_lite+0x70/0x74

So fix flush_tmregs_to_thread() to detect the case where it is called on
current, and a transaction is active, and in that case flush the TM regs
to the thread_struct.

This patch also moves flush_tmregs_to_thread() into ptrace.c as it is
only called from that file.

Fixes: 8d460f6156 ("powerpc/process: Add the function flush_tmregs_to_thread")
Signed-off-by: Cyril Bur <cyrilbur@gmail.com>
[mpe: Flesh out change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-08-10 16:34:20 +10:00
..
2016-01-12 20:46:53 +02:00
2011-03-31 11:26:23 -03:00
2015-07-13 10:10:54 +10:00
2013-04-18 13:03:53 +10:00
2015-05-28 15:31:53 +02:00
2016-06-21 15:30:56 +10:00
2014-04-09 12:53:28 +10:00
2012-03-28 18:30:02 +01:00
2011-11-08 14:51:46 +11:00
2014-06-25 18:49:40 -05:00
2015-01-12 05:04:13 -08:00
2015-02-03 18:47:18 +01:00
2016-03-04 23:50:27 -06:00
2014-11-03 12:12:32 +11:00
2016-03-01 19:27:20 +11:00
2016-03-01 19:27:20 +11:00
2015-02-23 14:52:04 +11:00
2015-10-06 14:52:48 -04:00
2016-01-15 17:56:32 -08:00
2011-07-26 16:49:47 -07:00
2013-12-09 11:40:25 +11:00
2010-05-05 09:11:10 -04:00
2016-07-19 20:17:07 +10:00
2011-03-31 11:26:23 -03:00
2016-05-11 21:53:49 +10:00
2016-06-14 13:58:26 +10:00
2016-06-21 15:30:56 +10:00
2016-06-14 13:58:26 +10:00
2016-06-14 13:58:26 +10:00
2016-08-01 11:15:03 +10:00
2013-11-06 14:13:49 +11:00
2012-09-17 16:31:51 +10:00
2011-03-31 11:26:23 -03:00
2016-07-21 18:51:42 +10:00
2016-06-14 13:58:26 +10:00
2014-02-17 11:19:37 +11:00
2015-05-05 13:35:39 -06:00