lkml.org 
[lkml]   [2016]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 2/6] mm: mark all calls into the vmalloc subsystem as potentially sleeping
    Hi Christoph,

    On Wed, Oct 19, 2016 at 9:31 AM, Christoph Hellwig <hch@lst.de> wrote:
    > On Wed, Oct 19, 2016 at 08:34:40AM -0700, Andy Lutomirski wrote:
    >>
    >> It would be quite awkward for a task stack to get freed from a
    >> sleepable context, because the obvious sleepable context is the task
    >> itself, and it still needs its stack. This was true even in the old
    >> regime when task stacks were freed from RCU context.
    >>
    >> But vfree has a magic automatic deferral mechanism. Couldn't you make
    >> the non-deferred case might_sleep()?
    >
    > But it's only magic from interrupt context..
    >
    > Chris, does this patch make virtually mapped stack work for you again?
    >
    > diff --git a/mm/vmalloc.c b/mm/vmalloc.c
    > index f2481cb..942e02d 100644
    > --- a/mm/vmalloc.c
    > +++ b/mm/vmalloc.c
    > @@ -1533,7 +1533,7 @@ void vfree(const void *addr)
    >
    > if (!addr)
    > return;
    > - if (unlikely(in_interrupt())) {
    > + if (in_interrupt() || in_atomic()) {

    in_atomic() also checks in_interrupt() cases so only in_atomic() should suffice.

    Thanks,

    Joel

    \
     
     \ /
      Last update: 2016-10-21 02:33    [W:3.106 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site