[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