public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb: gadget: langwell_udc: Fix error path
@ 2010-10-03 13:49 Rahul Ruikar
  2010-10-04 10:44 ` Sergei Shtylyov
  0 siblings, 1 reply; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-03 13:49 UTC (permalink / raw)
  To: David Brownell, Greg Kroah-Hartman, Joe Perches
  Cc: linux-usb, linux-kernel, Rahul Ruikar

- call device_unregister() only when device_register() is sucess.
- call put_device() when device_register() fails.

Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
---
 drivers/usb/gadget/langwell_udc.c |   18 ++++++++++++++----
 drivers/usb/gadget/langwell_udc.h |    4 +++-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
index c2d2a20..2b5ae16 100644
--- a/drivers/usb/gadget/langwell_udc.c
+++ b/drivers/usb/gadget/langwell_udc.c
@@ -2952,8 +2952,13 @@ static void langwell_udc_remove(struct pci_dev *pdev)
 	INFO(dev, "unbind\n");
 	DBG(dev, "<--- %s()\n", __func__);
 
-	device_unregister(&dev->gadget.dev);
-	device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
+	if (dev->dev_reg_status == 2)
+		device_unregister(&dev->gadget.dev);
+	else if (dev->dev_reg_status == 1)
+		put_device(&dev->gadget.dev);
+
+	if (dev->dev_create_file)
+		device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
 
 #ifndef	OTG_TRANSCEIVER
 	pci_set_drvdata(pdev, NULL);
@@ -3190,12 +3195,17 @@ static int langwell_udc_probe(struct pci_dev *pdev,
 	the_controller = dev;
 
 	retval = device_register(&dev->gadget.dev);
-	if (retval)
+	if (retval) {
+		dev_reg_status = 1;
 		goto error;
+	}
+	dev_reg_status = 2;
 
 	retval = device_create_file(&pdev->dev, &dev_attr_langwell_udc);
-	if (retval)
+	if (retval) {
+		dev_create_file = 1;
 		goto error;
+	}
 
 	VDBG(dev, "<--- %s()\n", __func__);
 	return 0;
diff --git a/drivers/usb/gadget/langwell_udc.h b/drivers/usb/gadget/langwell_udc.h
index 9719934..cc5d9b6 100644
--- a/drivers/usb/gadget/langwell_udc.h
+++ b/drivers/usb/gadget/langwell_udc.h
@@ -199,7 +199,9 @@ struct langwell_udc {
 				vbus_active:1,
 				suspended:1,
 				stopped:1,
-				lpm:1;	/* LPM capability */
+				lpm:1,	/* LPM capability */
+				dev_reg_status:2,
+				dev_create_file:1;
 
 	/* pci state used to access those endpoints */
 	struct pci_dev		*pdev;
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-03 13:49 Rahul Ruikar
@ 2010-10-04 10:44 ` Sergei Shtylyov
  2010-10-04 10:52   ` Rahul Ruikar
  0 siblings, 1 reply; 13+ messages in thread
From: Sergei Shtylyov @ 2010-10-04 10:44 UTC (permalink / raw)
  To: Rahul Ruikar
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

Hello.

On 03-10-2010 17:49, Rahul Ruikar wrote:

> - call device_unregister() only when device_register() is sucess.

    s/is sucess/succeeds/

> - call put_device() when device_register() fails.

> Signed-off-by: Rahul Ruikar<rahul.ruikar@gmail.com>
> ---
>   drivers/usb/gadget/langwell_udc.c |   18 ++++++++++++++----
>   drivers/usb/gadget/langwell_udc.h |    4 +++-
>   2 files changed, 17 insertions(+), 5 deletions(-)

> diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
> index c2d2a20..2b5ae16 100644
> --- a/drivers/usb/gadget/langwell_udc.c
> +++ b/drivers/usb/gadget/langwell_udc.c
> @@ -2952,8 +2952,13 @@ static void langwell_udc_remove(struct pci_dev *pdev)
>   	INFO(dev, "unbind\n");
>   	DBG(dev, "<--- %s()\n", __func__);
>
> -	device_unregister(&dev->gadget.dev);
> -	device_remove_file(&pdev->dev,&dev_attr_langwell_udc);
> +	if (dev->dev_reg_status == 2)
> +		device_unregister(&dev->gadget.dev);
> +	else if (dev->dev_reg_status == 1)
> +		put_device(&dev->gadget.dev);
> +
> +	if (dev->dev_create_file)
> +		device_remove_file(&pdev->dev,&dev_attr_langwell_udc);
>
>   #ifndef	OTG_TRANSCEIVER
>   	pci_set_drvdata(pdev, NULL);
> @@ -3190,12 +3195,17 @@ static int langwell_udc_probe(struct pci_dev *pdev,
>   	the_controller = dev;
>
>   	retval = device_register(&dev->gadget.dev);
> -	if (retval)
> +	if (retval) {
> +		dev_reg_status = 1;

    Did you mean 'dev->dev_reg_status'?

>   		goto error;
> +	}
> +	dev_reg_status = 2;

    Same question.

>
>   	retval = device_create_file(&pdev->dev,&dev_attr_langwell_udc);
> -	if (retval)
> +	if (retval) {
> +		dev_create_file = 1;

    Did you mean 'dev->dev_create_file'?

WBR, Sergei

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-04 10:44 ` Sergei Shtylyov
@ 2010-10-04 10:52   ` Rahul Ruikar
  0 siblings, 0 replies; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-04 10:52 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

will resubmit this patch alongwith other patches.

Thanks
- Rahul Ruikar





On 4 October 2010 16:14, Sergei Shtylyov <sshtylyov@mvista.com> wrote:
> Hello.
>
> On 03-10-2010 17:49, Rahul Ruikar wrote:
>
>> - call device_unregister() only when device_register() is sucess.
>
>   s/is sucess/succeeds/
>
>> - call put_device() when device_register() fails.
>
>> Signed-off-by: Rahul Ruikar<rahul.ruikar@gmail.com>
>> ---
>>  drivers/usb/gadget/langwell_udc.c |   18 ++++++++++++++----
>>  drivers/usb/gadget/langwell_udc.h |    4 +++-
>>  2 files changed, 17 insertions(+), 5 deletions(-)
>
>> diff --git a/drivers/usb/gadget/langwell_udc.c
>> b/drivers/usb/gadget/langwell_udc.c
>> index c2d2a20..2b5ae16 100644
>> --- a/drivers/usb/gadget/langwell_udc.c
>> +++ b/drivers/usb/gadget/langwell_udc.c
>> @@ -2952,8 +2952,13 @@ static void langwell_udc_remove(struct pci_dev
>> *pdev)
>>        INFO(dev, "unbind\n");
>>        DBG(dev, "<--- %s()\n", __func__);
>>
>> -       device_unregister(&dev->gadget.dev);
>> -       device_remove_file(&pdev->dev,&dev_attr_langwell_udc);
>> +       if (dev->dev_reg_status == 2)
>> +               device_unregister(&dev->gadget.dev);
>> +       else if (dev->dev_reg_status == 1)
>> +               put_device(&dev->gadget.dev);
>> +
>> +       if (dev->dev_create_file)
>> +               device_remove_file(&pdev->dev,&dev_attr_langwell_udc);
>>
>>  #ifndef       OTG_TRANSCEIVER
>>        pci_set_drvdata(pdev, NULL);
>> @@ -3190,12 +3195,17 @@ static int langwell_udc_probe(struct pci_dev
>> *pdev,
>>        the_controller = dev;
>>
>>        retval = device_register(&dev->gadget.dev);
>> -       if (retval)
>> +       if (retval) {
>> +               dev_reg_status = 1;
>
>   Did you mean 'dev->dev_reg_status'?
>
>>                goto error;
>> +       }
>> +       dev_reg_status = 2;
>
>   Same question.
>
>>
>>        retval = device_create_file(&pdev->dev,&dev_attr_langwell_udc);
>> -       if (retval)
>> +       if (retval) {
>> +               dev_create_file = 1;
>
>   Did you mean 'dev->dev_create_file'?
>
> WBR, Sergei
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH] usb: gadget: langwell_udc: Fix error path
@ 2010-10-05 18:20 Rahul Ruikar
  2010-10-05 19:17 ` Sergei Shtylyov
  0 siblings, 1 reply; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-05 18:20 UTC (permalink / raw)
  To: David Brownell, Greg Kroah-Hartman, Joe Perches
  Cc: linux-usb, linux-kernel, Rahul Ruikar

Fix for following cases
- Call device_unregister() only when device_register() is success.
- Call put_device() when device_register() fails.
- Call device_remove_file() only when device_create_file() is success.

Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
---
 drivers/usb/gadget/langwell_udc.c |   14 +++++++++++---
 drivers/usb/gadget/langwell_udc.h |    4 +++-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
index c2d2a20..6a57bd6 100644
--- a/drivers/usb/gadget/langwell_udc.c
+++ b/drivers/usb/gadget/langwell_udc.c
@@ -2952,8 +2952,11 @@ static void langwell_udc_remove(struct pci_dev *pdev)
 	INFO(dev, "unbind\n");
 	DBG(dev, "<--- %s()\n", __func__);
 
-	device_unregister(&dev->gadget.dev);
-	device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
+	if (dev->reg_status)
+		device_unregister(&dev->gadget.dev);
+
+	if (dev->file_create)
+		device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
 
 #ifndef	OTG_TRANSCEIVER
 	pci_set_drvdata(pdev, NULL);
@@ -3190,13 +3193,18 @@ static int langwell_udc_probe(struct pci_dev *pdev,
 	the_controller = dev;
 
 	retval = device_register(&dev->gadget.dev);
-	if (retval)
+	if (retval) {
+		put_device(&dev->gadget.dev);
 		goto error;
+	}
+	dev->reg_status = 1;
 
 	retval = device_create_file(&pdev->dev, &dev_attr_langwell_udc);
 	if (retval)
 		goto error;
 
+	dev->file_create = 1;
+
 	VDBG(dev, "<--- %s()\n", __func__);
 	return 0;
 
diff --git a/drivers/usb/gadget/langwell_udc.h b/drivers/usb/gadget/langwell_udc.h
index 9719934..b212a70 100644
--- a/drivers/usb/gadget/langwell_udc.h
+++ b/drivers/usb/gadget/langwell_udc.h
@@ -199,7 +199,9 @@ struct langwell_udc {
 				vbus_active:1,
 				suspended:1,
 				stopped:1,
-				lpm:1;	/* LPM capability */
+				lpm:1,	/* LPM capability */
+				reg_status:1,
+				file_create:1;
 
 	/* pci state used to access those endpoints */
 	struct pci_dev		*pdev;
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-05 18:20 [PATCH] usb: gadget: langwell_udc: Fix error path Rahul Ruikar
@ 2010-10-05 19:17 ` Sergei Shtylyov
  2010-10-06  2:34   ` Rahul Ruikar
  0 siblings, 1 reply; 13+ messages in thread
From: Sergei Shtylyov @ 2010-10-05 19:17 UTC (permalink / raw)
  To: Rahul Ruikar
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

Hello.

Rahul Ruikar wrote:

> Fix for following cases
> - Call device_unregister() only when device_register() is success.

    s/is success/succeeds/

> - Call put_device() when device_register() fails.
> - Call device_remove_file() only when device_create_file() is success.

    s/is success/succeeds/

> Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>

[...]

> diff --git a/drivers/usb/gadget/langwell_udc.h b/drivers/usb/gadget/langwell_udc.h
> index 9719934..b212a70 100644
> --- a/drivers/usb/gadget/langwell_udc.h
> +++ b/drivers/usb/gadget/langwell_udc.h
> @@ -199,7 +199,9 @@ struct langwell_udc {
>  				vbus_active:1,
>  				suspended:1,
>  				stopped:1,
> -				lpm:1;	/* LPM capability */
> +				lpm:1,	/* LPM capability */
> +				reg_status:1,
> +				file_create:1;

    I'd rather have called this 'file_created'.

>  
>  	/* pci state used to access those endpoints */
>  	struct pci_dev		*pdev;

WBR, Sergei

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-05 19:17 ` Sergei Shtylyov
@ 2010-10-06  2:34   ` Rahul Ruikar
  2010-10-06 20:21     ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-06  2:34 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1434 bytes --]

updated patch with following changes.
- variable name changed
- comment updated.

Please find it attached here.

- Rahul Ruikar





On 6 October 2010 00:47, Sergei Shtylyov <sshtylyov@mvista.com> wrote:
> Hello.
>
> Rahul Ruikar wrote:
>
>> Fix for following cases
>> - Call device_unregister() only when device_register() is success.
>
>   s/is success/succeeds/
>
>> - Call put_device() when device_register() fails.
>> - Call device_remove_file() only when device_create_file() is success.
>
>   s/is success/succeeds/
>
>> Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
>
> [...]
>
>> diff --git a/drivers/usb/gadget/langwell_udc.h
>> b/drivers/usb/gadget/langwell_udc.h
>> index 9719934..b212a70 100644
>> --- a/drivers/usb/gadget/langwell_udc.h
>> +++ b/drivers/usb/gadget/langwell_udc.h
>> @@ -199,7 +199,9 @@ struct langwell_udc {
>>                                vbus_active:1,
>>                                suspended:1,
>>                                stopped:1,
>> -                               lpm:1;  /* LPM capability */
>> +                               lpm:1,  /* LPM capability */
>> +                               reg_status:1,
>> +                               file_create:1;
>
>   I'd rather have called this 'file_created'.
>
>>        /* pci state used to access those endpoints */
>>        struct pci_dev          *pdev;
>
> WBR, Sergei
>

[-- Attachment #2: 0001-usb-gadget-langwell_udc-Fix-error-path.patch --]
[-- Type: text/x-patch, Size: 2188 bytes --]

From d6a54bd6b050ffbe8ad5da0744a329d8c2aef190 Mon Sep 17 00:00:00 2001
From: Rahul Ruikar <rahul.ruikar@gmail.com>
Date: Tue, 5 Oct 2010 23:34:05 +0530
Subject: [PATCH] usb: gadget: langwell_udc: Fix error path

Fix for following cases
- Call device_unregister() only when device_register() succeeds.
- Call put_device() when device_register() fails.
- Call device_remove_file() only when device_create_file() succeeds.

Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
---
 drivers/usb/gadget/langwell_udc.c |   14 +++++++++++---
 drivers/usb/gadget/langwell_udc.h |    4 +++-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
index c2d2a20..56e216e 100644
--- a/drivers/usb/gadget/langwell_udc.c
+++ b/drivers/usb/gadget/langwell_udc.c
@@ -2952,8 +2952,11 @@ static void langwell_udc_remove(struct pci_dev *pdev)
 	INFO(dev, "unbind\n");
 	DBG(dev, "<--- %s()\n", __func__);
 
-	device_unregister(&dev->gadget.dev);
-	device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
+	if (dev->reg_status)
+		device_unregister(&dev->gadget.dev);
+
+	if (dev->file_created)
+		device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
 
 #ifndef	OTG_TRANSCEIVER
 	pci_set_drvdata(pdev, NULL);
@@ -3190,13 +3193,18 @@ static int langwell_udc_probe(struct pci_dev *pdev,
 	the_controller = dev;
 
 	retval = device_register(&dev->gadget.dev);
-	if (retval)
+	if (retval) {
+		put_device(&dev->gadget.dev);
 		goto error;
+	}
+	dev->reg_status = 1;
 
 	retval = device_create_file(&pdev->dev, &dev_attr_langwell_udc);
 	if (retval)
 		goto error;
 
+	dev->file_created = 1;
+
 	VDBG(dev, "<--- %s()\n", __func__);
 	return 0;
 
diff --git a/drivers/usb/gadget/langwell_udc.h b/drivers/usb/gadget/langwell_udc.h
index 9719934..da40671 100644
--- a/drivers/usb/gadget/langwell_udc.h
+++ b/drivers/usb/gadget/langwell_udc.h
@@ -199,7 +199,9 @@ struct langwell_udc {
 				vbus_active:1,
 				suspended:1,
 				stopped:1,
-				lpm:1;	/* LPM capability */
+				lpm:1,	/* LPM capability */
+				reg_status:1,
+				file_created:1;
 
 	/* pci state used to access those endpoints */
 	struct pci_dev		*pdev;
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-06  2:34   ` Rahul Ruikar
@ 2010-10-06 20:21     ` Greg KH
  2010-10-07  3:55       ` Rahul Ruikar
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2010-10-06 20:21 UTC (permalink / raw)
  To: Rahul Ruikar
  Cc: Sergei Shtylyov, David Brownell, Greg Kroah-Hartman, Joe Perches,
	linux-usb, linux-kernel

On Wed, Oct 06, 2010 at 08:04:23AM +0530, Rahul Ruikar wrote:
> updated patch with following changes.
> - variable name changed
> - comment updated.
> 
> Please find it attached here.

Please resend it, not attached in base64 format so that I can apply it
properly.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH] usb: gadget: langwell_udc: Fix error path
@ 2010-10-07  3:52 Rahul Ruikar
  2010-10-07  3:54 ` Rahul Ruikar
  2010-10-07 17:51 ` Greg KH
  0 siblings, 2 replies; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-07  3:52 UTC (permalink / raw)
  To: David Brownell, Greg Kroah-Hartman, Joe Perches
  Cc: linux-usb, linux-kernel, Rahul Ruikar

Fix for following cases
- Call device_unregister() only when device_register() succeeds.
- Call put_device() when device_register() fails.
- Call device_remove_file() only when device_create_file() succeeds.

Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
---
 drivers/usb/gadget/langwell_udc.c |   14 +++++++++++---
 drivers/usb/gadget/langwell_udc.h |    4 +++-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
index c2d2a20..56e216e 100644
--- a/drivers/usb/gadget/langwell_udc.c
+++ b/drivers/usb/gadget/langwell_udc.c
@@ -2952,8 +2952,11 @@ static void langwell_udc_remove(struct pci_dev *pdev)
 	INFO(dev, "unbind\n");
 	DBG(dev, "<--- %s()\n", __func__);
 
-	device_unregister(&dev->gadget.dev);
-	device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
+	if (dev->reg_status)
+		device_unregister(&dev->gadget.dev);
+
+	if (dev->file_created)
+		device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
 
 #ifndef	OTG_TRANSCEIVER
 	pci_set_drvdata(pdev, NULL);
@@ -3190,13 +3193,18 @@ static int langwell_udc_probe(struct pci_dev *pdev,
 	the_controller = dev;
 
 	retval = device_register(&dev->gadget.dev);
-	if (retval)
+	if (retval) {
+		put_device(&dev->gadget.dev);
 		goto error;
+	}
+	dev->reg_status = 1;
 
 	retval = device_create_file(&pdev->dev, &dev_attr_langwell_udc);
 	if (retval)
 		goto error;
 
+	dev->file_created = 1;
+
 	VDBG(dev, "<--- %s()\n", __func__);
 	return 0;
 
diff --git a/drivers/usb/gadget/langwell_udc.h b/drivers/usb/gadget/langwell_udc.h
index 9719934..da40671 100644
--- a/drivers/usb/gadget/langwell_udc.h
+++ b/drivers/usb/gadget/langwell_udc.h
@@ -199,7 +199,9 @@ struct langwell_udc {
 				vbus_active:1,
 				suspended:1,
 				stopped:1,
-				lpm:1;	/* LPM capability */
+				lpm:1,	/* LPM capability */
+				reg_status:1,
+				file_created:1;
 
 	/* pci state used to access those endpoints */
 	struct pci_dev		*pdev;
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-07  3:52 Rahul Ruikar
@ 2010-10-07  3:54 ` Rahul Ruikar
  2010-10-07 17:51 ` Greg KH
  1 sibling, 0 replies; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-07  3:54 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-usb, linux-kernel, Rahul Ruikar, David Brownell,
	Joe Perches

Greg,

Kindly apply this patch.


- Rahul Ruikar





On 7 October 2010 09:22, Rahul Ruikar <rahul.ruikar@gmail.com> wrote:
> Fix for following cases
> - Call device_unregister() only when device_register() succeeds.
> - Call put_device() when device_register() fails.
> - Call device_remove_file() only when device_create_file() succeeds.
>
> Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
> ---
>  drivers/usb/gadget/langwell_udc.c |   14 +++++++++++---
>  drivers/usb/gadget/langwell_udc.h |    4 +++-
>  2 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/gadget/langwell_udc.c b/drivers/usb/gadget/langwell_udc.c
> index c2d2a20..56e216e 100644
> --- a/drivers/usb/gadget/langwell_udc.c
> +++ b/drivers/usb/gadget/langwell_udc.c
> @@ -2952,8 +2952,11 @@ static void langwell_udc_remove(struct pci_dev *pdev)
>        INFO(dev, "unbind\n");
>        DBG(dev, "<--- %s()\n", __func__);
>
> -       device_unregister(&dev->gadget.dev);
> -       device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
> +       if (dev->reg_status)
> +               device_unregister(&dev->gadget.dev);
> +
> +       if (dev->file_created)
> +               device_remove_file(&pdev->dev, &dev_attr_langwell_udc);
>
>  #ifndef        OTG_TRANSCEIVER
>        pci_set_drvdata(pdev, NULL);
> @@ -3190,13 +3193,18 @@ static int langwell_udc_probe(struct pci_dev *pdev,
>        the_controller = dev;
>
>        retval = device_register(&dev->gadget.dev);
> -       if (retval)
> +       if (retval) {
> +               put_device(&dev->gadget.dev);
>                goto error;
> +       }
> +       dev->reg_status = 1;
>
>        retval = device_create_file(&pdev->dev, &dev_attr_langwell_udc);
>        if (retval)
>                goto error;
>
> +       dev->file_created = 1;
> +
>        VDBG(dev, "<--- %s()\n", __func__);
>        return 0;
>
> diff --git a/drivers/usb/gadget/langwell_udc.h b/drivers/usb/gadget/langwell_udc.h
> index 9719934..da40671 100644
> --- a/drivers/usb/gadget/langwell_udc.h
> +++ b/drivers/usb/gadget/langwell_udc.h
> @@ -199,7 +199,9 @@ struct langwell_udc {
>                                vbus_active:1,
>                                suspended:1,
>                                stopped:1,
> -                               lpm:1;  /* LPM capability */
> +                               lpm:1,  /* LPM capability */
> +                               reg_status:1,
> +                               file_created:1;
>
>        /* pci state used to access those endpoints */
>        struct pci_dev          *pdev;
> --
> 1.7.2.3
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-06 20:21     ` Greg KH
@ 2010-10-07  3:55       ` Rahul Ruikar
  0 siblings, 0 replies; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-07  3:55 UTC (permalink / raw)
  To: Greg KH
  Cc: Sergei Shtylyov, David Brownell, Greg Kroah-Hartman, Joe Perches,
	linux-usb, linux-kernel

Just sent in another mail.

- Rahul Ruikar





On 7 October 2010 01:51, Greg KH <greg@kroah.com> wrote:
> On Wed, Oct 06, 2010 at 08:04:23AM +0530, Rahul Ruikar wrote:
>> updated patch with following changes.
>> - variable name changed
>> - comment updated.
>>
>> Please find it attached here.
>
> Please resend it, not attached in base64 format so that I can apply it
> properly.
>
> thanks,
>
> greg k-h
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-07  3:52 Rahul Ruikar
  2010-10-07  3:54 ` Rahul Ruikar
@ 2010-10-07 17:51 ` Greg KH
  2010-10-07 18:19   ` Rahul Ruikar
  1 sibling, 1 reply; 13+ messages in thread
From: Greg KH @ 2010-10-07 17:51 UTC (permalink / raw)
  To: Rahul Ruikar
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

On Thu, Oct 07, 2010 at 09:22:06AM +0530, Rahul Ruikar wrote:
> Fix for following cases
> - Call device_unregister() only when device_register() succeeds.
> - Call put_device() when device_register() fails.
> - Call device_remove_file() only when device_create_file() succeeds.
> 
> Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
> ---
>  drivers/usb/gadget/langwell_udc.c |   14 +++++++++++---
>  drivers/usb/gadget/langwell_udc.h |    4 +++-
>  2 files changed, 14 insertions(+), 4 deletions(-)

This patch doesn't apply at all to my tree.  Can you redo it against the
latest linux-next release?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-07 17:51 ` Greg KH
@ 2010-10-07 18:19   ` Rahul Ruikar
  2010-10-07 20:48     ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: Rahul Ruikar @ 2010-10-07 18:19 UTC (permalink / raw)
  To: Greg KH
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

Ok no problem.
I had sent it because yesterday you asked me to send it again.

- Rahul Ruikar





On 7 October 2010 23:21, Greg KH <greg@kroah.com> wrote:
> On Thu, Oct 07, 2010 at 09:22:06AM +0530, Rahul Ruikar wrote:
>> Fix for following cases
>> - Call device_unregister() only when device_register() succeeds.
>> - Call put_device() when device_register() fails.
>> - Call device_remove_file() only when device_create_file() succeeds.
>>
>> Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com>
>> ---
>>  drivers/usb/gadget/langwell_udc.c |   14 +++++++++++---
>>  drivers/usb/gadget/langwell_udc.h |    4 +++-
>>  2 files changed, 14 insertions(+), 4 deletions(-)
>
> This patch doesn't apply at all to my tree.  Can you redo it against the
> latest linux-next release?
>
> thanks,
>
> greg k-h
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] usb: gadget: langwell_udc: Fix error path
  2010-10-07 18:19   ` Rahul Ruikar
@ 2010-10-07 20:48     ` Greg KH
  0 siblings, 0 replies; 13+ messages in thread
From: Greg KH @ 2010-10-07 20:48 UTC (permalink / raw)
  To: Rahul Ruikar
  Cc: David Brownell, Greg Kroah-Hartman, Joe Perches, linux-usb,
	linux-kernel

On Thu, Oct 07, 2010 at 11:49:41PM +0530, Rahul Ruikar wrote:
> Ok no problem.
> I had sent it because yesterday you asked me to send it again.

Yes, but I assumed it would be in a form that I could apply it in :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2010-10-07 20:50 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-05 18:20 [PATCH] usb: gadget: langwell_udc: Fix error path Rahul Ruikar
2010-10-05 19:17 ` Sergei Shtylyov
2010-10-06  2:34   ` Rahul Ruikar
2010-10-06 20:21     ` Greg KH
2010-10-07  3:55       ` Rahul Ruikar
  -- strict thread matches above, loose matches on Subject: below --
2010-10-07  3:52 Rahul Ruikar
2010-10-07  3:54 ` Rahul Ruikar
2010-10-07 17:51 ` Greg KH
2010-10-07 18:19   ` Rahul Ruikar
2010-10-07 20:48     ` Greg KH
2010-10-03 13:49 Rahul Ruikar
2010-10-04 10:44 ` Sergei Shtylyov
2010-10-04 10:52   ` Rahul Ruikar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox