@@ -530,17 +530,12 @@ static int sev_bind_asid(struct kvm *kvm, unsigned int handle, int *error)
530530
531531static int __sev_issue_cmd (int fd , int id , void * data , int * error )
532532{
533- struct fd f ;
534- int ret ;
533+ CLASS (fd , f )(fd );
535534
536- f = fdget (fd );
537- if (!fd_file (f ))
535+ if (fd_empty (f ))
538536 return - EBADF ;
539537
540- ret = sev_issue_cmd_external_user (fd_file (f ), id , data , error );
541-
542- fdput (f );
543- return ret ;
538+ return sev_issue_cmd_external_user (fd_file (f ), id , data , error );
544539}
545540
546541static int sev_issue_cmd (struct kvm * kvm , int id , void * data , int * error )
@@ -2073,23 +2068,21 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd)
20732068{
20742069 struct kvm_sev_info * dst_sev = & to_kvm_svm (kvm )-> sev_info ;
20752070 struct kvm_sev_info * src_sev , * cg_cleanup_sev ;
2076- struct fd f = fdget (source_fd );
2071+ CLASS ( fd , f ) (source_fd );
20772072 struct kvm * source_kvm ;
20782073 bool charged = false;
20792074 int ret ;
20802075
2081- if (! fd_file (f ))
2076+ if (fd_empty (f ))
20822077 return - EBADF ;
20832078
2084- if (!file_is_kvm (fd_file (f ))) {
2085- ret = - EBADF ;
2086- goto out_fput ;
2087- }
2079+ if (!file_is_kvm (fd_file (f )))
2080+ return - EBADF ;
20882081
20892082 source_kvm = fd_file (f )-> private_data ;
20902083 ret = sev_lock_two_vms (kvm , source_kvm );
20912084 if (ret )
2092- goto out_fput ;
2085+ return ret ;
20932086
20942087 if (kvm -> arch .vm_type != source_kvm -> arch .vm_type ||
20952088 sev_guest (kvm ) || !sev_guest (source_kvm )) {
@@ -2136,8 +2129,6 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd)
21362129 cg_cleanup_sev -> misc_cg = NULL ;
21372130out_unlock :
21382131 sev_unlock_two_vms (kvm , source_kvm );
2139- out_fput :
2140- fdput (f );
21412132 return ret ;
21422133}
21432134
@@ -2798,23 +2789,21 @@ int sev_mem_enc_unregister_region(struct kvm *kvm,
27982789
27992790int sev_vm_copy_enc_context_from (struct kvm * kvm , unsigned int source_fd )
28002791{
2801- struct fd f = fdget (source_fd );
2792+ CLASS ( fd , f ) (source_fd );
28022793 struct kvm * source_kvm ;
28032794 struct kvm_sev_info * source_sev , * mirror_sev ;
28042795 int ret ;
28052796
2806- if (! fd_file (f ))
2797+ if (fd_empty (f ))
28072798 return - EBADF ;
28082799
2809- if (!file_is_kvm (fd_file (f ))) {
2810- ret = - EBADF ;
2811- goto e_source_fput ;
2812- }
2800+ if (!file_is_kvm (fd_file (f )))
2801+ return - EBADF ;
28132802
28142803 source_kvm = fd_file (f )-> private_data ;
28152804 ret = sev_lock_two_vms (kvm , source_kvm );
28162805 if (ret )
2817- goto e_source_fput ;
2806+ return ret ;
28182807
28192808 /*
28202809 * Mirrors of mirrors should work, but let's not get silly. Also
@@ -2857,8 +2846,6 @@ int sev_vm_copy_enc_context_from(struct kvm *kvm, unsigned int source_fd)
28572846
28582847e_unlock :
28592848 sev_unlock_two_vms (kvm , source_kvm );
2860- e_source_fput :
2861- fdput (f );
28622849 return ret ;
28632850}
28642851
0 commit comments