[dpdk-dev,v2,13/18] drivers/net/vdev: readlink inputs cannot be aliased

Message ID 152582951611.6809.6625415049400391374.stgit@localhost.localdomain (mailing list archive)
State Superseded, archived
Headers

Checks

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

Commit Message

Andy Green May 9, 2018, 1:31 a.m. UTC
  /home/agreen/projects/dpdk/drivers/net/vdev_netvsc/
vdev_netvsc.c:335:2:error: passing argument 2 to restrict-
qualified parameter aliases with argument 1 [-Werror=restrict]
  ret = readlink(buf, buf, size);
  ^~~

Signed-off-by: Andy Green <andy@warmcat.com>
---
 drivers/net/vdev_netvsc/vdev_netvsc.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
  

Comments

Stephen Hemminger May 9, 2018, 3:33 p.m. UTC | #1
On Wed, 09 May 2018 09:31:56 +0800
Andy Green <andy@warmcat.com> wrote:

> /home/agreen/projects/dpdk/drivers/net/vdev_netvsc/
> vdev_netvsc.c:335:2:error: passing argument 2 to restrict-
> qualified parameter aliases with argument 1 [-Werror=restrict]
>   ret = readlink(buf, buf, size);
>   ^~~
> 
> Signed-off-by: Andy Green <andy@warmcat.com>
> ---
>  drivers/net/vdev_netvsc/vdev_netvsc.c |    8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c
> index c321a9f1b..e0d3c1c7c 100644
> --- a/drivers/net/vdev_netvsc/vdev_netvsc.c
> +++ b/drivers/net/vdev_netvsc/vdev_netvsc.c
> @@ -327,12 +327,14 @@ static int
>  vdev_netvsc_sysfs_readlink(char *buf, size_t size, const char *if_name,
>  			   const char *relpath)
>  {
> +	char in[160];
>  	int ret;
>  
> -	ret = snprintf(buf, size, "/sys/class/net/%s/%s", if_name, relpath);
> -	if (ret == -1 || (size_t)ret >= size)
> +	ret = snprintf(in, sizeof(buf) - 1, "/sys/class/net/%s/%s",
> +		       if_name, relpath);

This is wrong.  buf is char * and sizeof(char *) - 1 is 3
  

Patch

diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c
index c321a9f1b..e0d3c1c7c 100644
--- a/drivers/net/vdev_netvsc/vdev_netvsc.c
+++ b/drivers/net/vdev_netvsc/vdev_netvsc.c
@@ -327,12 +327,14 @@  static int
 vdev_netvsc_sysfs_readlink(char *buf, size_t size, const char *if_name,
 			   const char *relpath)
 {
+	char in[160];
 	int ret;
 
-	ret = snprintf(buf, size, "/sys/class/net/%s/%s", if_name, relpath);
-	if (ret == -1 || (size_t)ret >= size)
+	ret = snprintf(in, sizeof(buf) - 1, "/sys/class/net/%s/%s",
+		       if_name, relpath);
+	if (ret == -1 || (size_t)ret >= sizeof(buf) - 1)
 		return -ENOBUFS;
-	ret = readlink(buf, buf, size);
+	ret = readlink(in, buf, size);
 	if (ret == -1)
 		return -errno;
 	if ((size_t)ret >= size - 1)