[PATCH v2 2/2] net/bnxt: remove VLA from EM key block swap
Mohammad Shuab Siddique
mohammad-shuab.siddique at broadcom.com
Tue Oct 13 19:19:55 CEST 2026
From: Dakota Sicher <dakota.sicher at broadcom.com>
ulp_mapper_blob_block_swap() used a variable-length array on the
stack as scratch space for the block swap. The block size comes from
the device table and is small, but a VLA is still undesirable. Swap
the blocks in place instead, which needs no scratch buffer.
Signed-off-by: Dakota Sicher <dakota.sicher at broadcom.com>
Signed-off-by: Manish Kurup <manish.kurup at broadcom.com>
Signed-off-by: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>
---
drivers/net/bnxt/tf_ulp/ulp_mapper_tfc.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper_tfc.c b/drivers/net/bnxt/tf_ulp/ulp_mapper_tfc.c
index 2d89f10d5e8..2cba6fffa81 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mapper_tfc.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper_tfc.c
@@ -388,10 +388,9 @@ static const char * const mpc_error_str[] = {
static int32_t
ulp_mapper_blob_block_swap(struct ulp_blob *blob, uint32_t block_sz)
{
- uint8_t data[block_sz]; /* size of a block for temp storage */
uint16_t num_words, data_sz;
- uint8_t *pdata;
- int i;
+ uint8_t *pdata, *lo, *hi, tmp;
+ uint32_t i, j;
/* Shouldn't happen since it is internal function, but check anyway */
if (unlikely(blob == NULL || !block_sz)) {
@@ -407,13 +406,16 @@ ulp_mapper_blob_block_swap(struct ulp_blob *blob, uint32_t block_sz)
return -EINVAL;
}
+ /* Swap the blocks in place, one byte at a time, no temp buffer */
num_words = data_sz / block_sz;
for (i = 0; i < num_words / 2; i++) {
- memcpy(data, &pdata[i * block_sz], block_sz);
- memcpy(&pdata[i * block_sz],
- &pdata[(num_words - 1 - i) * block_sz], block_sz);
- memcpy(&pdata[(num_words - 1 - i) * block_sz],
- data, block_sz);
+ lo = &pdata[i * block_sz];
+ hi = &pdata[(num_words - 1 - i) * block_sz];
+ for (j = 0; j < block_sz; j++) {
+ tmp = lo[j];
+ lo[j] = hi[j];
+ hi[j] = tmp;
+ }
}
return 0;
}
--
2.47.3
More information about the dev
mailing list