[PATCH] drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
Yuan Can
yuancan at huawei.com
Fri Nov 4 06:20:52 UTC 2022
在 2022/11/3 22:52, Paul Cercueil 写道:
> Hi Yuan,
>
> Le jeu. 3 nov. 2022 à 14:01:48 +0000, Yuan Can <yuancan at huawei.com> a
> écrit :
>> A problem about modprobe ingenic-drm failed is triggered with the
>> following
>> log given:
>>
>> [ 303.561088] Error: Driver 'ingenic-ipu' is already registered,
>> aborting...
>> modprobe: ERROR: could not insert 'ingenic_drm': Device or resource
>> busy
>>
>> The reason is that ingenic_drm_init() returns platform_driver_register()
>> directly without checking its return value, if
>> platform_driver_register()
>> failed, it returns without unregistering ingenic_ipu_driver_ptr,
>> resulting
>> the ingenic-drm can never be installed later.
>> A simple call graph is shown as below:
>>
>> ingenic_drm_init()
>> platform_driver_register() # ingenic_ipu_driver_ptr are registered
>> platform_driver_register()
>> driver_register()
>> bus_add_driver()
>> priv = kzalloc(...) # OOM happened
>> # return without unregister ingenic_ipu_driver_ptr
>>
>> Fixing this problem by checking the return value of
>> platform_driver_register() and do platform_unregister_drivers() if
>> error happened.
>>
>> Fixes: fc1acf317b01 ("drm/ingenic: Add support for the IPU")
>> Signed-off-by: Yuan Can <yuancan at huawei.com>
>
> Missing a Cc: to linux-stable, no?
>
> Cheers,
> -Paul
Ok, I will cc to linux-stable in the v2 patch, thanks for the review.
--
Best regards,
Yuan Can
More information about the dri-devel
mailing list