* [PATCH] ipmi_si: fix unexpected driver unregister warning
@ 2019-05-17 10:12 Kefeng Wang
2019-05-17 10:12 ` [PATCH] ipmi_si: use bool type for initialized variable Kefeng Wang
2019-05-17 16:18 ` [PATCH] ipmi_si: fix unexpected driver unregister warning Corey Minyard
0 siblings, 2 replies; 5+ messages in thread
From: Kefeng Wang @ 2019-05-17 10:12 UTC (permalink / raw)
To: Corey Minyard, Arnd Bergmann, Greg Kroah-Hartman,
openipmi-developer, linux-kernel
Cc: Kefeng Wang, Hulk Robot
If ipmi_si_platform_init()->platform_driver_register() fails,
platform_driver_unregister() called unconditionally will trigger
following warning,
ipmi_platform: Unable to register driver: -12
------------[ cut here ]------------
Unexpected driver unregister!
WARNING: CPU: 1 PID: 7210 at drivers/base/driver.c:193 driver_unregister+0x60/0x70 drivers/base/driver.c:193
Fix it by adding platform_registered variable, only unregister platform
driver when it is already successfully registered.
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
drivers/char/ipmi/ipmi_si_platform.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/char/ipmi/ipmi_si_platform.c b/drivers/char/ipmi/ipmi_si_platform.c
index f2a91c4d8cab..0cd849675d99 100644
--- a/drivers/char/ipmi/ipmi_si_platform.c
+++ b/drivers/char/ipmi/ipmi_si_platform.c
@@ -19,6 +19,7 @@
#include "ipmi_si.h"
#include "ipmi_dmi.h"
+static bool platform_registered;
static bool si_tryplatform = true;
#ifdef CONFIG_ACPI
static bool si_tryacpi = true;
@@ -469,9 +470,12 @@ void ipmi_si_platform_init(void)
int rv = platform_driver_register(&ipmi_platform_driver);
if (rv)
pr_err("Unable to register driver: %d\n", rv);
+ else
+ platform_registered = true;
}
void ipmi_si_platform_shutdown(void)
{
- platform_driver_unregister(&ipmi_platform_driver);
+ if (platform_registered)
+ platform_driver_unregister(&ipmi_platform_driver);
}
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] ipmi_si: use bool type for initialized variable
2019-05-17 10:12 [PATCH] ipmi_si: fix unexpected driver unregister warning Kefeng Wang
@ 2019-05-17 10:12 ` Kefeng Wang
2019-05-17 16:18 ` Corey Minyard
2019-05-17 16:18 ` [PATCH] ipmi_si: fix unexpected driver unregister warning Corey Minyard
1 sibling, 1 reply; 5+ messages in thread
From: Kefeng Wang @ 2019-05-17 10:12 UTC (permalink / raw)
To: Corey Minyard, Arnd Bergmann, Greg Kroah-Hartman,
openipmi-developer, linux-kernel
Cc: Kefeng Wang
Cover 'int' to 'bool' type for initialized variable.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
drivers/char/ipmi/ipmi_si_intf.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index f124a2d2bb9f..da5b6723329a 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -71,7 +71,7 @@ enum si_intf_state {
static const char * const si_to_str[] = { "invalid", "kcs", "smic", "bt" };
-static int initialized;
+static bool initialized;
/*
* Indexes into stats[] in smi_info below.
@@ -2124,7 +2124,7 @@ static int __init init_ipmi_si(void)
}
skip_fallback_noirq:
- initialized = 1;
+ initialized = true;
mutex_unlock(&smi_infos_lock);
if (type)
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] ipmi_si: fix unexpected driver unregister warning
2019-05-17 10:12 [PATCH] ipmi_si: fix unexpected driver unregister warning Kefeng Wang
2019-05-17 10:12 ` [PATCH] ipmi_si: use bool type for initialized variable Kefeng Wang
@ 2019-05-17 16:18 ` Corey Minyard
2019-05-18 7:40 ` Kefeng Wang
1 sibling, 1 reply; 5+ messages in thread
From: Corey Minyard @ 2019-05-17 16:18 UTC (permalink / raw)
To: Kefeng Wang
Cc: Arnd Bergmann, Greg Kroah-Hartman, openipmi-developer,
linux-kernel, Hulk Robot
On Fri, May 17, 2019 at 06:12:44PM +0800, Kefeng Wang wrote:
> If ipmi_si_platform_init()->platform_driver_register() fails,
> platform_driver_unregister() called unconditionally will trigger
> following warning,
>
> ipmi_platform: Unable to register driver: -12
> ------------[ cut here ]------------
> Unexpected driver unregister!
> WARNING: CPU: 1 PID: 7210 at drivers/base/driver.c:193 driver_unregister+0x60/0x70 drivers/base/driver.c:193
>
> Fix it by adding platform_registered variable, only unregister platform
> driver when it is already successfully registered.
This is good, but have you found out why the driver was unable to
register in the first place? That really shouldn't happen.
This patch is queued for 5.3.
-corey
>
> Reported-by: Hulk Robot <hulkci@huawei.com>
> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
> ---
> drivers/char/ipmi/ipmi_si_platform.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/char/ipmi/ipmi_si_platform.c b/drivers/char/ipmi/ipmi_si_platform.c
> index f2a91c4d8cab..0cd849675d99 100644
> --- a/drivers/char/ipmi/ipmi_si_platform.c
> +++ b/drivers/char/ipmi/ipmi_si_platform.c
> @@ -19,6 +19,7 @@
> #include "ipmi_si.h"
> #include "ipmi_dmi.h"
>
> +static bool platform_registered;
> static bool si_tryplatform = true;
> #ifdef CONFIG_ACPI
> static bool si_tryacpi = true;
> @@ -469,9 +470,12 @@ void ipmi_si_platform_init(void)
> int rv = platform_driver_register(&ipmi_platform_driver);
> if (rv)
> pr_err("Unable to register driver: %d\n", rv);
> + else
> + platform_registered = true;
> }
>
> void ipmi_si_platform_shutdown(void)
> {
> - platform_driver_unregister(&ipmi_platform_driver);
> + if (platform_registered)
> + platform_driver_unregister(&ipmi_platform_driver);
> }
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ipmi_si: use bool type for initialized variable
2019-05-17 10:12 ` [PATCH] ipmi_si: use bool type for initialized variable Kefeng Wang
@ 2019-05-17 16:18 ` Corey Minyard
0 siblings, 0 replies; 5+ messages in thread
From: Corey Minyard @ 2019-05-17 16:18 UTC (permalink / raw)
To: Kefeng Wang
Cc: Arnd Bergmann, Greg Kroah-Hartman, openipmi-developer, linux-kernel
On Fri, May 17, 2019 at 06:12:45PM +0800, Kefeng Wang wrote:
> Cover 'int' to 'bool' type for initialized variable.
A reasonable cleanup, queued for 5.3.
-corey
>
> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
> ---
> drivers/char/ipmi/ipmi_si_intf.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
> index f124a2d2bb9f..da5b6723329a 100644
> --- a/drivers/char/ipmi/ipmi_si_intf.c
> +++ b/drivers/char/ipmi/ipmi_si_intf.c
> @@ -71,7 +71,7 @@ enum si_intf_state {
>
> static const char * const si_to_str[] = { "invalid", "kcs", "smic", "bt" };
>
> -static int initialized;
> +static bool initialized;
>
> /*
> * Indexes into stats[] in smi_info below.
> @@ -2124,7 +2124,7 @@ static int __init init_ipmi_si(void)
> }
>
> skip_fallback_noirq:
> - initialized = 1;
> + initialized = true;
> mutex_unlock(&smi_infos_lock);
>
> if (type)
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ipmi_si: fix unexpected driver unregister warning
2019-05-17 16:18 ` [PATCH] ipmi_si: fix unexpected driver unregister warning Corey Minyard
@ 2019-05-18 7:40 ` Kefeng Wang
0 siblings, 0 replies; 5+ messages in thread
From: Kefeng Wang @ 2019-05-18 7:40 UTC (permalink / raw)
To: minyard
Cc: Arnd Bergmann, Greg Kroah-Hartman, openipmi-developer,
linux-kernel, Hulk Robot
On 2019/5/18 0:18, Corey Minyard wrote:
> On Fri, May 17, 2019 at 06:12:44PM +0800, Kefeng Wang wrote:
>> If ipmi_si_platform_init()->platform_driver_register() fails,
>> platform_driver_unregister() called unconditionally will trigger
>> following warning,
>>
>> ipmi_platform: Unable to register driver: -12
>> ------------[ cut here ]------------
>> Unexpected driver unregister!
>> WARNING: CPU: 1 PID: 7210 at drivers/base/driver.c:193 driver_unregister+0x60/0x70 drivers/base/driver.c:193
>>
>> Fix it by adding platform_registered variable, only unregister platform
>> driver when it is already successfully registered.
> This is good, but have you found out why the driver was unable to
> register in the first place? That really shouldn't happen.
Yes, it is hard to happen in real scene, the test robot found this issue
when FAULT_INJECTION enabled.
>
> This patch is queued for 5.3.
>
> -corey
>
>> Reported-by: Hulk Robot <hulkci@huawei.com>
>> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
>> ---
>> drivers/char/ipmi/ipmi_si_platform.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/char/ipmi/ipmi_si_platform.c b/drivers/char/ipmi/ipmi_si_platform.c
>> index f2a91c4d8cab..0cd849675d99 100644
>> --- a/drivers/char/ipmi/ipmi_si_platform.c
>> +++ b/drivers/char/ipmi/ipmi_si_platform.c
>> @@ -19,6 +19,7 @@
>> #include "ipmi_si.h"
>> #include "ipmi_dmi.h"
>>
>> +static bool platform_registered;
>> static bool si_tryplatform = true;
>> #ifdef CONFIG_ACPI
>> static bool si_tryacpi = true;
>> @@ -469,9 +470,12 @@ void ipmi_si_platform_init(void)
>> int rv = platform_driver_register(&ipmi_platform_driver);
>> if (rv)
>> pr_err("Unable to register driver: %d\n", rv);
>> + else
>> + platform_registered = true;
>> }
>>
>> void ipmi_si_platform_shutdown(void)
>> {
>> - platform_driver_unregister(&ipmi_platform_driver);
>> + if (platform_registered)
>> + platform_driver_unregister(&ipmi_platform_driver);
>> }
>> --
>> 2.20.1
>>
> .
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-05-18 7:42 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-17 10:12 [PATCH] ipmi_si: fix unexpected driver unregister warning Kefeng Wang
2019-05-17 10:12 ` [PATCH] ipmi_si: use bool type for initialized variable Kefeng Wang
2019-05-17 16:18 ` Corey Minyard
2019-05-17 16:18 ` [PATCH] ipmi_si: fix unexpected driver unregister warning Corey Minyard
2019-05-18 7:40 ` Kefeng Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).