Re: [PATCH 1/2] cpuidle: fix cpu idle driver as a module can not remove
From: Rafael J. Wysocki <hidden>
Date: 2013-07-23 21:22:50
Also in:
linux-pm
On Tuesday, July 23, 2013 05:28:00 PM Dongsheng Wang wrote:
From: Wang Dongsheng <redacted> The module can not be removed when execute "rmmod". rmmod not use "--force". Log: root:~# rmmod cpuidle-e500 incs[9], decs[1] rmmod: can't unload 'cpuidle_e500': Resource temporarily unavailable Signed-off-by: Wang Dongsheng <redacted>
Can you please check the current linux-next branch of the linux-pm.git tree and see if that doesn't conflict with the material in there? Also please explain in the changelog how your changes help to fix the problem. Thanks, Rafael
quoted hunk ↗ jump to hunk
--- Branch: pm-cpuidle drivers/cpuidle/cpuidle.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index fdc432f..534320a 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c@@ -386,6 +386,9 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) goto err_coupled; dev->registered = 1; + + module_put(drv->owner); + return 0; err_coupled:@@ -432,8 +435,6 @@ EXPORT_SYMBOL_GPL(cpuidle_register_device); */ void cpuidle_unregister_device(struct cpuidle_device *dev) { - struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); - if (dev->registered == 0) return;@@ -448,8 +449,6 @@ void cpuidle_unregister_device(struct cpuidle_device *dev) cpuidle_coupled_unregister_device(dev); cpuidle_resume_and_unlock(); - - module_put(drv->owner); } EXPORT_SYMBOL_GPL(cpuidle_unregister_device);
-- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.