* Re: [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem
2013-05-31 8:52 ` [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem Xiao Guangrong
@ 2013-05-31 12:27 ` Paolo Bonzini
2013-05-31 12:39 ` Luiz Capitulino
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2013-05-31 12:27 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Jordan Justen, qemu-devel, Justen, Jordan L, Luiz Capitulino,
Gleb Natapov, KVM
Il 31/05/2013 10:52, Xiao Guangrong ha scritto:
> Luiz Capitulino reported that guest refused to boot and qemu
> complained with:
> kvm_set_phys_mem: error unregistering overlapping slot: Invalid argument
>
> It is caused by commit 235e8982ad that did double free for the memslot
> so that the second one raises the -EINVAL error
>
> Fix it by reset memory size only if it is needed
>
> Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
> ---
> kvm-all.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kvm-all.c b/kvm-all.c
> index 8e7bbf8..405480e 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -206,7 +206,8 @@ static int kvm_set_user_memory_region(KVMState *s, KVMSlot *slot)
> if (s->migration_log) {
> mem.flags |= KVM_MEM_LOG_DIRTY_PAGES;
> }
> - if (mem.flags & KVM_MEM_READONLY) {
> +
> + if (slot->memory_size && mem.flags & KVM_MEM_READONLY) {
> /* Set the slot size to 0 before setting the slot to the desired
> * value. This is needed based on KVM commit 75d61fbc. */
> mem.memory_size = 0;
>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem
2013-05-31 8:52 ` [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem Xiao Guangrong
2013-05-31 12:27 ` Paolo Bonzini
@ 2013-05-31 12:39 ` Luiz Capitulino
2013-06-02 17:35 ` [Qemu-devel] " Richard W.M. Jones
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2013-05-31 12:39 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Gleb Natapov, KVM, Justen, Jordan L, qemu-devel, Paolo Bonzini,
Jordan Justen
On Fri, 31 May 2013 16:52:18 +0800
Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> wrote:
> Luiz Capitulino reported that guest refused to boot and qemu
> complained with:
> kvm_set_phys_mem: error unregistering overlapping slot: Invalid argument
>
> It is caused by commit 235e8982ad that did double free for the memslot
> so that the second one raises the -EINVAL error
>
> Fix it by reset memory size only if it is needed
>
> Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Tested-by: Luiz Capitulino <lcapitulino@redhat.com>
Thanks Xiao for the fix, and thanks everyone for debugging this issue!
> ---
> kvm-all.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kvm-all.c b/kvm-all.c
> index 8e7bbf8..405480e 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -206,7 +206,8 @@ static int kvm_set_user_memory_region(KVMState *s, KVMSlot *slot)
> if (s->migration_log) {
> mem.flags |= KVM_MEM_LOG_DIRTY_PAGES;
> }
> - if (mem.flags & KVM_MEM_READONLY) {
> +
> + if (slot->memory_size && mem.flags & KVM_MEM_READONLY) {
> /* Set the slot size to 0 before setting the slot to the desired
> * value. This is needed based on KVM commit 75d61fbc. */
> mem.memory_size = 0;
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [Qemu-devel] [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem
2013-05-31 8:52 ` [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem Xiao Guangrong
2013-05-31 12:27 ` Paolo Bonzini
2013-05-31 12:39 ` Luiz Capitulino
@ 2013-06-02 17:35 ` Richard W.M. Jones
2013-06-02 22:08 ` Jordan Justen
2013-06-03 6:57 ` Gleb Natapov
4 siblings, 0 replies; 6+ messages in thread
From: Richard W.M. Jones @ 2013-06-02 17:35 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Paolo Bonzini, Gleb Natapov, KVM, Justen, Jordan L, qemu-devel,
Luiz Capitulino, Jordan Justen
On Fri, May 31, 2013 at 04:52:18PM +0800, Xiao Guangrong wrote:
> Luiz Capitulino reported that guest refused to boot and qemu
> complained with:
> kvm_set_phys_mem: error unregistering overlapping slot: Invalid argument
>
> It is caused by commit 235e8982ad that did double free for the memslot
> so that the second one raises the -EINVAL error
>
> Fix it by reset memory size only if it is needed
>
> Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
> ---
> kvm-all.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kvm-all.c b/kvm-all.c
> index 8e7bbf8..405480e 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -206,7 +206,8 @@ static int kvm_set_user_memory_region(KVMState *s, KVMSlot *slot)
> if (s->migration_log) {
> mem.flags |= KVM_MEM_LOG_DIRTY_PAGES;
> }
> - if (mem.flags & KVM_MEM_READONLY) {
> +
> + if (slot->memory_size && mem.flags & KVM_MEM_READONLY) {
> /* Set the slot size to 0 before setting the slot to the desired
> * value. This is needed based on KVM commit 75d61fbc. */
> mem.memory_size = 0;
Tested and fixes it for me too.
Tested-by: Richard W.M. Jones <rjones@redhat.com>
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem
2013-05-31 8:52 ` [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem Xiao Guangrong
` (2 preceding siblings ...)
2013-06-02 17:35 ` [Qemu-devel] " Richard W.M. Jones
@ 2013-06-02 22:08 ` Jordan Justen
2013-06-03 6:57 ` Gleb Natapov
4 siblings, 0 replies; 6+ messages in thread
From: Jordan Justen @ 2013-06-02 22:08 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Paolo Bonzini, qemu-devel, Justen, Jordan L, Luiz Capitulino,
Gleb Natapov, KVM
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
On Fri, May 31, 2013 at 1:52 AM, Xiao Guangrong
<xiaoguangrong@linux.vnet.ibm.com> wrote:
> Luiz Capitulino reported that guest refused to boot and qemu
> complained with:
> kvm_set_phys_mem: error unregistering overlapping slot: Invalid argument
>
> It is caused by commit 235e8982ad that did double free for the memslot
> so that the second one raises the -EINVAL error
>
> Fix it by reset memory size only if it is needed
>
> Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
> ---
> kvm-all.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kvm-all.c b/kvm-all.c
> index 8e7bbf8..405480e 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -206,7 +206,8 @@ static int kvm_set_user_memory_region(KVMState *s, KVMSlot *slot)
> if (s->migration_log) {
> mem.flags |= KVM_MEM_LOG_DIRTY_PAGES;
> }
> - if (mem.flags & KVM_MEM_READONLY) {
> +
> + if (slot->memory_size && mem.flags & KVM_MEM_READONLY) {
> /* Set the slot size to 0 before setting the slot to the desired
> * value. This is needed based on KVM commit 75d61fbc. */
> mem.memory_size = 0;
> --
> 1.7.7.6
>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem
2013-05-31 8:52 ` [PATCH uq/master] fix double free the memslot in kvm_set_phys_mem Xiao Guangrong
` (3 preceding siblings ...)
2013-06-02 22:08 ` Jordan Justen
@ 2013-06-03 6:57 ` Gleb Natapov
4 siblings, 0 replies; 6+ messages in thread
From: Gleb Natapov @ 2013-06-03 6:57 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Paolo Bonzini, Jordan Justen, qemu-devel, Justen, Jordan L,
Luiz Capitulino, KVM
On Fri, May 31, 2013 at 04:52:18PM +0800, Xiao Guangrong wrote:
> Luiz Capitulino reported that guest refused to boot and qemu
> complained with:
> kvm_set_phys_mem: error unregistering overlapping slot: Invalid argument
>
> It is caused by commit 235e8982ad that did double free for the memslot
> so that the second one raises the -EINVAL error
>
> Fix it by reset memory size only if it is needed
>
> Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Thanks, applied.
> ---
> kvm-all.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kvm-all.c b/kvm-all.c
> index 8e7bbf8..405480e 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -206,7 +206,8 @@ static int kvm_set_user_memory_region(KVMState *s, KVMSlot *slot)
> if (s->migration_log) {
> mem.flags |= KVM_MEM_LOG_DIRTY_PAGES;
> }
> - if (mem.flags & KVM_MEM_READONLY) {
> +
> + if (slot->memory_size && mem.flags & KVM_MEM_READONLY) {
> /* Set the slot size to 0 before setting the slot to the desired
> * value. This is needed based on KVM commit 75d61fbc. */
> mem.memory_size = 0;
> --
> 1.7.7.6
--
Gleb.
^ permalink raw reply [flat|nested] 6+ messages in thread