From nobody Sat Jul 25 00:41:54 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B40B3FF889 for ; Tue, 21 Jul 2026 14:36:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784644586; cv=none; b=XsKymRYVOtAS/Zpoc2uJyCqY6SRx15WQe2aFbLD0ETNGus6roaDJQAvNFhE7fkDHaIXoOTOgLTBTwpv3XT/EcKnr5h2/To4D4+eACYZb8jwDCWuFFgg1MxCTUOXvkTBvbAysYOiwRPe00ewQ/KUh6+X70RN6+12/B+0hTDADTTQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784644586; c=relaxed/simple; bh=2Hw8LPmeCs3pRRVbNneSU7fu8qBZLNMruN5d88NoZEw=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=HZ6k+If6RgmTJ1KNtTvA+bJdzpggGWFFwcEJQ9AWSLgzgo/fkpG4J/L8vzUy1Lc56hnzoG8g0d64iBmco2BgT+noXr8tQqyoGdtZzLy5GzwKu3TrWOK3cgLRnzu2KgSJprKLZgDdEJ4jyRBmDJKVub7YPRTS4IRRoOohzd0/7KY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IpGvQKv7; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IpGvQKv7" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-8487088510aso11527534b3a.0 for ; Tue, 21 Jul 2026 07:36:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784644581; x=1785249381; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=UMT648ai00+XnGVVa+iznQI+riy4WK01QoUhmpZLpkI=; b=IpGvQKv7PtnaWeXT3OlDnZa3tc815XhT3IxHfgUCI+BLysu/jh0hnKqCfttCUxLAdV QR0Tt2ykrCEh5Wq+w/OUAk4hk5+TYJ9T5EmfAl+/tNylG7g0WnucuGq4B6Y2H1vWsErI PfUx3W7sXtvjeRtHB1f+dJSDR2AG3ryncGiMB8qFLEt3iPwVpDyK+wDJhgrr+URpV7UA zwjnyDy0BJvb1SM4sosCbKRwQ9T1/XU8L8VuScLBwuxkVckUFdVYXZYq5hiRcCTMiHmw jY+FzHqE96T258EOmJ6aM/9t/VO4XVeET6F/RQiwQcDNhbVnDt9kHYkiHsXA06VuUyhw x/DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784644581; x=1785249381; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UMT648ai00+XnGVVa+iznQI+riy4WK01QoUhmpZLpkI=; b=Ikt5c2W/ReCBn2scllbLUfp80+vwKB7DEGPcEYP3/agZHqtiyDkyfYsDkcGyRuWdBM 3IZenOw2kfL5/vbvSM7OXURDubonOeYMfPUlXQCLfGcWQmC1mR073OI907b+A0kaANki yd4fpj3wWLyC+O28cf+p3yuREy/IYn6eY9PwhGabirjxKfm3KGbMyjYBrcIuFscHPGRW VC4lTUqD51KPpqrko6PiONJRc0B5x52AqReI5AqCL8Vhrv/ebDM0tMri5DoNpfrJ1QJe pVPOiKH8k5aMDvQv/hMwgvAYkUDnMzlnhD979IcayFmVOhIRTtEXEBTDpZYfj+6XHP4q LXDw== X-Forwarded-Encrypted: i=1; AHgh+Row0FUp7odpQpIQhWjlAafP3AFKa5i3EdEGgEZalExOfDMsWT9XWODykuEjMgSvy0lEHJ+lZFDafzaxs/w=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/ZqTUhHSf7E5sLqjjT3In6o7zPwcAnugjQ5kkL58KB/gDXje8 gN70l06mfumXFrZq3j4g8fNILruDr2C5ISaaCjomKgf66+k739n8iOw= X-Gm-Gg: AfdE7cnPaRrGeaqOlOAALCskezjVAyn8kZK6Rwig0Nxz/bZYff+m1s8cSrQrw35bvnB TYn1HQ4JlPKFELZbqq2vi5YScVnvyDzDKIL0IGo3ptWuH/KoSWObKeNwjpLeUKJq8hQDkhdYIr0 UhaR7uhHEGRLfAwMulbEaEBNLaKfmdoEkhnlksWcA4lVVpThYjCwpGvMoNH02Ixeo4eEAabg32s L15VWOxqldT2E5zWmgeLLk9OAdRblppb12y/A/qOZ8y4YnZ17pyPVy9dwz8XJbZOBiMpsixllwG JxjoT1mQC6HASi4wTsSo/j8bjFYHeMun4RhKqOKJobuMJN103PHn/htRgNf9U+t1B8G8V5jhEzP tI5aI0s/4kWxlfsLaQ8yEQaO4htxyWqYNuK26/qvHN7unMP7DnlT5gET+mA/wnqf3LpgxJmTh95 cDewxBy70kGZZWAaIXELI6DFJObbTVlyFQ59mHyZfbt9R9mwLq3HhcJJp7Q7CP3B5C3jK2vYO9G /oxrIXQZM6iIOO0/i4uphegXxlRVwP3uG2VWf3h X-Received: by 2002:a05:6a20:cc0b:b0:3c3:6b6e:8ba0 with SMTP id adf61e73a8af0-3c3ad66a4ccmr20423394637.11.1784644580980; Tue, 21 Jul 2026 07:36:20 -0700 (PDT) Received: from localhost.localdomain ([14.5.152.27]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cb517aad770sm5955114a12.2.2026.07.21.07.36.16 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 21 Jul 2026 07:36:20 -0700 (PDT) From: Myeonghun Pak To: Andrzej Hajda , Neil Armstrong , Robert Foss Cc: Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Xin Ji , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Myeonghun Pak , Ijae Kim Subject: [PATCH] drm/bridge: anx7625: stop IRQ work before teardown Date: Tue, 21 Jul 2026 23:35:59 +0900 Message-Id: <20260721143559.27322-1-mhun512@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The HPD interrupt remains active until devres releases it after the driver's remove callback returns. Its handler queues work that accesses the Type-C port and DRM bridge, but remove unregisters those objects before destroying the workqueue. An interrupt can therefore race with teardown and queue work that accesses released objects. Disable the interrupt first to synchronize with the handler, then destroy the workqueue to drain work queued before the interrupt was disabled. This ensures that no HPD work remains before unregistering its consumers. Fixes: 8bdfc5dae4e3 ("drm/bridge: anx7625: Add anx7625 MIPI DSI/DPI to DP") Cc: stable@vger.kernel.org Co-developed-by: Ijae Kim Signed-off-by: Ijae Kim Signed-off-by: Myeonghun Pak --- drivers/gpu/drm/bridge/analogix/anx7625.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/br= idge/analogix/anx7625.c index fffcd6154..d6071839f 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -2973,13 +2973,15 @@ static void anx7625_i2c_remove(struct i2c_client *c= lient) { struct anx7625_data *platform =3D i2c_get_clientdata(client); =20 + if (platform->pdata.intp_irq) { + disable_irq(platform->pdata.intp_irq); + destroy_workqueue(platform->workqueue); + } + anx7625_typec_unregister(platform); =20 drm_bridge_remove(&platform->bridge); =20 - if (platform->pdata.intp_irq) - destroy_workqueue(platform->workqueue); - if (platform->hdcp_workqueue) { cancel_delayed_work(&platform->hdcp_work); destroy_workqueue(platform->hdcp_workqueue); --=20 2.47.1