* [PATCH 1/2] scsi: be2iscsi: simplify cid_array allocation
2026-03-21 19:17 [PATCH 0/2] scsi: be2iscsi: kzalloc + kcalloc to kzalloc_flex Rosen Penev
@ 2026-03-21 19:17 ` Rosen Penev
0 siblings, 0 replies; 4+ messages in thread
From: Rosen Penev @ 2026-03-21 19:17 UTC (permalink / raw)
To: linux-scsi
Cc: Ketan Mukadam, James E.J. Bottomley, Martin K. Petersen,
Kees Cook, Gustavo A. R. Silva, open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
Use kzalloc_flex to allocate cid_array to allocate cid_array as part of
the overall struct.
Add __counted_by for extra runtime analysis.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/scsi/be2iscsi/be_main.c | 17 ++---------------
drivers/scsi/be2iscsi/be_main.h | 2 +-
2 files changed, 3 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index fd18d4d3d219..aa5320535c1f 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -3992,25 +3992,14 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
for (ulp_num = 0; ulp_num < BEISCSI_ULP_COUNT; ulp_num++) {
if (test_bit(ulp_num, (void *)&phba->fw_config.ulp_supported)) {
- ptr_cid_info = kzalloc_obj(struct ulp_cid_info);
+ ptr_cid_info = kzalloc_flex(*ptr_cid_info, cid_array,
+ BEISCSI_GET_CID_COUNT(phba, ulp_num));
if (!ptr_cid_info) {
ret = -ENOMEM;
goto free_memory;
}
- /* Allocate memory for CID array */
- ptr_cid_info->cid_array =
- kcalloc(BEISCSI_GET_CID_COUNT(phba, ulp_num),
- sizeof(*ptr_cid_info->cid_array),
- GFP_KERNEL);
- if (!ptr_cid_info->cid_array) {
- kfree(ptr_cid_info);
- ptr_cid_info = NULL;
- ret = -ENOMEM;
-
- goto free_memory;
- }
ptr_cid_info->avlbl_cids = BEISCSI_GET_CID_COUNT(
phba, ulp_num);
@@ -4061,7 +4050,6 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
ptr_cid_info = phba->cid_array_info[ulp_num];
if (ptr_cid_info) {
- kfree(ptr_cid_info->cid_array);
kfree(ptr_cid_info);
phba->cid_array_info[ulp_num] = NULL;
}
@@ -4175,7 +4163,6 @@ static void beiscsi_cleanup_port(struct beiscsi_hba *phba)
ptr_cid_info = phba->cid_array_info[ulp_num];
if (ptr_cid_info) {
- kfree(ptr_cid_info->cid_array);
kfree(ptr_cid_info);
phba->cid_array_info[ulp_num] = NULL;
}
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 71c95d144560..b5f8e746deab 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -241,10 +241,10 @@ struct hwi_wrb_context {
};
struct ulp_cid_info {
- unsigned short *cid_array;
unsigned short avlbl_cids;
unsigned short cid_alloc;
unsigned short cid_free;
+ unsigned short cid_array[] __counted_by(avlbl_cids);
};
#include "be.h"
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCHv2 0/2] scsi: be2iscsi: kzalloc + kcalloc to kzalloc_flex
@ 2026-04-30 21:37 Rosen Penev
2026-04-30 21:37 ` [PATCH 1/2] scsi: be2iscsi: simplify cid_array allocation Rosen Penev
2026-04-30 21:37 ` [PATCH 2/2] scsi: be2iscsi: simplify hwi_controller allocation Rosen Penev
0 siblings, 2 replies; 4+ messages in thread
From: Rosen Penev @ 2026-04-30 21:37 UTC (permalink / raw)
To: linux-scsi
Cc: Ketan Mukadam, James E.J. Bottomley, Martin K. Petersen,
Kees Cook, Gustavo A. R. Silva, open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
Split up previous submission into two patches.
v2: fix unused variable warning.
Rosen Penev (2):
scsi: be2iscsi: simplify cid_array allocation
scsi: be2iscsi: simplify hwi_controller allocation
drivers/scsi/be2iscsi/be_main.c | 33 +++------------------------------
drivers/scsi/be2iscsi/be_main.h | 4 ++--
2 files changed, 5 insertions(+), 32 deletions(-)
--
2.54.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] scsi: be2iscsi: simplify cid_array allocation
2026-04-30 21:37 [PATCHv2 0/2] scsi: be2iscsi: kzalloc + kcalloc to kzalloc_flex Rosen Penev
@ 2026-04-30 21:37 ` Rosen Penev
2026-04-30 21:37 ` [PATCH 2/2] scsi: be2iscsi: simplify hwi_controller allocation Rosen Penev
1 sibling, 0 replies; 4+ messages in thread
From: Rosen Penev @ 2026-04-30 21:37 UTC (permalink / raw)
To: linux-scsi
Cc: Ketan Mukadam, James E.J. Bottomley, Martin K. Petersen,
Kees Cook, Gustavo A. R. Silva, open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
Use kzalloc_flex to allocate cid_array to allocate cid_array as part of
the overall struct.
Add __counted_by for extra runtime analysis.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/scsi/be2iscsi/be_main.c | 17 ++---------------
drivers/scsi/be2iscsi/be_main.h | 2 +-
2 files changed, 3 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index fd18d4d3d219..aa5320535c1f 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -3992,25 +3992,14 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
for (ulp_num = 0; ulp_num < BEISCSI_ULP_COUNT; ulp_num++) {
if (test_bit(ulp_num, (void *)&phba->fw_config.ulp_supported)) {
- ptr_cid_info = kzalloc_obj(struct ulp_cid_info);
+ ptr_cid_info = kzalloc_flex(*ptr_cid_info, cid_array,
+ BEISCSI_GET_CID_COUNT(phba, ulp_num));
if (!ptr_cid_info) {
ret = -ENOMEM;
goto free_memory;
}
- /* Allocate memory for CID array */
- ptr_cid_info->cid_array =
- kcalloc(BEISCSI_GET_CID_COUNT(phba, ulp_num),
- sizeof(*ptr_cid_info->cid_array),
- GFP_KERNEL);
- if (!ptr_cid_info->cid_array) {
- kfree(ptr_cid_info);
- ptr_cid_info = NULL;
- ret = -ENOMEM;
-
- goto free_memory;
- }
ptr_cid_info->avlbl_cids = BEISCSI_GET_CID_COUNT(
phba, ulp_num);
@@ -4061,7 +4050,6 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
ptr_cid_info = phba->cid_array_info[ulp_num];
if (ptr_cid_info) {
- kfree(ptr_cid_info->cid_array);
kfree(ptr_cid_info);
phba->cid_array_info[ulp_num] = NULL;
}
@@ -4175,7 +4163,6 @@ static void beiscsi_cleanup_port(struct beiscsi_hba *phba)
ptr_cid_info = phba->cid_array_info[ulp_num];
if (ptr_cid_info) {
- kfree(ptr_cid_info->cid_array);
kfree(ptr_cid_info);
phba->cid_array_info[ulp_num] = NULL;
}
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 71c95d144560..b5f8e746deab 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -241,10 +241,10 @@ struct hwi_wrb_context {
};
struct ulp_cid_info {
- unsigned short *cid_array;
unsigned short avlbl_cids;
unsigned short cid_alloc;
unsigned short cid_free;
+ unsigned short cid_array[] __counted_by(avlbl_cids);
};
#include "be.h"
--
2.54.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] scsi: be2iscsi: simplify hwi_controller allocation
2026-04-30 21:37 [PATCHv2 0/2] scsi: be2iscsi: kzalloc + kcalloc to kzalloc_flex Rosen Penev
2026-04-30 21:37 ` [PATCH 1/2] scsi: be2iscsi: simplify cid_array allocation Rosen Penev
@ 2026-04-30 21:37 ` Rosen Penev
1 sibling, 0 replies; 4+ messages in thread
From: Rosen Penev @ 2026-04-30 21:37 UTC (permalink / raw)
To: linux-scsi
Cc: Ketan Mukadam, James E.J. Bottomley, Martin K. Petersen,
Kees Cook, Gustavo A. R. Silva, open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
Use a flexible array member to allocate and free hwi_controller once
using kzalloc_flex.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/scsi/be2iscsi/be_main.c | 16 +---------------
drivers/scsi/be2iscsi/be_main.h | 2 +-
2 files changed, 2 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index aa5320535c1f..799063000e77 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -2465,27 +2465,16 @@ static void beiscsi_find_mem_req(struct beiscsi_hba *phba)
static int beiscsi_alloc_mem(struct beiscsi_hba *phba)
{
dma_addr_t bus_add;
- struct hwi_controller *phwi_ctrlr;
struct be_mem_descriptor *mem_descr;
struct mem_array *mem_arr, *mem_arr_orig;
unsigned int i, j, alloc_size, curr_alloc_size;
- phba->phwi_ctrlr = kzalloc(phba->params.hwi_ws_sz, GFP_KERNEL);
+ phba->phwi_ctrlr = kzalloc_flex(*phba->phwi_ctrlr, wrb_context, phba->params.cxns_per_ctrl);
if (!phba->phwi_ctrlr)
return -ENOMEM;
- /* Allocate memory for wrb_context */
- phwi_ctrlr = phba->phwi_ctrlr;
- phwi_ctrlr->wrb_context = kzalloc_objs(struct hwi_wrb_context,
- phba->params.cxns_per_ctrl);
- if (!phwi_ctrlr->wrb_context) {
- kfree(phba->phwi_ctrlr);
- return -ENOMEM;
- }
-
phba->init_mem = kzalloc_objs(*mem_descr, SE_MEM_MAX);
if (!phba->init_mem) {
- kfree(phwi_ctrlr->wrb_context);
kfree(phba->phwi_ctrlr);
return -ENOMEM;
}
@@ -2493,7 +2482,6 @@ static int beiscsi_alloc_mem(struct beiscsi_hba *phba)
mem_arr_orig = kmalloc_objs(*mem_arr_orig, BEISCSI_MAX_FRAGS_INIT);
if (!mem_arr_orig) {
kfree(phba->init_mem);
- kfree(phwi_ctrlr->wrb_context);
kfree(phba->phwi_ctrlr);
return -ENOMEM;
}
@@ -2568,7 +2556,6 @@ static int beiscsi_alloc_mem(struct beiscsi_hba *phba)
}
kfree(mem_arr_orig);
kfree(phba->init_mem);
- kfree(phba->phwi_ctrlr->wrb_context);
kfree(phba->phwi_ctrlr);
return -ENOMEM;
}
@@ -3874,7 +3861,6 @@ static void beiscsi_free_mem(struct beiscsi_hba *phba)
mem_descr++;
}
kfree(phba->init_mem);
- kfree(phba->phwi_ctrlr->wrb_context);
kfree(phba->phwi_ctrlr);
}
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index b5f8e746deab..77c9b1a1a488 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -968,10 +968,10 @@ struct be_ring {
};
struct hwi_controller {
- struct hwi_wrb_context *wrb_context;
struct be_ring default_pdu_hdr[BEISCSI_ULP_COUNT];
struct be_ring default_pdu_data[BEISCSI_ULP_COUNT];
struct hwi_context_memory *phwi_ctxt;
+ struct hwi_wrb_context wrb_context[];
};
enum hwh_type_enum {
--
2.54.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-30 21:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-30 21:37 [PATCHv2 0/2] scsi: be2iscsi: kzalloc + kcalloc to kzalloc_flex Rosen Penev
2026-04-30 21:37 ` [PATCH 1/2] scsi: be2iscsi: simplify cid_array allocation Rosen Penev
2026-04-30 21:37 ` [PATCH 2/2] scsi: be2iscsi: simplify hwi_controller allocation Rosen Penev
-- strict thread matches above, loose matches on Subject: below --
2026-03-21 19:17 [PATCH 0/2] scsi: be2iscsi: kzalloc + kcalloc to kzalloc_flex Rosen Penev
2026-03-21 19:17 ` [PATCH 1/2] scsi: be2iscsi: simplify cid_array allocation Rosen Penev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.