diff mbox

Missing return check against Null for return value of netdev_alloc_dev_skb()

Message ID CAPDOMVgV8V8fPpZupwQaDERiK-0OMLt66LULR6Biw1=8LJhOKw@mail.gmail.com
State Rejected, archived
Delegated to: David Miller
Headers show

Commit Message

Nicholas Krause June 15, 2014, 8:27 p.m. UTC
From 62b0d77a1430f74b7f5c008c5e8bec11604b33b0 Mon Sep 17 00:00:00 2001
From: Nick <xerofoify@gmail.com>
Date: Sun, 15 Jun 2014 16:16:14 -0400
Subject: [PATCHv2] Fixes return logic of function of pch_gbe_alloc_tx_buffers()
Here is the fixed patch changed return type of function to int in
order to use return -ENOMEM as with the function above it , seems to
fit , otherwise returns 0.
 Report if it breaks anything related to this driver.
Signed-off-by: Nick <xerofoify@gmail.com>
---
 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

     struct pch_gbe_buffer *buffer_info;
@@ -1516,13 +1516,13 @@ static void pch_gbe_alloc_tx_buffers(struct
pch_gbe_adapter *adapter,
         buffer_info = &tx_ring->buffer_info[i];
         skb = netdev_alloc_skb(adapter->netdev, bufsz);
         if(!skb)
+            return -ENOMEM;
         skb_reserve(skb, PCH_GBE_DMA_ALIGN);
         buffer_info->skb = skb;
         tx_desc = PCH_GBE_TX_DESC(*tx_ring, i);
         tx_desc->gbec_status = (DSC_INIT16);
     }
-    return;
+    return 0;
 }

 /**

Comments

David Miller June 16, 2014, 2:26 a.m. UTC | #1
From: Nick Krause <xerofoify@gmail.com>
Date: Sun, 15 Jun 2014 16:27:23 -0400

> From 62b0d77a1430f74b7f5c008c5e8bec11604b33b0 Mon Sep 17 00:00:00 2001
> From: Nick <xerofoify@gmail.com>
> Date: Sun, 15 Jun 2014 16:16:14 -0400
> Subject: [PATCHv2] Fixes return logic of function of pch_gbe_alloc_tx_buffers()
> Here is the fixed patch changed return type of function to int in
> order to use return -ENOMEM as with the function above it , seems to
> fit , otherwise returns 0.
>  Report if it breaks anything related to this driver.
> Signed-off-by: Nick <xerofoify@gmail.com>

Nobody is checking the return value, you can't just change the function to
return an error code, you have to make the caller act upon it appropriately
as well.

I'm very much not confident that you are willing to put in the effort
necessary to fix this problem properly.

I told you explicitly that if this memory allocation failure occurs, the
bringup of the device has to fail.

Your patch is making the situation worse, it breaks when there is an
allocation failure, leaving the TX run partially allocated so that the
driver will crash with an OOPS later.

From your first iteration, you aren't build testing this change, and I
therefore severely doubt you are functionally testing this change either.

I hate to be harsh, but this is an extremely _poor_ patch submission.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Nicholas Krause June 16, 2014, 3:28 a.m. UTC | #2
Fair enjoy I was wondering if it fails I can run a goto statement and
then free the memory for the tx as needed.
Cheers Nick
P.S. That was really stupid I didn't think that through at all :)

On Sun, Jun 15, 2014 at 10:26 PM, David Miller <davem@davemloft.net> wrote:
> From: Nick Krause <xerofoify@gmail.com>
> Date: Sun, 15 Jun 2014 16:27:23 -0400
>
>> From 62b0d77a1430f74b7f5c008c5e8bec11604b33b0 Mon Sep 17 00:00:00 2001
>> From: Nick <xerofoify@gmail.com>
>> Date: Sun, 15 Jun 2014 16:16:14 -0400
>> Subject: [PATCHv2] Fixes return logic of function of pch_gbe_alloc_tx_buffers()
>> Here is the fixed patch changed return type of function to int in
>> order to use return -ENOMEM as with the function above it , seems to
>> fit , otherwise returns 0.
>>  Report if it breaks anything related to this driver.
>> Signed-off-by: Nick <xerofoify@gmail.com>
>
> Nobody is checking the return value, you can't just change the function to
> return an error code, you have to make the caller act upon it appropriately
> as well.
>
> I'm very much not confident that you are willing to put in the effort
> necessary to fix this problem properly.
>
> I told you explicitly that if this memory allocation failure occurs, the
> bringup of the device has to fail.
>
> Your patch is making the situation worse, it breaks when there is an
> allocation failure, leaving the TX run partially allocated so that the
> driver will crash with an OOPS later.
>
> From your first iteration, you aren't build testing this change, and I
> therefore severely doubt you are functionally testing this change either.
>
> I hate to be harsh, but this is an extremely _poor_ patch submission.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov June 16, 2014, 1:32 p.m. UTC | #3
Hello.

On 06/16/2014 12:27 AM, Nick Krause wrote:

>  From 62b0d77a1430f74b7f5c008c5e8bec11604b33b0 Mon Sep 17 00:00:00 2001
> From: Nick <xerofoify@gmail.com>
> Date: Sun, 15 Jun 2014 16:16:14 -0400
> Subject: [PATCHv2] Fixes return logic of function of pch_gbe_alloc_tx_buffers()
> Here is the fixed patch changed return type of function to int in
> order to use return -ENOMEM as with the function above it , seems to
> fit , otherwise returns 0.
>   Report if it breaks anything related to this driver.
> Signed-off-by: Nick <xerofoify@gmail.com>

    You should specify your full name in the "Signed-off:" line.

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
index 704cf63..7d5efd7 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -1500,7 +1500,7 @@  pch_gbe_alloc_rx_buffers_pool(struct
pch_gbe_adapter *adapter,
  * @adapter:   Board private structure
  * @tx_ring:   Tx descriptor ring
  */
-static void pch_gbe_alloc_tx_buffers(struct pch_gbe_adapter *adapter,
+static int pch_gbe_alloc_tx_buffers(struct pch_gbe_adapter *adapter
 struct pch_gbe_tx_ring *tx_ring)
 {