netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/1] net: ethernet: broadcom: fix improper return value
@ 2016-12-04  6:29 Pan Bian
  2016-12-04  7:59 ` Kalderon, Michal
  2016-12-05 19:59 ` David Miller
  0 siblings, 2 replies; 3+ messages in thread
From: Pan Bian @ 2016-12-04  6:29 UTC (permalink / raw)
  To: Yuval Mintz, Ariel Elior, everest-linux-l2, netdev; +Cc: linux-kernel, Pan Bian

From: Pan Bian <bianpan2016@163.com>

Marco BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
first cleans memory and then returns variable rc. Before calling the
macro, the value of variable rc is 0. Because 0 means no error, the
callers of bnx2x_init_firmware() may be misled. This patch fixes the bug,
assigning "-ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141

Signed-off-by: Pan Bian <bianpan2016@163.com>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 0cee4c0..6f9fc20 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -13505,6 +13505,7 @@ static int bnx2x_init_firmware(struct bnx2x *bp)
 
 	/* Initialize the pointers to the init arrays */
 	/* Blob */
+	rc = -ENOMEM;
 	BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n);
 
 	/* Opcodes */
-- 
1.9.1

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

* RE: [PATCH 1/1] net: ethernet: broadcom: fix improper return value
  2016-12-04  6:29 [PATCH 1/1] net: ethernet: broadcom: fix improper return value Pan Bian
@ 2016-12-04  7:59 ` Kalderon, Michal
  2016-12-05 19:59 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: Kalderon, Michal @ 2016-12-04  7:59 UTC (permalink / raw)
  To: Pan Bian, Mintz, Yuval, Elior, Ariel, netdev@vger.kernel.org
  Cc: linux-kernel@vger.kernel.org, Pan Bian

> From: Pan Bian <bianpan2016@163.com>
> 
> Marco BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
> memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
> first cleans memory and then returns variable rc. Before calling the macro, the
> value of variable rc is 0. Because 0 means no error, the callers of
> bnx2x_init_firmware() may be misled. This patch fixes the bug, assigning "-
> ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().
> 
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141
> 
> Signed-off-by: Pan Bian <bianpan2016@163.com>

The title is wrong from net-next; It should have been "bnx2x: Fix improper return value".

Acked-by: Michal Kalderon <michal.kalderon@cavium.com>

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

* Re: [PATCH 1/1] net: ethernet: broadcom: fix improper return value
  2016-12-04  6:29 [PATCH 1/1] net: ethernet: broadcom: fix improper return value Pan Bian
  2016-12-04  7:59 ` Kalderon, Michal
@ 2016-12-05 19:59 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2016-12-05 19:59 UTC (permalink / raw)
  To: bianpan201604
  Cc: Yuval.Mintz, ariel.elior, everest-linux-l2, netdev, linux-kernel,
	bianpan2016

From: Pan Bian <bianpan201604@163.com>
Date: Sun,  4 Dec 2016 14:29:29 +0800

> From: Pan Bian <bianpan2016@163.com>
> 
> Marco BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
> memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
> first cleans memory and then returns variable rc. Before calling the
> macro, the value of variable rc is 0. Because 0 means no error, the
> callers of bnx2x_init_firmware() may be misled. This patch fixes the bug,
> assigning "-ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().
> 
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141
> 
> Signed-off-by: Pan Bian <bianpan2016@163.com>

Applied, but...

> @@ -13505,6 +13505,7 @@ static int bnx2x_init_firmware(struct bnx2x *bp)
>  
>  	/* Initialize the pointers to the init arrays */
>  	/* Blob */
> +	rc = -ENOMEM;
>  	BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n);
>  
>  	/* Opcodes */

These kinds of macros which internally change control flow should always
be avoided.

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

end of thread, other threads:[~2016-12-05 19:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-04  6:29 [PATCH 1/1] net: ethernet: broadcom: fix improper return value Pan Bian
2016-12-04  7:59 ` Kalderon, Michal
2016-12-05 19:59 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).