On Tue, May 12, 2026 at 2:37 PM Myeonghun Pak <[email protected]> wrote:
>
> lsdc_pci_probe() initializes KMS polling before setting up vblank support,
> requesting the IRQ and registering the DRM device. If any of those later
> steps fails, probe returns without finalizing polling. The driver also
> never finalizes polling on regular removal.
>
> Use drmm_kms_helper_poll_init() so polling is tied to the DRM device
> lifetime and automatically finalized on probe failure and device removal.
>
> This issue was identified during our ongoing static-analysis research while
> reviewing kernel code.
In the subject line please s/use/Use/g, others LGTM.
Reviewed-by: Huacai Chen <[email protected]>
>
> Fixes: f39db26c5428 ("drm: Add kms driver for loongson display controller")
> Cc: [email protected]
> Co-developed-by: Ijae Kim <[email protected]>
> Signed-off-by: Ijae Kim <[email protected]>
> Signed-off-by: Myeonghun Pak <[email protected]>
> ---
> Changes in v2:
> - Switch to drmm_kms_helper_poll_init() as suggested by Icenowy Zheng
> and Thomas Zimmermann instead of adding manual cleanup paths.
>
> drivers/gpu/drm/loongson/lsdc_drv.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/loongson/lsdc_drv.c
> b/drivers/gpu/drm/loongson/lsdc_drv.c
> index abf5bf68ee..4b97750897 100644
> --- a/drivers/gpu/drm/loongson/lsdc_drv.c
> +++ b/drivers/gpu/drm/loongson/lsdc_drv.c
> @@ -292,7 +292,7 @@ static int lsdc_pci_probe(struct pci_dev *pdev, const
> struct pci_device_id *ent)
>
> vga_client_register(pdev, lsdc_vga_set_decode);
>
> - drm_kms_helper_poll_init(ddev);
> + drmm_kms_helper_poll_init(ddev);
>
> if (loongson_vblank) {
> ret = drm_vblank_init(ddev, descp->num_of_crtc);
> --
> 2.47.1
>