@@ -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+
659665static 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