All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Jiri Kosina <jkosina@suse.cz>, Sasha Levin <sashal@kernel.org>,
	linux-input@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 20/27] HID: cp2112: prevent sleeping function called from invalid context
Date: Thu, 29 Aug 2019 14:16:46 -0400	[thread overview]
Message-ID: <20190829181655.8741-20-sashal@kernel.org> (raw)
In-Reply-To: <20190829181655.8741-1-sashal@kernel.org>

From: Benjamin Tissoires <benjamin.tissoires@redhat.com>

[ Upstream commit 2d05dba2b25ecb0f8fc3a0b4eb2232da6454a47b ]

When calling request_threaded_irq() with a CP2112, the function
cp2112_gpio_irq_startup() is called in a IRQ context.

Therefore we can not sleep, and we can not call
cp2112_gpio_direction_input() there.

Move the call to cp2112_gpio_direction_input() earlier to have a working
driver.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hid/hid-cp2112.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c
index 4e940a096b2ac..abf1079457664 100644
--- a/drivers/hid/hid-cp2112.c
+++ b/drivers/hid/hid-cp2112.c
@@ -1149,8 +1149,6 @@ static unsigned int cp2112_gpio_irq_startup(struct irq_data *d)
 
 	INIT_DELAYED_WORK(&dev->gpio_poll_worker, cp2112_gpio_poll_callback);
 
-	cp2112_gpio_direction_input(gc, d->hwirq);
-
 	if (!dev->gpio_poll) {
 		dev->gpio_poll = true;
 		schedule_delayed_work(&dev->gpio_poll_worker, 0);
@@ -1198,6 +1196,12 @@ static int __maybe_unused cp2112_allocate_irq(struct cp2112_device *dev,
 		return PTR_ERR(dev->desc[pin]);
 	}
 
+	ret = cp2112_gpio_direction_input(&dev->gc, pin);
+	if (ret < 0) {
+		dev_err(dev->gc.parent, "Failed to set GPIO to input dir\n");
+		goto err_desc;
+	}
+
 	ret = gpiochip_lock_as_irq(&dev->gc, pin);
 	if (ret) {
 		dev_err(dev->gc.parent, "Failed to lock GPIO as interrupt\n");
-- 
2.20.1

  parent reply	other threads:[~2019-08-29 18:16 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-29 18:16 [PATCH AUTOSEL 4.14 01/27] net: tundra: tsi108: use spin_lock_irqsave instead of spin_lock_irq in IRQ context Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 02/27] hv_netvsc: Fix a warning of suspicious RCU usage Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 03/27] net: tc35815: Explicitly check NET_IP_ALIGN is not zero in tc35815_rx Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 04/27] Bluetooth: btqca: Add a short delay before downloading the NVM Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 05/27] Bluetooth: hidp: Let hidp_send_message return number of queued bytes Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 06/27] ibmveth: Convert multicast list size for little-endian system Sasha Levin
2019-08-29 18:16   ` Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 07/27] gpio: Fix build error of function redefinition Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 08/27] drm/mediatek: use correct device to import PRIME buffers Sasha Levin
2019-08-29 18:16   ` Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 09/27] drm/mediatek: set DMA max segment size Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 10/27] cxgb4: fix a memory leak bug Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 11/27] liquidio: add cleanup in octeon_setup_iq() Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 12/27] net: myri10ge: fix memory leaks Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 13/27] lan78xx: Fix " Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 14/27] vfs: fix page locking deadlocks when deduping files Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 15/27] cx82310_eth: fix a memory leak bug Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 16/27] net: kalmia: fix memory leaks Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 17/27] wimax/i2400m: fix a memory leak bug Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 18/27] ravb: Fix use-after-free ravb_tstamp_skb Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 19/27] kprobes: Fix potential deadlock in kprobe_optimizer() Sasha Levin
2019-08-29 18:16 ` Sasha Levin [this message]
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 21/27] Input: hyperv-keyboard: Use in-place iterator API in the channel callback Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 22/27] Tools: hv: kvp: eliminate 'may be used uninitialized' warning Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 23/27] IB/mlx4: Fix memory leaks Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 24/27] ceph: fix buffer free while holding i_ceph_lock in __ceph_setxattr() Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 25/27] ceph: fix buffer free while holding i_ceph_lock in __ceph_build_xattrs_blob() Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 26/27] ceph: fix buffer free while holding i_ceph_lock in fill_inode() Sasha Levin
2019-08-29 18:16 ` [PATCH AUTOSEL 4.14 27/27] KVM: arm/arm64: Only skip MMIO insn once Sasha Levin
2019-08-29 18:16   ` Sasha Levin

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=20190829181655.8741-20-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=benjamin.tissoires@redhat.com \
    --cc=jkosina@suse.cz \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@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: link
Be 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.