@@ -533,17 +533,12 @@ static int sev_bind_asid(struct kvm *kvm, unsigned int handle, int *error)
533533
534534static int __sev_issue_cmd (int fd , int id , void * data , int * error )
535535{
536- struct fd f ;
537- int ret ;
536+ CLASS (fd , f )(fd );
538537
539- f = fdget (fd );
540- if (!fd_file (f ))
538+ if (fd_empty (f ))
541539 return - EBADF ;
542540
543- ret = sev_issue_cmd_external_user (fd_file (f ), id , data , error );
544-
545- fdput (f );
546- return ret ;
541+ return sev_issue_cmd_external_user (fd_file (f ), id , data , error );
547542}
548543
549544static int sev_issue_cmd (struct kvm * kvm , int id , void * data , int * error )
@@ -2089,23 +2084,21 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd)
20892084{
20902085 struct kvm_sev_info * dst_sev = & to_kvm_svm (kvm )-> sev_info ;
20912086 struct kvm_sev_info * src_sev , * cg_cleanup_sev ;
2092- struct fd f = fdget (source_fd );
2087+ CLASS ( fd , f ) (source_fd );
20932088 struct kvm * source_kvm ;
20942089 bool charged = false;
20952090 int ret ;
20962091
2097- if (! fd_file (f ))
2092+ if (fd_empty (f ))
20982093 return - EBADF ;
20992094
2100- if (!file_is_kvm (fd_file (f ))) {
2101- ret = - EBADF ;
2102- goto out_fput ;
2103- }
2095+ if (!file_is_kvm (fd_file (f )))
2096+ return - EBADF ;
21042097
21052098 source_kvm = fd_file (f )-> private_data ;
21062099 ret = sev_lock_two_vms (kvm , source_kvm );
21072100 if (ret )
2108- goto out_fput ;
2101+ return ret ;
21092102
21102103 if (kvm -> arch .vm_type != source_kvm -> arch .vm_type ||
21112104 sev_guest (kvm ) || !sev_guest (source_kvm )) {
@@ -2152,8 +2145,6 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd)
21522145 cg_cleanup_sev -> misc_cg = NULL ;
21532146out_unlock :
21542147 sev_unlock_two_vms (kvm , source_kvm );
2155- out_fput :
2156- fdput (f );
21572148 return ret ;
21582149}
21592150
@@ -2817,23 +2808,21 @@ int sev_mem_enc_unregister_region(struct kvm *kvm,
28172808
28182809int sev_vm_copy_enc_context_from (struct kvm * kvm , unsigned int source_fd )
28192810{
2820- struct fd f = fdget (source_fd );
2811+ CLASS ( fd , f ) (source_fd );
28212812 struct kvm * source_kvm ;
28222813 struct kvm_sev_info * source_sev , * mirror_sev ;
28232814 int ret ;
28242815
2825- if (! fd_file (f ))
2816+ if (fd_empty (f ))
28262817 return - EBADF ;
28272818
2828- if (!file_is_kvm (fd_file (f ))) {
2829- ret = - EBADF ;
2830- goto e_source_fput ;
2831- }
2819+ if (!file_is_kvm (fd_file (f )))
2820+ return - EBADF ;
28322821
28332822 source_kvm = fd_file (f )-> private_data ;
28342823 ret = sev_lock_two_vms (kvm , source_kvm );
28352824 if (ret )
2836- goto e_source_fput ;
2825+ return ret ;
28372826
28382827 /*
28392828 * Mirrors of mirrors should work, but let's not get silly. Also
@@ -2876,8 +2865,6 @@ int sev_vm_copy_enc_context_from(struct kvm *kvm, unsigned int source_fd)
28762865
28772866e_unlock :
28782867 sev_unlock_two_vms (kvm , source_kvm );
2879- e_source_fput :
2880- fdput (f );
28812868 return ret ;
28822869}
28832870
0 commit comments