On 12.06.14 10:55, Paolo Bonzini wrote:
Il 12/06/2014 09:43, Greg Kurz ha scritto:
Since we know that 0 < max_nr_ports < 32, is it acceptable to guess
the correct endianness with a heuristic ?
if (max_nr_ports > tswap32(s->config.max_nr_ports)) {
max_nr_ports = bswap32(max_nr_ports);
}
if (max_nr_ports > tswap32(s->config.max_nr_ports)) {
return -EINVAL;
}
Yes, I guess it is acceptable. So first you should fix the code to
always serialize fields as big-endian, and then apply this little hack
and virtio_tswap on top of the previous change.
Why don't we just ignore those config fields? They won't change during
the lifetime of the guest anyway - and configuration needs to be the
same on source and dest to work.
Alex