On Tue 10-07-18 17:39:58, Amir Goldstein wrote: > [remove: linux-unionfs] > [add: Jan Kara] > > On Tue, Jul 10, 2018 at 5:16 PM, Rafael David Tinoco > <rafael.tinoco@xxxxxxxxxx> wrote: > [...] > > > Greg, > > > > As spoke in this thread last week, I have prepared a patchset for v4.9 > > tree for one of the bugs I mentioned > > (https://bugs.linaro.org/show_bug.cgi?id=3303). This bug is related to > > a dead-lock in kernel waiting for userland events (fanotify). > > > > Jan may already have backports to this bug fix? Definitely not to v4.9 as we don't have any kernel based on that version. We do have v4.4-based kernels but we didn't backport these fixes there as they are too intrusive and in principle the problem these patches are fixing is in a careless priviledged userspace application. Honza > > Short Summary of BUG: > > https://bugs.linaro.org/show_bug.cgi?id=3303#c16 > > > > Full conclusion after kdump analysis: > > https://bugs.linaro.org/show_bug.cgi?id=3303#c14 > > > > The patch list for resolution is: > > > > ** [35/35] 054c636e5c80 fsnotify: Move ->free_mark callback to fsnotify_ops > > ok [34/35] 7b1293234084 fsnotify: Add group pointer in fsnotify_init_mark() > > ok [33/35] ebb3b47e37a4 fsnotify: Drop inode_mark.c > > ok [32/35] b1362edfe15b fsnotify: Remove fsnotify_find_{inode|vfsmount}_mark() > > ok [31/35] 2e37c6ca8d76 fsnotify: Remove fsnotify_detach_group_marks() > > ok [30/35] 18f2e0d3a436 fsnotify: Rename fsnotify_clear_marks_by_group_flags() > > ok [29/35] 416bcdbcbbb4 fsnotify: Inline > > fsnotify_clear_{inode|vfsmount}_mark_group() > > ok [28/35] 8920d2734d9a fsnotify: Remove fsnotify_recalc_{inode|vfsmount}_mask() > > ok [27/35] 66d2b81bcb92 fsnotify: Remove > > fsnotify_set_mark_{,ignored_}mask_locked() > > ok [26/35] 05f0e38724e8 fanotify: Release SRCU lock when waiting for > > userspace response > > ok [25/35] 9385a84d7e1f fsnotify: Pass fsnotify_iter_info into > > handle_event handler > > ** [NEED ] 3cd5eca8d7a2 fsnotify: constify 'data' passed to ->handle_event() > > ok [24/35] abc77577a669 fsnotify: Provide framework for dropping SRCU > > lock in ->handle_event > > ok [23/35] f09b04a03e02 fsnotify: Remove special handling of mark > > destruction on group shutdown > > ok [22/35] 6b3f05d24d35 fsnotify: Detach mark from object list when > > last reference is dropped > > ok [21/35] 11375145a70d fsnotify: Move queueing of mark for > > destruction into fsnotify_put_mark() > > ok [20/35] e7253760587e inotify: Do not drop mark reference under idr_lock > > ok [19/35] 08991e83b728 fsnotify: Free fsnotify_mark_connector when > > there is no mark attached > > ok [18/35] 04662cab59fc fsnotify: Lock object list with connector lock > > ok [17/35] 2629718dd26f fsnotify: Remove useless list deletion and comment > > ok [16/35] 73cd3c33ab79 fsnotify: Avoid double locking in > > fsnotify_detach_from_object() > > ok [15/35] 8212a6097a72 fsnotify: Remove indirection from fsnotify_detach_mark() > > ok [14/35] a03e2e4f0783 fsnotify: Determine lock in fsnotify_destroy_marks() > > ok [13/35] f06fd9875945 fsnotify: Move locking into fsnotify_find_mark() > > ok [12/35] a242677bb1e6 fsnotify: Move locking into fsnotify_recalc_mask() > > ok [11/35] 0810b4f9f207 fsnotify: Move fsnotify_destroy_marks() > > ok [10/35] 755b5bc681eb fsnotify: Remove indirection from mark list addition > > ok [09/35] e911d8af87db fsnotify: Make fsnotify_mark_connector hold > > inode reference > > ok [08/35] 86ffe245c430 fsnotify: Move object pointer to fsnotify_mark_connector > > ok [NEED ] be29d20f3f5d audit: Fix sleep in atomic > > ok [NEED ] e3ba730702af fsnotify: Remove fsnotify_duplicate_mark() > > ** [07/35] 9dd813c15b2c fsnotify: Move mark list head from object into > > dedicated structure -> THIS ONE > > ok [06/35] c1f33073ac1b fsnotify: Update comments > > ok [05/35] 43471d15df0e audit_tree: Use mark flags to check whether > > mark is alive > > ok [04/35] f410ff65548c audit: Abstract hash key handling > > ok [03/35] c97476400d3b fanotify: Move recalculation of inode / > > vfsmount mask under mark_mutex > > ok [02/35] 25c829afbd74 inotify: Remove inode pointers from debug messages > > ok [01/35] 5198adf649a0 fsnotify: Remove unnecessary tests when showing fdinfo > > > > ok = cherry-pick (no changes needed) > > ** = backport > > [NEED] = needed for original patchset to be cherry-picked > > > > (Original patchset came from > > https://www.spinics.net/lists/linux-fsdevel/msg109131.html and there > > was 3 backports for positional changes and 3 patches to satisfy the > > cherry-picks). > > > > And it merges with no issues in stable v4.9 tree (as you can see in > > https://bugs.linaro.org/show_bug.cgi?id=3303#c21). I can submit in a > > thread in stable list if you are willing to move further. > > > > As you can see, this patchset solves the issue: > > > > BUG [unpatched] https://bugs.linaro.org/show_bug.cgi?id=3303#c18 > > SOLVED [patched] https://bugs.linaro.org/show_bug.cgi?id=3303#c19 > > > > And introduces NO regressions in LTP or KSELFTEST: > > > > KSELFTEST: https://bugs.linaro.org/show_bug.cgi?id=3303#c23 > > LTP: https://bugs.linaro.org/show_bug.cgi?id=3303#c27 > > > > I think now we've reached the "It depends" phase =). Let me know if > > you think this is good to be acceptable for v4.9. We can run full > > round of tests (on all boards and x86/amd64) if you choose to pull > > this, during stable review. > > > > I can try same thing for v4.4 if it is worth. > > > > Cheers o/ > > > > -Rafael -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR