All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Fixing several GCC 11 warnings
@ 2021-01-14  7:07 Miroslav Rezanina
  2021-01-14  7:07 ` [PATCH v3 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
  2021-01-14  7:07 ` [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
  0 siblings, 2 replies; 12+ messages in thread
From: Miroslav Rezanina @ 2021-01-14  7:07 UTC (permalink / raw)
  To: qemu-devel

Compiling qemu using GCC 11 we got several new warnings. To allow
build with --enable-werror, we need to solve issues generating these
warnings.
  
Signed-of-by: Miroslav Rezanina <mrezanin@redhat.com>

v2:
 - Patch 2 rewrite to use strpadcpy
 - removed Patch 3 (different version sent by Philippe Mathieu-Daudé)

v3:
 - Fixed patch commit logs (no cod changes)

Miroslav Rezanina (2):
  Fix net.c warning on GCC 11
  s390x: Use strpadcpy for copying vm name

 net/eth.c                  |  3 +++
 target/s390x/kvm.c         | 12 +++++-------
 target/s390x/misc_helper.c |  7 +++++--
 3 files changed, 13 insertions(+), 9 deletions(-)

-- 
2.18.4



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

* [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14  7:07 [PATCH v3 0/2] Fixing several GCC 11 warnings Miroslav Rezanina
@ 2021-01-14  7:07 ` Miroslav Rezanina
  2021-01-14 13:15   ` Philippe Mathieu-Daudé
  2021-01-14  7:07 ` [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
  1 sibling, 1 reply; 12+ messages in thread
From: Miroslav Rezanina @ 2021-01-14  7:07 UTC (permalink / raw)
  To: qemu-devel

When building qemu with GCC 11, compiling eth.c file produce following warning:

   warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]

This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
attributes.

As this usage is expected, suppress the warning temporarily through the function
using this retyping.

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
 net/eth.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/eth.c b/net/eth.c
index 1e0821c5f8..b9bdd0435c 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -405,6 +405,8 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
                         struct ip6_ext_hdr *ext_hdr,
                         struct in6_address *dst_addr)
 {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
     struct ip6_ext_hdr_routing *rthdr = (struct ip6_ext_hdr_routing *) ext_hdr;
 
     if ((rthdr->rtype == 2) &&
@@ -426,6 +428,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
     }
 
     return false;
+#pragma GCC diagnostic pop
 }
 
 static bool
-- 
2.18.4



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

* [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name
  2021-01-14  7:07 [PATCH v3 0/2] Fixing several GCC 11 warnings Miroslav Rezanina
  2021-01-14  7:07 ` [PATCH v3 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
@ 2021-01-14  7:07 ` Miroslav Rezanina
  2021-01-14  8:32   ` Thomas Huth
  2021-01-14 10:16   ` Cornelia Huck
  1 sibling, 2 replies; 12+ messages in thread
From: Miroslav Rezanina @ 2021-01-14  7:07 UTC (permalink / raw)
  To: qemu-devel

Using strncpy with length equal to the size of target array, GCC 11
reports following warning:

  warning: '__builtin_strncpy' specified bound 256 equals destination size [-Wstringop-truncation]

We can prevent this warning by using strpadcpy that copies string
up to specified length, zeroes target array after copied string
and does not raise warning when length is equal to target array
size (and ending '\0' is discarded).

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
 target/s390x/kvm.c         | 12 +++++-------
 target/s390x/misc_helper.c |  7 +++++--
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index b8385e6b95..dc27fa36c9 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -29,6 +29,7 @@
 #include "internal.h"
 #include "kvm_s390x.h"
 #include "sysemu/kvm_int.h"
+#include "qemu/cutils.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "qemu/timer.h"
@@ -1910,18 +1911,15 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar)
                                                     strlen(qemu_name)));
     }
     sysib.vm[0].ext_name_encoding = 2; /* 2 = UTF-8 */
-    memset(sysib.ext_names[0], 0, sizeof(sysib.ext_names[0]));
     /* If hypervisor specifies zero Extended Name in STSI322 SYSIB, it's
      * considered by s390 as not capable of providing any Extended Name.
      * Therefore if no name was specified on qemu invocation, we go with the
      * same "KVMguest" default, which KVM has filled into short name field.
      */
-    if (qemu_name) {
-        strncpy((char *)sysib.ext_names[0], qemu_name,
-                sizeof(sysib.ext_names[0]));
-    } else {
-        strcpy((char *)sysib.ext_names[0], "KVMguest");
-    }
+    strpadcpy((char *)sysib.ext_names[0],
+              sizeof(sysib.ext_names[0]),
+              qemu_name ?: "KVMguest", '\0');
+
     /* Insert UUID */
     memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid));
 
diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c
index 58dbc023eb..7ea90d414a 100644
--- a/target/s390x/misc_helper.c
+++ b/target/s390x/misc_helper.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/cutils.h"
 #include "qemu/main-loop.h"
 #include "cpu.h"
 #include "internal.h"
@@ -369,8 +370,10 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, uint64_t r0, uint64_t r1)
                 ebcdic_put(sysib.sysib_322.vm[0].name, qemu_name,
                            MIN(sizeof(sysib.sysib_322.vm[0].name),
                                strlen(qemu_name)));
-                strncpy((char *)sysib.sysib_322.ext_names[0], qemu_name,
-                        sizeof(sysib.sysib_322.ext_names[0]));
+                strpadcpy((char *)sysib.sysib_322.ext_names[0],
+                          sizeof(sysib.sysib_322.ext_names[0]),
+                          qemu_name, '\0');
+
             } else {
                 ebcdic_put(sysib.sysib_322.vm[0].name, "TCGguest", 8);
                 strcpy((char *)sysib.sysib_322.ext_names[0], "TCGguest");
-- 
2.18.4



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

* Re: [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name
  2021-01-14  7:07 ` [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
@ 2021-01-14  8:32   ` Thomas Huth
  2021-01-14 10:16   ` Cornelia Huck
  1 sibling, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2021-01-14  8:32 UTC (permalink / raw)
  To: Miroslav Rezanina, qemu-devel; +Cc: qemu-s390x, Cornelia Huck

On 14/01/2021 08.07, Miroslav Rezanina wrote:
> Using strncpy with length equal to the size of target array, GCC 11
> reports following warning:
> 
>    warning: '__builtin_strncpy' specified bound 256 equals destination size [-Wstringop-truncation]
> 
> We can prevent this warning by using strpadcpy that copies string
> up to specified length, zeroes target array after copied string
> and does not raise warning when length is equal to target array
> size (and ending '\0' is discarded).
> 
> Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> ---
>   target/s390x/kvm.c         | 12 +++++-------
>   target/s390x/misc_helper.c |  7 +++++--
>   2 files changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
> index b8385e6b95..dc27fa36c9 100644
> --- a/target/s390x/kvm.c
> +++ b/target/s390x/kvm.c
> @@ -29,6 +29,7 @@
>   #include "internal.h"
>   #include "kvm_s390x.h"
>   #include "sysemu/kvm_int.h"
> +#include "qemu/cutils.h"
>   #include "qapi/error.h"
>   #include "qemu/error-report.h"
>   #include "qemu/timer.h"
> @@ -1910,18 +1911,15 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar)
>                                                       strlen(qemu_name)));
>       }
>       sysib.vm[0].ext_name_encoding = 2; /* 2 = UTF-8 */
> -    memset(sysib.ext_names[0], 0, sizeof(sysib.ext_names[0]));
>       /* If hypervisor specifies zero Extended Name in STSI322 SYSIB, it's
>        * considered by s390 as not capable of providing any Extended Name.
>        * Therefore if no name was specified on qemu invocation, we go with the
>        * same "KVMguest" default, which KVM has filled into short name field.
>        */
> -    if (qemu_name) {
> -        strncpy((char *)sysib.ext_names[0], qemu_name,
> -                sizeof(sysib.ext_names[0]));
> -    } else {
> -        strcpy((char *)sysib.ext_names[0], "KVMguest");
> -    }
> +    strpadcpy((char *)sysib.ext_names[0],
> +              sizeof(sysib.ext_names[0]),
> +              qemu_name ?: "KVMguest", '\0');
> +
>       /* Insert UUID */
>       memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid));
>   
> diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c
> index 58dbc023eb..7ea90d414a 100644
> --- a/target/s390x/misc_helper.c
> +++ b/target/s390x/misc_helper.c
> @@ -19,6 +19,7 @@
>    */
>   
>   #include "qemu/osdep.h"
> +#include "qemu/cutils.h"
>   #include "qemu/main-loop.h"
>   #include "cpu.h"
>   #include "internal.h"
> @@ -369,8 +370,10 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, uint64_t r0, uint64_t r1)
>                   ebcdic_put(sysib.sysib_322.vm[0].name, qemu_name,
>                              MIN(sizeof(sysib.sysib_322.vm[0].name),
>                                  strlen(qemu_name)));
> -                strncpy((char *)sysib.sysib_322.ext_names[0], qemu_name,
> -                        sizeof(sysib.sysib_322.ext_names[0]));
> +                strpadcpy((char *)sysib.sysib_322.ext_names[0],
> +                          sizeof(sysib.sysib_322.ext_names[0]),
> +                          qemu_name, '\0');
> +
>               } else {
>                   ebcdic_put(sysib.sysib_322.vm[0].name, "TCGguest", 8);
>                   strcpy((char *)sysib.sysib_322.ext_names[0], "TCGguest");
> 

Reviewed-by: Thomas Huth <thuth@redhat.com>



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

* Re: [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name
  2021-01-14  7:07 ` [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
  2021-01-14  8:32   ` Thomas Huth
@ 2021-01-14 10:16   ` Cornelia Huck
  1 sibling, 0 replies; 12+ messages in thread
From: Cornelia Huck @ 2021-01-14 10:16 UTC (permalink / raw)
  To: Miroslav Rezanina; +Cc: Thomas Huth, qemu-s390x, qemu-devel

On Thu, 14 Jan 2021 08:07:36 +0100
Miroslav Rezanina <mrezanin@redhat.com> wrote:

> Using strncpy with length equal to the size of target array, GCC 11
> reports following warning:
> 
>   warning: '__builtin_strncpy' specified bound 256 equals destination size [-Wstringop-truncation]
> 
> We can prevent this warning by using strpadcpy that copies string
> up to specified length, zeroes target array after copied string
> and does not raise warning when length is equal to target array
> size (and ending '\0' is discarded).
> 
> Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> ---
>  target/s390x/kvm.c         | 12 +++++-------
>  target/s390x/misc_helper.c |  7 +++++--
>  2 files changed, 10 insertions(+), 9 deletions(-)

Thanks, applied.



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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14  7:07 ` [PATCH v3 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
@ 2021-01-14 13:15   ` Philippe Mathieu-Daudé
  2021-01-14 14:19     ` Alexander Bulekov
  2021-01-14 14:36     ` Miroslav Rezanina
  0 siblings, 2 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-01-14 13:15 UTC (permalink / raw)
  To: Miroslav Rezanina; +Cc: Jason Wang, Dmitry Fleytman, qemu-devel

+Jason +Dmitry

On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
> When building qemu with GCC 11, compiling eth.c file produce following warning:
> 
>    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
> 
> This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
> attributes.
> 
> As this usage is expected, suppress the warning temporarily through the function
> using this retyping.

This is not expected, this is a bug...

> 
> Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> ---
>  net/eth.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/net/eth.c b/net/eth.c
> index 1e0821c5f8..b9bdd0435c 100644
> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -405,6 +405,8 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
>                          struct ip6_ext_hdr *ext_hdr,
>                          struct in6_address *dst_addr)
>  {
> +#pragma GCC diagnostic push
> +#pragma GCC diagnostic ignored "-Warray-bounds"
>      struct ip6_ext_hdr_routing *rthdr = (struct ip6_ext_hdr_routing *) ext_hdr;

eth_parse_ipv6_hdr() called iov_to_buf() to fill the 2 bytes of ext_hdr.

>      if ((rthdr->rtype == 2) &&

Here we access after the 2 bytes filled... rthdr->rtype is somewhere on
eth_parse_ipv6_hdr's stack, its content is unknown.

> @@ -426,6 +428,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
>      }
>  
>      return false;
> +#pragma GCC diagnostic pop

Nacked-by: Philippe Mathieu-Daudé <philmd@redhat.com>



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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14 13:15   ` Philippe Mathieu-Daudé
@ 2021-01-14 14:19     ` Alexander Bulekov
  2021-01-14 14:35       ` Philippe Mathieu-Daudé
  2021-01-14 14:38       ` Miroslav Rezanina
  2021-01-14 14:36     ` Miroslav Rezanina
  1 sibling, 2 replies; 12+ messages in thread
From: Alexander Bulekov @ 2021-01-14 14:19 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Miroslav Rezanina, Dmitry Fleytman, Jason Wang, qemu-devel

On 210114 1415, Philippe Mathieu-Daudé wrote:
> +Jason +Dmitry
> 
> On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
> > When building qemu with GCC 11, compiling eth.c file produce following warning:
> > 
> >    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
> > 
> > This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
> > attributes.
> > 
> > As this usage is expected, suppress the warning temporarily through the function
> > using this retyping.
> 
> This is not expected, this is a bug...
> 

Seems related: https://bugs.launchpad.net/qemu/+bug/1879531
-Alex

> > 
> > Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> > ---
> >  net/eth.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/net/eth.c b/net/eth.c
> > index 1e0821c5f8..b9bdd0435c 100644
> > --- a/net/eth.c
> > +++ b/net/eth.c
> > @@ -405,6 +405,8 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> >                          struct ip6_ext_hdr *ext_hdr,
> >                          struct in6_address *dst_addr)
> >  {
> > +#pragma GCC diagnostic push
> > +#pragma GCC diagnostic ignored "-Warray-bounds"
> >      struct ip6_ext_hdr_routing *rthdr = (struct ip6_ext_hdr_routing *) ext_hdr;
> 
> eth_parse_ipv6_hdr() called iov_to_buf() to fill the 2 bytes of ext_hdr.
> 
> >      if ((rthdr->rtype == 2) &&
> 
> Here we access after the 2 bytes filled... rthdr->rtype is somewhere on
> eth_parse_ipv6_hdr's stack, its content is unknown.
> 
> > @@ -426,6 +428,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> >      }
> >  
> >      return false;
> > +#pragma GCC diagnostic pop
> 
> Nacked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
> 


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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14 14:19     ` Alexander Bulekov
@ 2021-01-14 14:35       ` Philippe Mathieu-Daudé
  2021-01-14 14:38       ` Miroslav Rezanina
  1 sibling, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-01-14 14:35 UTC (permalink / raw)
  To: Alexander Bulekov
  Cc: Miroslav Rezanina, Dmitry Fleytman, Jason Wang, qemu-devel

On 1/14/21 3:19 PM, Alexander Bulekov wrote:
> On 210114 1415, Philippe Mathieu-Daudé wrote:
>> +Jason +Dmitry
>>
>> On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
>>> When building qemu with GCC 11, compiling eth.c file produce following warning:
>>>
>>>    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
>>>
>>> This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
>>> attributes.
>>>
>>> As this usage is expected, suppress the warning temporarily through the function
>>> using this retyping.
>>
>> This is not expected, this is a bug...
>>
> 
> Seems related: https://bugs.launchpad.net/qemu/+bug/1879531

Yes!



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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14 13:15   ` Philippe Mathieu-Daudé
  2021-01-14 14:19     ` Alexander Bulekov
@ 2021-01-14 14:36     ` Miroslav Rezanina
  1 sibling, 0 replies; 12+ messages in thread
From: Miroslav Rezanina @ 2021-01-14 14:36 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: Jason Wang, Dmitry Fleytman, qemu-devel

On Thu, Jan 14, 2021 at 02:15:59PM +0100, Philippe Mathieu-Daudé wrote:
> +Jason +Dmitry
> 
> On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
> > When building qemu with GCC 11, compiling eth.c file produce following warning:
> > 
> >    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
> > 
> > This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
> > attributes.
> > 
> > As this usage is expected, suppress the warning temporarily through the function
> > using this retyping.
> 
> This is not expected, this is a bug...

Thanks for confirmation, my initial idea was the same but then I got
impression (do not remember where) that ip6_ext_hdr is not type where
data are initially written to so the overflow here is expected.

Mirek

> 
> > 
> > Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> > ---
> >  net/eth.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/net/eth.c b/net/eth.c
> > index 1e0821c5f8..b9bdd0435c 100644
> > --- a/net/eth.c
> > +++ b/net/eth.c
> > @@ -405,6 +405,8 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> >                          struct ip6_ext_hdr *ext_hdr,
> >                          struct in6_address *dst_addr)
> >  {
> > +#pragma GCC diagnostic push
> > +#pragma GCC diagnostic ignored "-Warray-bounds"
> >      struct ip6_ext_hdr_routing *rthdr = (struct ip6_ext_hdr_routing *) ext_hdr;
> 
> eth_parse_ipv6_hdr() called iov_to_buf() to fill the 2 bytes of ext_hdr.
> 
> >      if ((rthdr->rtype == 2) &&
> 
> Here we access after the 2 bytes filled... rthdr->rtype is somewhere on
> eth_parse_ipv6_hdr's stack, its content is unknown.
> 
> > @@ -426,6 +428,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> >      }
> >  
> >      return false;
> > +#pragma GCC diagnostic pop
> 
> Nacked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
> 



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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14 14:19     ` Alexander Bulekov
  2021-01-14 14:35       ` Philippe Mathieu-Daudé
@ 2021-01-14 14:38       ` Miroslav Rezanina
  2021-01-14 14:42         ` Alexander Bulekov
  1 sibling, 1 reply; 12+ messages in thread
From: Miroslav Rezanina @ 2021-01-14 14:38 UTC (permalink / raw)
  To: Alexander Bulekov
  Cc: Jason Wang, Dmitry Fleytman, Philippe Mathieu-Daudé, qemu-devel

On Thu, Jan 14, 2021 at 09:19:20AM -0500, Alexander Bulekov wrote:
> On 210114 1415, Philippe Mathieu-Daudé wrote:
> > +Jason +Dmitry
> > 
> > On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
> > > When building qemu with GCC 11, compiling eth.c file produce following warning:
> > > 
> > >    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
> > > 
> > > This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
> > > attributes.
> > > 
> > > As this usage is expected, suppress the warning temporarily through the function
> > > using this retyping.
> > 
> > This is not expected, this is a bug...
> > 
> 
> Seems related: https://bugs.launchpad.net/qemu/+bug/1879531
> -Alex
>

Yes, it is caused by the issue triggering the warning. Do you know
whether the patch mentioned in bug was already sent?

Mirek
> > > 
> > > Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> > > ---
> > >  net/eth.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> > > 
> > > diff --git a/net/eth.c b/net/eth.c
> > > index 1e0821c5f8..b9bdd0435c 100644
> > > --- a/net/eth.c
> > > +++ b/net/eth.c
> > > @@ -405,6 +405,8 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> > >                          struct ip6_ext_hdr *ext_hdr,
> > >                          struct in6_address *dst_addr)
> > >  {
> > > +#pragma GCC diagnostic push
> > > +#pragma GCC diagnostic ignored "-Warray-bounds"
> > >      struct ip6_ext_hdr_routing *rthdr = (struct ip6_ext_hdr_routing *) ext_hdr;
> > 
> > eth_parse_ipv6_hdr() called iov_to_buf() to fill the 2 bytes of ext_hdr.
> > 
> > >      if ((rthdr->rtype == 2) &&
> > 
> > Here we access after the 2 bytes filled... rthdr->rtype is somewhere on
> > eth_parse_ipv6_hdr's stack, its content is unknown.
> > 
> > > @@ -426,6 +428,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> > >      }
> > >  
> > >      return false;
> > > +#pragma GCC diagnostic pop
> > 
> > Nacked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > 
> > 
> 



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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14 14:38       ` Miroslav Rezanina
@ 2021-01-14 14:42         ` Alexander Bulekov
  2021-01-14 15:09           ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 12+ messages in thread
From: Alexander Bulekov @ 2021-01-14 14:42 UTC (permalink / raw)
  To: Miroslav Rezanina
  Cc: Jason Wang, Dmitry Fleytman, Philippe Mathieu-Daudé, qemu-devel

On 210114 1538, Miroslav Rezanina wrote:
> On Thu, Jan 14, 2021 at 09:19:20AM -0500, Alexander Bulekov wrote:
> > On 210114 1415, Philippe Mathieu-Daudé wrote:
> > > +Jason +Dmitry
> > > 
> > > On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
> > > > When building qemu with GCC 11, compiling eth.c file produce following warning:
> > > > 
> > > >    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
> > > > 
> > > > This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
> > > > attributes.
> > > > 
> > > > As this usage is expected, suppress the warning temporarily through the function
> > > > using this retyping.
> > > 
> > > This is not expected, this is a bug...
> > > 
> > 
> > Seems related: https://bugs.launchpad.net/qemu/+bug/1879531
> > -Alex
> >
> 
> Yes, it is caused by the issue triggering the warning. Do you know
> whether the patch mentioned in bug was already sent?
> 
> Mirek

I don't think so..
-Alex


> > > > 
> > > > Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> > > > ---
> > > >  net/eth.c | 3 +++
> > > >  1 file changed, 3 insertions(+)
> > > > 
> > > > diff --git a/net/eth.c b/net/eth.c
> > > > index 1e0821c5f8..b9bdd0435c 100644
> > > > --- a/net/eth.c
> > > > +++ b/net/eth.c
> > > > @@ -405,6 +405,8 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> > > >                          struct ip6_ext_hdr *ext_hdr,
> > > >                          struct in6_address *dst_addr)
> > > >  {
> > > > +#pragma GCC diagnostic push
> > > > +#pragma GCC diagnostic ignored "-Warray-bounds"
> > > >      struct ip6_ext_hdr_routing *rthdr = (struct ip6_ext_hdr_routing *) ext_hdr;
> > > 
> > > eth_parse_ipv6_hdr() called iov_to_buf() to fill the 2 bytes of ext_hdr.
> > > 
> > > >      if ((rthdr->rtype == 2) &&
> > > 
> > > Here we access after the 2 bytes filled... rthdr->rtype is somewhere on
> > > eth_parse_ipv6_hdr's stack, its content is unknown.
> > > 
> > > > @@ -426,6 +428,7 @@ _eth_get_rss_ex_dst_addr(const struct iovec *pkt, int pkt_frags,
> > > >      }
> > > >  
> > > >      return false;
> > > > +#pragma GCC diagnostic pop
> > > 
> > > Nacked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > > 
> > > 
> > 
> 


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

* Re: [PATCH v3 1/2] Fix net.c warning on GCC 11
  2021-01-14 14:42         ` Alexander Bulekov
@ 2021-01-14 15:09           ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-01-14 15:09 UTC (permalink / raw)
  To: Alexander Bulekov, Miroslav Rezanina
  Cc: Jason Wang, Dmitry Fleytman, qemu-devel

On 1/14/21 3:42 PM, Alexander Bulekov wrote:
> On 210114 1538, Miroslav Rezanina wrote:
>> On Thu, Jan 14, 2021 at 09:19:20AM -0500, Alexander Bulekov wrote:
>>> On 210114 1415, Philippe Mathieu-Daudé wrote:
>>>> +Jason +Dmitry
>>>>
>>>> On 1/14/21 8:07 AM, Miroslav Rezanina wrote:
>>>>> When building qemu with GCC 11, compiling eth.c file produce following warning:
>>>>>
>>>>>    warning: array subscript 'struct ip6_ext_hdr_routing[0]' is partly outside array bounds of 'struct ip6_ext_hdr[1]' [-Warray-bounds]
>>>>>
>>>>> This is caused by retyping from ip6_ext_hdr to ip6_ext_hdr_routing that has more
>>>>> attributes.
>>>>>
>>>>> As this usage is expected, suppress the warning temporarily through the function
>>>>> using this retyping.
>>>>
>>>> This is not expected, this is a bug...
>>>>
>>>
>>> Seems related: https://bugs.launchpad.net/qemu/+bug/1879531
>>> -Alex
>>>
>>
>> Yes, it is caused by the issue triggering the warning. Do you know
>> whether the patch mentioned in bug was already sent?
>>
>> Mirek
> 
> I don't think so..

Just sent one:

https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg03205.html



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

end of thread, other threads:[~2021-01-14 15:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-14  7:07 [PATCH v3 0/2] Fixing several GCC 11 warnings Miroslav Rezanina
2021-01-14  7:07 ` [PATCH v3 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
2021-01-14 13:15   ` Philippe Mathieu-Daudé
2021-01-14 14:19     ` Alexander Bulekov
2021-01-14 14:35       ` Philippe Mathieu-Daudé
2021-01-14 14:38       ` Miroslav Rezanina
2021-01-14 14:42         ` Alexander Bulekov
2021-01-14 15:09           ` Philippe Mathieu-Daudé
2021-01-14 14:36     ` Miroslav Rezanina
2021-01-14  7:07 ` [PATCH v3 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
2021-01-14  8:32   ` Thomas Huth
2021-01-14 10:16   ` Cornelia Huck

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.