* [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug
@ 2018-10-29 6:29 Li Qiang
2018-10-29 6:29 ` [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized Li Qiang
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Li Qiang @ 2018-10-29 6:29 UTC (permalink / raw)
To: keith.busch, kwolf, mreitz; +Cc: qemu-block, qemu-devel, Li Qiang
The first corrent the refcount and second fix a memory leak.
Li Qiang (2):
nvme: don't unref ctrl_mem when device unrealized
nvme: free cmbuf in nvme_exit
hw/block/nvme.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized
2018-10-29 6:29 [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Li Qiang
@ 2018-10-29 6:29 ` Li Qiang
2018-11-05 14:57 ` Li Qiang
2018-11-06 15:58 ` Igor Mammedov
2018-10-29 6:29 ` [Qemu-devel] [PATCH 2/2] nvme: free cmbuf in nvme_exit Li Qiang
2018-11-07 9:54 ` [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Kevin Wolf
2 siblings, 2 replies; 7+ messages in thread
From: Li Qiang @ 2018-10-29 6:29 UTC (permalink / raw)
To: keith.busch, kwolf, mreitz; +Cc: qemu-block, qemu-devel, Li Qiang
Currently, when hotplug/unhotplug nvme device, it will cause an
assert in object.c. Following is the backtrack:
ERROR:qom/object.c:981:object_unref: assertion failed: (obj->ref > 0)
Thread 2 "qemu-system-x86" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffcbd32700 (LWP 18844)]
0x00007fffdb9e4fff in raise () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
/lib/x86_64-linux-gnu/libglib-2.0.so.0
/lib/x86_64-linux-gnu/libglib-2.0.so.0
qom/object.c:981
/home/liqiang02/qemu-upstream/qemu/memory.c:1732
/home/liqiang02/qemu-upstream/qemu/memory.c:285
util/qemu-thread-posix.c:504
/lib/x86_64-linux-gnu/libpthread.so.0
This is caused by memory_region_unref in nvme_exit.
Remove it to make the PCIdevice refcount correct.
Signed-off-by: Li Qiang <liq3ea@gmail.com>
---
hw/block/nvme.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index fc7dacb816..359a06d0ad 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -1331,9 +1331,6 @@ static void nvme_exit(PCIDevice *pci_dev)
g_free(n->namespaces);
g_free(n->cq);
g_free(n->sq);
- if (n->cmbsz) {
- memory_region_unref(&n->ctrl_mem);
- }
msix_uninit_exclusive_bar(pci_dev);
}
--
2.11.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH 2/2] nvme: free cmbuf in nvme_exit
2018-10-29 6:29 [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Li Qiang
2018-10-29 6:29 ` [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized Li Qiang
@ 2018-10-29 6:29 ` Li Qiang
2018-10-29 12:32 ` Philippe Mathieu-Daudé
2018-11-07 9:54 ` [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Kevin Wolf
2 siblings, 1 reply; 7+ messages in thread
From: Li Qiang @ 2018-10-29 6:29 UTC (permalink / raw)
To: keith.busch, kwolf, mreitz; +Cc: qemu-block, qemu-devel, Li Qiang
This avoid a memory leak in unhotplug nvme device.
Signed-off-by: Li Qiang <liq3ea@gmail.com>
---
hw/block/nvme.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 359a06d0ad..09d7c90259 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -1332,6 +1332,9 @@ static void nvme_exit(PCIDevice *pci_dev)
g_free(n->cq);
g_free(n->sq);
+ if (n->cmb_size_mb) {
+ g_free(n->cmbuf);
+ }
msix_uninit_exclusive_bar(pci_dev);
}
--
2.11.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] nvme: free cmbuf in nvme_exit
2018-10-29 6:29 ` [Qemu-devel] [PATCH 2/2] nvme: free cmbuf in nvme_exit Li Qiang
@ 2018-10-29 12:32 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 7+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-10-29 12:32 UTC (permalink / raw)
To: Li Qiang, keith.busch, kwolf, mreitz; +Cc: qemu-devel, qemu-block
On 29/10/18 7:29, Li Qiang wrote:
> This avoid a memory leak in unhotplug nvme device.
>
> Signed-off-by: Li Qiang <liq3ea@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> hw/block/nvme.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 359a06d0ad..09d7c90259 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -1332,6 +1332,9 @@ static void nvme_exit(PCIDevice *pci_dev)
> g_free(n->cq);
> g_free(n->sq);
>
> + if (n->cmb_size_mb) {
> + g_free(n->cmbuf);
> + }
> msix_uninit_exclusive_bar(pci_dev);
> }
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized
2018-10-29 6:29 ` [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized Li Qiang
@ 2018-11-05 14:57 ` Li Qiang
2018-11-06 15:58 ` Igor Mammedov
1 sibling, 0 replies; 7+ messages in thread
From: Li Qiang @ 2018-11-05 14:57 UTC (permalink / raw)
To: keith.busch, kwolf, mreitz; +Cc: qemu-block, Qemu Developers
Ping...
I think this is a serious issue, can go 3.1
Thanks,
Li Qiang
Li Qiang <liq3ea@gmail.com> 于2018年10月29日周一 下午2:29写道:
> Currently, when hotplug/unhotplug nvme device, it will cause an
> assert in object.c. Following is the backtrack:
>
> ERROR:qom/object.c:981:object_unref: assertion failed: (obj->ref > 0)
>
> Thread 2 "qemu-system-x86" received signal SIGABRT, Aborted.
> [Switching to Thread 0x7fffcbd32700 (LWP 18844)]
> 0x00007fffdb9e4fff in raise () from /lib/x86_64-linux-gnu/libc.so.6
> (gdb) bt
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> qom/object.c:981
> /home/liqiang02/qemu-upstream/qemu/memory.c:1732
> /home/liqiang02/qemu-upstream/qemu/memory.c:285
> util/qemu-thread-posix.c:504
> /lib/x86_64-linux-gnu/libpthread.so.0
>
> This is caused by memory_region_unref in nvme_exit.
>
> Remove it to make the PCIdevice refcount correct.
>
> Signed-off-by: Li Qiang <liq3ea@gmail.com>
> ---
> hw/block/nvme.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index fc7dacb816..359a06d0ad 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -1331,9 +1331,6 @@ static void nvme_exit(PCIDevice *pci_dev)
> g_free(n->namespaces);
> g_free(n->cq);
> g_free(n->sq);
> - if (n->cmbsz) {
> - memory_region_unref(&n->ctrl_mem);
> - }
>
> msix_uninit_exclusive_bar(pci_dev);
> }
> --
> 2.11.0
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized
2018-10-29 6:29 ` [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized Li Qiang
2018-11-05 14:57 ` Li Qiang
@ 2018-11-06 15:58 ` Igor Mammedov
1 sibling, 0 replies; 7+ messages in thread
From: Igor Mammedov @ 2018-11-06 15:58 UTC (permalink / raw)
To: Li Qiang; +Cc: keith.busch, kwolf, mreitz, qemu-devel, qemu-block
On Sun, 28 Oct 2018 23:29:40 -0700
Li Qiang <liq3ea@gmail.com> wrote:
> Currently, when hotplug/unhotplug nvme device, it will cause an
> assert in object.c. Following is the backtrack:
>
> ERROR:qom/object.c:981:object_unref: assertion failed: (obj->ref > 0)
>
> Thread 2 "qemu-system-x86" received signal SIGABRT, Aborted.
> [Switching to Thread 0x7fffcbd32700 (LWP 18844)]
> 0x00007fffdb9e4fff in raise () from /lib/x86_64-linux-gnu/libc.so.6
> (gdb) bt
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> qom/object.c:981
> /home/liqiang02/qemu-upstream/qemu/memory.c:1732
> /home/liqiang02/qemu-upstream/qemu/memory.c:285
> util/qemu-thread-posix.c:504
> /lib/x86_64-linux-gnu/libpthread.so.0
>
> This is caused by memory_region_unref in nvme_exit.
>
> Remove it to make the PCIdevice refcount correct.
>
> Signed-off-by: Li Qiang <liq3ea@gmail.com>
nvme device holds a reference to ctrl_mem MemoryRegion as a parent
so MemoryRegion will be destroyed later during destruction of
nvme object when its cildren are un-parented.
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> hw/block/nvme.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index fc7dacb816..359a06d0ad 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -1331,9 +1331,6 @@ static void nvme_exit(PCIDevice *pci_dev)
> g_free(n->namespaces);
> g_free(n->cq);
> g_free(n->sq);
> - if (n->cmbsz) {
> - memory_region_unref(&n->ctrl_mem);
> - }
>
> msix_uninit_exclusive_bar(pci_dev);
> }
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug
2018-10-29 6:29 [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Li Qiang
2018-10-29 6:29 ` [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized Li Qiang
2018-10-29 6:29 ` [Qemu-devel] [PATCH 2/2] nvme: free cmbuf in nvme_exit Li Qiang
@ 2018-11-07 9:54 ` Kevin Wolf
2 siblings, 0 replies; 7+ messages in thread
From: Kevin Wolf @ 2018-11-07 9:54 UTC (permalink / raw)
To: Li Qiang; +Cc: keith.busch, mreitz, qemu-block, qemu-devel
Am 29.10.2018 um 07:29 hat Li Qiang geschrieben:
> The first corrent the refcount and second fix a memory leak.
Thanks, applied to the block branch.
Kevin
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-11-07 9:55 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-29 6:29 [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Li Qiang
2018-10-29 6:29 ` [Qemu-devel] [PATCH 1/2] nvme: don't unref ctrl_mem when device unrealized Li Qiang
2018-11-05 14:57 ` Li Qiang
2018-11-06 15:58 ` Igor Mammedov
2018-10-29 6:29 ` [Qemu-devel] [PATCH 2/2] nvme: free cmbuf in nvme_exit Li Qiang
2018-10-29 12:32 ` Philippe Mathieu-Daudé
2018-11-07 9:54 ` [Qemu-devel] [PATCH 0/2] nvme: fix two issues in nvme unhotplug Kevin Wolf
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.