aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds
diff options
context:
space:
mode:
authorNelson Elhage <nelhage@nelhage.com>2011-10-31 17:13:14 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-11-11 09:35:29 -0800
commit3dbbae24b399adc22957217d579d53ae363f090f (patch)
tree7b4a498ddc39d037f4d1b9d052961ff6805f6ec0 /drivers/leds
parent2f3f49d0afbeb318b096f09fccaf8747251afccf (diff)
downloadkernel_samsung_smdk4412-3dbbae24b399adc22957217d579d53ae363f090f.zip
kernel_samsung_smdk4412-3dbbae24b399adc22957217d579d53ae363f090f.tar.gz
kernel_samsung_smdk4412-3dbbae24b399adc22957217d579d53ae363f090f.tar.bz2
epoll: fix spurious lockdep warnings
commit d8805e633e054c816c47cb6e727c81f156d9253d upstream. epoll can acquire recursively acquire ep->mtx on multiple "struct eventpoll"s at once in the case where one epoll fd is monitoring another epoll fd. This is perfectly OK, since we're careful about the lock ordering, but it causes spurious lockdep warnings. Annotate the recursion using mutex_lock_nested, and add a comment explaining the nesting rules for good measure. Recent versions of systemd are triggering this, and it can also be demonstrated with the following trivial test program: --------------------8<-------------------- int main(void) { int e1, e2; struct epoll_event evt = { .events = EPOLLIN }; e1 = epoll_create1(0); e2 = epoll_create1(0); epoll_ctl(e1, EPOLL_CTL_ADD, e2, &evt); return 0; } --------------------8<-------------------- Reported-by: Paul Bolle <pebolle@tiscali.nl> Tested-by: Paul Bolle <pebolle@tiscali.nl> Signed-off-by: Nelson Elhage <nelhage@nelhage.com> Acked-by: Jason Baron <jbaron@redhat.com> Cc: Dave Jones <davej@redhat.com> Cc: Davide Libenzi <davidel@xmailserver.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/leds')
0 files changed, 0 insertions, 0 deletions