Message ID | 20200318142253.2809-1-vsementsov@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RFC,(fix,for,5.0?)] block/io: do not do pointer arithmetic on void * | expand |
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
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 >
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
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;
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(-)