From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Archit Taneja <architt@codeaurora.org>,
Thong Ho <thong.ho.px@rvc.renesas.com>,
Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Subject: [PATCH 4.4 22/31] drm/bridge: adv7511: Fix mutex deadlock when interrupts are disabled
Date: Tue, 12 Sep 2017 09:56:17 -0700 [thread overview]
Message-ID: <20170912165248.480542824@linuxfoundation.org> (raw)
In-Reply-To: <20170912165247.436880944@linuxfoundation.org>
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Archit Taneja <architt@codeaurora.org>
commit f0bfcc22d9822947b0ad3095e8363eab5261864c upstream.
When the adv7511 i2c client doesn't have an interrupt line, we observe a
deadlock on caused by trying to lock drm device's mode_config.mutex twice
in the same context.
Here is the sequence that causes it:
ioctl DRM_IOCTL_MODE_GETCONNECTOR from userspace
drm_mode_getconnector (acquires mode_config mutex)
connector->fill_modes()
drm_helper_probe_single_connector_modes
connector_funcs->get_modes
adv7511_encoder_get_modes
adv7511_get_edid_block
adv7511_irq_process
drm_helper_hpd_irq_event (acquires mode_config mutex again)
In adv7511_irq_process, don't call drm_helper_hpd_irq_event when not
called from the interrupt handler. It doesn't serve any purpose there
anyway.
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/i2c/adv7511.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/gpu/drm/i2c/adv7511.c
+++ b/drivers/gpu/drm/i2c/adv7511.c
@@ -429,7 +429,7 @@ static bool adv7511_hpd(struct adv7511 *
return false;
}
-static int adv7511_irq_process(struct adv7511 *adv7511)
+static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd)
{
unsigned int irq0, irq1;
int ret;
@@ -445,7 +445,7 @@ static int adv7511_irq_process(struct ad
regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0);
regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1);
- if (irq0 & ADV7511_INT0_HDP && adv7511->encoder)
+ if (process_hpd && irq0 & ADV7511_INT0_HDP && adv7511->encoder)
drm_helper_hpd_irq_event(adv7511->encoder->dev);
if (irq0 & ADV7511_INT0_EDID_READY || irq1 & ADV7511_INT1_DDC_ERROR) {
@@ -463,7 +463,7 @@ static irqreturn_t adv7511_irq_handler(i
struct adv7511 *adv7511 = devid;
int ret;
- ret = adv7511_irq_process(adv7511);
+ ret = adv7511_irq_process(adv7511, true);
return ret < 0 ? IRQ_NONE : IRQ_HANDLED;
}
@@ -480,7 +480,7 @@ static int adv7511_wait_for_edid(struct
adv7511->edid_read, msecs_to_jiffies(timeout));
} else {
for (; timeout > 0; timeout -= 25) {
- ret = adv7511_irq_process(adv7511);
+ ret = adv7511_irq_process(adv7511, false);
if (ret < 0)
break;
next prev parent reply other threads:[~2017-09-12 16:57 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-12 16:55 [PATCH 4.4 00/31] 4.4.88-stable review Greg Kroah-Hartman
2017-09-12 16:55 ` [PATCH 4.4 01/31] usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard Greg Kroah-Hartman
2017-09-12 16:55 ` [PATCH 4.4 02/31] USB: serial: option: add support for D-Link DWM-157 C1 Greg Kroah-Hartman
2017-09-12 16:55 ` [PATCH 4.4 03/31] usb: Add device quirk for Logitech HD Pro Webcam C920-C Greg Kroah-Hartman
2017-09-12 16:55 ` [PATCH 4.4 04/31] usb:xhci:Fix regression when ATI chipsets detected Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 05/31] USB: core: Avoid race of async_completed() w/ usbdev_release() Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 06/31] staging/rts5208: fix incorrect shift to extract upper nybble Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 07/31] driver core: bus: Fix a potential double free Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 08/31] intel_th: pci: Add Cannon Lake PCH-H support Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 09/31] intel_th: pci: Add Cannon Lake PCH-LP support Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 10/31] ath10k: fix memory leak in rx ring buffer allocation Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 11/31] Input: trackpoint - assume 3 buttons when buttons detection fails Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 12/31] rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 13/31] Bluetooth: Add support of 13d3:3494 RTL8723BE device Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 15/31] mwifiex: correct channel stat buffer overflows Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 16/31] drm/nouveau/pci/msi: disable MSI on big-endian platforms by default Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 17/31] workqueue: Fix flag collision Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 18/31] cs5536: add support for IDE controller variant Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 19/31] scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 20/31] scsi: sg: recheck MMAP_IO request length with lock held Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 21/31] drm: adv7511: really enable interrupts for EDID detection Greg Kroah-Hartman
2017-09-12 16:56 ` Greg Kroah-Hartman [this message]
2017-09-12 16:56 ` [PATCH 4.4 23/31] drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context Greg Kroah-Hartman
2017-10-13 13:53 ` Ben Hutchings
2017-09-12 16:56 ` [PATCH 4.4 24/31] drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event() Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 25/31] drm/bridge: adv7511: Re-write the i2c address before EDID probing Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 26/31] btrfs: resume qgroup rescan on rw remount Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 28/31] ALSA: msnd: Optimize / harden DSP and MIDI loops Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 29/31] Bluetooth: Properly check L2CAP config option output buffer length Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 30/31] ARM: 8692/1: mm: abort uaccess retries upon fatal signal Greg Kroah-Hartman
2017-09-12 16:56 ` [PATCH 4.4 31/31] NFS: Fix 2 use after free issues in the I/O code Greg Kroah-Hartman
2017-09-13 0:11 ` [PATCH 4.4 00/31] 4.4.88-stable review Shuah Khan
[not found] ` <59b8666e.cd5e1c0a.73fbf.2682@mx.google.com>
2017-09-13 1:03 ` Greg Kroah-Hartman
2017-09-13 21:57 ` Kevin Hilman
2017-09-19 5:50 ` Stephen Boyd
2017-09-19 11:14 ` Mark Brown
2017-09-13 14:32 ` Guenter Roeck
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=20170912165248.480542824@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=architt@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nhan.nguyen.yb@renesas.com \
--cc=stable@vger.kernel.org \
--cc=thong.ho.px@rvc.renesas.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).