lkml.org 
[lkml]   [2016]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] arm64: reenable interrupt when handling ptrace breakpoint
From
Date
On 12/21/2015 9:00 AM, Will Deacon wrote:
> On Mon, Dec 21, 2015 at 05:51:22PM +0100, Thomas Gleixner wrote:
>> On Mon, 21 Dec 2015, Will Deacon wrote:
>>> +static void send_user_sigtrap(int si_code)
>>> +{
>>> + struct pt_regs *regs = current_pt_regs();
>>> + siginfo_t info = {
>>> + .si_signo = SIGTRAP,
>>> + .si_errno = 0,
>>> + .si_code = si_code,
>>> + .si_addr = (void __user *)instruction_pointer(regs),
>>> + };
>>> +
>>> + if (WARN_ON(!user_mode(regs)))
>>> + return;
>>> +
>>> + preempt_disable();
>>
>> That doesn't work on RT either. force_sig_info() takes task->sighand->siglock,
>> which is a 'sleeping' spinlock on RT.
>
> Ah, I missed that :/
>
>> Why would we need to disable preemption here at all? What's the problem of
>> being preempted or even migrated?
>
> There *might* not be a problem, I'm just really nervous about changing
> the behaviour on the debug path and subtly changing how ptrace behaves.
>
> My worry was that you could somehow get back into the tracer, and it
> could remove a software breakpoint in the knowledge that it wouldn't
> see any future (spurious) SIGTRAPs for that location.
>
> Without a concrete example, however, I guess I'll bite the bullet and
> enable irqs across the call to force_sig_info, since there is clearly a
> real issue here on RT.

Hi Will,

This might be buried in email storm during the holiday. Just want to
double check the status. I'm supposed there is no objection for getting
it merged in upstream?

Thanks,
Yang

>
> Will
>

\
 
 \ /
  Last update: 2016-01-12 21:41    [W:0.068 / U:0.592 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site