* [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).