Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp976878iob; Fri, 13 May 2022 18:19:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz0QjWgX4neiof8c0B0WJOUEid4WVI+pjrJNHtfTC12NpHCiFJSIT5AMQOjg0znawuUeP98 X-Received: by 2002:a7b:cf02:0:b0:393:fbb0:7189 with SMTP id l2-20020a7bcf02000000b00393fbb07189mr6578764wmg.197.1652491160288; Fri, 13 May 2022 18:19:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652491160; cv=none; d=google.com; s=arc-20160816; b=V2JEfQiHcJqZES1+0nYV4quCf/CAyi+67b7tdqxg9xp/bD6TriFbYBsXImpLtFUyGR kGgUPk9ZvjHxOnvj3QGp005TBIza3I2fWZWP8Hlqmiy1HyTuBP1SI6Ny3YEk/lfTkHgq Z5azj86fdfqwkk+MQbopTaIzYzjbWWDE8PtA8Fq/HVXJJXTiy1haNKw6K5UkQNj3F17Q JOUQ6bLaVW/eWgEkonQreuEbl9iMnljVDHy7mmwOgNUs3vzCs1K3+rDvmyZKmkAxZJYk 1IznuQ/ZYzLin0rdp+ZJgA4wwcR6jLHR9sHuHov0bMV5sQ2CUQvyrF7puLKeN3lAkLoh GI7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=VX5md7Mk0A0uUiCcmxXswn7TVhYlhhLI9xLOgJzhnzk=; b=Px6jO+nfk3gh8TjISbCvYQ3rntgwkxZn1zFtAMH6w0GWWM8MAp5mMXh4vp/oi50Rbs l5aDSyW2WGWPtdfuYsARF4Lk0cNKOaTC/6FIKonQUCBmAA8cUwphcVxv42uhRbEEnoi1 mVQ0+ivh2MasSSMThNxHiSMBdU4dR7Ibycz4SKz5rzCuhO0s+InfNlFwVks+Q9EZ1QRM zYRkn/GzDDKGmwR0oZyJ/drutLlaYdM+wAF6N8gJy/Blygm4t4GVLz+vuPo9cmRNvUTD ArkHFo7tVONmdzus+9Q7Yx1tynnT/PbyfX3nP0+2tBWNkm7De158nc5P43Y4VAb9SqRL yKnQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id a14-20020adfface000000b00203e901936asi3566893wrs.238.2022.05.13.18.19.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 May 2022 18:19:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9C8663C1219; Fri, 13 May 2022 16:49:46 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380677AbiEMNZZ (ORCPT + 99 others); Fri, 13 May 2022 09:25:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380609AbiEMNZW (ORCPT ); Fri, 13 May 2022 09:25:22 -0400 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8483EC9EC0; Fri, 13 May 2022 06:25:19 -0700 (PDT) X-IronPort-AV: E=Sophos;i="5.91,221,1647270000"; d="scan'208";a="120910964" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 13 May 2022 22:25:18 +0900 Received: from localhost.localdomain (unknown [10.226.36.204]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id B7D56400854A; Fri, 13 May 2022 22:25:15 +0900 (JST) From: Lad Prabhakar To: Dmitry Torokhov , linux-input@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Phil Edworthy , Biju Das , Lad Prabhakar Subject: [PATCH] Input: gpio-keys - Cancel delayed work only in case of GPIO Date: Fri, 13 May 2022 14:25:00 +0100 Message-Id: <20220513132500.32395-1-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.17.1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org gpio_keys module can either accept gpios or interrupts. The module initializes delayed work in case of gpios only and not for interrupts, so make sure cancel_delayed_work_sync() is called only when bdata->gpiod is true. This fixes the issue seen below when the gpio_keys module is unloaded and an interrupt pin is used instead of GPIO: [ 360.297569] ------------[ cut here ]------------ [ 360.302303] WARNING: CPU: 0 PID: 237 at kernel/workqueue.c:3066 __flush_work+0x414/0x470 [ 360.310531] Modules linked in: gpio_keys(-) [ 360.314797] CPU: 0 PID: 237 Comm: rmmod Not tainted 5.18.0-rc5-arm64-renesas-00116-g73636105874d-dirty #166 [ 360.324662] Hardware name: Renesas SMARC EVK based on r9a07g054l2 (DT) [ 360.331270] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 360.338318] pc : __flush_work+0x414/0x470 [ 360.342385] lr : __cancel_work_timer+0x140/0x1b0 [ 360.347065] sp : ffff80000a7fba00 [ 360.350423] x29: ffff80000a7fba00 x28: ffff000012b9c5c0 x27: 0000000000000000 [ 360.357664] x26: ffff80000a7fbb80 x25: ffff80000954d0a8 x24: 0000000000000001 [ 360.364904] x23: ffff800009757000 x22: 0000000000000000 x21: ffff80000919b000 [ 360.372143] x20: ffff00000f5974e0 x19: ffff00000f5974e0 x18: ffff8000097fcf48 [ 360.379382] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000053f40 [ 360.386622] x14: ffff800009850e88 x13: 0000000000000002 x12: 000000000000a60c [ 360.393861] x11: 000000000000a610 x10: 0000000000000000 x9 : 0000000000000008 [ 360.401100] x8 : 0101010101010101 x7 : 00000000a473c394 x6 : 0080808080808080 [ 360.408339] x5 : 0000000000000001 x4 : 0000000000000000 x3 : ffff80000919b458 [ 360.415578] x2 : ffff8000097577f0 x1 : 0000000000000001 x0 : 0000000000000000 [ 360.422818] Call trace: [ 360.425299] __flush_work+0x414/0x470 [ 360.429012] __cancel_work_timer+0x140/0x1b0 [ 360.433340] cancel_delayed_work_sync+0x10/0x18 [ 360.437931] gpio_keys_quiesce_key+0x28/0x58 [gpio_keys] [ 360.443327] devm_action_release+0x10/0x18 [ 360.447481] release_nodes+0x8c/0x1a0 [ 360.451194] devres_release_all+0x90/0x100 [ 360.455346] device_unbind_cleanup+0x14/0x60 [ 360.459677] device_release_driver_internal+0xe8/0x168 [ 360.464883] driver_detach+0x4c/0x90 [ 360.468509] bus_remove_driver+0x54/0xb0 [ 360.472485] driver_unregister+0x2c/0x58 [ 360.476462] platform_driver_unregister+0x10/0x18 [ 360.481230] gpio_keys_exit+0x14/0x828 [gpio_keys] [ 360.486088] __arm64_sys_delete_module+0x1e0/0x270 [ 360.490945] invoke_syscall+0x40/0xf8 [ 360.494661] el0_svc_common.constprop.3+0xf0/0x110 [ 360.499515] do_el0_svc+0x20/0x78 [ 360.502877] el0_svc+0x48/0xf8 [ 360.505977] el0t_64_sync_handler+0x88/0xb0 [ 360.510216] el0t_64_sync+0x148/0x14c [ 360.513930] irq event stamp: 4306 [ 360.517288] hardirqs last enabled at (4305): [] __cancel_work_timer+0x130/0x1b0 [ 360.526359] hardirqs last disabled at (4306): [] el1_dbg+0x24/0x88 [ 360.534204] softirqs last enabled at (4278): [] _stext+0x4a0/0x5e0 [ 360.542133] softirqs last disabled at (4267): [] irq_exit_rcu+0x18c/0x1b0 [ 360.550591] ---[ end trace 0000000000000000 ]--- Signed-off-by: Lad Prabhakar --- drivers/input/keyboard/gpio_keys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index d75a8b179a8a..ec9d50ddda42 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -133,7 +133,7 @@ static void gpio_keys_quiesce_key(void *data) hrtimer_cancel(&bdata->release_timer); if (bdata->debounce_use_hrtimer) hrtimer_cancel(&bdata->debounce_timer); - else + else if (bdata->gpiod) cancel_delayed_work_sync(&bdata->work); } -- 2.17.1