2013-03-19 06:47:14

by Dong Hao

[permalink] [raw]
Subject: [PATCH 1/3] lib/kobject: simplify the kobject_init function

From: Dong Hao <[email protected]>

The printk() function at the end of function kobject_init() already had '\n',
so remove the duplicated one.

Signed-off-by: Dong Hao <[email protected]>
---
lib/kobject.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/kobject.c b/lib/kobject.c
index e07ee1f..279a172 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -274,7 +274,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
goto error;
}
if (!ktype) {
- err_str = "must have a ktype to be initialized properly!\n";
+ err_str = "must have a ktype to be initialized properly!";
goto error;
}
if (kobj->state_initialized) {
--
1.7.9.5


2013-03-19 06:47:20

by Dong Hao

[permalink] [raw]
Subject: [PATCH 2/3] lib/kobject: Panic when kobj or ktype is not properly assigned

From: Dong Hao <[email protected]>

kobj and ktype are two important attributes which will be used after kobject_init(),
and (!kobj)|(!ktype) may cause FS corruption which could not be recovered.
Panic instead of dump_stack() when neither kobj nor ktype is properly assigned to
detect the bug early.

Signed-off-by: Dong Hao <[email protected]>
---
lib/kobject.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/kobject.c b/lib/kobject.c
index 279a172..ff9b3c3 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -290,7 +290,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)

error:
printk(KERN_ERR "kobject (%p): %s\n", kobj, err_str);
- dump_stack();
+ BUG_ON(1);
}
EXPORT_SYMBOL(kobject_init);

--
1.7.9.5

2013-03-19 06:47:18

by Dong Hao

[permalink] [raw]
Subject: [PATCH 3/3] lib/kobject: WARN_ON corresponds to BUG_ON

From: Dong Hao <[email protected]>

WARN_ON corresponds to BUG_ON and also gets more info.

Signed-off-by: Dong Hao <[email protected]>
---
lib/kobject.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/kobject.c b/lib/kobject.c
index ff9b3c3..f7d9f31 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -281,7 +281,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
/* do not error out as sometimes we can recover */
printk(KERN_ERR "kobject (%p): tried to init an initialized "
"object, something is seriously wrong.\n", kobj);
- dump_stack();
+ WARN_ON(1);
}

kobject_init_internal(kobj);
--
1.7.9.5

2013-03-19 06:59:49

by Xiao Guangrong

[permalink] [raw]
Subject: Re: [PATCH 2/3] lib/kobject: Panic when kobj or ktype is not properly assigned

On 03/19/2013 02:47 PM, Dong Hao wrote:
> From: Dong Hao <[email protected]>
>
> kobj and ktype are two important attributes which will be used after kobject_init(),

> and (!kobj)|(!ktype) may cause FS corruption which could not be recovered.

delete this line, i am not very convinced about corruption ...

> Panic instead of dump_stack() when neither kobj nor ktype is properly assigned to
> detect the bug early.
>
> Signed-off-by: Dong Hao <[email protected]>
> ---
> lib/kobject.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/kobject.c b/lib/kobject.c
> index 279a172..ff9b3c3 100644
> --- a/lib/kobject.c
> +++ b/lib/kobject.c
> @@ -290,7 +290,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
>
> error:
> printk(KERN_ERR "kobject (%p): %s\n", kobj, err_str);
> - dump_stack();
> + BUG_ON(1);
> }
> EXPORT_SYMBOL(kobject_init);
>

2013-03-19 07:03:55

by Xiao Guangrong

[permalink] [raw]
Subject: Re: [PATCH 3/3] lib/kobject: WARN_ON corresponds to BUG_ON

On 03/19/2013 02:47 PM, Dong Hao wrote:
> From: Dong Hao <[email protected]>
>
> WARN_ON corresponds to BUG_ON and also gets more info.

Change the log like this:
like the comments said, double initialize a kobj is wrong
but can be recoverd, using WARN_ON to warn the developer also
it can get more info.

(Or you refine the code by yourself.)

>
> Signed-off-by: Dong Hao <[email protected]>
> ---
> lib/kobject.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/kobject.c b/lib/kobject.c
> index ff9b3c3..f7d9f31 100644
> --- a/lib/kobject.c
> +++ b/lib/kobject.c
> @@ -281,7 +281,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
> /* do not error out as sometimes we can recover */
> printk(KERN_ERR "kobject (%p): tried to init an initialized "
> "object, something is seriously wrong.\n", kobj);
> - dump_stack();
> + WARN_ON(1);
> }
>
> kobject_init_internal(kobj);
>

2013-03-19 07:05:33

by Xiao Guangrong

[permalink] [raw]
Subject: Re: [PATCH 3/3] lib/kobject: WARN_ON corresponds to BUG_ON

On 03/19/2013 03:03 PM, Xiao Guangrong wrote:
> On 03/19/2013 02:47 PM, Dong Hao wrote:
>> From: Dong Hao <[email protected]>
>>
>> WARN_ON corresponds to BUG_ON and also gets more info.
>
> Change the log like this:
> like the comments said, double initialize a kobj is wrong
> but can be recoverd, using WARN_ON to warn the developer also
> it can get more info.
>
> (Or you refine the code by yourself.)

s/code/comment

>
>>
>> Signed-off-by: Dong Hao <[email protected]>
>> ---
>> lib/kobject.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/lib/kobject.c b/lib/kobject.c
>> index ff9b3c3..f7d9f31 100644
>> --- a/lib/kobject.c
>> +++ b/lib/kobject.c
>> @@ -281,7 +281,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
>> /* do not error out as sometimes we can recover */
>> printk(KERN_ERR "kobject (%p): tried to init an initialized "
>> "object, something is seriously wrong.\n", kobj);
>> - dump_stack();
>> + WARN_ON(1);
>> }
>>
>> kobject_init_internal(kobj);
>>
>

2013-03-19 13:28:19

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 2/3] lib/kobject: Panic when kobj or ktype is not properly assigned

On Tue, Mar 19, 2013 at 02:47:00PM +0800, Dong Hao wrote:
> From: Dong Hao <[email protected]>
>
> kobj and ktype are two important attributes which will be used after kobject_init(),
> and (!kobj)|(!ktype) may cause FS corruption which could not be recovered.
> Panic instead of dump_stack() when neither kobj nor ktype is properly assigned to
> detect the bug early.
>
> Signed-off-by: Dong Hao <[email protected]>
> ---
> lib/kobject.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/kobject.c b/lib/kobject.c
> index 279a172..ff9b3c3 100644
> --- a/lib/kobject.c
> +++ b/lib/kobject.c
> @@ -290,7 +290,7 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
>
> error:
> printk(KERN_ERR "kobject (%p): %s\n", kobj, err_str);
> - dump_stack();
> + BUG_ON(1);

You just crashed the machine. That's horrible, and unacceptable.

*plonk*

2013-03-19 13:29:48

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 1/3] lib/kobject: simplify the kobject_init function

On Tue, Mar 19, 2013 at 02:46:59PM +0800, Dong Hao wrote:
> From: Dong Hao <[email protected]>
>
> The printk() function at the end of function kobject_init() already had '\n',
> so remove the duplicated one.

Your subject doesn't match this description.

2013-03-19 13:30:19

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 3/3] lib/kobject: WARN_ON corresponds to BUG_ON

On Tue, Mar 19, 2013 at 02:47:01PM +0800, Dong Hao wrote:
> From: Dong Hao <[email protected]>
>
> WARN_ON corresponds to BUG_ON and also gets more info.

Huh? No.

Please stop, don't resend these.

greg k-h