[PATCH] RDMA/bng_re: fix variable dereferenced before check in bng_re_net_ring_free()

sunliming@linux.dev posted 1 patch 1 month ago
drivers/infiniband/hw/bng_re/bng_dev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] RDMA/bng_re: fix variable dereferenced before check in bng_re_net_ring_free()
Posted by sunliming@linux.dev 1 month ago
From: sunliming <sunliming@kylinos.cn>

Fix below smatch warnings:
drivers/infiniband/hw/bng_re/bng_dev.c:113 bng_re_net_ring_free() warn:
variable dereferenced before check 'rdev'

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Closes: https://lore.kernel.org/r/202601010413.sWadrQel-lkp@intel.com/
Signed-off-by: sunliming <sunliming@kylinos.cn>
---
 drivers/infiniband/hw/bng_re/bng_dev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/bng_re/bng_dev.c b/drivers/infiniband/hw/bng_re/bng_dev.c
index d8f8d7f7075f..c32395d1593f 100644
--- a/drivers/infiniband/hw/bng_re/bng_dev.c
+++ b/drivers/infiniband/hw/bng_re/bng_dev.c
@@ -118,7 +118,7 @@ static void bng_re_fill_fw_msg(struct bnge_fw_msg *fw_msg, void *msg,
 static int bng_re_net_ring_free(struct bng_re_dev *rdev,
 				u16 fw_ring_id, int type)
 {
-	struct bnge_auxr_dev *aux_dev = rdev->aux_dev;
+	struct bnge_auxr_dev *aux_dev;
 	struct hwrm_ring_free_input req = {};
 	struct hwrm_ring_free_output resp;
 	struct bnge_fw_msg fw_msg = {};
@@ -127,6 +127,7 @@ static int bng_re_net_ring_free(struct bng_re_dev *rdev,
 	if (!rdev)
 		return rc;
 
+	aux_dev = rdev->aux_dev;
 	if (!aux_dev)
 		return rc;
 
-- 
2.25.1
Re: [PATCH] RDMA/bng_re: fix variable dereferenced before check in bng_re_net_ring_free()
Posted by Siva Reddy Kallam 1 month ago
On Tue, Jan 6, 2026 at 5:34 PM <sunliming@linux.dev> wrote:
>
> From: sunliming <sunliming@kylinos.cn>
>
> Fix below smatch warnings:
> drivers/infiniband/hw/bng_re/bng_dev.c:113 bng_re_net_ring_free() warn:
> variable dereferenced before check 'rdev'
>
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <error27@gmail.com>
> Closes: https://lore.kernel.org/r/202601010413.sWadrQel-lkp@intel.com/
> Signed-off-by: sunliming <sunliming@kylinos.cn>
> ---
>  drivers/infiniband/hw/bng_re/bng_dev.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/hw/bng_re/bng_dev.c b/drivers/infiniband/hw/bng_re/bng_dev.c
> index d8f8d7f7075f..c32395d1593f 100644
> --- a/drivers/infiniband/hw/bng_re/bng_dev.c
> +++ b/drivers/infiniband/hw/bng_re/bng_dev.c
> @@ -118,7 +118,7 @@ static void bng_re_fill_fw_msg(struct bnge_fw_msg *fw_msg, void *msg,
>  static int bng_re_net_ring_free(struct bng_re_dev *rdev,
>                                 u16 fw_ring_id, int type)
>  {
> -       struct bnge_auxr_dev *aux_dev = rdev->aux_dev;
> +       struct bnge_auxr_dev *aux_dev;
>         struct hwrm_ring_free_input req = {};
>         struct hwrm_ring_free_output resp;
>         struct bnge_fw_msg fw_msg = {};
> @@ -127,6 +127,7 @@ static int bng_re_net_ring_free(struct bng_re_dev *rdev,
>         if (!rdev)
>                 return rc;
>
> +       aux_dev = rdev->aux_dev;
rdev is valid from the caller.  NULL check for rdev can be removed. I
need to do few more changes for
addressing  other comments in
https://lore.kernel.org/all/202601010413.sWadrQel-lkp@intel.com/.
I will be pushing a patch soon along with removing if(!rdev). Thanks.

>         if (!aux_dev)
>                 return rc;
>
> --
> 2.25.1
>