Skip to content

Commit e67a3fa

Browse files
committed
libnvme: reuse NBFT descriptor offset calculation
1 parent 47182bc commit e67a3fa

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

libnvme/src/nvme/nbft.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,12 @@ static int read_security(struct libnvme_global_ctx *ctx, struct libnbft_info *nb
656656
return 0;
657657
}
658658

659+
static void *descriptor_at(__u8 *descriptors, size_t descriptor_len,
660+
size_t index)
661+
{
662+
return descriptors + index * descriptor_len;
663+
}
664+
659665
static void read_hfi_descriptors(struct libnvme_global_ctx *ctx,
660666
struct libnbft_info *nbft, int num_hfi,
661667
__u8 *raw_hfi_array, size_t hfi_len)
@@ -665,7 +671,7 @@ static void read_hfi_descriptors(struct libnvme_global_ctx *ctx,
665671
nbft->hfi_list = calloc(num_hfi + 1, sizeof(struct libnbft_hfi *));
666672
for (i = 0, cnt = 0; i < num_hfi; i++) {
667673
struct nbft_hfi *raw_hfi =
668-
(struct nbft_hfi *)(raw_hfi_array + i * hfi_len);
674+
descriptor_at(raw_hfi_array, hfi_len, i);
669675

670676
if (read_hfi(ctx, nbft, raw_hfi,
671677
&nbft->hfi_list[cnt]) == 0)
@@ -683,7 +689,7 @@ static void read_security_descriptors(struct libnvme_global_ctx *ctx,
683689
sizeof(struct libnbft_security *));
684690
for (i = 0, cnt = 0; i < num_sec; i++) {
685691
struct nbft_security *raw_security =
686-
(struct nbft_security *)(raw_sec_array + i * sec_len);
692+
descriptor_at(raw_sec_array, sec_len, i);
687693

688694
if (read_security(ctx, nbft, raw_security,
689695
&nbft->security_list[cnt]) == 0)
@@ -701,7 +707,7 @@ static void read_discovery_descriptors(struct libnvme_global_ctx *ctx,
701707
calloc(num_disc + 1, sizeof(struct libnbft_discovery *));
702708
for (i = 0, cnt = 0; i < num_disc; i++) {
703709
struct nbft_discovery *raw_discovery =
704-
(struct nbft_discovery *)(raw_disc_array + i * disc_len);
710+
descriptor_at(raw_disc_array, disc_len, i);
705711

706712
if (read_discovery(ctx, nbft, raw_discovery,
707713
&nbft->discovery_list[cnt]) == 0)
@@ -719,7 +725,7 @@ static void read_ssns_descriptors(struct libnvme_global_ctx *ctx,
719725
calloc(num_ssns + 1, sizeof(struct libnbft_subsystem_ns *));
720726
for (i = 0, cnt = 0; i < num_ssns; i++) {
721727
struct nbft_ssns *raw_ssns =
722-
(struct nbft_ssns *)(raw_ssns_array + i * ssns_len);
728+
descriptor_at(raw_ssns_array, ssns_len, i);
723729

724730
if (read_ssns(ctx, nbft, raw_ssns,
725731
&nbft->subsystem_ns_list[cnt]) == 0)

0 commit comments

Comments
 (0)