@@ -71,7 +71,7 @@ int pax_nvme_submit_admin_passthru_1k_rsp(int fd,
7171 struct pax_nvme_device * pax ;
7272 struct switchtec_device_manage_nvme_req req ;
7373 struct switchtec_device_manage_nvme_rsp rsp ;
74- int data_len ;
74+ size_t data_len = 0 ;
7575 int status ;
7676
7777 memset (& req , 0 , sizeof (req ));
@@ -84,12 +84,14 @@ int pax_nvme_submit_admin_passthru_1k_rsp(int fd,
8484 /* sqe[9] should be 0 per spec */
8585 req .nvme_sqe [9 ] = 0 ;
8686
87- if (cmd -> data_len > sizeof (req .nvme_data ))
88- data_len = sizeof (req .nvme_data );
89- else
90- data_len = cmd -> data_len ;
87+ if (cmd -> opcode & 0x1 ) {
88+ if (cmd -> data_len > sizeof (req .nvme_data ))
89+ data_len = sizeof (req .nvme_data );
90+ else
91+ data_len = cmd -> data_len ;
9192
92- memcpy (req .nvme_data , (void * )cmd -> addr , data_len );
93+ memcpy (req .nvme_data , (void * )cmd -> addr , data_len );
94+ }
9395
9496 req .hdr .expected_rsp_len = (sizeof (rsp .nvme_cqe ) + sizeof (rsp .nvme_data ));
9597
@@ -120,7 +122,7 @@ int pax_nvme_submit_admin_passthru_4k_rsp(int fd,
120122 struct pax_nvme_device * pax ;
121123 struct switchtec_admin_passthru_nvme_req req ;
122124 struct switchtec_admin_passthru_nvme_rsp rsp ;
123- size_t data_len ;
125+ size_t data_len = 0 ;
124126 size_t rsp_len ;
125127 int status ;
126128
@@ -133,12 +135,15 @@ int pax_nvme_submit_admin_passthru_4k_rsp(int fd,
133135 /* sqe[9] should be 0 per spec */
134136 req .nvme_sqe [9 ] = 0 ;
135137
136- if (cmd -> data_len > sizeof (req .nvme_data ))
137- data_len = sizeof (req .nvme_data );
138- else
139- data_len = cmd -> data_len ;
138+ if (cmd -> opcode & 0x1 ) {
139+ if (cmd -> data_len > sizeof (req .nvme_data ))
140+ data_len = sizeof (req .nvme_data );
141+ else
142+ data_len = cmd -> data_len ;
143+
144+ memcpy (req .nvme_data , (void * )cmd -> addr , data_len );
145+ }
140146
141- memcpy (req .nvme_data , (void * )cmd -> addr , data_len );
142147 data_len = data_len + 16 * 4 ;
143148
144149 rsp_len = (sizeof (rsp .nvme_cqe ) + cmd -> data_len );
0 commit comments