lkml.org 
[lkml]   [2019]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] bpf: Fix preempt_enable_no_resched() abuse
On Tue, Apr 23, 2019 at 01:27:29PM -0700, Linus Torvalds wrote:
> On Tue, Apr 23, 2019 at 12:56 PM Peter Zijlstra <peterz@infradead.org> wrote:
> >
> > Unless the very next line is schedule(), or implies it, one must not use
> > preempt_enable_no_resched(). It can cause a preemption to go missing and
> > thereby cause arbitrary delays, breaking the PREEMPT=y invariant.
>
> That language may be a bit strong, or m,aybe the "implies it" might at
> least be extended on.
>
> It doesn't need to be "schedule()" per se, it can be any of the things
> that check if we _need_ to be scheduled.

I'll try and word-smith that tomorrow, brain is fried. But yes,
something that ends up in schedule() 'soon'.

The usage in ist_exit() is particularly 'fun'. That really should've had
a comment. That relies on the return-from-interrupt path.

> IOW, various variations of "if (need_resched())" exiting a loop, and
> then outside the loop there's a cond_resched() or similar.

That one 'funnily' doesn't actually work; cond_resched() is a no-op on
PREEMPT=y.

\
 
 \ /
  Last update: 2019-04-23 22:35    [W:0.144 / U:5.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site