[v3] kni: fix build with gcc 8.1

Message ID 20180626113807.67100-1-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v3] kni: fix build with gcc 8.1 |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Ferruh Yigit June 26, 2018, 11:38 a.m. UTC
  Error observed when CONFIG_RTE_KNI_KMOD_ETHTOOL config option is
enabled.

build error:
In function ‘strncpy’,
    inlined from ‘igb_get_drvinfo’ at
    .../dpdk/build/build/kernel/linux/kni/igb_ethtool.c:814:2:
    .../include/linux/string.h:246:9: error: ‘__builtin_strncpy’ output
    may be truncated copying 31 bytes from a string of length 42
    [-Werror=stringop-truncation]
      return __builtin_strncpy(p, q, size);
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fixed by using strlcpy instead of strncpy.

adapter->fw_version size kept same because of
c3698192940c ("kni: fix build with gcc 7.1")

Also next line strncpy usage replaced with strlcpy while arround.

Fixes: c3698192940c ("kni: fix build with gcc 7.1")
Cc: stable@dpdk.org

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v2:
* used strlcpy instead of strncpy
* Updated strncpy usage in next line to strlcpy too
* Added fixes line

v3:
* fix patch syntax corrupted during send
---
 kernel/linux/kni/ethtool/igb/igb_ethtool.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

De Lara Guarch, Pablo June 26, 2018, 1:43 p.m. UTC | #1
> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Tuesday, June 26, 2018 12:38 PM
> To: Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org; stephen@networkplumber.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; stable@dpdk.org
> Subject: [PATCH v3] kni: fix build with gcc 8.1
> 
> Error observed when CONFIG_RTE_KNI_KMOD_ETHTOOL config option is
> enabled.
> 
> build error:
> In function ‘strncpy’,
>     inlined from ‘igb_get_drvinfo’ at
>     .../dpdk/build/build/kernel/linux/kni/igb_ethtool.c:814:2:
>     .../include/linux/string.h:246:9: error: ‘__builtin_strncpy’ output
>     may be truncated copying 31 bytes from a string of length 42
>     [-Werror=stringop-truncation]
>       return __builtin_strncpy(p, q, size);
>                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> Fixed by using strlcpy instead of strncpy.
> 
> adapter->fw_version size kept same because of
> c3698192940c ("kni: fix build with gcc 7.1")
> 
> Also next line strncpy usage replaced with strlcpy while arround.
> 
> Fixes: c3698192940c ("kni: fix build with gcc 7.1")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
  
Thomas Monjalon June 27, 2018, 1:15 p.m. UTC | #2
26/06/2018 15:43, De Lara Guarch, Pablo:
> 
> > Error observed when CONFIG_RTE_KNI_KMOD_ETHTOOL config option is
> > enabled.
> > 
> > build error:
> > In function ‘strncpy’,
> >     inlined from ‘igb_get_drvinfo’ at
> >     .../dpdk/build/build/kernel/linux/kni/igb_ethtool.c:814:2:
> >     .../include/linux/string.h:246:9: error: ‘__builtin_strncpy’ output
> >     may be truncated copying 31 bytes from a string of length 42
> >     [-Werror=stringop-truncation]
> >       return __builtin_strncpy(p, q, size);
> >                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 
> > Fixed by using strlcpy instead of strncpy.
> > 
> > adapter->fw_version size kept same because of
> > c3698192940c ("kni: fix build with gcc 7.1")
> > 
> > Also next line strncpy usage replaced with strlcpy while arround.
> > 
> > Fixes: c3698192940c ("kni: fix build with gcc 7.1")
> > Cc: stable@dpdk.org
> > 
> > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> 
> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

Applied, thanks
  

Patch

diff --git a/kernel/linux/kni/ethtool/igb/igb_ethtool.c b/kernel/linux/kni/ethtool/igb/igb_ethtool.c
index 064528bcf..002f75c48 100644
--- a/kernel/linux/kni/ethtool/igb/igb_ethtool.c
+++ b/kernel/linux/kni/ethtool/igb/igb_ethtool.c
@@ -811,9 +811,10 @@  static void igb_get_drvinfo(struct net_device *netdev,
 	strncpy(drvinfo->driver,  igb_driver_name, sizeof(drvinfo->driver) - 1);
 	strncpy(drvinfo->version, igb_driver_version, sizeof(drvinfo->version) - 1);
 
-	strncpy(drvinfo->fw_version, adapter->fw_version,
-		sizeof(drvinfo->fw_version) - 1);
-	strncpy(drvinfo->bus_info, pci_name(adapter->pdev), sizeof(drvinfo->bus_info) -1);
+	strlcpy(drvinfo->fw_version, adapter->fw_version,
+		sizeof(drvinfo->fw_version));
+	strlcpy(drvinfo->bus_info, pci_name(adapter->pdev),
+		sizeof(drvinfo->bus_info));
 	drvinfo->n_stats = IGB_STATS_LEN;
 	drvinfo->testinfo_len = IGB_TEST_LEN;
 	drvinfo->regdump_len = igb_get_regs_len(netdev);