On Thu, Mar 2, 2023 at 2:26 AM Wang, Wei W <wei.w.wang@xxxxxxxxx> wrote: > > On Thursday, March 2, 2023 12:55 PM, Mingwei Zhang wrote: > > I don't get it. Why bothering the type if we just do this? > > > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index > > 4f26b244f6d0..10455253c6ea 100644 > > --- a/include/linux/kvm_host.h > > +++ b/include/linux/kvm_host.h > > @@ -848,7 +848,7 @@ static inline void kvm_vm_bugged(struct kvm *kvm) > > > > #define KVM_BUG(cond, kvm, fmt...) \ > > ({ \ > > - int __ret = (cond); \ > > + int __ret = !!(cond); \ > > This is essentially "bool __ret". No biggie to change it this way. !! will return an int, not a boolean, but it is used as a boolean. This is consistent with the original code which _is_ returning an integer. > But I'm inclined to retain the original intention to have the macro return > the value that was passed in: > typeof(cond) __ret = (cond); hmm, I think it is appropriate to retain the original type of 'cond' especially since it may also involve other arithmetic operations. But I doubt it will be very useful. For instance, who is going to write this code? ...... if (KVM_BUG(cond, true) & some_mask) do_something() ...... > > Let's what others vote for. Please fix this bug first before introducing nice features. Thanks. -Mingwei -Mingwei