From: Pan Bian <bianpan201...@163.com> Date: Sun, 4 Dec 2016 14:29:29 +0800
> From: Pan Bian <bianpan2...@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 <bianpan2...@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.