All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb: gadget: udc: add null check before pointer dereference
@ 2017-05-02  3:38 Gustavo A. R. Silva
  2017-05-02 14:31 ` Alan Stern
  0 siblings, 1 reply; 5+ messages in thread
From: Gustavo A. R. Silva @ 2017-05-02  3:38 UTC (permalink / raw)
  To: Felipe Balbi, Greg Kroah-Hartman, Jussi Kivilinna, Tim Harvey,
	Colin Ian King, Raz Manor
  Cc: linux-usb, linux-kernel, Gustavo A. R. Silva, Peter Senna Tschudin

Add null check before dereferencing dev->regs pointer inside
net2280_led_shutdown() function.

Addresses-Coverity-ID: 101783
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
---
 drivers/usb/gadget/udc/net2280.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c
index 3828c2e..1898a4b 100644
--- a/drivers/usb/gadget/udc/net2280.c
+++ b/drivers/usb/gadget/udc/net2280.c
@@ -3573,7 +3573,11 @@ static void net2280_remove(struct pci_dev *pdev)
 	BUG_ON(dev->driver);
 
 	/* then clean up the resources we allocated during probe() */
-	net2280_led_shutdown(dev);
+
+	if (dev->regs) {
+		net2280_led_shutdown(dev);
+		iounmap(dev->regs);
+	}
 	if (dev->requests) {
 		int		i;
 		for (i = 1; i < 5; i++) {
@@ -3588,8 +3592,6 @@ static void net2280_remove(struct pci_dev *pdev)
 		free_irq(pdev->irq, dev);
 	if (dev->quirks & PLX_PCIE)
 		pci_disable_msi(pdev);
-	if (dev->regs)
-		iounmap(dev->regs);
 	if (dev->region)
 		release_mem_region(pci_resource_start(pdev, 0),
 				pci_resource_len(pdev, 0));
-- 
2.5.0

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

* Re: [PATCH] usb: gadget: udc: add null check before pointer dereference
  2017-05-02  3:38 [PATCH] usb: gadget: udc: add null check before pointer dereference Gustavo A. R. Silva
@ 2017-05-02 14:31 ` Alan Stern
  2017-05-02 15:29   ` Gustavo A. R. Silva
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Stern @ 2017-05-02 14:31 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Felipe Balbi, Greg Kroah-Hartman, Jussi Kivilinna, Tim Harvey,
	Colin Ian King, Raz Manor, linux-usb, linux-kernel,
	Peter Senna Tschudin

On Mon, 1 May 2017, Gustavo A. R. Silva wrote:

> Add null check before dereferencing dev->regs pointer inside
> net2280_led_shutdown() function.
> 
> Addresses-Coverity-ID: 101783
> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
> ---
>  drivers/usb/gadget/udc/net2280.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c
> index 3828c2e..1898a4b 100644
> --- a/drivers/usb/gadget/udc/net2280.c
> +++ b/drivers/usb/gadget/udc/net2280.c
> @@ -3573,7 +3573,11 @@ static void net2280_remove(struct pci_dev *pdev)
>  	BUG_ON(dev->driver);
>  
>  	/* then clean up the resources we allocated during probe() */
> -	net2280_led_shutdown(dev);
> +
> +	if (dev->regs) {
> +		net2280_led_shutdown(dev);
> +		iounmap(dev->regs);
> +	}
>  	if (dev->requests) {
>  		int		i;
>  		for (i = 1; i < 5; i++) {
> @@ -3588,8 +3592,6 @@ static void net2280_remove(struct pci_dev *pdev)
>  		free_irq(pdev->irq, dev);
>  	if (dev->quirks & PLX_PCIE)
>  		pci_disable_msi(pdev);
> -	if (dev->regs)
> -		iounmap(dev->regs);
>  	if (dev->region)
>  		release_mem_region(pci_resource_start(pdev, 0),
>  				pci_resource_len(pdev, 0));

No, you must not move the iounmap() call, because an interrupt could
theoretically occur at any time.

Either just live with an extra test of dev->regs, or else move the 
net2280_led_shutdown() call later.

Alan Stern

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

* Re: [PATCH] usb: gadget: udc: add null check before pointer dereference
  2017-05-02 14:31 ` Alan Stern
@ 2017-05-02 15:29   ` Gustavo A. R. Silva
  2017-05-02 16:37     ` [PATCH v2] " Gustavo A. R. Silva
  0 siblings, 1 reply; 5+ messages in thread
From: Gustavo A. R. Silva @ 2017-05-02 15:29 UTC (permalink / raw)
  To: Alan Stern
  Cc: Felipe Balbi, Greg Kroah-Hartman, Jussi Kivilinna, Tim Harvey,
	Colin Ian King, Raz Manor, linux-usb, linux-kernel,
	Peter Senna Tschudin

Hi Alan,

Quoting Alan Stern <stern@rowland.harvard.edu>:

> On Mon, 1 May 2017, Gustavo A. R. Silva wrote:
>
>> Add null check before dereferencing dev->regs pointer inside
>> net2280_led_shutdown() function.
>>
>> Addresses-Coverity-ID: 101783
>> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
>> ---
>>  drivers/usb/gadget/udc/net2280.c | 8 +++++---
>>  1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/udc/net2280.c  
>> b/drivers/usb/gadget/udc/net2280.c
>> index 3828c2e..1898a4b 100644
>> --- a/drivers/usb/gadget/udc/net2280.c
>> +++ b/drivers/usb/gadget/udc/net2280.c
>> @@ -3573,7 +3573,11 @@ static void net2280_remove(struct pci_dev *pdev)
>>  	BUG_ON(dev->driver);
>>
>>  	/* then clean up the resources we allocated during probe() */
>> -	net2280_led_shutdown(dev);
>> +
>> +	if (dev->regs) {
>> +		net2280_led_shutdown(dev);
>> +		iounmap(dev->regs);
>> +	}
>>  	if (dev->requests) {
>>  		int		i;
>>  		for (i = 1; i < 5; i++) {
>> @@ -3588,8 +3592,6 @@ static void net2280_remove(struct pci_dev *pdev)
>>  		free_irq(pdev->irq, dev);
>>  	if (dev->quirks & PLX_PCIE)
>>  		pci_disable_msi(pdev);
>> -	if (dev->regs)
>> -		iounmap(dev->regs);
>>  	if (dev->region)
>>  		release_mem_region(pci_resource_start(pdev, 0),
>>  				pci_resource_len(pdev, 0));
>
> No, you must not move the iounmap() call, because an interrupt could
> theoretically occur at any time.
>

Yeah, I was suspicious about it.

> Either just live with an extra test of dev->regs, or else move the
> net2280_led_shutdown() call later.
>

In this case I think it is safe to move the net2280_led_shutdown()  
call, as the function is only turning off the LEDs.

I'll send a patch shortly.
Thank you
--
Gustavo A. R. Silva

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

* [PATCH v2] usb: gadget: udc: add null check before pointer dereference
  2017-05-02 15:29   ` Gustavo A. R. Silva
@ 2017-05-02 16:37     ` Gustavo A. R. Silva
  2017-05-02 18:45       ` Alan Stern
  0 siblings, 1 reply; 5+ messages in thread
From: Gustavo A. R. Silva @ 2017-05-02 16:37 UTC (permalink / raw)
  To: Felipe Balbi, Greg Kroah-Hartman, Jussi Kivilinna,
	Colin Ian King, Tim Harvey, Raz Manor
  Cc: linux-usb, linux-kernel, Alan Stern, Gustavo A. R. Silva,
	Peter Senna Tschudin

Add null check before dereferencing dev->regs pointer inside
net2280_led_shutdown() function.

Addresses-Coverity-ID: 101783
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
---
Changes in v2:
  Move the net2280_led_shutdown() call later.

 drivers/usb/gadget/udc/net2280.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c
index 3828c2e..4f5c0c4 100644
--- a/drivers/usb/gadget/udc/net2280.c
+++ b/drivers/usb/gadget/udc/net2280.c
@@ -3573,7 +3573,6 @@ static void net2280_remove(struct pci_dev *pdev)
 	BUG_ON(dev->driver);
 
 	/* then clean up the resources we allocated during probe() */
-	net2280_led_shutdown(dev);
 	if (dev->requests) {
 		int		i;
 		for (i = 1; i < 5; i++) {
@@ -3588,8 +3587,10 @@ static void net2280_remove(struct pci_dev *pdev)
 		free_irq(pdev->irq, dev);
 	if (dev->quirks & PLX_PCIE)
 		pci_disable_msi(pdev);
-	if (dev->regs)
+	if (dev->regs) {
+		net2280_led_shutdown(dev);
 		iounmap(dev->regs);
+	}
 	if (dev->region)
 		release_mem_region(pci_resource_start(pdev, 0),
 				pci_resource_len(pdev, 0));
-- 
2.5.0

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

* Re: [PATCH v2] usb: gadget: udc: add null check before pointer dereference
  2017-05-02 16:37     ` [PATCH v2] " Gustavo A. R. Silva
@ 2017-05-02 18:45       ` Alan Stern
  0 siblings, 0 replies; 5+ messages in thread
From: Alan Stern @ 2017-05-02 18:45 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Felipe Balbi, Greg Kroah-Hartman, Jussi Kivilinna,
	Colin Ian King, Tim Harvey, Raz Manor, linux-usb, linux-kernel,
	Peter Senna Tschudin

On Tue, 2 May 2017, Gustavo A. R. Silva wrote:

> Add null check before dereferencing dev->regs pointer inside
> net2280_led_shutdown() function.
> 
> Addresses-Coverity-ID: 101783
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
> ---
> Changes in v2:
>   Move the net2280_led_shutdown() call later.
> 
>  drivers/usb/gadget/udc/net2280.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c
> index 3828c2e..4f5c0c4 100644
> --- a/drivers/usb/gadget/udc/net2280.c
> +++ b/drivers/usb/gadget/udc/net2280.c
> @@ -3573,7 +3573,6 @@ static void net2280_remove(struct pci_dev *pdev)
>  	BUG_ON(dev->driver);
>  
>  	/* then clean up the resources we allocated during probe() */
> -	net2280_led_shutdown(dev);
>  	if (dev->requests) {
>  		int		i;
>  		for (i = 1; i < 5; i++) {
> @@ -3588,8 +3587,10 @@ static void net2280_remove(struct pci_dev *pdev)
>  		free_irq(pdev->irq, dev);
>  	if (dev->quirks & PLX_PCIE)
>  		pci_disable_msi(pdev);
> -	if (dev->regs)
> +	if (dev->regs) {
> +		net2280_led_shutdown(dev);
>  		iounmap(dev->regs);
> +	}
>  	if (dev->region)
>  		release_mem_region(pci_resource_start(pdev, 0),
>  				pci_resource_len(pdev, 0));

Acked-by: Alan Stern <stern@rowland.harvard.edu>

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

end of thread, other threads:[~2017-05-02 18:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-02  3:38 [PATCH] usb: gadget: udc: add null check before pointer dereference Gustavo A. R. Silva
2017-05-02 14:31 ` Alan Stern
2017-05-02 15:29   ` Gustavo A. R. Silva
2017-05-02 16:37     ` [PATCH v2] " Gustavo A. R. Silva
2017-05-02 18:45       ` Alan Stern

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.