Hi Christoph, On Wed, Oct 19, 2016 at 9:31 AM, Christoph Hellwig <hch@xxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html