From: Francesco Dolcini <francesco.dolcini@toradex.com> To: netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: possible circular locking in kernfs_remove_by_name_ns/devinet_ioctl linux 6.0-rc3 Date: Thu, 1 Sep 2022 14:21:29 +0200 [thread overview] Message-ID: <20220901122129.GA493609@francesco-nb.int.toradex.com> (raw) Hello all, I have this warning on linux 6.0-rc3, running on a ARM colibri-imx7. [ 21.629186] ====================================================== [ 21.635418] WARNING: possible circular locking dependency detected [ 21.641646] 6.0.0-rc3 #7 Not tainted [ 21.645256] ------------------------------------------------------ [ 21.651480] connmand/542 is trying to acquire lock: [ 21.656399] c2ce1d70 (kn->active#9){++++}-{0:0}, at: kernfs_remove_by_name_ns+0x50/0xa0 [ 21.664516] but task is already holding lock: [ 21.670394] c17af6e0 (rtnl_mutex){+.+.}-{3:3}, at: devinet_ioctl+0xc8/0x870 [ 21.677441] which lock already depends on the new lock. [ 21.685677] the existing dependency chain (in reverse order) is: [ 21.693230] -> #2 (rtnl_mutex){+.+.}-{3:3}: [ 21.698971] __mutex_lock+0x88/0x1110 [ 21.703208] mutex_lock_killable_nested+0x1c/0x28 [ 21.708487] register_netdev+0xc/0x34 [ 21.712721] gether_register_netdev+0x38/0xb0 [ 21.717654] rndis_bind+0x22c/0x39c [ 21.721710] usb_add_function+0x7c/0x1e4 [ 21.726201] configfs_composite_bind+0x1bc/0x370 [ 21.731391] gadget_bind_driver+0x9c/0x204 [ 21.736059] really_probe+0xd8/0x3dc [ 21.740201] __driver_probe_device+0x94/0x200 [ 21.745125] driver_probe_device+0x2c/0xd0 [ 21.749785] __driver_attach+0xc0/0x18c [ 21.754184] bus_for_each_dev+0x74/0xc0 [ 21.758583] bus_add_driver+0x164/0x218 [ 21.762980] driver_register+0x74/0x10c [ 21.767379] usb_gadget_register_driver_owner+0x40/0xd4 [ 21.773173] gadget_dev_desc_UDC_store+0xbc/0xf0 [ 21.778358] configfs_write_iter+0xac/0x110 [ 21.783110] vfs_write+0x2d4/0x46c [ 21.787077] ksys_write+0x60/0xec [ 21.790953] ret_fast_syscall+0x0/0x1c [ 21.795265] 0xbeeb4b88 [ 21.798266] -> #1 (udc_lock){+.+.}-{3:3}: [ 21.803824] __mutex_lock+0x88/0x1110 [ 21.808054] mutex_lock_nested+0x1c/0x24 [ 21.812540] usb_udc_uevent+0x34/0xb0 [ 21.816763] dev_uevent+0x100/0x2dc [ 21.820812] uevent_show+0x90/0x10c [ 21.824860] dev_attr_show+0x18/0x48 [ 21.828999] sysfs_kf_seq_show+0x88/0x118 [ 21.833573] seq_read_iter+0x194/0x4bc [ 21.837885] vfs_read+0x1a8/0x270 [ 21.841762] ksys_read+0x60/0xec [ 21.845550] ret_fast_syscall+0x0/0x1c [ 21.849860] 0xbea98840 [ 21.852857] -> #0 (kn->active#9){++++}-{0:0}: [ 21.858766] __lock_acquire+0x1550/0x23c0 [ 21.863344] lock_acquire+0x108/0x37c [ 21.867570] __kernfs_remove+0x294/0x368 [ 21.872055] kernfs_remove_by_name_ns+0x50/0xa0 [ 21.877151] device_del+0x178/0x454 [ 21.881199] device_unregister+0x20/0x64 [ 21.885683] wakeup_source_unregister.part.0+0x20/0x3c [ 21.891396] device_wakeup_disable+0x48/0x58 [ 21.896232] fec_enet_open+0x2ec/0x36c [ 21.900547] __dev_open+0xec/0x180 [ 21.904512] __dev_change_flags+0x164/0x1d4 [ 21.909261] dev_change_flags+0x14/0x44 [ 21.913660] devinet_ioctl+0x6c8/0x870 [ 21.917971] inet_ioctl+0x1c4/0x2b8 [ 21.922019] sock_ioctl+0x458/0x4fc [ 21.926072] sys_ioctl+0xf4/0xe04 [ 21.929948] ret_fast_syscall+0x0/0x1c [ 21.934258] 0xbeeca960 [ 21.937256] other info that might help us debug this: [ 21.945318] Chain exists of: kn->active#9 --> udc_lock --> rtnl_mutex [ 21.954902] Possible unsafe locking scenario: [ 21.960865] CPU0 CPU1 [ 21.965430] ---- ---- [ 21.969994] lock(rtnl_mutex); [ 21.973174] lock(udc_lock); [ 21.978709] lock(rtnl_mutex); [ 21.984419] lock(kn->active#9); [ 21.987779] *** DEADLOCK *** [ 21.993745] 1 lock held by connmand/542: [ 21.997704] #0: c17af6e0 (rtnl_mutex){+.+.}-{3:3}, at: devinet_ioctl+0xc8/0x870 [ 22.005191] stack backtrace: [ 22.009587] CPU: 0 PID: 542 Comm: connmand Not tainted 6.0.0-rc3 #7 [ 22.015905] Hardware name: Freescale i.MX7 Dual (Device Tree) [ 22.021703] unwind_backtrace from show_stack+0x10/0x14 [ 22.026985] show_stack from dump_stack_lvl+0x58/0x70 [ 22.032088] dump_stack_lvl from check_noncircular+0xf4/0x168 [ 22.037891] check_noncircular from check_prev_add+0xc4/0x15d8 [ 22.043783] check_prev_add from __lock_acquire+0x1550/0x23c0 [ 22.049587] __lock_acquire from lock_acquire+0x108/0x37c [ 22.055041] lock_acquire from __kernfs_remove+0x294/0x368 [ 22.060582] __kernfs_remove from kernfs_remove_by_name_ns+0x50/0xa0 [ 22.066991] kernfs_remove_by_name_ns from device_del+0x178/0x454 [ 22.073141] device_del from device_unregister+0x20/0x64 [ 22.078501] device_unregister from wakeup_source_unregister.part.0+0x20/0x3c [ 22.085700] wakeup_source_unregister.part.0 from device_wakeup_disable+0x48/0x58 [ 22.093253] device_wakeup_disable from fec_enet_open+0x2ec/0x36c [ 22.099408] fec_enet_open from __dev_open+0xec/0x180 [ 22.104514] __dev_open from __dev_change_flags+0x164/0x1d4 [ 22.110141] __dev_change_flags from dev_change_flags+0x14/0x44 [ 22.116117] dev_change_flags from devinet_ioctl+0x6c8/0x870 [ 22.121830] devinet_ioctl from inet_ioctl+0x1c4/0x2b8 [ 22.127017] inet_ioctl from sock_ioctl+0x458/0x4fc [ 22.131946] sock_ioctl from sys_ioctl+0xf4/0xe04 [ 22.136701] sys_ioctl from ret_fast_syscall+0x0/0x1c [ 22.141802] Exception stack(0xf1269fa8 to 0xf1269ff0) [ 22.146900] 9fa0: 00000000 beeca984 00000010 00008914 beeca984 beeca978 [ 22.155141] 9fc0: 00000000 beeca984 00000010 00000036 00000003 00001002 00000e94 beecab3c [ 22.163380] 9fe0: 00000036 beeca960 b6b58089 b6ad1ae6 The kernel configuration used is based on imx_v6_v7_defconfig with the following changes: --- original 2022-09-01 14:13:12.334642373 +0200 +++ new 2022-09-01 14:12:46.799096809 +0200 @@ -1 +1 @@ -CONFIG_KERNEL_LZO=y +CONFIG_KERNEL_LZ4=y @@ -18,5 +17,0 @@ -CONFIG_SOC_IMX31=y -CONFIG_SOC_IMX35=y -CONFIG_SOC_IMX50=y -CONFIG_SOC_IMX51=y -CONFIG_SOC_IMX53=y @@ -24,3 +18,0 @@ -CONFIG_SOC_IMX6SL=y -CONFIG_SOC_IMX6SLL=y -CONFIG_SOC_IMX6SX=y @@ -29,2 +20,0 @@ -CONFIG_SOC_IMX7ULP=y -CONFIG_SOC_VF610=y @@ -36 +25,0 @@ -CONFIG_KEXEC=y @@ -58,0 +48 @@ +# CONFIG_SWAP is not set @@ -67,0 +58,2 @@ +CONFIG_CAN_FLEXCAN=y +CONFIG_CAN_MCP251X=m @@ -71,0 +64,2 @@ +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m @@ -101 +94,0 @@ -CONFIG_MTD_NAND_VF610_NFC=y @@ -103 +95,0 @@ -CONFIG_MTD_SPI_NOR=y @@ -121 +112,0 @@ -CONFIG_PATA_IMX=y @@ -138 +128,0 @@ -CONFIG_CAN_FLEXCAN=y @@ -200,0 +191 @@ +CONFIG_SPI_MEM=y @@ -204,5 +195 @@ -CONFIG_SPI_FSL_DSPI=y -CONFIG_PINCTRL_IMX8MM=y -CONFIG_PINCTRL_IMX8MN=y -CONFIG_PINCTRL_IMX8MP=y -CONFIG_PINCTRL_IMX8MQ=y +CONFIG_SPI_SPIDEV=y @@ -240,0 +228 @@ +CONFIG_REGULATOR=y @@ -252,3 +239,0 @@ -CONFIG_RC_CORE=y -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=y @@ -269 +253,0 @@ -CONFIG_DRM_MSM=y @@ -273,0 +258 @@ +CONFIG_DRM_SIMPLE_BRIDGE=y @@ -391,5 +376 @@ -CONFIG_CLK_IMX8MM=y -CONFIG_CLK_IMX8MN=y -CONFIG_CLK_IMX8MP=y -CONFIG_CLK_IMX8MQ=y -CONFIG_SOC_IMX8M=y +CONFIG_EXTCON_USB_GPIO=y @@ -410 +390,0 @@ -CONFIG_NVMEM_VF610_OCOTP=y @@ -417 +397 @@ -CONFIG_EXT2_FS=y +CONFIG_EXT2_FS=m @@ -421 +401 @@ -CONFIG_EXT3_FS=y +CONFIG_EXT3_FS=m @@ -423,0 +404 @@ +CONFIG_EXT4_FS=y @@ -428 +409 @@ -CONFIG_FUSE_FS=y +CONFIG_FUSE_FS=m @@ -434,0 +416 @@ +CONFIG_NTFS3_FS=m @@ -436 +418 @@ -CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS=m @@ -457 +439,3 @@ -CONFIG_CMA_SIZE_MBYTES=64 +CONFIG_CMA_SIZE_MBYTES=256 +CONFIG_CMA_SIZE_PERCENTAGE=50 +CONFIG_CMA_SIZE_SEL_MIN=y @@ -461,0 +446 @@ +CONFIG_DYNAMIC_DEBUG=y I have not tried to bisect this yet, just probing if someone has already some idea on this. Francesco
WARNING: multiple messages have this Message-ID (diff)
From: Francesco Dolcini <francesco.dolcini@toradex.com> To: netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: possible circular locking in kernfs_remove_by_name_ns/devinet_ioctl linux 6.0-rc3 Date: Thu, 1 Sep 2022 14:21:29 +0200 [thread overview] Message-ID: <20220901122129.GA493609@francesco-nb.int.toradex.com> (raw) Hello all, I have this warning on linux 6.0-rc3, running on a ARM colibri-imx7. [ 21.629186] ====================================================== [ 21.635418] WARNING: possible circular locking dependency detected [ 21.641646] 6.0.0-rc3 #7 Not tainted [ 21.645256] ------------------------------------------------------ [ 21.651480] connmand/542 is trying to acquire lock: [ 21.656399] c2ce1d70 (kn->active#9){++++}-{0:0}, at: kernfs_remove_by_name_ns+0x50/0xa0 [ 21.664516] but task is already holding lock: [ 21.670394] c17af6e0 (rtnl_mutex){+.+.}-{3:3}, at: devinet_ioctl+0xc8/0x870 [ 21.677441] which lock already depends on the new lock. [ 21.685677] the existing dependency chain (in reverse order) is: [ 21.693230] -> #2 (rtnl_mutex){+.+.}-{3:3}: [ 21.698971] __mutex_lock+0x88/0x1110 [ 21.703208] mutex_lock_killable_nested+0x1c/0x28 [ 21.708487] register_netdev+0xc/0x34 [ 21.712721] gether_register_netdev+0x38/0xb0 [ 21.717654] rndis_bind+0x22c/0x39c [ 21.721710] usb_add_function+0x7c/0x1e4 [ 21.726201] configfs_composite_bind+0x1bc/0x370 [ 21.731391] gadget_bind_driver+0x9c/0x204 [ 21.736059] really_probe+0xd8/0x3dc [ 21.740201] __driver_probe_device+0x94/0x200 [ 21.745125] driver_probe_device+0x2c/0xd0 [ 21.749785] __driver_attach+0xc0/0x18c [ 21.754184] bus_for_each_dev+0x74/0xc0 [ 21.758583] bus_add_driver+0x164/0x218 [ 21.762980] driver_register+0x74/0x10c [ 21.767379] usb_gadget_register_driver_owner+0x40/0xd4 [ 21.773173] gadget_dev_desc_UDC_store+0xbc/0xf0 [ 21.778358] configfs_write_iter+0xac/0x110 [ 21.783110] vfs_write+0x2d4/0x46c [ 21.787077] ksys_write+0x60/0xec [ 21.790953] ret_fast_syscall+0x0/0x1c [ 21.795265] 0xbeeb4b88 [ 21.798266] -> #1 (udc_lock){+.+.}-{3:3}: [ 21.803824] __mutex_lock+0x88/0x1110 [ 21.808054] mutex_lock_nested+0x1c/0x24 [ 21.812540] usb_udc_uevent+0x34/0xb0 [ 21.816763] dev_uevent+0x100/0x2dc [ 21.820812] uevent_show+0x90/0x10c [ 21.824860] dev_attr_show+0x18/0x48 [ 21.828999] sysfs_kf_seq_show+0x88/0x118 [ 21.833573] seq_read_iter+0x194/0x4bc [ 21.837885] vfs_read+0x1a8/0x270 [ 21.841762] ksys_read+0x60/0xec [ 21.845550] ret_fast_syscall+0x0/0x1c [ 21.849860] 0xbea98840 [ 21.852857] -> #0 (kn->active#9){++++}-{0:0}: [ 21.858766] __lock_acquire+0x1550/0x23c0 [ 21.863344] lock_acquire+0x108/0x37c [ 21.867570] __kernfs_remove+0x294/0x368 [ 21.872055] kernfs_remove_by_name_ns+0x50/0xa0 [ 21.877151] device_del+0x178/0x454 [ 21.881199] device_unregister+0x20/0x64 [ 21.885683] wakeup_source_unregister.part.0+0x20/0x3c [ 21.891396] device_wakeup_disable+0x48/0x58 [ 21.896232] fec_enet_open+0x2ec/0x36c [ 21.900547] __dev_open+0xec/0x180 [ 21.904512] __dev_change_flags+0x164/0x1d4 [ 21.909261] dev_change_flags+0x14/0x44 [ 21.913660] devinet_ioctl+0x6c8/0x870 [ 21.917971] inet_ioctl+0x1c4/0x2b8 [ 21.922019] sock_ioctl+0x458/0x4fc [ 21.926072] sys_ioctl+0xf4/0xe04 [ 21.929948] ret_fast_syscall+0x0/0x1c [ 21.934258] 0xbeeca960 [ 21.937256] other info that might help us debug this: [ 21.945318] Chain exists of: kn->active#9 --> udc_lock --> rtnl_mutex [ 21.954902] Possible unsafe locking scenario: [ 21.960865] CPU0 CPU1 [ 21.965430] ---- ---- [ 21.969994] lock(rtnl_mutex); [ 21.973174] lock(udc_lock); [ 21.978709] lock(rtnl_mutex); [ 21.984419] lock(kn->active#9); [ 21.987779] *** DEADLOCK *** [ 21.993745] 1 lock held by connmand/542: [ 21.997704] #0: c17af6e0 (rtnl_mutex){+.+.}-{3:3}, at: devinet_ioctl+0xc8/0x870 [ 22.005191] stack backtrace: [ 22.009587] CPU: 0 PID: 542 Comm: connmand Not tainted 6.0.0-rc3 #7 [ 22.015905] Hardware name: Freescale i.MX7 Dual (Device Tree) [ 22.021703] unwind_backtrace from show_stack+0x10/0x14 [ 22.026985] show_stack from dump_stack_lvl+0x58/0x70 [ 22.032088] dump_stack_lvl from check_noncircular+0xf4/0x168 [ 22.037891] check_noncircular from check_prev_add+0xc4/0x15d8 [ 22.043783] check_prev_add from __lock_acquire+0x1550/0x23c0 [ 22.049587] __lock_acquire from lock_acquire+0x108/0x37c [ 22.055041] lock_acquire from __kernfs_remove+0x294/0x368 [ 22.060582] __kernfs_remove from kernfs_remove_by_name_ns+0x50/0xa0 [ 22.066991] kernfs_remove_by_name_ns from device_del+0x178/0x454 [ 22.073141] device_del from device_unregister+0x20/0x64 [ 22.078501] device_unregister from wakeup_source_unregister.part.0+0x20/0x3c [ 22.085700] wakeup_source_unregister.part.0 from device_wakeup_disable+0x48/0x58 [ 22.093253] device_wakeup_disable from fec_enet_open+0x2ec/0x36c [ 22.099408] fec_enet_open from __dev_open+0xec/0x180 [ 22.104514] __dev_open from __dev_change_flags+0x164/0x1d4 [ 22.110141] __dev_change_flags from dev_change_flags+0x14/0x44 [ 22.116117] dev_change_flags from devinet_ioctl+0x6c8/0x870 [ 22.121830] devinet_ioctl from inet_ioctl+0x1c4/0x2b8 [ 22.127017] inet_ioctl from sock_ioctl+0x458/0x4fc [ 22.131946] sock_ioctl from sys_ioctl+0xf4/0xe04 [ 22.136701] sys_ioctl from ret_fast_syscall+0x0/0x1c [ 22.141802] Exception stack(0xf1269fa8 to 0xf1269ff0) [ 22.146900] 9fa0: 00000000 beeca984 00000010 00008914 beeca984 beeca978 [ 22.155141] 9fc0: 00000000 beeca984 00000010 00000036 00000003 00001002 00000e94 beecab3c [ 22.163380] 9fe0: 00000036 beeca960 b6b58089 b6ad1ae6 The kernel configuration used is based on imx_v6_v7_defconfig with the following changes: --- original 2022-09-01 14:13:12.334642373 +0200 +++ new 2022-09-01 14:12:46.799096809 +0200 @@ -1 +1 @@ -CONFIG_KERNEL_LZO=y +CONFIG_KERNEL_LZ4=y @@ -18,5 +17,0 @@ -CONFIG_SOC_IMX31=y -CONFIG_SOC_IMX35=y -CONFIG_SOC_IMX50=y -CONFIG_SOC_IMX51=y -CONFIG_SOC_IMX53=y @@ -24,3 +18,0 @@ -CONFIG_SOC_IMX6SL=y -CONFIG_SOC_IMX6SLL=y -CONFIG_SOC_IMX6SX=y @@ -29,2 +20,0 @@ -CONFIG_SOC_IMX7ULP=y -CONFIG_SOC_VF610=y @@ -36 +25,0 @@ -CONFIG_KEXEC=y @@ -58,0 +48 @@ +# CONFIG_SWAP is not set @@ -67,0 +58,2 @@ +CONFIG_CAN_FLEXCAN=y +CONFIG_CAN_MCP251X=m @@ -71,0 +64,2 @@ +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m @@ -101 +94,0 @@ -CONFIG_MTD_NAND_VF610_NFC=y @@ -103 +95,0 @@ -CONFIG_MTD_SPI_NOR=y @@ -121 +112,0 @@ -CONFIG_PATA_IMX=y @@ -138 +128,0 @@ -CONFIG_CAN_FLEXCAN=y @@ -200,0 +191 @@ +CONFIG_SPI_MEM=y @@ -204,5 +195 @@ -CONFIG_SPI_FSL_DSPI=y -CONFIG_PINCTRL_IMX8MM=y -CONFIG_PINCTRL_IMX8MN=y -CONFIG_PINCTRL_IMX8MP=y -CONFIG_PINCTRL_IMX8MQ=y +CONFIG_SPI_SPIDEV=y @@ -240,0 +228 @@ +CONFIG_REGULATOR=y @@ -252,3 +239,0 @@ -CONFIG_RC_CORE=y -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=y @@ -269 +253,0 @@ -CONFIG_DRM_MSM=y @@ -273,0 +258 @@ +CONFIG_DRM_SIMPLE_BRIDGE=y @@ -391,5 +376 @@ -CONFIG_CLK_IMX8MM=y -CONFIG_CLK_IMX8MN=y -CONFIG_CLK_IMX8MP=y -CONFIG_CLK_IMX8MQ=y -CONFIG_SOC_IMX8M=y +CONFIG_EXTCON_USB_GPIO=y @@ -410 +390,0 @@ -CONFIG_NVMEM_VF610_OCOTP=y @@ -417 +397 @@ -CONFIG_EXT2_FS=y +CONFIG_EXT2_FS=m @@ -421 +401 @@ -CONFIG_EXT3_FS=y +CONFIG_EXT3_FS=m @@ -423,0 +404 @@ +CONFIG_EXT4_FS=y @@ -428 +409 @@ -CONFIG_FUSE_FS=y +CONFIG_FUSE_FS=m @@ -434,0 +416 @@ +CONFIG_NTFS3_FS=m @@ -436 +418 @@ -CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS=m @@ -457 +439,3 @@ -CONFIG_CMA_SIZE_MBYTES=64 +CONFIG_CMA_SIZE_MBYTES=256 +CONFIG_CMA_SIZE_PERCENTAGE=50 +CONFIG_CMA_SIZE_SEL_MIN=y @@ -461,0 +446 @@ +CONFIG_DYNAMIC_DEBUG=y I have not tried to bisect this yet, just probing if someone has already some idea on this. Francesco _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2022-09-01 12:21 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-09-01 12:21 Francesco Dolcini [this message] 2022-09-01 12:21 ` possible circular locking in kernfs_remove_by_name_ns/devinet_ioctl linux 6.0-rc3 Francesco Dolcini 2022-09-01 19:25 ` Francesco Dolcini 2022-09-01 19:25 ` Francesco Dolcini
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220901122129.GA493609@francesco-nb.int.toradex.com \ --to=francesco.dolcini@toradex.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=netdev@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.