@@ -683,8 +683,6 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h,
683683 switch (e -> adrfam ) {
684684 case NVMF_ADDR_FAMILY_IP4 :
685685 case NVMF_ADDR_FAMILY_IP6 :
686- strchomp (e -> traddr , NVMF_TRADDR_SIZE - 1 );
687- strchomp (e -> trsvcid , NVMF_TRSVCID_SIZE - 1 );
688686 traddr = e -> traddr ;
689687 trsvcid = e -> trsvcid ;
690688 break ;
@@ -699,7 +697,6 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h,
699697 case NVMF_TRTYPE_FC :
700698 switch (e -> adrfam ) {
701699 case NVMF_ADDR_FAMILY_FC :
702- strchomp (e -> traddr , NVMF_TRADDR_SIZE - 1 );
703700 traddr = e -> traddr ;
704701 break ;
705702 default :
@@ -711,7 +708,6 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h,
711708 }
712709 break ;
713710 case NVMF_TRTYPE_LOOP :
714- strchomp (e -> traddr , NVMF_TRADDR_SIZE - 1 );
715711 traddr = strlen (e -> traddr ) ? e -> traddr : NULL ;
716712 break ;
717713 default :
@@ -884,9 +880,37 @@ static struct nvmf_discovery_log *nvme_discovery_log(nvme_ctrl_t c,
884880 return NULL ;
885881}
886882
883+ static void sanitize_discovery_log_entry (struct nvmf_disc_log_entry * e )
884+ {
885+ switch (e -> trtype ) {
886+ case NVMF_TRTYPE_RDMA :
887+ case NVMF_TRTYPE_TCP :
888+ switch (e -> adrfam ) {
889+ case NVMF_ADDR_FAMILY_IP4 :
890+ case NVMF_ADDR_FAMILY_IP6 :
891+ strchomp (e -> traddr , NVMF_TRADDR_SIZE - 1 );
892+ strchomp (e -> trsvcid , NVMF_TRSVCID_SIZE - 1 );
893+ break ;
894+ }
895+ break ;
896+ case NVMF_TRTYPE_FC :
897+ switch (e -> adrfam ) {
898+ case NVMF_ADDR_FAMILY_FC :
899+ strchomp (e -> traddr , NVMF_TRADDR_SIZE - 1 );
900+ break ;
901+ }
902+ break ;
903+ case NVMF_TRTYPE_LOOP :
904+ strchomp (e -> traddr , NVMF_TRADDR_SIZE - 1 );
905+ break ;
906+ }
907+ }
908+
887909int nvmf_get_discovery_log (nvme_ctrl_t c , struct nvmf_discovery_log * * logp ,
888910 int max_retries )
889911{
912+ struct nvmf_discovery_log * log ;
913+
890914 struct nvme_get_log_args args = {
891915 .args_size = sizeof (args ),
892916 .fd = nvme_ctrl_get_fd (c ),
@@ -903,12 +927,22 @@ int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp,
903927 .rae = false,
904928 .ot = false,
905929 };
906- * logp = nvme_discovery_log (c , & args , max_retries );
907- return * logp ? 0 : -1 ;
930+
931+ log = nvme_discovery_log (c , & args , max_retries );
932+ if (!log )
933+ return -1 ;
934+
935+ for (int i = 0 ; i < le64_to_cpu (log -> numrec ); i ++ )
936+ sanitize_discovery_log_entry (& log -> entries [i ]);
937+
938+ * logp = log ;
939+ return 0 ;
908940}
909941
910942struct nvmf_discovery_log * nvmf_get_discovery_wargs (struct nvme_get_discovery_args * args )
911943{
944+ struct nvmf_discovery_log * log ;
945+
912946 struct nvme_get_log_args _args = {
913947 .args_size = sizeof (_args ),
914948 .fd = nvme_ctrl_get_fd (args -> c ),
@@ -926,7 +960,14 @@ struct nvmf_discovery_log *nvmf_get_discovery_wargs(struct nvme_get_discovery_ar
926960 .ot = false,
927961 };
928962
929- return nvme_discovery_log (args -> c , & _args , args -> max_retries );
963+ log = nvme_discovery_log (args -> c , & _args , args -> max_retries );
964+ if (!log )
965+ return NULL ;
966+
967+ for (int i = 0 ; i < le64_to_cpu (log -> numrec ); i ++ )
968+ sanitize_discovery_log_entry (& log -> entries [i ]);
969+
970+ return log ;
930971}
931972
932973#define PATH_UUID_IBM "/proc/device-tree/ibm,partition-uuid"
0 commit comments