On Mon, Aug 31, 2015 at 10:35:05AM +0300, Pavel Fedin wrote: > Hello! > > > > + len = vgic_v3_get_reg_size(attr); > > > + if (len < 0) > > > + return len; > > > > > > - return -ENXIO; > > > + ret = vgic_v3_attr_regs_access(dev, attr, (len == 8) ? (void *)®64 : > > > + (void *)®, len, false); > > > > this use of the ternary operator is terrible, but it should be solved if > > you always use a u64 for the reg parameter. > > I also dislike this, but this is the best thing i could invent. This is dictated by put_user() and > get_user(), which rely on typeof() of their arguments. Well, i could do some castings, but they are > no less ugly, and would give more headache to bigendian systems. > However, what about doing the same thing as GET/SET_ONE_REG does by just assuming that everything is > 64-bit wide? This would automatically resolve two other issues you have commented on. By the way, > handling it in userspace would also be simpler. > Sounds fine to me, definitely if you must do a cast doing it in a function between typed variables is strictly preferred to passing void * values between functions. -Christoffer -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html