All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Fixing several GCC 11 warnings
@ 2021-01-11 17:09 Miroslav Rezanina
  2021-01-11 17:09 ` [PATCH v2 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
  2021-01-11 17:09 ` [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
  0 siblings, 2 replies; 5+ messages in thread
From: Miroslav Rezanina @ 2021-01-11 17:09 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é)

Miroslav Rezanina (2):
  Fix net.c warning on GCC 11
  s390x: Fix vm name copy length

 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] 5+ messages in thread

* [PATCH v2 1/2] Fix net.c warning on GCC 11
  2021-01-11 17:09 [PATCH v2 0/2] Fixing several GCC 11 warnings Miroslav Rezanina
@ 2021-01-11 17:09 ` Miroslav Rezanina
  2021-01-11 17:09 ` [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
  1 sibling, 0 replies; 5+ messages in thread
From: Miroslav Rezanina @ 2021-01-11 17:09 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 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] 5+ messages in thread

* [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name
  2021-01-11 17:09 [PATCH v2 0/2] Fixing several GCC 11 warnings Miroslav Rezanina
  2021-01-11 17:09 ` [PATCH v2 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
@ 2021-01-11 17:09 ` Miroslav Rezanina
  2021-01-11 18:02   ` Philippe Mathieu-Daudé
  2021-01-12  9:09   ` Thomas Huth
  1 sibling, 2 replies; 5+ messages in thread
From: Miroslav Rezanina @ 2021-01-11 17:09 UTC (permalink / raw)
  To: qemu-devel

When using strncpy with lenght equal to size of target array,
GCC 11 produce following warning:

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

To prevent this warning, use strpadcpy function that will enusure that
provide functionality similar to strncpy but allow copy strings with
length equal size of target array (and discarding endint zero) and
ensure array is zeroed after copied string.

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] 5+ messages in thread

* Re: [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name
  2021-01-11 17:09 ` [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
@ 2021-01-11 18:02   ` Philippe Mathieu-Daudé
  2021-01-12  9:09   ` Thomas Huth
  1 sibling, 0 replies; 5+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-01-11 18:02 UTC (permalink / raw)
  To: Miroslav Rezanina, qemu-devel

On 1/11/21 6:09 PM, Miroslav Rezanina wrote:
> When using strncpy with lenght equal to size of target array,

Typo "length".

> GCC 11 produce following warning:
> 
>    warning: '__builtin_strncpy' specified bound 256 equals destination size [-Wstringop-truncation]
> 
> To prevent this warning, use strpadcpy function that will enusure that
> provide functionality similar to strncpy but allow copy strings with
> length equal size of target array (and discarding endint zero) and
> ensure array is zeroed after copied string.

Hard to understand... Look like incorrect copy/paste in the middle?

> 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(-)

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



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

* Re: [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name
  2021-01-11 17:09 ` [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
  2021-01-11 18:02   ` Philippe Mathieu-Daudé
@ 2021-01-12  9:09   ` Thomas Huth
  1 sibling, 0 replies; 5+ messages in thread
From: Thomas Huth @ 2021-01-12  9:09 UTC (permalink / raw)
  To: Miroslav Rezanina, qemu-devel
  Cc: Christian Borntraeger, qemu-s390x, Cornelia Huck

On 11/01/2021 18.09, Miroslav Rezanina wrote:
> When using strncpy with lenght equal to size of target array,

s/lenght/length/

> GCC 11 produce following warning:
> 
>     warning: '__builtin_strncpy' specified bound 256 equals destination size [-Wstringop-truncation]
> 
> To prevent this warning, use strpadcpy function that will enusure that
> provide functionality similar to strncpy but allow copy strings with
> length equal size of target array (and discarding endint zero) and

s/endint/ending/

> ensure array is zeroed after copied string.
> 
> 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(-)

With the two typos fixed:

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

> 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");
> 




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

end of thread, other threads:[~2021-01-12  9:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-11 17:09 [PATCH v2 0/2] Fixing several GCC 11 warnings Miroslav Rezanina
2021-01-11 17:09 ` [PATCH v2 1/2] Fix net.c warning on GCC 11 Miroslav Rezanina
2021-01-11 17:09 ` [PATCH v2 2/2] s390x: Use strpadcpy for copying vm name Miroslav Rezanina
2021-01-11 18:02   ` Philippe Mathieu-Daudé
2021-01-12  9:09   ` Thomas Huth

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.