[PATCH drm-dp 04/10] drm/hisilicon/hibmc: fix the hibmc loaded failed bug
Yongbang Shi
shiyongbang at huawei.com
Fri Jun 6 08:20:38 UTC 2025
>
>> From: Baihan Li<libaihan at huawei.com>
>>
>> When hibmc loaded failed, the driver use hibmc_unload to free the
>> resource, but the mutexes in mode.config are not init, which will
>> access an NULL pointer.
>>
>> Fixes: b3df5e65cc03 ("drm/hibmc: Drop drm_vblank_cleanup")
>> Reported-by:oushixiong1025 at 163.com
>> Signed-off-by: Baihan Li<libaihan at huawei.com>
>> ---
>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>> index 4cdcc34070ee..ac552c339671 100644
>> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>> @@ -319,13 +319,13 @@ static int hibmc_load(struct drm_device *dev)
>>
>> ret = hibmc_hw_init(priv);
>> if (ret)
>> - goto err;
>> + return ret;
>>
>> ret = drmm_vram_helper_init(dev, pci_resource_start(pdev, 0),
>> pci_resource_len(pdev, 0));
>> if (ret) {
>> drm_err(dev, "Error initializing VRAM MM; %d\n", ret);
>> - goto err;
>> + return ret;
>
> The mutexes in mode.config are initialized when calling hibmc_kms_init(),
> if calling hibmc_kms_init() failed it also need to return.
>
> You may want to look at the following patch:
> LKML: oushixiong1025 at 163 ...: [PATCH] drm/hisilicon: Fix a NULL
> pointer access when hibmc_load failed
> <https://lkml.org/lkml/2025/5/20/331>
>
> Reported-by: Shixiong Ou <oushixiong at kylinos.cn>
>
> Thanks and Regards,
> Shixiong Ou.
>
Hi Shixiong,
Thanks for your advice!
Actually, even if the calling of drmm_mode_config_init() failed, these mutexes are still initialized,
and it's the same for hibmc_kms_init() failed, so we don't need to change its return.
Thanks,
Baihan Li
>> }
>>
>> ret = hibmc_kms_init(priv);
More information about the dri-devel
mailing list