From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 D0EB4363C75 for ; Fri, 24 Apr 2026 11:25:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777029953; cv=none; b=lJbhQ9PQ2vAeRxnmCOmBV8XgQfhmiXnS7BP7/VDauG/pxXWf8nLTDttSEu9eZ45PnZuwCgf2WAeMEBrC73DvaWHQzf4m1fY5Z36axJw9NOI0Ab0t5QvdiW+puQ1sOY8LuBe1862h74/2E+xXiUayiu7qpb0EhwLV4YEsKRwClHM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777029953; c=relaxed/simple; bh=uRnq5eJz+CVtIj4P57vTT+K3+E8v0KlscITuP0PKqB8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=RHHiG3lsz2Eecb7LiLO3hOM5qhfFksfzl8dsCYgdMcLFqWmHbLw+4gpHso8jHDLRfTzJWEH5cl02/Zo++J3Ua90xNZq/4hPKMQwbkUPDP4n6mH9wPR8KtTUM/16wxUPmPXU3DxSDiwbzQXNJy5uFJPalhDZkjxlzZF4i35q3erY= 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=cV8U++ju; arc=none smtp.client-ip=209.85.216.53 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="cV8U++ju" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-356337f058aso5013171a91.2 for ; Fri, 24 Apr 2026 04:25:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777029951; x=1777634751; 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; bh=FSJ7I3/KIQ88Wa0Cq5z543CNK+Uoag1ofD2MM0j17pQ=; b=cV8U++jueO++M2Pi5MePdBuZpCf/MZrZLIuT73neu6BSkZm8hkwasnGDzFXRMum8+s koML6djPesfT2wYaPvLNrqSLLSgQq74DhI5L1/ZFrr99VyfMfcKa/QckbNxaUR9c3wEc 05NLzKl/LGdRmRKpf0SNWRfJ9A54z2ZYmBK9piTa8YwT+sK8dTsbaxh7SLSLyWaJ7QkB OC6sIbqI9XqSgIhssmSzY2dgn3c+u+Xodc+f7oaEGNQs6ZEVNsVv+3U9uquf+bl15iEN 6RfQKxDY1r5p4P4drMz/bIRtF5Jnc5pqSnxj3h8yOv/onYlS704a6R8kqW/Ou1Q0Oad1 /0gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777029951; x=1777634751; 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; bh=FSJ7I3/KIQ88Wa0Cq5z543CNK+Uoag1ofD2MM0j17pQ=; b=FPXHjo0kqu2OKH7C+0NHcafmq9hHx0n7aKmwNYdUpEHV43hm71245LkBh1NKwc8gZx +6sI93aL1zZTSAIy5Hil+VjyYWU7YcDsVVNSDa/xP8DmX7nGcZeKx/8kZGKsaRaLAN2w YMO7r3QZa1ao+uy1ck7JM+roJl+KQbWlugrry1QhByOtfSG/GGpiHX+scMTRN/ETJKgj VWS1iuy/L/s8HLHH20SyIuWN75PJuIlej2pEf0phIyy3F1bqhE9G+GsCFLlpWdO0+iVe AOqfmiu/5AfHhCx/LxooO7qH7nYOHNYa7ggJFpD/t4rwpYg26VMiZe8OGthTX01wuXrb jq1Q== X-Forwarded-Encrypted: i=1; AFNElJ9qq+tRddR7oiDgGOnQf2Yd9ShD4NLgWwveOz4uavoAdcNxpEapQCirqQcXF1EEFc0YMzaJXUnhl7Dqo0Y=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7VjPtaDyQGsYp6ynEi31wmFfXlJyLcg4jYgYYjFlGwys32N5e 6uXRZTTsomX8p9dwsGWs7l9vZCHVrx4VbH5dGqdm61Auo+94VxzSTMQ= X-Gm-Gg: AeBDieugTYGUE4rP2QMZ+OH7Qp8C8Dp/Z1VQy7f8wll5scGSsle8V9g8BGOEAEP1cmq iq1qVhm1kPD+GuC8GxLG8nygOIYf+UEafpOBZuoPttqfvCdXu2SVkAwUkU4L7FqTyfJSVPQ6yfR qBKkgivZ606kYUADaAxlqvrghFK8A6gfveTzXksRP/xhmtZW9e+EztOmSgfAKnGi8q367xGrYyt PbS61guWekEdosoNbKbl/MalI4pxJrvawbWf6V+h8vhZSDEdT8mN/SDHw34jk5skVroNoO3vjGI QJIzd26E0fsGI4XLztXUyJh38JCn2NJ6WNlw3pqC7RVb5XNRyHI8WeBuSvS92+BYzNXv6Kadhdg 1yO9f4JPaDfNdQjft8RJQelLtIt+tTnMbf+OnukTR75lLMLhbueDk3dOIBjSx5BbM6VsDZj5opF WPKoiqaVT67Z/L3xxjt4Oy4LoIuyMyGbE3WkGFHz/vm/ZIY8upoBH/rRm1nZ48P9iCvo/Q8DGRI Qom192PwA== X-Received: by 2002:a17:90b:380c:b0:35f:b5df:448 with SMTP id 98e67ed59e1d1-3614049ed12mr32784879a91.24.1777029951174; Fri, 24 Apr 2026 04:25:51 -0700 (PDT) Received: from localhost.localdomain ([1.226.165.54]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36141990bb6sm23974050a91.17.2026.04.24.04.25.47 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 24 Apr 2026 04:25:50 -0700 (PDT) From: Myeonghun Pak To: Dave Airlie , Gerd Hoffmann Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Myeonghun Pak Subject: [PATCH] drm/qxl: Fix missing KMS poll cleanup Date: Fri, 24 Apr 2026 20:25:18 +0900 Message-ID: <20260424112543.57819-1-mhun512@gmail.com> X-Mailer: git-send-email 2.47.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit drm_kms_helper_poll_init() initializes the output polling work and enables polling for the DRM device. qxl enables polling before calling drm_dev_register(), but the drm_dev_register() failure path tears down the modeset and device state without disabling the polling helper. The remove path also unregisters and shuts down the DRM device without first disabling the polling helper. Add matching drm_kms_helper_poll_fini() calls in both paths so the delayed polling work is cancelled before qxl tears down the associated modeset/device state. Signed-off-by: Myeonghun Pak --- drivers/gpu/drm/qxl/qxl_drv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c index 2bbb1168a3..1e6a2392d7 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.c +++ b/drivers/gpu/drm/qxl/qxl_drv.c @@ -118,12 +118,13 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) /* Complete initialization. */ ret = drm_dev_register(&qdev->ddev, ent->driver_data); if (ret) - goto modeset_cleanup; + goto poll_fini; drm_client_setup(&qdev->ddev, NULL); return 0; -modeset_cleanup: +poll_fini: + drm_kms_helper_poll_fini(&qdev->ddev); qxl_modeset_fini(qdev); unload: qxl_device_fini(qdev); @@ -154,6 +155,7 @@ qxl_pci_remove(struct pci_dev *pdev) { struct drm_device *dev = pci_get_drvdata(pdev); + drm_kms_helper_poll_fini(dev); drm_dev_unregister(dev); drm_atomic_helper_shutdown(dev); if (pci_is_vga(pdev) && pdev->revision < 5) -- 2.50.1