From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932252AbeD3T5A (ORCPT ); Mon, 30 Apr 2018 15:57:00 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:51480 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755219AbeD3T46 (ORCPT ); Mon, 30 Apr 2018 15:56:58 -0400 X-Google-Smtp-Source: AB8JxZpnJOFT+DrZhjMI5c0gQl9LIxnrjaKXtjT079HyTAKcwPXUyLJQB7SyKSz8jiffFtCL8EWM5g== From: Daniel Vetter To: Intel Graphics Development Cc: LKML , Daniel Vetter , Daniel Vetter , Dmitry Torokhov , Benjamin Tissoires , Arvind Yadav , Stephen Lyons , linux-input@vger.kernel.org Subject: [PATCH] input/psmouse: Don't hold the mutex while calling ->disconnect Date: Mon, 30 Apr 2018 21:56:49 +0200 Message-Id: <20180430195649.17445-1-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.17.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At least trackpoint_disconnect wants to remove some sysfs files, and we can't remove sysfs files while holding psmouse_mutex: ====================================================== WARNING: possible circular locking dependency detected 4.16.0-rc5-g613eb885b69e-drmtip_1+ #1 Tainted: G U ------------------------------------------------------ kworker/0:3/102 is trying to acquire lock: (kn->count#130){++++}, at: [<000000009679748b>] kernfs_remove_by_name_ns+0x3b/0x80 but task is already holding lock: (psmouse_mutex){+.+.}, at: [<0000000014f44bcc>] psmouse_disconnect+0x62/0x160 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (psmouse_mutex){+.+.}: psmouse_attr_set_helper+0x28/0x140 kernfs_fop_write+0xfe/0x180 __vfs_write+0x1e/0x130 vfs_write+0xbd/0x1b0 SyS_write+0x40/0xa0 do_syscall_64+0x65/0x1a0 entry_SYSCALL_64_after_hwframe+0x42/0xb7 -> #0 (kn->count#130){++++}: __kernfs_remove+0x243/0x2b0 kernfs_remove_by_name_ns+0x3b/0x80 remove_files.isra.0+0x2b/0x60 sysfs_remove_group+0x38/0x80 sysfs_remove_groups+0x24/0x40 trackpoint_disconnect+0x2c/0x50 psmouse_disconnect+0x8f/0x160 serio_disconnect_driver+0x28/0x40 serio_driver_remove+0xc/0x10 device_release_driver_internal+0x15b/0x230 serio_handle_event+0x1c8/0x260 process_one_work+0x215/0x620 worker_thread+0x48/0x3a0 kthread+0xfb/0x130 ret_from_fork+0x3a/0x50 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(psmouse_mutex); lock(kn->count#130); lock(psmouse_mutex); lock(kn->count#130); *** DEADLOCK *** 6 locks held by kworker/0:3/102: #0: ((wq_completion)"events_long"){+.+.}, at: [<000000002e408bfa>] process_one_work+0x191/0x620 #1: (serio_event_work){+.+.}, at: [<000000002e408bfa>] process_one_work+0x191/0x620 #2: (serio_mutex){+.+.}, at: [<00000000c8a49847>] serio_handle_event+0x23/0x260 #3: (&dev->mutex){....}, at: [<00000000b55eee75>] device_release_driver_internal+0x2f/0x230 #4: (&serio->drv_mutex){+.+.}, at: [<000000009719f997>] serio_disconnect_driver+0x16/0x40 #5: (psmouse_mutex){+.+.}, at: [<0000000014f44bcc>] psmouse_disconnect+0x62/0x160 stack backtrace: CPU: 0 PID: 102 Comm: kworker/0:3 Tainted: G U 4.16.0-rc5-g613eb885b69e-drmtip_1+ #1 Hardware name: LENOVO 74591P0/74591P0, BIOS 6DET28WW (1.05 ) 07/30/2008 Workqueue: events_long serio_handle_event Call Trace: dump_stack+0x5f/0x86 print_circular_bug.isra.18+0x1d0/0x2c0 __lock_acquire+0x14ae/0x1b60 ? kernfs_remove_by_name_ns+0x20/0x80 ? lock_acquire+0xaf/0x200 lock_acquire+0xaf/0x200 ? kernfs_remove_by_name_ns+0x3b/0x80 __kernfs_remove+0x243/0x2b0 ? kernfs_remove_by_name_ns+0x3b/0x80 ? kernfs_name_hash+0xd/0x70 ? kernfs_find_ns+0x7e/0x100 kernfs_remove_by_name_ns+0x3b/0x80 remove_files.isra.0+0x2b/0x60 sysfs_remove_group+0x38/0x80 sysfs_remove_groups+0x24/0x40 trackpoint_disconnect+0x2c/0x50 psmouse_disconnect+0x8f/0x160 serio_disconnect_driver+0x28/0x40 serio_driver_remove+0xc/0x10 device_release_driver_internal+0x15b/0x230 serio_handle_event+0x1c8/0x260 process_one_work+0x215/0x620 worker_thread+0x48/0x3a0 ? _raw_spin_unlock_irqrestore+0x4c/0x60 kthread+0xfb/0x130 ? process_one_work+0x620/0x620 ? _kthread_create_on_node+0x30/0x30 ret_from_fork+0x3a/0x50 Signed-off-by: Daniel Vetter Cc: Dmitry Torokhov Cc: Benjamin Tissoires Cc: Daniel Vetter Cc: Arvind Yadav Cc: Stephen Lyons Cc: linux-input@vger.kernel.org --- drivers/input/mouse/psmouse-base.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c index 8900c3166ebf..06ccd8e22f3c 100644 --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c @@ -1484,8 +1484,10 @@ static void psmouse_disconnect(struct serio *serio) psmouse_deactivate(parent); } + mutex_unlock(&psmouse_mutex); if (psmouse->disconnect) psmouse->disconnect(psmouse); + mutex_lock(&psmouse_mutex); if (parent && parent->pt_deactivate) parent->pt_deactivate(parent); -- 2.17.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH] input/psmouse: Don't hold the mutex while calling ->disconnect Date: Mon, 30 Apr 2018 21:56:49 +0200 Message-ID: <20180430195649.17445-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel Graphics Development Cc: linux-input@vger.kernel.org, Stephen Lyons , Daniel Vetter , Dmitry Torokhov , LKML , Benjamin Tissoires , Daniel Vetter , Arvind Yadav List-Id: linux-input@vger.kernel.org QXQgbGVhc3QgdHJhY2twb2ludF9kaXNjb25uZWN0IHdhbnRzIHRvIHJlbW92ZSBzb21lIHN5c2Zz IGZpbGVzLCBhbmQKd2UgY2FuJ3QgcmVtb3ZlIHN5c2ZzIGZpbGVzIHdoaWxlIGhvbGRpbmcgcHNt b3VzZV9tdXRleDoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpXQVJOSU5HOiBwb3NzaWJsZSBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVuY3kg ZGV0ZWN0ZWQKNC4xNi4wLXJjNS1nNjEzZWI4ODViNjllLWRybXRpcF8xKyAjMSBUYWludGVkOiBH ICAgICBVCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQprd29ya2VyLzA6My8xMDIgaXMgdHJ5aW5nIHRvIGFjcXVpcmUgbG9jazoKIChrbi0+Y291 bnQjMTMwKXsrKysrfSwgYXQ6IFs8MDAwMDAwMDA5Njc5NzQ4Yj5dIGtlcm5mc19yZW1vdmVfYnlf bmFtZV9ucysweDNiLzB4ODAKCmJ1dCB0YXNrIGlzIGFscmVhZHkgaG9sZGluZyBsb2NrOgogKHBz bW91c2VfbXV0ZXgpeysuKy59LCBhdDogWzwwMDAwMDAwMDE0ZjQ0YmNjPl0gcHNtb3VzZV9kaXNj b25uZWN0KzB4NjIvMHgxNjAKCndoaWNoIGxvY2sgYWxyZWFkeSBkZXBlbmRzIG9uIHRoZSBuZXcg bG9jay4KCnRoZSBleGlzdGluZyBkZXBlbmRlbmN5IGNoYWluIChpbiByZXZlcnNlIG9yZGVyKSBp czoKCi0+ICMxIChwc21vdXNlX211dGV4KXsrLisufToKICAgICAgIHBzbW91c2VfYXR0cl9zZXRf aGVscGVyKzB4MjgvMHgxNDAKICAgICAgIGtlcm5mc19mb3Bfd3JpdGUrMHhmZS8weDE4MAogICAg ICAgX192ZnNfd3JpdGUrMHgxZS8weDEzMAogICAgICAgdmZzX3dyaXRlKzB4YmQvMHgxYjAKICAg ICAgIFN5U193cml0ZSsweDQwLzB4YTAKICAgICAgIGRvX3N5c2NhbGxfNjQrMHg2NS8weDFhMAog ICAgICAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NDIvMHhiNwoKLT4gIzAgKGtu LT5jb3VudCMxMzApeysrKyt9OgogICAgICAgX19rZXJuZnNfcmVtb3ZlKzB4MjQzLzB4MmIwCiAg ICAgICBrZXJuZnNfcmVtb3ZlX2J5X25hbWVfbnMrMHgzYi8weDgwCiAgICAgICByZW1vdmVfZmls ZXMuaXNyYS4wKzB4MmIvMHg2MAogICAgICAgc3lzZnNfcmVtb3ZlX2dyb3VwKzB4MzgvMHg4MAog ICAgICAgc3lzZnNfcmVtb3ZlX2dyb3VwcysweDI0LzB4NDAKICAgICAgIHRyYWNrcG9pbnRfZGlz Y29ubmVjdCsweDJjLzB4NTAKICAgICAgIHBzbW91c2VfZGlzY29ubmVjdCsweDhmLzB4MTYwCiAg ICAgICBzZXJpb19kaXNjb25uZWN0X2RyaXZlcisweDI4LzB4NDAKICAgICAgIHNlcmlvX2RyaXZl cl9yZW1vdmUrMHhjLzB4MTAKICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZlcl9pbnRlcm5hbCsw eDE1Yi8weDIzMAogICAgICAgc2VyaW9faGFuZGxlX2V2ZW50KzB4MWM4LzB4MjYwCiAgICAgICBw cm9jZXNzX29uZV93b3JrKzB4MjE1LzB4NjIwCiAgICAgICB3b3JrZXJfdGhyZWFkKzB4NDgvMHgz YTAKICAgICAgIGt0aHJlYWQrMHhmYi8weDEzMAogICAgICAgcmV0X2Zyb21fZm9yaysweDNhLzB4 NTAKCm90aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6CgogUG9zc2libGUg dW5zYWZlIGxvY2tpbmcgc2NlbmFyaW86CgogICAgICAgQ1BVMCAgICAgICAgICAgICAgICAgICAg Q1BVMQogICAgICAgLS0tLSAgICAgICAgICAgICAgICAgICAgLS0tLQogIGxvY2socHNtb3VzZV9t dXRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrKGtuLT5jb3VudCMxMzAp OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jayhwc21vdXNlX211dGV4KTsKICBs b2NrKGtuLT5jb3VudCMxMzApOwoKICoqKiBERUFETE9DSyAqKioKCjYgbG9ja3MgaGVsZCBieSBr d29ya2VyLzA6My8xMDI6CiAjMDogICgod3FfY29tcGxldGlvbikiZXZlbnRzX2xvbmciKXsrLisu fSwgYXQ6IFs8MDAwMDAwMDAyZTQwOGJmYT5dIHByb2Nlc3Nfb25lX3dvcmsrMHgxOTEvMHg2MjAK ICMxOiAgKHNlcmlvX2V2ZW50X3dvcmspeysuKy59LCBhdDogWzwwMDAwMDAwMDJlNDA4YmZhPl0g cHJvY2Vzc19vbmVfd29yaysweDE5MS8weDYyMAogIzI6ICAoc2VyaW9fbXV0ZXgpeysuKy59LCBh dDogWzwwMDAwMDAwMGM4YTQ5ODQ3Pl0gc2VyaW9faGFuZGxlX2V2ZW50KzB4MjMvMHgyNjAKICMz OiAgKCZkZXYtPm11dGV4KXsuLi4ufSwgYXQ6IFs8MDAwMDAwMDBiNTVlZWU3NT5dIGRldmljZV9y ZWxlYXNlX2RyaXZlcl9pbnRlcm5hbCsweDJmLzB4MjMwCiAjNDogICgmc2VyaW8tPmRydl9tdXRl eCl7Ky4rLn0sIGF0OiBbPDAwMDAwMDAwOTcxOWY5OTc+XSBzZXJpb19kaXNjb25uZWN0X2RyaXZl cisweDE2LzB4NDAKICM1OiAgKHBzbW91c2VfbXV0ZXgpeysuKy59LCBhdDogWzwwMDAwMDAwMDE0 ZjQ0YmNjPl0gcHNtb3VzZV9kaXNjb25uZWN0KzB4NjIvMHgxNjAKCnN0YWNrIGJhY2t0cmFjZToK Q1BVOiAwIFBJRDogMTAyIENvbW06IGt3b3JrZXIvMDozIFRhaW50ZWQ6IEcgICAgIFUgICAgICAg ICAgIDQuMTYuMC1yYzUtZzYxM2ViODg1YjY5ZS1kcm10aXBfMSsgIzEKSGFyZHdhcmUgbmFtZTog TEVOT1ZPIDc0NTkxUDAvNzQ1OTFQMCwgQklPUyA2REVUMjhXVyAoMS4wNSApIDA3LzMwLzIwMDgK V29ya3F1ZXVlOiBldmVudHNfbG9uZyBzZXJpb19oYW5kbGVfZXZlbnQKQ2FsbCBUcmFjZToKIGR1 bXBfc3RhY2srMHg1Zi8weDg2CiBwcmludF9jaXJjdWxhcl9idWcuaXNyYS4xOCsweDFkMC8weDJj MAogX19sb2NrX2FjcXVpcmUrMHgxNGFlLzB4MWI2MAogPyBrZXJuZnNfcmVtb3ZlX2J5X25hbWVf bnMrMHgyMC8weDgwCiA/IGxvY2tfYWNxdWlyZSsweGFmLzB4MjAwCiBsb2NrX2FjcXVpcmUrMHhh Zi8weDIwMAogPyBrZXJuZnNfcmVtb3ZlX2J5X25hbWVfbnMrMHgzYi8weDgwCiBfX2tlcm5mc19y ZW1vdmUrMHgyNDMvMHgyYjAKID8ga2VybmZzX3JlbW92ZV9ieV9uYW1lX25zKzB4M2IvMHg4MAog PyBrZXJuZnNfbmFtZV9oYXNoKzB4ZC8weDcwCiA/IGtlcm5mc19maW5kX25zKzB4N2UvMHgxMDAK IGtlcm5mc19yZW1vdmVfYnlfbmFtZV9ucysweDNiLzB4ODAKIHJlbW92ZV9maWxlcy5pc3JhLjAr MHgyYi8weDYwCiBzeXNmc19yZW1vdmVfZ3JvdXArMHgzOC8weDgwCiBzeXNmc19yZW1vdmVfZ3Jv dXBzKzB4MjQvMHg0MAogdHJhY2twb2ludF9kaXNjb25uZWN0KzB4MmMvMHg1MAogcHNtb3VzZV9k aXNjb25uZWN0KzB4OGYvMHgxNjAKIHNlcmlvX2Rpc2Nvbm5lY3RfZHJpdmVyKzB4MjgvMHg0MAog c2VyaW9fZHJpdmVyX3JlbW92ZSsweGMvMHgxMAogZGV2aWNlX3JlbGVhc2VfZHJpdmVyX2ludGVy bmFsKzB4MTViLzB4MjMwCiBzZXJpb19oYW5kbGVfZXZlbnQrMHgxYzgvMHgyNjAKIHByb2Nlc3Nf b25lX3dvcmsrMHgyMTUvMHg2MjAKIHdvcmtlcl90aHJlYWQrMHg0OC8weDNhMAogPyBfcmF3X3Nw aW5fdW5sb2NrX2lycXJlc3RvcmUrMHg0Yy8weDYwCiBrdGhyZWFkKzB4ZmIvMHgxMzAKID8gcHJv Y2Vzc19vbmVfd29yaysweDYyMC8weDYyMAogPyBfa3RocmVhZF9jcmVhdGVfb25fbm9kZSsweDMw LzB4MzAKIHJldF9mcm9tX2ZvcmsrMHgzYS8weDUwCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IERtaXRyeSBUb3Jva2hvdiA8ZG1pdHJ5 LnRvcm9raG92QGdtYWlsLmNvbT4KQ2M6IEJlbmphbWluIFRpc3NvaXJlcyA8YmVuamFtaW4udGlz c29pcmVzQHJlZGhhdC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xs LmNoPgpDYzogQXJ2aW5kIFlhZGF2IDxhcnZpbmQueWFkYXYuY3NAZ21haWwuY29tPgpDYzogU3Rl cGhlbiBMeW9ucyA8c2x5c3ZlbkB2aXJnaW5tZWRpYS5jb20+CkNjOiBsaW51eC1pbnB1dEB2Z2Vy Lmtlcm5lbC5vcmcKLS0tCiBkcml2ZXJzL2lucHV0L21vdXNlL3BzbW91c2UtYmFzZS5jIHwgMiAr KwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5wdXQvbW91c2UvcHNtb3VzZS1iYXNlLmMgYi9kcml2ZXJzL2lucHV0L21vdXNlL3BzbW91c2Ut YmFzZS5jCmluZGV4IDg5MDBjMzE2NmViZi4uMDZjY2Q4ZTIyZjNjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2lucHV0L21vdXNlL3BzbW91c2UtYmFzZS5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2Uv cHNtb3VzZS1iYXNlLmMKQEAgLTE0ODQsOCArMTQ4NCwxMCBAQCBzdGF0aWMgdm9pZCBwc21vdXNl X2Rpc2Nvbm5lY3Qoc3RydWN0IHNlcmlvICpzZXJpbykKIAkJcHNtb3VzZV9kZWFjdGl2YXRlKHBh cmVudCk7CiAJfQogCisJbXV0ZXhfdW5sb2NrKCZwc21vdXNlX211dGV4KTsKIAlpZiAocHNtb3Vz ZS0+ZGlzY29ubmVjdCkKIAkJcHNtb3VzZS0+ZGlzY29ubmVjdChwc21vdXNlKTsKKwltdXRleF9s b2NrKCZwc21vdXNlX211dGV4KTsKIAogCWlmIChwYXJlbnQgJiYgcGFyZW50LT5wdF9kZWFjdGl2 YXRlKQogCQlwYXJlbnQtPnB0X2RlYWN0aXZhdGUocGFyZW50KTsKLS0gCjIuMTcuMAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==