Message ID | 20200713203539.17140.71425.stgit@localhost.localdomain (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | virtio-balloon: Document byte ordering of poison_val | expand |
On Mon, Jul 13, 2020 at 01:35:39PM -0700, Alexander Duyck wrote: > From: Alexander Duyck <alexander.h.duyck@linux.intel.com> > > The poison_val field in the virtio_balloon_config is treated as a > little-endian field by the host. Since we are currently only having to deal > with a single byte poison value this isn't a problem, however if the value > should ever expand it would cause byte ordering issues. Document that in > the code so that we know that if the value should ever expand we need to > byte swap the value on big-endian architectures. > > Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com> Queued, thanks! > --- > drivers/virtio/virtio_balloon.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c > index 1f157d2f4952..d0fd8f8dc6ed 100644 > --- a/drivers/virtio/virtio_balloon.c > +++ b/drivers/virtio/virtio_balloon.c > @@ -974,6 +974,11 @@ static int virtballoon_probe(struct virtio_device *vdev) > /* > * Let the hypervisor know that we are expecting a > * specific value to be written back in balloon pages. > + * > + * If the PAGE_POISON value was larger than a byte we would > + * need to byte swap poison_val here to guarantee it is > + * little-endian. However for now it is a single byte so we > + * can pass it as-is. > */ > if (!want_init_on_free()) > memset(&poison_val, PAGE_POISON, sizeof(poison_val));
On 13.07.20 22:35, Alexander Duyck wrote: > From: Alexander Duyck <alexander.h.duyck@linux.intel.com> > > The poison_val field in the virtio_balloon_config is treated as a > little-endian field by the host. Since we are currently only having to deal > with a single byte poison value this isn't a problem, however if the value > should ever expand it would cause byte ordering issues. Document that in > the code so that we know that if the value should ever expand we need to > byte swap the value on big-endian architectures. > > Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com> > --- > drivers/virtio/virtio_balloon.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c > index 1f157d2f4952..d0fd8f8dc6ed 100644 > --- a/drivers/virtio/virtio_balloon.c > +++ b/drivers/virtio/virtio_balloon.c > @@ -974,6 +974,11 @@ static int virtballoon_probe(struct virtio_device *vdev) > /* > * Let the hypervisor know that we are expecting a > * specific value to be written back in balloon pages. > + * > + * If the PAGE_POISON value was larger than a byte we would > + * need to byte swap poison_val here to guarantee it is > + * little-endian. However for now it is a single byte so we > + * can pass it as-is. Yeah, why not (although it's pretty fundamental that 1-byte values don't need any swapping). Acked-by: David Hildenbrand <david@redhat.com>
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 1f157d2f4952..d0fd8f8dc6ed 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -974,6 +974,11 @@ static int virtballoon_probe(struct virtio_device *vdev) /* * Let the hypervisor know that we are expecting a * specific value to be written back in balloon pages. + * + * If the PAGE_POISON value was larger than a byte we would + * need to byte swap poison_val here to guarantee it is + * little-endian. However for now it is a single byte so we + * can pass it as-is. */ if (!want_init_on_free()) memset(&poison_val, PAGE_POISON, sizeof(poison_val));