@@ -732,7 +732,7 @@ pvr_fw_process(struct pvr_device *pvr_dev)
732
732
fw_mem -> core_data , fw_mem -> core_code_alloc_size );
733
733
734
734
if (err )
735
- goto err_free_fw_core_data_obj ;
735
+ goto err_free_kdata ;
736
736
737
737
memcpy (fw_code_ptr , fw_mem -> code , fw_mem -> code_alloc_size );
738
738
memcpy (fw_data_ptr , fw_mem -> data , fw_mem -> data_alloc_size );
@@ -742,18 +742,22 @@ pvr_fw_process(struct pvr_device *pvr_dev)
742
742
memcpy (fw_core_data_ptr , fw_mem -> core_data , fw_mem -> core_data_alloc_size );
743
743
744
744
/* We're finished with the firmware section memory on the CPU, unmap. */
745
- if (fw_core_data_ptr )
745
+ if (fw_core_data_ptr ) {
746
746
pvr_fw_object_vunmap (fw_mem -> core_data_obj );
747
- if (fw_core_code_ptr )
747
+ fw_core_data_ptr = NULL ;
748
+ }
749
+ if (fw_core_code_ptr ) {
748
750
pvr_fw_object_vunmap (fw_mem -> core_code_obj );
751
+ fw_core_code_ptr = NULL ;
752
+ }
749
753
pvr_fw_object_vunmap (fw_mem -> data_obj );
750
754
fw_data_ptr = NULL ;
751
755
pvr_fw_object_vunmap (fw_mem -> code_obj );
752
756
fw_code_ptr = NULL ;
753
757
754
758
err = pvr_fw_create_fwif_connection_ctl (pvr_dev );
755
759
if (err )
756
- goto err_free_fw_core_data_obj ;
760
+ goto err_free_kdata ;
757
761
758
762
return 0 ;
759
763
@@ -763,13 +767,16 @@ pvr_fw_process(struct pvr_device *pvr_dev)
763
767
kfree (fw_mem -> data );
764
768
kfree (fw_mem -> code );
765
769
766
- err_free_fw_core_data_obj :
767
770
if (fw_core_data_ptr )
768
- pvr_fw_object_unmap_and_destroy (fw_mem -> core_data_obj );
771
+ pvr_fw_object_vunmap (fw_mem -> core_data_obj );
772
+ if (fw_mem -> core_data_obj )
773
+ pvr_fw_object_destroy (fw_mem -> core_data_obj );
769
774
770
775
err_free_fw_core_code_obj :
771
776
if (fw_core_code_ptr )
772
- pvr_fw_object_unmap_and_destroy (fw_mem -> core_code_obj );
777
+ pvr_fw_object_vunmap (fw_mem -> core_code_obj );
778
+ if (fw_mem -> core_code_obj )
779
+ pvr_fw_object_destroy (fw_mem -> core_code_obj );
773
780
774
781
err_free_fw_data_obj :
775
782
if (fw_data_ptr )
@@ -836,6 +843,12 @@ pvr_fw_cleanup(struct pvr_device *pvr_dev)
836
843
struct pvr_fw_mem * fw_mem = & pvr_dev -> fw_dev .mem ;
837
844
838
845
pvr_fw_fini_fwif_connection_ctl (pvr_dev );
846
+
847
+ kfree (fw_mem -> core_data );
848
+ kfree (fw_mem -> core_code );
849
+ kfree (fw_mem -> data );
850
+ kfree (fw_mem -> code );
851
+
839
852
if (fw_mem -> core_code_obj )
840
853
pvr_fw_object_destroy (fw_mem -> core_code_obj );
841
854
if (fw_mem -> core_data_obj )
0 commit comments