* [RFC (fix for 5.0?)] block/io: do not do pointer arithmetic on void *
@ 2020-03-18 14:22 Vladimir Sementsov-Ogievskiy
2020-03-18 14:26 ` Daniel P. Berrangé
0 siblings, 1 reply; 4+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2020-03-18 14:22 UTC (permalink / raw)
To: qemu-block; +Cc: kwolf, fam, vsementsov, qemu-devel, mreitz, stefanha
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
Hi all!
C standard doesn't allow pointer arithmetic on void *.
Still, gcc allows it as an extension:
https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Pointer-Arith.html
I can create a series of patches like this. Do we need it?
Also, where is documented which compilers are supported by Qemu?
block/io.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/io.c b/block/io.c
index aba67f66b9..539178aed5 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1277,7 +1277,7 @@ static int coroutine_fn bdrv_co_do_copy_on_readv(BdrvChild *child,
* modifying the image file. This is critical for zero-copy guest I/O
* where anything might happen inside guest memory.
*/
- void *bounce_buffer = NULL;
+ char *bounce_buffer = NULL;
BlockDriver *drv = bs->drv;
int64_t cluster_offset;
--
2.21.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [RFC (fix for 5.0?)] block/io: do not do pointer arithmetic on void *
2020-03-18 14:22 [RFC (fix for 5.0?)] block/io: do not do pointer arithmetic on void * Vladimir Sementsov-Ogievskiy
@ 2020-03-18 14:26 ` Daniel P. Berrangé
2020-03-18 14:39 ` Eric Blake
2020-03-20 16:08 ` Stefan Hajnoczi
0 siblings, 2 replies; 4+ messages in thread
From: Daniel P. Berrangé @ 2020-03-18 14:26 UTC (permalink / raw)
To: Vladimir Sementsov-Ogievskiy
Cc: kwolf, fam, qemu-block, qemu-devel, mreitz, stefanha
On Wed, Mar 18, 2020 at 05:22:53PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>
> Hi all!
>
> C standard doesn't allow pointer arithmetic on void *.
> Still, gcc allows it as an extension:
> https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Pointer-Arith.html
>
> I can create a series of patches like this. Do we need it?
I don't think so, we only care about gcc & clang.
> Also, where is documented which compilers are supported by Qemu?
It is checked in configure - gcc 4.8 or clang 3.4 or xcode clang 5.1
>
> block/io.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/block/io.c b/block/io.c
> index aba67f66b9..539178aed5 100644
> --- a/block/io.c
> +++ b/block/io.c
> @@ -1277,7 +1277,7 @@ static int coroutine_fn bdrv_co_do_copy_on_readv(BdrvChild *child,
> * modifying the image file. This is critical for zero-copy guest I/O
> * where anything might happen inside guest memory.
> */
> - void *bounce_buffer = NULL;
> + char *bounce_buffer = NULL;
>
> BlockDriver *drv = bs->drv;
> int64_t cluster_offset;
> --
> 2.21.0
>
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC (fix for 5.0?)] block/io: do not do pointer arithmetic on void *
2020-03-18 14:26 ` Daniel P. Berrangé
@ 2020-03-18 14:39 ` Eric Blake
2020-03-20 16:08 ` Stefan Hajnoczi
1 sibling, 0 replies; 4+ messages in thread
From: Eric Blake @ 2020-03-18 14:39 UTC (permalink / raw)
To: Daniel P. Berrangé, Vladimir Sementsov-Ogievskiy
Cc: kwolf, fam, qemu-block, qemu-devel, mreitz, stefanha
On 3/18/20 9:26 AM, Daniel P. Berrangé wrote:
> On Wed, Mar 18, 2020 at 05:22:53PM +0300, Vladimir Sementsov-Ogievskiy wrote:
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> ---
>>
>> Hi all!
>>
>> C standard doesn't allow pointer arithmetic on void *.
>> Still, gcc allows it as an extension:
>> https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Pointer-Arith.html
>>
>> I can create a series of patches like this. Do we need it?
>
> I don't think so, we only care about gcc & clang.
Still, if all supported compilers support the extension, then our
CODING_STYLE.rst should mention that it is safe to rely on the extension.
>
>> Also, where is documented which compilers are supported by Qemu?
>
> It is checked in configure - gcc 4.8 or clang 3.4 or xcode clang 5.1
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC (fix for 5.0?)] block/io: do not do pointer arithmetic on void *
2020-03-18 14:26 ` Daniel P. Berrangé
2020-03-18 14:39 ` Eric Blake
@ 2020-03-20 16:08 ` Stefan Hajnoczi
1 sibling, 0 replies; 4+ messages in thread
From: Stefan Hajnoczi @ 2020-03-20 16:08 UTC (permalink / raw)
To: Daniel P. Berrangé
Cc: kwolf, fam, Vladimir Sementsov-Ogievskiy, qemu-block, qemu-devel, mreitz
[-- Attachment #1: Type: text/plain, Size: 591 bytes --]
On Wed, Mar 18, 2020 at 02:26:54PM +0000, Daniel P. Berrangé wrote:
> On Wed, Mar 18, 2020 at 05:22:53PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> > ---
> >
> > Hi all!
> >
> > C standard doesn't allow pointer arithmetic on void *.
> > Still, gcc allows it as an extension:
> > https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Pointer-Arith.html
> >
> > I can create a series of patches like this. Do we need it?
>
> I don't think so, we only care about gcc & clang.
I agree with Dan.
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-03-20 16:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-18 14:22 [RFC (fix for 5.0?)] block/io: do not do pointer arithmetic on void * Vladimir Sementsov-Ogievskiy
2020-03-18 14:26 ` Daniel P. Berrangé
2020-03-18 14:39 ` Eric Blake
2020-03-20 16:08 ` Stefan Hajnoczi
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.