2008-10-17 12:56:25

by Zhao Lei

[permalink] [raw]
Subject: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/

Hi,

debugfs_create_file() returns NULL if an error occurs, returns -ENODEV
when debugfs is not enabled in the kernel.

Signed-off-by: Zhao Lei <[email protected]>
---
drivers/usb/gadget/s3c2410_udc.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
index 29d13eb..4ba50ef 100644
--- a/drivers/usb/gadget/s3c2410_udc.c
+++ b/drivers/usb/gadget/s3c2410_udc.c
@@ -1894,7 +1894,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
udc->regs_info = debugfs_create_file("registers", S_IRUGO,
s3c2410_udc_debugfs_root,
udc, &s3c2410_udc_debugfs_fops);
- if (IS_ERR(udc->regs_info)) {
+ if (IS_ERR(udc->regs_info) || !udc->regs_info) {
dev_warn(dev, "debugfs file creation failed %ld\n",
PTR_ERR(udc->regs_info));
udc->regs_info = NULL;
--
1.5.5.3


2008-10-17 15:18:28

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/

On Fri, 17 Oct 2008, Zhaolei wrote:

> Hi,
>
> debugfs_create_file() returns NULL if an error occurs, returns -ENODEV
> when debugfs is not enabled in the kernel.
>
> Signed-off-by: Zhao Lei <[email protected]>
> ---
> drivers/usb/gadget/s3c2410_udc.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
> index 29d13eb..4ba50ef 100644
> --- a/drivers/usb/gadget/s3c2410_udc.c
> +++ b/drivers/usb/gadget/s3c2410_udc.c
> @@ -1894,7 +1894,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
> udc->regs_info = debugfs_create_file("registers", S_IRUGO,
> s3c2410_udc_debugfs_root,
> udc, &s3c2410_udc_debugfs_fops);
> - if (IS_ERR(udc->regs_info)) {
> + if (IS_ERR(udc->regs_info) || !udc->regs_info) {
> dev_warn(dev, "debugfs file creation failed %ld\n",
> PTR_ERR(udc->regs_info));
> udc->regs_info = NULL;

In fact the original code and your patch are both wrong. The test
should simply be:

if (!udc->regs_info) {
dev_warn(dev, "debugfs file creation failed\n");

(The line setting udc->regs_info to NULL can then be removed.)

The driver should be able to work even if debugfs isn't enabled in the
kernel.

Alan Stern

2008-10-20 01:16:44

by Zhao Lei

[permalink] [raw]
Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/

From: "Alan Stern" <[email protected]>
To: "Zhaolei" <[email protected]>
Cc: <[email protected]>; <[email protected]>; <[email protected]>
Sent: Friday, October 17, 2008 11:18 PM
Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/


> On Fri, 17 Oct 2008, Zhaolei wrote:
>
>> Hi,
>>
>> debugfs_create_file() returns NULL if an error occurs, returns -ENODEV
>> when debugfs is not enabled in the kernel.
>>
>> Signed-off-by: Zhao Lei <[email protected]>
>> ---
>> drivers/usb/gadget/s3c2410_udc.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
>> index 29d13eb..4ba50ef 100644
>> --- a/drivers/usb/gadget/s3c2410_udc.c
>> +++ b/drivers/usb/gadget/s3c2410_udc.c
>> @@ -1894,7 +1894,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
>> udc->regs_info = debugfs_create_file("registers", S_IRUGO,
>> s3c2410_udc_debugfs_root,
>> udc, &s3c2410_udc_debugfs_fops);
>> - if (IS_ERR(udc->regs_info)) {
>> + if (IS_ERR(udc->regs_info) || !udc->regs_info) {
>> dev_warn(dev, "debugfs file creation failed %ld\n",
>> PTR_ERR(udc->regs_info));
>> udc->regs_info = NULL;
>
> In fact the original code and your patch are both wrong. The test
> should simply be:
>
> if (!udc->regs_info) {
> dev_warn(dev, "debugfs file creation failed\n");
>
Hello, Alan Stern

If we only check if (!udc->regs_info), that is no problem except that we
can't see dev_warn when debugfs isn't enabled in the kernel.
It this warning message is not necessary, I agree with you.

Thanks!
> (The line setting udc->regs_info to NULL can then be removed.)
>
> The driver should be able to work even if debugfs isn't enabled in the
> kernel.
>
> Alan Stern
>
>
>????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2008-10-20 01:21:33

by Zhao Lei

[permalink] [raw]
Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/

From: "Alan Stern" <[email protected]>
To: "Zhaolei" <[email protected]>
Cc: <[email protected]>; <[email protected]>; <[email protected]>
Sent: Friday, October 17, 2008 11:18 PM
Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/


> On Fri, 17 Oct 2008, Zhaolei wrote:
>
>> Hi,
>>
>> debugfs_create_file() returns NULL if an error occurs, returns -ENODEV
>> when debugfs is not enabled in the kernel.
>>
>> Signed-off-by: Zhao Lei <[email protected]>
>> ---
>> drivers/usb/gadget/s3c2410_udc.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
>> index 29d13eb..4ba50ef 100644
>> --- a/drivers/usb/gadget/s3c2410_udc.c
>> +++ b/drivers/usb/gadget/s3c2410_udc.c
>> @@ -1894,7 +1894,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
>> udc->regs_info = debugfs_create_file("registers", S_IRUGO,
>> s3c2410_udc_debugfs_root,
>> udc, &s3c2410_udc_debugfs_fops);
>> - if (IS_ERR(udc->regs_info)) {
>> + if (IS_ERR(udc->regs_info) || !udc->regs_info) {
>> dev_warn(dev, "debugfs file creation failed %ld\n",
>> PTR_ERR(udc->regs_info));
>> udc->regs_info = NULL;
>
> In fact the original code and your patch are both wrong. The test
> should simply be:
>
> if (!udc->regs_info) {
> dev_warn(dev, "debugfs file creation failed\n");
>
Hello, Alan Stern

If we only check if (!udc->regs_info), that is no problem except that we
can't see dev_warn when debugfs isn't enabled in the kernel.
It this warning message is not necessary, I agree with you.
->If this warning message is not necessary, I agree with you.

Thanks!
> (The line setting udc->regs_info to NULL can then be removed.)
>
> The driver should be able to work even if debugfs isn't enabled in the
> kernel.
>
> Alan Stern
>
>
>N?rys??v-?n?S'z??}?zjv?'z?z?s~??z??T???"jy.A????'????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2008-10-20 03:49:10

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/

On Mon, Oct 20, 2008 at 09:15:16AM +0800, Zhaolei wrote:
> From: "Alan Stern" <[email protected]>
> To: "Zhaolei" <[email protected]>
> Cc: <[email protected]>; <[email protected]>; <[email protected]>
> Sent: Friday, October 17, 2008 11:18 PM
> Subject: Re: [PATCH] Fix debugfs_create_file's error checking method for usb/gadget/
>
>
> > On Fri, 17 Oct 2008, Zhaolei wrote:
> >
> >> Hi,
> >>
> >> debugfs_create_file() returns NULL if an error occurs, returns -ENODEV
> >> when debugfs is not enabled in the kernel.
> >>
> >> Signed-off-by: Zhao Lei <[email protected]>
> >> ---
> >> drivers/usb/gadget/s3c2410_udc.c | 2 +-
> >> 1 files changed, 1 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
> >> index 29d13eb..4ba50ef 100644
> >> --- a/drivers/usb/gadget/s3c2410_udc.c
> >> +++ b/drivers/usb/gadget/s3c2410_udc.c
> >> @@ -1894,7 +1894,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
> >> udc->regs_info = debugfs_create_file("registers", S_IRUGO,
> >> s3c2410_udc_debugfs_root,
> >> udc, &s3c2410_udc_debugfs_fops);
> >> - if (IS_ERR(udc->regs_info)) {
> >> + if (IS_ERR(udc->regs_info) || !udc->regs_info) {
> >> dev_warn(dev, "debugfs file creation failed %ld\n",
> >> PTR_ERR(udc->regs_info));
> >> udc->regs_info = NULL;
> >
> > In fact the original code and your patch are both wrong. The test
> > should simply be:
> >
> > if (!udc->regs_info) {
> > dev_warn(dev, "debugfs file creation failed\n");
> >
> Hello, Alan Stern
>
> If we only check if (!udc->regs_info), that is no problem except that we
> can't see dev_warn when debugfs isn't enabled in the kernel.
> It this warning message is not necessary, I agree with you.

Why would you want to see that message if debugfs wasn't selected? You
shouldn't need to see it, that is why the debugfs code doesn't return
NULL if it is compiled out. I did it that way to make all callers much
simpler :)

thanks,

greg k-h

2008-10-20 10:54:40

by Zhao Lei

[permalink] [raw]
Subject: [PATCH v2] Fix debugfs_create_file's error checking method for usb/gadget/

debugfs_create_file() returns NULL if an error occurs, returns -ENODEV
when debugfs is not enabled in the kernel.

Signed-off-by: Zhao Lei <[email protected]>
---
drivers/usb/gadget/s3c2410_udc.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
index 48f51b1..00ba06b 100644
--- a/drivers/usb/gadget/s3c2410_udc.c
+++ b/drivers/usb/gadget/s3c2410_udc.c
@@ -1894,11 +1894,8 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
udc->regs_info = debugfs_create_file("registers", S_IRUGO,
s3c2410_udc_debugfs_root,
udc, &s3c2410_udc_debugfs_fops);
- if (IS_ERR(udc->regs_info)) {
- dev_warn(dev, "debugfs file creation failed %ld\n",
- PTR_ERR(udc->regs_info));
- udc->regs_info = NULL;
- }
+ if (!udc->regs_info)
+ dev_warn(dev, "debugfs file creation failed\n");
}

dev_dbg(dev, "probe ok\n");
--
1.5.5.3