在 2022/11/3 22:52, Paul Cercueil 写道:
Hi Yuan,
Le jeu. 3 nov. 2022 à 14:01:48 +0000, Yuan Can <yuancan@xxxxxxxxxx> 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@xxxxxxxxxx>
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