diff options
Diffstat (limited to 'results/classifier/118/graphic/1529859')
| -rw-r--r-- | results/classifier/118/graphic/1529859 | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/results/classifier/118/graphic/1529859 b/results/classifier/118/graphic/1529859 new file mode 100644 index 000000000..135876f44 --- /dev/null +++ b/results/classifier/118/graphic/1529859 @@ -0,0 +1,227 @@ +graphic: 0.825 +assembly: 0.818 +architecture: 0.812 +socket: 0.802 +performance: 0.802 +permissions: 0.797 +arm: 0.795 +register: 0.792 +risc-v: 0.790 +debug: 0.788 +PID: 0.785 +kernel: 0.770 +semantic: 0.768 +virtual: 0.765 +network: 0.753 +files: 0.751 +boot: 0.743 +device: 0.738 +user-level: 0.735 +peripherals: 0.687 +hypervisor: 0.686 +mistranslation: 0.657 +ppc: 0.652 +KVM: 0.589 +TCG: 0.557 +VMM: 0.556 +vnc: 0.553 +x86: 0.514 +i386: 0.464 + +qemu 2.5.0 ivshmem segfault with msi=off option + +Launching qemu with "-device ivshmem,chardev=ivshmemid,msi=off -chardev socket,path=/tmp/ivshmem_socket,id=ivshmemid" + +Causes segfault because, s->msi_vectors is not initialized and s->msi_vectors == 0. + +Does ivshmem exactly need this line ? : + +s->msi_vectors[vector].pdev = pdev; + +It makes no sence for me. + +Subject: [PATCH] fixed ivshmem empty msi vector on msi=off segfault + +--- + hw/misc/ivshmem.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c +index f73f0c2..2087d5e 100644 +--- a/hw/misc/ivshmem.c ++++ b/hw/misc/ivshmem.c +@@ -359,8 +359,6 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier * + int eventfd = event_notifier_get_fd(n); + CharDriverState *chr; + +- s->msi_vectors[vector].pdev = pdev; +- + chr = qemu_chr_open_eventfd(eventfd); + + if (chr == NULL) { +@@ -1038,10 +1036,11 @@ static void pci_ivshmem_exit(PCIDevice *dev) + } + + if (ivshmem_has_feature(s, IVSHMEM_MSI)) { +- msix_uninit_exclusive_bar(dev); ++ msix_uninit_exclusive_bar(dev); + } +- +- g_free(s->msi_vectors); ++ ++ if(s->msi_vectors) ++ g_free(s->msi_vectors); + } + + static bool test_msix(void *opaque, int version_id) +-- +2.3.6 + +On 12/29/2015 06:38 AM, maquefel wrote: +> Public bug reported: +> +> Launching qemu with "-device ivshmem,chardev=ivshmemid,msi=off -chardev +> socket,path=/tmp/ivshmem_socket,id=ivshmemid" +> +> Causes segfault because, s->msi_vectors is not initialized and +> s->msi_vectors == 0. +> +> Does ivshmem exactly need this line ? : +> +> s->msi_vectors[vector].pdev = pdev; +> +> It makes no sence for me. +> +> Subject: [PATCH] fixed ivshmem empty msi vector on msi=off segfault + +Patches require a Signed-off-by: line before they can be applied. + +> +> --- +> hw/misc/ivshmem.c | 9 ++++----- +> 1 file changed, 4 insertions(+), 5 deletions(-) +> +> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c +> index f73f0c2..2087d5e 100644 +> --- a/hw/misc/ivshmem.c +> +++ b/hw/misc/ivshmem.c +> @@ -359,8 +359,6 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier * +> int eventfd = event_notifier_get_fd(n); +> CharDriverState *chr; +> +> - s->msi_vectors[vector].pdev = pdev; +> - + +This avoids the segfault, but it may break other uses. Are you sure you +don't need an 'if (s->msi_vectors[vector])' conditional? + +> chr = qemu_chr_open_eventfd(eventfd); +> +> if (chr == NULL) { +> @@ -1038,10 +1036,11 @@ static void pci_ivshmem_exit(PCIDevice *dev) +> } +> +> if (ivshmem_has_feature(s, IVSHMEM_MSI)) { +> - msix_uninit_exclusive_bar(dev); +> + msix_uninit_exclusive_bar(dev); + +I can't see what's changing here. Whitespace? + +> } +> - +> - g_free(s->msi_vectors); +> + +> + if(s->msi_vectors) +> + g_free(s->msi_vectors); + +This hunk is bogus. g_free(NULL) already works properly. + +-- +Eric Blake eblake redhat com +1-919-301-3266 +Libvirt virtualization library http://libvirt.org + + + +See previously posted patch: + +http://lists.gnu.org/archive/html/qemu-stable/2015-12/msg00034.html + +On Mon, Jan 4, 2016 at 9:24 PM, Eric Blake <email address hidden> wrote: +> On 12/29/2015 06:38 AM, maquefel wrote: +>> Public bug reported: +>> +>> Launching qemu with "-device ivshmem,chardev=ivshmemid,msi=off -chardev +>> socket,path=/tmp/ivshmem_socket,id=ivshmemid" +>> +>> Causes segfault because, s->msi_vectors is not initialized and +>> s->msi_vectors == 0. +>> +>> Does ivshmem exactly need this line ? : +>> +>> s->msi_vectors[vector].pdev = pdev; +>> +>> It makes no sence for me. +>> +>> Subject: [PATCH] fixed ivshmem empty msi vector on msi=off segfault +> +> Patches require a Signed-off-by: line before they can be applied. +> +>> +>> --- +>> hw/misc/ivshmem.c | 9 ++++----- +>> 1 file changed, 4 insertions(+), 5 deletions(-) +>> +>> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c +>> index f73f0c2..2087d5e 100644 +>> --- a/hw/misc/ivshmem.c +>> +++ b/hw/misc/ivshmem.c +>> @@ -359,8 +359,6 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier * +>> int eventfd = event_notifier_get_fd(n); +>> CharDriverState *chr; +>> +>> - s->msi_vectors[vector].pdev = pdev; +>> - +> +> This avoids the segfault, but it may break other uses. Are you sure you +> don't need an 'if (s->msi_vectors[vector])' conditional? +> +>> chr = qemu_chr_open_eventfd(eventfd); +>> +>> if (chr == NULL) { +>> @@ -1038,10 +1036,11 @@ static void pci_ivshmem_exit(PCIDevice *dev) +>> } +>> +>> if (ivshmem_has_feature(s, IVSHMEM_MSI)) { +>> - msix_uninit_exclusive_bar(dev); +>> + msix_uninit_exclusive_bar(dev); +> +> I can't see what's changing here. Whitespace? +> +>> } +>> - +>> - g_free(s->msi_vectors); +>> + +>> + if(s->msi_vectors) +>> + g_free(s->msi_vectors); +> +> This hunk is bogus. g_free(NULL) already works properly. +> +> -- +> Eric Blake eblake redhat com +1-919-301-3266 +> Libvirt virtualization library http://libvirt.org +> + + + +-- +Marc-André Lureau + + +>See previously posted patch: +> http://lists.gnu.org/archive/html/qemu-stable/2015-12/msg00034.html + +This patch resolves issue. I can confirm it works. + +Patch has been included here: +http://git.qemu.org/?p=qemu.git;a=commitdiff;h=47213eb1104709bf23 + |