@@ -530,81 +530,58 @@ int amd_pmf_init_smart_pc(struct amd_pmf_dev *dev)
530530
531531 ret = amd_pmf_set_dram_addr (dev , true);
532532 if (ret )
533- goto err_cancel_work ;
533+ return ret ;
534534
535535 dev -> policy_base = devm_ioremap_resource (dev -> dev , dev -> res );
536- if (IS_ERR (dev -> policy_base )) {
537- ret = PTR_ERR (dev -> policy_base );
538- goto err_cancel_work ;
539- }
536+ if (IS_ERR (dev -> policy_base ))
537+ return PTR_ERR (dev -> policy_base );
540538
541539 dev -> policy_buf = devm_kzalloc (dev -> dev , dev -> policy_sz , GFP_KERNEL );
542- if (!dev -> policy_buf ) {
543- ret = - ENOMEM ;
544- goto err_cancel_work ;
545- }
540+ if (!dev -> policy_buf )
541+ return - ENOMEM ;
546542
547543 memcpy_fromio (dev -> policy_buf , dev -> policy_base , dev -> policy_sz );
548544
549545 if (!amd_pmf_pb_valid (dev )) {
550546 dev_info (dev -> dev , "No Smart PC policy present\n" );
551- ret = - EINVAL ;
552- goto err_cancel_work ;
547+ return - EINVAL ;
553548 }
554549
555550 amd_pmf_hex_dump_pb (dev );
556551
557552 dev -> prev_data = devm_kzalloc (dev -> dev , sizeof (* dev -> prev_data ), GFP_KERNEL );
558- if (!dev -> prev_data ) {
559- ret = - ENOMEM ;
560- goto err_cancel_work ;
561- }
553+ if (!dev -> prev_data )
554+ return - ENOMEM ;
562555
563556 for (i = 0 ; i < ARRAY_SIZE (amd_pmf_ta_uuid ); i ++ ) {
564557 ret = amd_pmf_tee_init (dev , & amd_pmf_ta_uuid [i ]);
565558 if (ret )
566- goto err_cancel_work ;
559+ return ret ;
567560
568561 ret = amd_pmf_start_policy_engine (dev );
569- switch (ret ) {
570- case TA_PMF_TYPE_SUCCESS :
571- status = true;
572- break ;
573- case TA_ERROR_CRYPTO_INVALID_PARAM :
574- case TA_ERROR_CRYPTO_BIN_TOO_LARGE :
575- amd_pmf_tee_deinit (dev );
576- status = false;
577- break ;
578- default :
579- ret = - EINVAL ;
580- amd_pmf_tee_deinit (dev );
581- goto err_cancel_work ;
582- }
583-
562+ dev_dbg (dev -> dev , "start policy engine ret: %d\n" , ret );
563+ status = ret == TA_PMF_TYPE_SUCCESS ;
584564 if (status )
585565 break ;
566+ amd_pmf_tee_deinit (dev );
586567 }
587568
588569 if (!status && !pb_side_load ) {
589570 ret = - EINVAL ;
590- goto err_cancel_work ;
571+ goto err ;
591572 }
592573
593574 if (pb_side_load )
594575 amd_pmf_open_pb (dev , dev -> dbgfs_dir );
595576
596577 ret = amd_pmf_register_input_device (dev );
597578 if (ret )
598- goto err_pmf_remove_pb ;
579+ goto err ;
599580
600581 return 0 ;
601582
602- err_pmf_remove_pb :
603- if (pb_side_load && dev -> esbin )
604- amd_pmf_remove_pb (dev );
605- amd_pmf_tee_deinit (dev );
606- err_cancel_work :
607- cancel_delayed_work_sync (& dev -> pb_work );
583+ err :
584+ amd_pmf_deinit_smart_pc (dev );
608585
609586 return ret ;
610587}
0 commit comments