Messages in this thread | | | Date | Tue, 17 Mar 2020 09:34:43 -0700 | From | Davidlohr Bueso <> | Subject | Re: [PATCH v2] fs/epoll: make nesting accounting safe for -rt kernel |
| |
On Wed, 26 Feb 2020, Jason Baron wrote:
>Davidlohr Bueso pointed out that when CONFIG_DEBUG_LOCK_ALLOC is set >ep_poll_safewake() can take several non-raw spinlocks after disabling >interrupts. Since a spinlock can block in the -rt kernel, we can't take a >spinlock after disabling interrupts. So let's re-work how we determine >the nesting level such that it plays nicely with the -rt kernel. > >Let's introduce a 'nests' field in struct eventpoll that records the >current nesting level during ep_poll_callback(). Then, if we nest again we >can find the previous struct eventpoll that we were called from and >increase our count by 1. The 'nests' field is protected by >ep->poll_wait.lock. > >I've also moved the visited field to reduce the size of struct eventpoll >from 184 bytes to 176 bytes on x86_64 for !CONFIG_DEBUG_LOCK_ALLOC, >which is typical for a production config. > >Reported-by: Davidlohr Bueso <dbueso@suse.de> >Signed-off-by: Jason Baron <jbaron@akamai.com>
Sorry for the tardy reply. This looks good to me:
Reviewed-by: Davidlohr Bueso <dbueso@suse.de>
| |