]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
dpaa2-switch: Fix error checking in dpaa2_switch_seed_bp()
authorDan Carpenter <dan.carpenter@linaro.org>
Sat, 17 Aug 2024 06:52:46 +0000 (09:52 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 20 Aug 2024 22:17:17 +0000 (15:17 -0700)
The dpaa2_switch_add_bufs() function returns the number of bufs that it
was able to add.  It returns BUFS_PER_CMD (7) for complete success or a
smaller number if there are not enough pages available.  However, the
error checking is looking at the total number of bufs instead of the
number which were added on this iteration.  Thus the error checking
only works correctly for the first iteration through the loop and
subsequent iterations are always counted as a success.

Fix this by checking only the bufs added in the current iteration.

Fixes: 0b1b71370458 ("staging: dpaa2-switch: handle Rx path on control interface")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://patch.msgid.link/eec27f30-b43f-42b6-b8ee-04a6f83423b6@stanley.mountain
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c

index a71f848adc0545f25e6bada7b274d0d7affbe66c..a293b08f36d46dfde7e25412951da78c15e2dfd6 100644 (file)
@@ -2638,13 +2638,14 @@ static int dpaa2_switch_refill_bp(struct ethsw_core *ethsw)
 
 static int dpaa2_switch_seed_bp(struct ethsw_core *ethsw)
 {
-       int *count, i;
+       int *count, ret, i;
 
        for (i = 0; i < DPAA2_ETHSW_NUM_BUFS; i += BUFS_PER_CMD) {
+               ret = dpaa2_switch_add_bufs(ethsw, ethsw->bpid);
                count = &ethsw->buf_count;
-               *count += dpaa2_switch_add_bufs(ethsw, ethsw->bpid);
+               *count += ret;
 
-               if (unlikely(*count < BUFS_PER_CMD))
+               if (unlikely(ret < BUFS_PER_CMD))
                        return -ENOMEM;
        }