Messages in this thread | | | Subject | Re: [PATCH] Powerpc/Watchpoint: Restore nvgprs while returning from exception | From | Ravi Bangoria <> | Date | Fri, 7 Jun 2019 08:47:47 +0530 |
| |
On 6/7/19 6:20 AM, Michael Neuling wrote: > On Thu, 2019-06-06 at 12:59 +0530, Ravi Bangoria wrote: >> Powerpc hw triggers watchpoint before executing the instruction. >> To make trigger-after-execute behavior, kernel emulates the >> instruction. If the instruction is 'load something into non- >> volatile register', exception handler should restore emulated >> register state while returning back, otherwise there will be >> register state corruption. Ex, Adding a watchpoint on a list >> can corrput the list: >> >> # cat /proc/kallsyms | grep kthread_create_list >> c00000000121c8b8 d kthread_create_list >> >> Add watchpoint on kthread_create_list->next: >> >> # perf record -e mem:0xc00000000121c8c0 >> >> Run some workload such that new kthread gets invoked. Ex, I >> just logged out from console: >> >> list_add corruption. next->prev should be prev (c000000001214e00), \ >> but was c00000000121c8b8. (next=c00000000121c8b8). >> WARNING: CPU: 59 PID: 309 at lib/list_debug.c:25 __list_add_valid+0xb4/0xc0 >> CPU: 59 PID: 309 Comm: kworker/59:0 Kdump: loaded Not tainted 5.1.0-rc7+ #69 >> ... >> NIP __list_add_valid+0xb4/0xc0 >> LR __list_add_valid+0xb0/0xc0 >> Call Trace: >> __list_add_valid+0xb0/0xc0 (unreliable) >> __kthread_create_on_node+0xe0/0x260 >> kthread_create_on_node+0x34/0x50 >> create_worker+0xe8/0x260 >> worker_thread+0x444/0x560 >> kthread+0x160/0x1a0 >> ret_from_kernel_thread+0x5c/0x70 >> >> Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> > > How long has this been around? Should we be CCing stable?
"bl .save_nvgprs" was added in the commit 5aae8a5370802 ("powerpc, hw_breakpoints: Implement hw_breakpoints for 64-bit server processors"), which was merged in v2.6.36.
| |