virtio: handle > 2 billion page balloon targets
If the host asks for a huge target towards_target() can overflow, and we up oops as we try to release more pages than we have. The simple fix is to use a 64-bit value. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
c483934670
commit
bdc1681cdf
|
@ -152,7 +152,7 @@ static void virtballoon_changed(struct virtio_device *vdev)
|
|||
wake_up(&vb->config_change);
|
||||
}
|
||||
|
||||
static inline int towards_target(struct virtio_balloon *vb)
|
||||
static inline s64 towards_target(struct virtio_balloon *vb)
|
||||
{
|
||||
u32 v;
|
||||
__virtio_config_val(vb->vdev,
|
||||
|
@ -176,7 +176,7 @@ static int balloon(void *_vballoon)
|
|||
|
||||
set_freezable();
|
||||
while (!kthread_should_stop()) {
|
||||
int diff;
|
||||
s64 diff;
|
||||
|
||||
try_to_freeze();
|
||||
wait_event_interruptible(vb->config_change,
|
||||
|
|
Loading…
Reference in New Issue