Hello!
> > + mmio.is_write = is_write;
> > +
> > + if (attr->attr & KVM_DEV_ARM_VGIC_64BIT) {
> > + u64 __user *uaddr = (u64 __user *)(long)attr->addr;
> > + __le64 data;
> > +
> > + if (is_write) {
> > + u64 reg;
> > +
> > + if (get_user(reg, uaddr))
>
> Wouldn't the use of copy_from_user/copy_to_user here make this whole
> switch redundant? Even if not, you could think about moving this logic
> into into vgic_attr_regs_access() and just hardcode "len=4" into GICv2
> accesses.
No, because endianess conversion is still strongly typed. And this ends up in:
if (is_write) {
u64 reg;
__le64 data;
copy_from_user(®, uaddr, mmio.len);
if (mmio.len == 8)
data = cpu_to_le64(reg);
else
*((__le32 *)&data) = cpu_to_le32(*((__le32 *)®);
isn't this even more ugly? Regardless of where it is placed.
Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html