Message ID | 20220222062510.48592-1-likexu@tencent.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86: Fix function address when kvm_x86_ops.func is NULL | expand |
On 2/22/22 07:25, Like Xu wrote: > From: Like Xu <likexu@tencent.com> > > Fix the function address for __static_call_return0() which is used by > static_call_update() when a func in struct kvm_x86_ops is NULL. > > Fixes: 5be2226f417d ("KVM: x86: allow defining return-0 static calls") > Signed-off-by: Like Xu <likexu@tencent.com> Sorry for the stupid question, but what breaks? Paolo > --- > arch/x86/include/asm/kvm_host.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 713e08f62385..312f5ee19514 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -1548,7 +1548,7 @@ static inline void kvm_ops_static_call_update(void) > #define KVM_X86_OP_OPTIONAL __KVM_X86_OP > #define KVM_X86_OP_OPTIONAL_RET0(func) \ > static_call_update(kvm_x86_##func, kvm_x86_ops.func ? : \ > - (void *) __static_call_return0); > + (void *)&__static_call_return0); > #include <asm/kvm-x86-ops.h> > #undef __KVM_X86_OP > }
On 22/2/2022 4:33 pm, Paolo Bonzini wrote: > On 2/22/22 07:25, Like Xu wrote: >> From: Like Xu <likexu@tencent.com> >> >> Fix the function address for __static_call_return0() which is used by >> static_call_update() when a func in struct kvm_x86_ops is NULL. >> >> Fixes: 5be2226f417d ("KVM: x86: allow defining return-0 static calls") >> Signed-off-by: Like Xu <likexu@tencent.com> > > Sorry for the stupid question, but what breaks? Although they are numerically the same, I suppose we should use the & operator here, as in the other cases where __static_call_return0 is used. What's more, Clang complains about the KVM_X86_OP_OPTIONAL_RET0 change: ./arch/x86/include/asm/kvm-x86-ops.h:108:1: warning: pointer type mismatch \ ('bool (*)(struct kvm_vcpu *)' (aka '_Bool (*)(struct kvm_vcpu *)') and 'void *') \ [-Wpointer-type-mismatch] and more warnings from [-Wpointer-type-mismatch] Does it help you ? > > Paolo > >> --- >> arch/x86/include/asm/kvm_host.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h >> index 713e08f62385..312f5ee19514 100644 >> --- a/arch/x86/include/asm/kvm_host.h >> +++ b/arch/x86/include/asm/kvm_host.h >> @@ -1548,7 +1548,7 @@ static inline void kvm_ops_static_call_update(void) >> #define KVM_X86_OP_OPTIONAL __KVM_X86_OP >> #define KVM_X86_OP_OPTIONAL_RET0(func) \ >> static_call_update(kvm_x86_##func, kvm_x86_ops.func ? : \ >> - (void *) __static_call_return0); >> + (void *)&__static_call_return0); >> #include <asm/kvm-x86-ops.h> >> #undef __KVM_X86_OP >> } >
On Tue, Feb 22, 2022, Like Xu wrote: > On 22/2/2022 4:33 pm, Paolo Bonzini wrote: > > On 2/22/22 07:25, Like Xu wrote: > > > From: Like Xu <likexu@tencent.com> > > > > > > Fix the function address for __static_call_return0() which is used by > > > static_call_update() when a func in struct kvm_x86_ops is NULL. > > > > > > Fixes: 5be2226f417d ("KVM: x86: allow defining return-0 static calls") > > > Signed-off-by: Like Xu <likexu@tencent.com> > > > > Sorry for the stupid question, but what breaks? > > Although they are numerically the same, I suppose we should use the > & operator here, as in the other cases where __static_call_return0 is used. Meh, IMO all the other instances are weird for adding the "&".
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 713e08f62385..312f5ee19514 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1548,7 +1548,7 @@ static inline void kvm_ops_static_call_update(void) #define KVM_X86_OP_OPTIONAL __KVM_X86_OP #define KVM_X86_OP_OPTIONAL_RET0(func) \ static_call_update(kvm_x86_##func, kvm_x86_ops.func ? : \ - (void *) __static_call_return0); + (void *)&__static_call_return0); #include <asm/kvm-x86-ops.h> #undef __KVM_X86_OP }