Messages in this thread | | | Date | Sun, 3 Mar 2013 19:32:23 +0000 | From | Al Viro <> | Subject | Re: [RFC][PATCH] making vfree() safe from interrupt contexts |
| |
On Sun, Mar 03, 2013 at 06:47:36PM +0000, Al Viro wrote: > To bring back the thing discussed back in, IIRC, December: we have > a bunch of places where inability to do vfree() from interrupt contexts > (the most common case is doing that from RCU callback) leads to very > ugly open-coded schemes that delay it one way or another. We can let vfree() > itself do that instead. AFAICS, it works; the diff below covers several > obvious cases found just by grep. I'm fairly sure that there's more code > that could benefit from that... > > I'm not sure which tree should it go through, though. Suggestions? > The reason I'm interested in this sucker is the mess in fs/file.c (fdtable > freeing), but the main change here is in mm/vmalloc.c... > > Note that the patch obviously ought to be split - mm/vmalloc.c > part, allowing vfree() in interrupt contexts (current mainline has > BUG_ON() triggered in that case) and a chunk for each ad-hoc vfree() > deferral scheme killed. > > Comments?
BTW, looking a bit more shows another place that might benefit from that - kernel/events/ring_buffer.c:rb_free_work() is called via schedule_work() and I don't see anything in it besides vfree() that would demand that kind of treatment.
| |