All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups
@ 2017-01-18 20:30 Michael S. Tsirkin
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 1/4] virtio: fix up max size checks Michael S. Tsirkin
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2017-01-18 20:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini

Turns out virtio kept using ARRAY_SIZE on fields which stopped
being arrays, this was noticed by a coverity scan.
Fix this up, and fix up the ARRAY_SIZE macro so that this
bug does not reappear in any other place.

Michael S. Tsirkin (4):
  virtio: fix up max size checks
  compiler: drop ; after BUILD_BUG_ON
  compiler: expression version of QEMU_BUILD_BUG_ON
  ARRAY_SIZE: check that argument is an array

 include/qemu/compiler.h |  4 +++-
 include/qemu/osdep.h    |  8 +++++++-
 hw/virtio/virtio.c      | 27 +++++++++++----------------
 3 files changed, 21 insertions(+), 18 deletions(-)

-- 
MST

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 1/4] virtio: fix up max size checks
  2017-01-18 20:30 [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups Michael S. Tsirkin
@ 2017-01-18 20:30 ` Michael S. Tsirkin
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 2/4] compiler: drop ; after BUILD_BUG_ON Michael S. Tsirkin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2017-01-18 20:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, qemu-stable

Coverity reports that ARRAY_SIZE(elem->out_sg) (and all the others too)
is wrong because elem->out_sg is a pointer.

However, the check is not in the right place and the max_size argument
of virtqueue_map_iovec can be removed.  The check on in_num/out_num
should be moved to qemu_get_virtqueue_element instead, before the call
to virtqueue_alloc_element.

Cc: qemu-stable@nongnu.org
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Fixes: 3724650db07057333879484c8bc7d900b5c1bf8e ("virtio: introduce virtqueue_alloc_element")
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/virtio/virtio.c | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 34065c7..c29127a 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -599,23 +599,11 @@ static void virtqueue_undo_map_desc(unsigned int out_num, unsigned int in_num,
 
 static void virtqueue_map_iovec(VirtIODevice *vdev, struct iovec *sg,
                                 hwaddr *addr, unsigned int *num_sg,
-                                unsigned int max_size, int is_write)
+                                int is_write)
 {
     unsigned int i;
     hwaddr len;
 
-    /* Note: this function MUST validate input, some callers
-     * are passing in num_sg values received over the network.
-     */
-    /* TODO: teach all callers that this can fail, and return failure instead
-     * of asserting here.
-     * When we do, we might be able to re-enable NDEBUG below.
-     */
-#ifdef NDEBUG
-#error building with NDEBUG is not supported
-#endif
-    assert(*num_sg <= max_size);
-
     for (i = 0; i < *num_sg; i++) {
         len = sg[i].iov_len;
         sg[i].iov_base = dma_memory_map(vdev->dma_as,
@@ -636,11 +624,8 @@ static void virtqueue_map_iovec(VirtIODevice *vdev, struct iovec *sg,
 void virtqueue_map(VirtIODevice *vdev, VirtQueueElement *elem)
 {
     virtqueue_map_iovec(vdev, elem->in_sg, elem->in_addr, &elem->in_num,
-                        MIN(ARRAY_SIZE(elem->in_sg), ARRAY_SIZE(elem->in_addr)),
                         1);
     virtqueue_map_iovec(vdev, elem->out_sg, elem->out_addr, &elem->out_num,
-                        MIN(ARRAY_SIZE(elem->out_sg),
-                        ARRAY_SIZE(elem->out_addr)),
                         0);
 }
 
@@ -840,6 +825,16 @@ void *qemu_get_virtqueue_element(VirtIODevice *vdev, QEMUFile *f, size_t sz)
 
     qemu_get_buffer(f, (uint8_t *)&data, sizeof(VirtQueueElementOld));
 
+    /* TODO: teach all callers that this can fail, and return failure instead
+     * of asserting here.
+     * When we do, we might be able to re-enable NDEBUG below.
+     */
+#ifdef NDEBUG
+#error building with NDEBUG is not supported
+#endif
+    assert(ARRAY_SIZE(data.in_addr) >= data.in_num);
+    assert(ARRAY_SIZE(data.out_addr) >= data.out_num);
+
     elem = virtqueue_alloc_element(sz, data.out_num, data.in_num);
     elem->index = data.index;
 
-- 
MST

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 2/4] compiler: drop ; after BUILD_BUG_ON
  2017-01-18 20:30 [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups Michael S. Tsirkin
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 1/4] virtio: fix up max size checks Michael S. Tsirkin
@ 2017-01-18 20:30 ` Michael S. Tsirkin
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 3/4] compiler: expression version of QEMU_BUILD_BUG_ON Michael S. Tsirkin
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2017-01-18 20:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, Peter Maydell, Eric Blake, Richard Henderson

All users include the trailing ;, let's require that
so that uses such as if (a) QEMU_BUILD_BUG_ON(); do not
produce unexpected results.

Not a huge problem for QEMU since our style requires the use
of {} but seems cleaner nevertheless.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qemu/compiler.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
index 157698b..1a9eeb9 100644
--- a/include/qemu/compiler.h
+++ b/include/qemu/compiler.h
@@ -86,7 +86,7 @@
 #define type_check(t1,t2) ((t1*)0 - (t2*)0)
 
 #define QEMU_BUILD_BUG_ON(x) \
-    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused));
+    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
 
 #if defined __GNUC__
 # if !QEMU_GNUC_PREREQ(4, 4)
-- 
MST

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 3/4] compiler: expression version of QEMU_BUILD_BUG_ON
  2017-01-18 20:30 [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups Michael S. Tsirkin
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 1/4] virtio: fix up max size checks Michael S. Tsirkin
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 2/4] compiler: drop ; after BUILD_BUG_ON Michael S. Tsirkin
@ 2017-01-18 20:30 ` Michael S. Tsirkin
  2017-01-19 11:29   ` Dr. David Alan Gilbert
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 4/4] ARRAY_SIZE: check that argument is an array Michael S. Tsirkin
  2017-01-18 20:40 ` [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups no-reply
  4 siblings, 1 reply; 8+ messages in thread
From: Michael S. Tsirkin @ 2017-01-18 20:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, Peter Maydell, Eric Blake, Richard Henderson

QEMU_BUILD_BUG_ON uses a typedef in order to be safe
to use outside functions, but sometimes it's useful
to have a version that can be used within an expression.
Following what Linux does, introduce QEMU_BUILD_BUG_ON_ZERO
that return zero after checking condition at build time.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qemu/compiler.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
index 1a9eeb9..d2b05dd 100644
--- a/include/qemu/compiler.h
+++ b/include/qemu/compiler.h
@@ -88,6 +88,8 @@
 #define QEMU_BUILD_BUG_ON(x) \
     typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
 
+#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
+
 #if defined __GNUC__
 # if !QEMU_GNUC_PREREQ(4, 4)
    /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
-- 
MST

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 4/4] ARRAY_SIZE: check that argument is an array
  2017-01-18 20:30 [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups Michael S. Tsirkin
                   ` (2 preceding siblings ...)
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 3/4] compiler: expression version of QEMU_BUILD_BUG_ON Michael S. Tsirkin
@ 2017-01-18 20:30 ` Michael S. Tsirkin
  2017-01-18 20:40 ` [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups no-reply
  4 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2017-01-18 20:30 UTC (permalink / raw)
  To: qemu-devel
  Cc: pbonzini, Eric Blake, Peter Maydell, Markus Armbruster, Sergey Fedorov

It's a familiar pattern: some code uses ARRAY_SIZE, then refactoring
changes the argument from an array to a pointer to a dynamically
allocated buffer.  Code keeps compiling but any ARRAY_SIZE calls now
return the size of the pointer divided by element size.

Let's add build time checks to ARRAY_SIZE before we allow more
of these in the code-base.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qemu/osdep.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 689f253..24bfda0 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -199,7 +199,13 @@ extern int daemon(int, int);
 #endif
 
 #ifndef ARRAY_SIZE
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+/*
+ * &(x)[0] is always a pointer - if it's same type as x then the argument is a
+ * pointer, not an array as expected.
+ */
+#define ARRAY_SIZE(x) ((sizeof(x) / sizeof((x)[0])) + QEMU_BUILD_BUG_ON_ZERO( \
+                        __builtin_types_compatible_p(typeof(x), \
+                                                     typeof(&(x)[0]))))
 #endif
 
 int qemu_daemon(int nochdir, int noclose);
-- 
MST

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups
  2017-01-18 20:30 [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups Michael S. Tsirkin
                   ` (3 preceding siblings ...)
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 4/4] ARRAY_SIZE: check that argument is an array Michael S. Tsirkin
@ 2017-01-18 20:40 ` no-reply
  2017-01-18 20:55   ` Michael S. Tsirkin
  4 siblings, 1 reply; 8+ messages in thread
From: no-reply @ 2017-01-18 20:40 UTC (permalink / raw)
  To: mst; +Cc: famz, qemu-devel, pbonzini

Hi,

Your series seems to have some coding style problems. See output below for
more information:

Message-id: 1484771412-28024-1-git-send-email-mst@redhat.com
Subject: [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

# Useful git options
git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 * [new tag]         patchew/1484771412-28024-1-git-send-email-mst@redhat.com -> patchew/1484771412-28024-1-git-send-email-mst@redhat.com
Switched to a new branch 'test'
38b031b ARRAY_SIZE: check that argument is an array
19ef003 compiler: expression version of QEMU_BUILD_BUG_ON
71870e6 compiler: drop ; after BUILD_BUG_ON
c652d79 virtio: fix up max size checks

=== OUTPUT BEGIN ===
Checking PATCH 1/4: virtio: fix up max size checks...
Checking PATCH 2/4: compiler: drop ; after BUILD_BUG_ON...
WARNING: line over 80 characters
#25: FILE: include/qemu/compiler.h:89:
+    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))

ERROR: space required after that ',' (ctx:VxV)
#25: FILE: include/qemu/compiler.h:89:
+    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
                                          ^

ERROR: spaces required around that '?' (ctx:VxO)
#25: FILE: include/qemu/compiler.h:89:
+    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
                                                        ^

ERROR: space required before that '-' (ctx:OxV)
#25: FILE: include/qemu/compiler.h:89:
+    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
                                                         ^

ERROR: spaces required around that ':' (ctx:VxV)
#25: FILE: include/qemu/compiler.h:89:
+    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
                                                           ^

total: 4 errors, 1 warnings, 8 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 3/4: compiler: expression version of QEMU_BUILD_BUG_ON...
ERROR: spaces required around that '?' (ctx:VxO)
#23: FILE: include/qemu/compiler.h:91:
+#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
                                                  ^

ERROR: space required before that '-' (ctx:OxV)
#23: FILE: include/qemu/compiler.h:91:
+#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
                                                   ^

ERROR: spaces required around that ':' (ctx:VxV)
#23: FILE: include/qemu/compiler.h:91:
+#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
                                                     ^

total: 3 errors, 0 warnings, 8 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 4/4: ARRAY_SIZE: check that argument is an array...
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups
  2017-01-18 20:40 ` [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups no-reply
@ 2017-01-18 20:55   ` Michael S. Tsirkin
  0 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2017-01-18 20:55 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, famz

On Wed, Jan 18, 2017 at 12:40:50PM -0800, no-reply@patchew.org wrote:
> Hi,
> 
> Your series seems to have some coding style problems. See output below for
> more information:

Not sure we really do care as this matches existing code, but I'll fix
it up.


> Message-id: 1484771412-28024-1-git-send-email-mst@redhat.com
> Subject: [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups
> Type: series
> 
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> 
> BASE=base
> n=1
> total=$(git log --oneline $BASE.. | wc -l)
> failed=0
> 
> # Useful git options
> git config --local diff.renamelimit 0
> git config --local diff.renames True
> 
> commits="$(git log --format=%H --reverse $BASE..)"
> for c in $commits; do
>     echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
>     if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
>         failed=1
>         echo
>     fi
>     n=$((n+1))
> done
> 
> exit $failed
> === TEST SCRIPT END ===
> 
> Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
> From https://github.com/patchew-project/qemu
>  * [new tag]         patchew/1484771412-28024-1-git-send-email-mst@redhat.com -> patchew/1484771412-28024-1-git-send-email-mst@redhat.com
> Switched to a new branch 'test'
> 38b031b ARRAY_SIZE: check that argument is an array
> 19ef003 compiler: expression version of QEMU_BUILD_BUG_ON
> 71870e6 compiler: drop ; after BUILD_BUG_ON
> c652d79 virtio: fix up max size checks
> 
> === OUTPUT BEGIN ===
> Checking PATCH 1/4: virtio: fix up max size checks...
> Checking PATCH 2/4: compiler: drop ; after BUILD_BUG_ON...
> WARNING: line over 80 characters
> #25: FILE: include/qemu/compiler.h:89:
> +    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
> 
> ERROR: space required after that ',' (ctx:VxV)
> #25: FILE: include/qemu/compiler.h:89:
> +    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
>                                           ^
> 
> ERROR: spaces required around that '?' (ctx:VxO)
> #25: FILE: include/qemu/compiler.h:89:
> +    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
>                                                         ^
> 
> ERROR: space required before that '-' (ctx:OxV)
> #25: FILE: include/qemu/compiler.h:89:
> +    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
>                                                          ^
> 
> ERROR: spaces required around that ':' (ctx:VxV)
> #25: FILE: include/qemu/compiler.h:89:
> +    typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
>                                                            ^
> 
> total: 4 errors, 1 warnings, 8 lines checked
> 
> Your patch has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 
> Checking PATCH 3/4: compiler: expression version of QEMU_BUILD_BUG_ON...
> ERROR: spaces required around that '?' (ctx:VxO)
> #23: FILE: include/qemu/compiler.h:91:
> +#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
>                                                   ^
> 
> ERROR: space required before that '-' (ctx:OxV)
> #23: FILE: include/qemu/compiler.h:91:
> +#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
>                                                    ^
> 
> ERROR: spaces required around that ':' (ctx:VxV)
> #23: FILE: include/qemu/compiler.h:91:
> +#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
>                                                      ^
> 
> total: 3 errors, 0 warnings, 8 lines checked
> 
> Your patch has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 
> Checking PATCH 4/4: ARRAY_SIZE: check that argument is an array...
> === OUTPUT END ===
> 
> Test command exited with code: 1
> 
> 
> ---
> Email generated automatically by Patchew [http://patchew.org/].
> Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] compiler: expression version of QEMU_BUILD_BUG_ON
  2017-01-18 20:30 ` [Qemu-devel] [PATCH 3/4] compiler: expression version of QEMU_BUILD_BUG_ON Michael S. Tsirkin
@ 2017-01-19 11:29   ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 8+ messages in thread
From: Dr. David Alan Gilbert @ 2017-01-19 11:29 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, pbonzini, Richard Henderson, Peter Maydell

* Michael S. Tsirkin (mst@redhat.com) wrote:
> QEMU_BUILD_BUG_ON uses a typedef in order to be safe
> to use outside functions, but sometimes it's useful
> to have a version that can be used within an expression.
> Following what Linux does, introduce QEMU_BUILD_BUG_ON_ZERO
> that return zero after checking condition at build time.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  include/qemu/compiler.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
> index 1a9eeb9..d2b05dd 100644
> --- a/include/qemu/compiler.h
> +++ b/include/qemu/compiler.h
> @@ -88,6 +88,8 @@
>  #define QEMU_BUILD_BUG_ON(x) \
>      typedef char glue(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused))
>  
> +#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(int[(x)?-1:1]) - sizeof(int))
> +

Yes, pretty much the same as:
https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg07090.html

I'd used -sizeof(int[1])   in the right hand size to match the left, but
I think it should always be the same.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

>  #if defined __GNUC__
>  # if !QEMU_GNUC_PREREQ(4, 4)
>     /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
> -- 
> MST
> 
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-01-19 11:30 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-18 20:30 [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups Michael S. Tsirkin
2017-01-18 20:30 ` [Qemu-devel] [PATCH 1/4] virtio: fix up max size checks Michael S. Tsirkin
2017-01-18 20:30 ` [Qemu-devel] [PATCH 2/4] compiler: drop ; after BUILD_BUG_ON Michael S. Tsirkin
2017-01-18 20:30 ` [Qemu-devel] [PATCH 3/4] compiler: expression version of QEMU_BUILD_BUG_ON Michael S. Tsirkin
2017-01-19 11:29   ` Dr. David Alan Gilbert
2017-01-18 20:30 ` [Qemu-devel] [PATCH 4/4] ARRAY_SIZE: check that argument is an array Michael S. Tsirkin
2017-01-18 20:40 ` [Qemu-devel] [PATCH 0/4] virtio: ARRAY_SIZE fixups no-reply
2017-01-18 20:55   ` Michael S. Tsirkin

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.