@@ -127,8 +127,11 @@ static int query_capability(struct pfru_update_cap_info *cap_hdr,
127127 pfru_dev -> rev_id ,
128128 PFRU_FUNC_QUERY_UPDATE_CAP ,
129129 NULL , ACPI_TYPE_PACKAGE );
130- if (!out_obj )
130+ if (!out_obj ) {
131+ dev_dbg (pfru_dev -> parent_dev ,
132+ "Query cap failed with no object\n" );
131133 return ret ;
134+ }
132135
133136 if (out_obj -> package .count < CAP_NR_IDX ||
134137 out_obj -> package .elements [CAP_STATUS_IDX ].type != ACPI_TYPE_INTEGER ||
@@ -141,13 +144,17 @@ static int query_capability(struct pfru_update_cap_info *cap_hdr,
141144 out_obj -> package .elements [CAP_DRV_SVN_IDX ].type != ACPI_TYPE_INTEGER ||
142145 out_obj -> package .elements [CAP_PLAT_ID_IDX ].type != ACPI_TYPE_BUFFER ||
143146 out_obj -> package .elements [CAP_OEM_ID_IDX ].type != ACPI_TYPE_BUFFER ||
144- out_obj -> package .elements [CAP_OEM_INFO_IDX ].type != ACPI_TYPE_BUFFER )
147+ out_obj -> package .elements [CAP_OEM_INFO_IDX ].type != ACPI_TYPE_BUFFER ) {
148+ dev_dbg (pfru_dev -> parent_dev ,
149+ "Query cap failed with invalid package count/type\n" );
145150 goto free_acpi_buffer ;
151+ }
146152
147153 cap_hdr -> status = out_obj -> package .elements [CAP_STATUS_IDX ].integer .value ;
148154 if (cap_hdr -> status != DSM_SUCCEED ) {
149155 ret = - EBUSY ;
150- dev_dbg (pfru_dev -> parent_dev , "Error Status:%d\n" , cap_hdr -> status );
156+ dev_dbg (pfru_dev -> parent_dev , "Query cap Error Status:%d\n" ,
157+ cap_hdr -> status );
151158 goto free_acpi_buffer ;
152159 }
153160
@@ -193,24 +200,32 @@ static int query_buffer(struct pfru_com_buf_info *info,
193200 out_obj = acpi_evaluate_dsm_typed (handle , & pfru_guid ,
194201 pfru_dev -> rev_id , PFRU_FUNC_QUERY_BUF ,
195202 NULL , ACPI_TYPE_PACKAGE );
196- if (!out_obj )
203+ if (!out_obj ) {
204+ dev_dbg (pfru_dev -> parent_dev ,
205+ "Query buf failed with no object\n" );
197206 return ret ;
207+ }
198208
199209 if (out_obj -> package .count < BUF_NR_IDX ||
200210 out_obj -> package .elements [BUF_STATUS_IDX ].type != ACPI_TYPE_INTEGER ||
201211 out_obj -> package .elements [BUF_EXT_STATUS_IDX ].type != ACPI_TYPE_INTEGER ||
202212 out_obj -> package .elements [BUF_ADDR_LOW_IDX ].type != ACPI_TYPE_INTEGER ||
203213 out_obj -> package .elements [BUF_ADDR_HI_IDX ].type != ACPI_TYPE_INTEGER ||
204- out_obj -> package .elements [BUF_SIZE_IDX ].type != ACPI_TYPE_INTEGER )
214+ out_obj -> package .elements [BUF_SIZE_IDX ].type != ACPI_TYPE_INTEGER ) {
215+ dev_dbg (pfru_dev -> parent_dev ,
216+ "Query buf failed with invalid package count/type\n" );
205217 goto free_acpi_buffer ;
218+ }
206219
207220 info -> status = out_obj -> package .elements [BUF_STATUS_IDX ].integer .value ;
208221 info -> ext_status =
209222 out_obj -> package .elements [BUF_EXT_STATUS_IDX ].integer .value ;
210223 if (info -> status != DSM_SUCCEED ) {
211224 ret = - EBUSY ;
212- dev_dbg (pfru_dev -> parent_dev , "Error Status:%d\n" , info -> status );
213- dev_dbg (pfru_dev -> parent_dev , "Error Extended Status:%d\n" , info -> ext_status );
225+ dev_dbg (pfru_dev -> parent_dev ,
226+ "Query buf failed with Error Status:%d\n" , info -> status );
227+ dev_dbg (pfru_dev -> parent_dev ,
228+ "Query buf failed with Error Extended Status:%d\n" , info -> ext_status );
214229
215230 goto free_acpi_buffer ;
216231 }
@@ -295,12 +310,16 @@ static bool applicable_image(const void *data, struct pfru_update_cap_info *cap,
295310 m_img_hdr = data + size ;
296311
297312 type = get_image_type (m_img_hdr , pfru_dev );
298- if (type < 0 )
313+ if (type < 0 ) {
314+ dev_dbg (pfru_dev -> parent_dev , "Invalid image type\n" );
299315 return false;
316+ }
300317
301318 size = adjust_efi_size (m_img_hdr , size );
302- if (size < 0 )
319+ if (size < 0 ) {
320+ dev_dbg (pfru_dev -> parent_dev , "Invalid image size\n" );
303321 return false;
322+ }
304323
305324 auth = data + size ;
306325 size += sizeof (u64 ) + auth -> auth_info .hdr .len ;
@@ -346,17 +365,23 @@ static int start_update(int action, struct pfru_device *pfru_dev)
346365 out_obj = acpi_evaluate_dsm_typed (handle , & pfru_guid ,
347366 pfru_dev -> rev_id , PFRU_FUNC_START ,
348367 & in_obj , ACPI_TYPE_PACKAGE );
349- if (!out_obj )
368+ if (!out_obj ) {
369+ dev_dbg (pfru_dev -> parent_dev ,
370+ "Update failed to start with no object\n" );
350371 return ret ;
372+ }
351373
352374 if (out_obj -> package .count < UPDATE_NR_IDX ||
353375 out_obj -> package .elements [UPDATE_STATUS_IDX ].type != ACPI_TYPE_INTEGER ||
354376 out_obj -> package .elements [UPDATE_EXT_STATUS_IDX ].type != ACPI_TYPE_INTEGER ||
355377 out_obj -> package .elements [UPDATE_AUTH_TIME_LOW_IDX ].type != ACPI_TYPE_INTEGER ||
356378 out_obj -> package .elements [UPDATE_AUTH_TIME_HI_IDX ].type != ACPI_TYPE_INTEGER ||
357379 out_obj -> package .elements [UPDATE_EXEC_TIME_LOW_IDX ].type != ACPI_TYPE_INTEGER ||
358- out_obj -> package .elements [UPDATE_EXEC_TIME_HI_IDX ].type != ACPI_TYPE_INTEGER )
380+ out_obj -> package .elements [UPDATE_EXEC_TIME_HI_IDX ].type != ACPI_TYPE_INTEGER ) {
381+ dev_dbg (pfru_dev -> parent_dev ,
382+ "Update failed with invalid package count/type\n" );
359383 goto free_acpi_buffer ;
384+ }
360385
361386 update_result .status =
362387 out_obj -> package .elements [UPDATE_STATUS_IDX ].integer .value ;
@@ -365,8 +390,10 @@ static int start_update(int action, struct pfru_device *pfru_dev)
365390
366391 if (update_result .status != DSM_SUCCEED ) {
367392 ret = - EBUSY ;
368- dev_dbg (pfru_dev -> parent_dev , "Error Status:%d\n" , update_result .status );
369- dev_dbg (pfru_dev -> parent_dev , "Error Extended Status:%d\n" ,
393+ dev_dbg (pfru_dev -> parent_dev ,
394+ "Update failed with Error Status:%d\n" , update_result .status );
395+ dev_dbg (pfru_dev -> parent_dev ,
396+ "Update failed with Error Extended Status:%d\n" ,
370397 update_result .ext_status );
371398
372399 goto free_acpi_buffer ;
@@ -450,8 +477,10 @@ static ssize_t pfru_write(struct file *file, const char __user *buf,
450477 if (ret )
451478 return ret ;
452479
453- if (len > buf_info .buf_size )
480+ if (len > buf_info .buf_size ) {
481+ dev_dbg (pfru_dev -> parent_dev , "Capsule image size too large\n" );
454482 return - EINVAL ;
483+ }
455484
456485 iov .iov_base = (void __user * )buf ;
457486 iov .iov_len = len ;
@@ -460,10 +489,14 @@ static ssize_t pfru_write(struct file *file, const char __user *buf,
460489 /* map the communication buffer */
461490 phy_addr = (phys_addr_t )((buf_info .addr_hi << 32 ) | buf_info .addr_lo );
462491 buf_ptr = memremap (phy_addr , buf_info .buf_size , MEMREMAP_WB );
463- if (!buf_ptr )
492+ if (!buf_ptr ) {
493+ dev_dbg (pfru_dev -> parent_dev , "Failed to remap the buffer\n" );
464494 return - ENOMEM ;
495+ }
465496
466497 if (!copy_from_iter_full (buf_ptr , len , & iter )) {
498+ dev_dbg (pfru_dev -> parent_dev ,
499+ "Failed to copy the data from the user space buffer\n" );
467500 ret = - EINVAL ;
468501 goto unmap ;
469502 }
0 commit comments