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

From: Zhaolei
Date: Sun Oct 19 2008 - 21:21:37 EST


From: "Alan Stern" <stern@xxxxxxxxxxxxxxxxxxx>
To: "Zhaolei" <zhaolei@xxxxxxxxxxxxxx>
Cc: <linux-kernel@xxxxxxxxxxxxxxx>; <dbrownell@xxxxxxxxxxxxxxxxxxxxx>; <linux-usb@xxxxxxxxxxxxxxx>
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 <zhaolei@xxxxxxxxxxxxxx>
>> ---
>> 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¶ÿ¶®'¢éì¹»®&Þ~º&¶¬?+-±éݶ¥?w®?Ë?±Êâméb?ìdz¹Þ?)í?æèw*jg¬±¨¶????Ý¢j/?êäz¹Þ??à2?Þ?¨è­Ú&¢)ß¡«a¶Úþø®G«?éh®æj:+v?¨?wè?Ù¥>W?±êÞiÛaxPjØm¶?ÿà -»+?ùd?_