bisecting cause commit starting from 3dbdb38e286903ec220aaf1fb29a8d94297da246 building syzkaller on 55aa55c24fe77aae07d530662f91b4d50c4990f0 testing commit 3dbdb38e286903ec220aaf1fb29a8d94297da246 with gcc (GCC) 10.2.1 20210217 kernel signature: 8481f9b2f2a7ab11d955c97afbc70c98b55326b531dbb64e72a19810026b3ae0 run #0: basic kernel testing failed: BUG: sleeping function called from invalid context in stack_depot_save run #1: crashed: BUG: sleeping function called from invalid context in lock_sock_nested run #2: crashed: possible deadlock in fs_reclaim_acquire run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK reproducer seems to be flaky testing release v5.13 testing commit 62fb9874f5da54fdb243003b386128037319b219 with gcc (GCC) 10.2.1 20210217 kernel signature: b2b01d09ecb07ab9e2391336ffec13128978f4df5fdf36ea6198ee0e3ee4b360 run #0: crashed: BUG: sleeping function called from invalid context in lock_sock_nested run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK testing release v5.12 testing commit 9f4ad9e425a1d3b6a34617b8ea226d56a119a717 with gcc (GCC) 10.2.1 20210217 kernel signature: c0aa1dc77972e653d27b1131ed0a6e6fe8407d5227a7d01b1cbd0807e2bc6832 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: crashed: unregister_netdevice: waiting for DEV to become free run #4: crashed: unregister_netdevice: waiting for DEV to become free run #5: crashed: unregister_netdevice: waiting for DEV to become free run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK testing release v5.11 testing commit f40ddce88593482919761f74910f42f4b84c004b with gcc (GCC) 10.2.1 20210217 kernel signature: 59429d7110393b80e968a6073c424269fda16f0fb48472977ad8a8aa35716445 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK testing release v5.10 testing commit 2c85ebc57b3e1817b6ce1a6b703928e113a90442 with gcc (GCC) 10.2.1 20210217 kernel signature: 7514265c9e85742a3f4c15542d7efe97c68c310f00b1d803b2de34e4a535b0fb all runs: OK # git bisect start f40ddce88593482919761f74910f42f4b84c004b 2c85ebc57b3e1817b6ce1a6b703928e113a90442 Bisecting: 7761 revisions left to test after this (roughly 13 steps) [538fcf57aaee6ad78a05f52b69a99baa22b33418] Merge branches 'acpi-scan', 'acpi-pnp' and 'acpi-sleep' testing commit 538fcf57aaee6ad78a05f52b69a99baa22b33418 with gcc (GCC) 10.2.1 20210217 kernel signature: 579963c660bbfef9c8937fc6bacc744a0e936d63a98db3f748e33833fc8e74be all runs: OK # git bisect good 538fcf57aaee6ad78a05f52b69a99baa22b33418 Bisecting: 3868 revisions left to test after this (roughly 12 steps) [d64c6f96ba86bd8b97ed8d6762a8c8cc1770d214] Merge tag 'net-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net testing commit d64c6f96ba86bd8b97ed8d6762a8c8cc1770d214 with gcc (GCC) 10.2.1 20210217 kernel signature: 6594f26b0cbb60700d4100e0f26efdb2fec1baa75a883d3b859b65facdf52543 all runs: OK # git bisect good d64c6f96ba86bd8b97ed8d6762a8c8cc1770d214 Bisecting: 1934 revisions left to test after this (roughly 11 steps) [70b6ff35d62050d1573876cc0e1e078acd3e6008] cfg80211/mac80211: fix kernel-doc for SAR APIs testing commit 70b6ff35d62050d1573876cc0e1e078acd3e6008 with gcc (GCC) 10.2.1 20210217 kernel signature: 56ca8008c98ff85f3e5d943da55bf3c6747d5503d8a0231c342da6264a6f92b5 all runs: OK # git bisect good 70b6ff35d62050d1573876cc0e1e078acd3e6008 Bisecting: 965 revisions left to test after this (roughly 10 steps) [17b6c49da37f5d57d76bf352d32b0ac498e7c133] Merge tag 'x86_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip testing commit 17b6c49da37f5d57d76bf352d32b0ac498e7c133 with gcc (GCC) 10.2.1 20210217 kernel signature: fd26e9bda8136ca89a520d51db7cd9f178b59c0f504939bf6bd1b9112d4daae0 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: crashed: unregister_netdevice: waiting for DEV to become free run #4: crashed: unregister_netdevice: waiting for DEV to become free run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK # git bisect bad 17b6c49da37f5d57d76bf352d32b0ac498e7c133 Bisecting: 464 revisions left to test after this (roughly 9 steps) [e8c13a6bc8ebbef7bd099ec1061633d1c9c94d5b] Merge tag 'net-5.11-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net testing commit e8c13a6bc8ebbef7bd099ec1061633d1c9c94d5b with gcc (GCC) 10.2.1 20210217 kernel signature: fa15f016ab1db22bb4c3f046d4ddc0c2563400ef8d6ebf2146718017ae49c3b8 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: crashed: unregister_netdevice: waiting for DEV to become free run #4: crashed: unregister_netdevice: waiting for DEV to become free run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: crashed: unregister_netdevice: waiting for DEV to become free run #17: OK run #18: OK run #19: OK # git bisect bad e8c13a6bc8ebbef7bd099ec1061633d1c9c94d5b Bisecting: 241 revisions left to test after this (roughly 8 steps) [e07cd2f3e7e525fa8df334d11beceb4c1bdcc74e] Merge tag 'char-misc-5.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc testing commit e07cd2f3e7e525fa8df334d11beceb4c1bdcc74e with gcc (GCC) 10.2.1 20210217 kernel signature: 8e68ba3204d6d7507db6c49db6ddbd9a0a55b60ebbef9810448983adf43b6557 all runs: OK # git bisect good e07cd2f3e7e525fa8df334d11beceb4c1bdcc74e Bisecting: 126 revisions left to test after this (roughly 7 steps) [ea49c88f4071e2bdd55e78987f251ea54aa11004] Merge tag 'mkp-scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi testing commit ea49c88f4071e2bdd55e78987f251ea54aa11004 with gcc (GCC) 10.2.1 20210217 kernel signature: af06cd745119e0b68be8b20ca8d89c0f34a8519b8449b239e9fda7af3e31948d all runs: OK # git bisect good ea49c88f4071e2bdd55e78987f251ea54aa11004 Bisecting: 63 revisions left to test after this (roughly 6 steps) [4f3786e011940d83d7a9c365730936db96a0b233] MAINTAINERS: ipvs: move Wensong Zhang to CREDITS testing commit 4f3786e011940d83d7a9c365730936db96a0b233 with gcc (GCC) 10.2.1 20210217 kernel signature: ca3d5a54770d1f3240a7c66ad22a61a45bfdc289633abd5a79e21af6e6338c86 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: crashed: unregister_netdevice: waiting for DEV to become free run #4: crashed: unregister_netdevice: waiting for DEV to become free run #5: crashed: unregister_netdevice: waiting for DEV to become free run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: crashed: unregister_netdevice: waiting for DEV to become free # git bisect bad 4f3786e011940d83d7a9c365730936db96a0b233 Bisecting: 30 revisions left to test after this (roughly 5 steps) [ece9ab2a78afa1424c1aff45b1a95748dbc1f100] Merge branch 'bnxt_en-bug-fixes' testing commit ece9ab2a78afa1424c1aff45b1a95748dbc1f100 with gcc (GCC) 10.2.1 20210217 kernel signature: 88508ebcef188b6320c90407bb119f2f84701bb2303d574669c26e843b121146 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: OK run #4: crashed: unregister_netdevice: waiting for DEV to become free run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK # git bisect bad ece9ab2a78afa1424c1aff45b1a95748dbc1f100 Bisecting: 15 revisions left to test after this (roughly 4 steps) [f97844f9c518172f813b7ece18a9956b1f70c1bb] dt-bindings: net: renesas,etheravb: RZ/G2H needs tx-internal-delay-ps testing commit f97844f9c518172f813b7ece18a9956b1f70c1bb with gcc (GCC) 10.2.1 20210217 kernel signature: c690db43bfae394c59b34ed05f6cf534c2625f688bc2e55aeea291c51769fe9d run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK # git bisect bad f97844f9c518172f813b7ece18a9956b1f70c1bb Bisecting: 7 revisions left to test after this (roughly 3 steps) [c49243e8898233de18edfaaa5b7b261ea457f221] Merge branch 'net-fix-issues-around-register_netdevice-failures' testing commit c49243e8898233de18edfaaa5b7b261ea457f221 with gcc (GCC) 10.2.1 20210217 kernel signature: cb04e19bc254bd1faf2a23f40bcb371800baf2a00c91cddc235505bc231fc156 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK # git bisect bad c49243e8898233de18edfaaa5b7b261ea457f221 Bisecting: 3 revisions left to test after this (roughly 2 steps) [c1787ffd0d24eb93eefac2dbba0eac5700da9ff1] ppp: fix refcount underflow on channel unbridge testing commit c1787ffd0d24eb93eefac2dbba0eac5700da9ff1 with gcc (GCC) 10.2.1 20210217 kernel signature: 895011bf6106b7b3360585768702c69979c6d2382dbba417d6ad227a803ff557 all runs: OK # git bisect good c1787ffd0d24eb93eefac2dbba0eac5700da9ff1 Bisecting: 1 revision left to test after this (roughly 1 step) [c269a24ce057abfc31130960e96ab197ef6ab196] net: make free_netdev() more lenient with unregistering devices testing commit c269a24ce057abfc31130960e96ab197ef6ab196 with gcc (GCC) 10.2.1 20210217 kernel signature: 558897da10873514c1566565d45f0f9c765fa1ef26a95d25f4583e96c1ac255d all runs: OK # git bisect good c269a24ce057abfc31130960e96ab197ef6ab196 Bisecting: 0 revisions left to test after this (roughly 0 steps) [766b0515d5bec4b780750773ed3009b148df8c0a] net: make sure devices go through netdev_wait_all_refs testing commit 766b0515d5bec4b780750773ed3009b148df8c0a with gcc (GCC) 10.2.1 20210217 kernel signature: cb04e19bc254bd1faf2a23f40bcb371800baf2a00c91cddc235505bc231fc156 run #0: crashed: unregister_netdevice: waiting for DEV to become free run #1: crashed: unregister_netdevice: waiting for DEV to become free run #2: crashed: unregister_netdevice: waiting for DEV to become free run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK # git bisect bad 766b0515d5bec4b780750773ed3009b148df8c0a 766b0515d5bec4b780750773ed3009b148df8c0a is the first bad commit commit 766b0515d5bec4b780750773ed3009b148df8c0a Author: Jakub Kicinski Date: Wed Jan 6 10:40:07 2021 -0800 net: make sure devices go through netdev_wait_all_refs If register_netdevice() fails at the very last stage - the notifier call - some subsystems may have already seen it and grabbed a reference. struct net_device can't be freed right away without calling netdev_wait_all_refs(). Now that we have a clean interface in form of dev->needs_free_netdev and lenient free_netdev() we can undo what commit 93ee31f14f6f ("[NET]: Fix free_netdev on register_netdev failure.") has done and complete the unregistration path by bringing the net_set_todo() call back. After registration fails user is still expected to explicitly free the net_device, so make sure ->needs_free_netdev is cleared, otherwise rolling back the registration will cause the old double free for callers who release rtnl_lock before the free. This also solves the problem of priv_destructor not being called on notifier error. net_set_todo() will be moved back into unregister_netdevice_queue() in a follow up. Reported-by: Hulk Robot Reported-by: Yang Yingliang Signed-off-by: Jakub Kicinski net/core/dev.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) culprit signature: cb04e19bc254bd1faf2a23f40bcb371800baf2a00c91cddc235505bc231fc156 parent signature: 558897da10873514c1566565d45f0f9c765fa1ef26a95d25f4583e96c1ac255d Reproducer flagged being flaky revisions tested: 19, total time: 5h12m47.371148115s (build: 2h14m11.307427138s, test: 2h55m45.148374072s) first bad commit: 766b0515d5bec4b780750773ed3009b148df8c0a net: make sure devices go through netdev_wait_all_refs recipients (to): ["davem@davemloft.net" "kuba@kernel.org" "kuba@kernel.org" "netdev@vger.kernel.org"] recipients (cc): ["andriin@fb.com" "ast@kernel.org" "linux-kernel@vger.kernel.org"] crash: unregister_netdevice: waiting for DEV to become free unregister_netdevice: waiting for sit0 to become free. Usage count = -1