> > If we directly cast from int to uint64_t, we will first sign-extend to > an int64_t, which is wrong. We actually want to treat the PFNs like > unsigned values. > > As far as I can see, this dates back to the initial virtio-balloon > commit, but wasn't triggered as fairly big guests would be required. > > Cc: [email protected] > Reported-by: Michael S. Tsirkin <[email protected]> > Reviewed-by: David Gibson <[email protected]> > Signed-off-by: David Hildenbrand <[email protected]> > --- > hw/virtio/virtio-balloon.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c > index e85d1c0d5c..515abf6553 100644 > --- a/hw/virtio/virtio-balloon.c > +++ b/hw/virtio/virtio-balloon.c > @@ -343,8 +343,8 @@ static void virtio_balloon_handle_output(VirtIODevice > *vdev, VirtQueue *vq) > } > > while (iov_to_buf(elem->out_sg, elem->out_num, offset, &pfn, 4) == > 4) { > + unsigned int p = virtio_ldl_p(vdev, &pfn); > hwaddr pa; > - int p = virtio_ldl_p(vdev, &pfn); > > pa = (hwaddr) p << VIRTIO_BALLOON_PFN_SHIFT; > offset += 4; > -- > 2.21.0
Reviewed-by: Pankaj Gupta <[email protected]> > > >
