On Tue, Feb 20, 2018 at 02:26:46PM +0100, Martin Wilck wrote:
> Fix the warnings that were caused by adding the -Wcast-qual compiler
> flag in the previous patch.
> 

Reviewed-by: Benjamin Marzinski <bmarz...@redhat.com>

> Signed-off-by: Martin Wilck <mwi...@suse.com>
> ---
>  kpartx/devmapper.c          |  3 ++-
>  libmpathcmd/mpath_cmd.c     |  2 +-
>  libmultipath/checkers/rbd.c |  4 ++--
>  libmultipath/devmapper.c    |  3 ++-
>  libmultipath/discovery.c    | 12 ++++++------
>  libmultipath/list.h         |  4 ++--
>  libmultipath/memory.h       |  8 +++++++-
>  libmultipath/structs.c      |  2 +-
>  libmultipath/structs.h      |  2 +-
>  libmultipath/uevent.c       |  6 +++---
>  libmultipath/util.c         |  6 +++---
>  multipathd/main.c           | 10 +++++-----
>  12 files changed, 35 insertions(+), 27 deletions(-)
> 
> diff --git a/kpartx/devmapper.c b/kpartx/devmapper.c
> index 4469fa848de8..eb9dac639175 100644
> --- a/kpartx/devmapper.c
> +++ b/kpartx/devmapper.c
> @@ -11,6 +11,7 @@
>  #include <sys/sysmacros.h>
>  #include "devmapper.h"
>  
> +#define FREE_CONST(p) do { free((void*)(long)p); p = NULL; } while(0)
>  #define _UUID_PREFIX "part"
>  #define UUID_PREFIX _UUID_PREFIX "%d-"
>  #define _UUID_PREFIX_LEN (sizeof(_UUID_PREFIX) - 1)
> @@ -695,7 +696,7 @@ int dm_find_part(const char *parent, const char *delim, 
> int part,
>       } else
>               *part_uuid = uuid;
>  out:
> -     free((void*)tmp);
> +     FREE_CONST(tmp);
>       return r;
>  }
>  
> diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c
> index af618cff917c..29d148ce8aff 100644
> --- a/libmpathcmd/mpath_cmd.c
> +++ b/libmpathcmd/mpath_cmd.c
> @@ -64,7 +64,7 @@ static size_t write_all(int fd, const void *buf, size_t len)
>               }
>               if (!n)
>                       return total;
> -             buf = n + (char *)buf;
> +             buf = n + (const char *)buf;
>               len -= n;
>               total += n;
>       }
> diff --git a/libmultipath/checkers/rbd.c b/libmultipath/checkers/rbd.c
> index 2c1800976e40..b1d99b4c81f6 100644
> --- a/libmultipath/checkers/rbd.c
> +++ b/libmultipath/checkers/rbd.c
> @@ -288,7 +288,7 @@ void libcheck_free(struct checker * c)
>  static int rbd_is_blacklisted(struct rbd_checker_context *ct, char *msg)
>  {
>       char *addr_tok, *start, *save;
> -     char *cmd[2];
> +     const char *cmd[2];
>       char *blklist, *stat;
>       size_t blklist_len, stat_len;
>       int ret;
> @@ -436,7 +436,7 @@ static int sysfs_write_rbd_remove(const char *buf, int 
> buf_len)
>  
>  static int rbd_rm_blacklist(struct rbd_checker_context *ct)
>  {
> -     char *cmd[2];
> +     const char *cmd[2];
>       char *stat, *cmd_str;
>       size_t stat_len;
>       int ret;
> diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
> index f61838cbe369..607aea8dc1fc 100644
> --- a/libmultipath/devmapper.c
> +++ b/libmultipath/devmapper.c
> @@ -27,6 +27,7 @@
>  #include <sys/types.h>
>  #include <time.h>
>  
> +#define FREE_CONST(p) do { free((void*)(unsigned long)p); p = NULL; } 
> while(0)
>  #define MAX_WAIT 5
>  #define LOOPS_PER_SEC 5
>  
> @@ -1426,7 +1427,7 @@ void dm_reassign_deps(char *table, const char *dep, 
> const char *newdep)
>       n += strlen(newdep);
>       p += strlen(dep);
>       strcat(n, p);
> -     free(newtable);
> +     FREE_CONST(newtable);
>  }
>  
>  int dm_reassign_table(const char *name, char *old, char *new)
> diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
> index 98bddee52c8f..645224c1029c 100644
> --- a/libmultipath/discovery.c
> +++ b/libmultipath/discovery.c
> @@ -121,7 +121,7 @@ path_discover (vector pathvec, struct config * conf,
>       if (!devname)
>               return PATHINFO_FAILED;
>  
> -     pp = find_path_by_dev(pathvec, (char *)devname);
> +     pp = find_path_by_dev(pathvec, devname);
>       if (!pp) {
>               char devt[BLK_DEV_SIZE];
>               dev_t devnum = udev_device_get_devnum(udevice);
> @@ -905,12 +905,12 @@ static int
>  parse_vpd_pg83(const unsigned char *in, size_t in_len,
>              char *out, size_t out_len)
>  {
> -     unsigned char *d;
> -     unsigned char *vpd = NULL;
> +     const unsigned char *d;
> +     const unsigned char *vpd = NULL;
>       int len = -ENODATA, vpd_type, vpd_len, prio = -1, i, naa_prio;
>  
> -     d = (unsigned char *)in + 4;
> -     while (d < (unsigned char *)in + in_len) {
> +     d = in + 4;
> +     while (d < in + in_len) {
>               /* Select 'association: LUN' */
>               if ((d[1] & 0x30) != 0) {
>                       d += d[3] + 4;
> @@ -1027,7 +1027,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
>                               out[len] = '\0';
>                       }
>               } else if (vpd_type == 0x1) {
> -                     unsigned char *p;
> +                     const unsigned char *p;
>                       int p_len;
>  
>                       out[0] = '1';
> diff --git a/libmultipath/list.h b/libmultipath/list.h
> index 2b1dcf396695..c9110ac9de7e 100644
> --- a/libmultipath/list.h
> +++ b/libmultipath/list.h
> @@ -18,8 +18,8 @@
>   * @member:  the name of the member within the struct.
>   *
>   */
> -#define container_of(ptr, type, member) ({                   \
> -     const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
> +#define container_of(ptr, type, member) ({           \
> +     typeof( ((type *)0)->member ) *__mptr = (ptr);  \
>       (type *)( (char *)__mptr - offsetof(type,member) );})
>  
>  /*
> diff --git a/libmultipath/memory.h b/libmultipath/memory.h
> index 927619b58a62..63f59d80584c 100644
> --- a/libmultipath/memory.h
> +++ b/libmultipath/memory.h
> @@ -43,6 +43,7 @@ int debug;
>                     (__FILE__), (char *)(__FUNCTION__), (__LINE__)) )
>  #define STRDUP(n)    ( dbg_strdup((n), \
>                     (__FILE__), (char *)(__FUNCTION__), (__LINE__)) )
> +#define FREE_CONST(p) do { FREE((void*)(unsigned long)p); } while(0)
>  
>  /* Memory debug prototypes defs */
>  extern void *dbg_malloc(unsigned long, char *, char *, int);
> @@ -54,7 +55,12 @@ extern void dbg_free_final(char *);
>  #else
>  
>  #define MALLOC(n)    (calloc(1,(n)))
> -#define FREE(p)      do { free((void*)p); p = NULL; } while(0)
> +#define FREE(p)      do { free(p); p = NULL; } while(0)
> +/*
> + * Double cast to avoid warnings with -Wcast-qual
> + * use this for valid free() operations on const pointers
> + */
> +#define FREE_CONST(p) do { free((void*)(unsigned long)p); p = NULL; } 
> while(0)
>  #define REALLOC(p,n) (realloc((p),(n)))
>  #define STRDUP(n)    (strdup(n))
>  
> diff --git a/libmultipath/structs.c b/libmultipath/structs.c
> index 1ade1a6705ad..4db08451824d 100644
> --- a/libmultipath/structs.c
> +++ b/libmultipath/structs.c
> @@ -418,7 +418,7 @@ find_mp_by_str (vector mpvec, char * str)
>  }
>  
>  struct path *
> -find_path_by_dev (vector pathvec, char * dev)
> +find_path_by_dev (vector pathvec, const char * dev)
>  {
>       int i;
>       struct path * pp;
> diff --git a/libmultipath/structs.h b/libmultipath/structs.h
> index 71b37cc20674..bccc845a1222 100644
> --- a/libmultipath/structs.h
> +++ b/libmultipath/structs.h
> @@ -387,7 +387,7 @@ struct multipath * find_mp_by_str (vector mp, char * 
> wwid);
>  struct multipath * find_mp_by_minor (vector mp, int minor);
>  
>  struct path * find_path_by_devt (vector pathvec, const char * devt);
> -struct path * find_path_by_dev (vector pathvec, char * dev);
> +struct path * find_path_by_dev (vector pathvec, const char * dev);
>  struct path * first_path (struct multipath * mpp);
>  
>  int pathcountgr (struct pathgroup *, int);
> diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
> index 8f4129ca7fd0..685ef3362c6d 100644
> --- a/libmultipath/uevent.c
> +++ b/libmultipath/uevent.c
> @@ -157,7 +157,7 @@ static int uevent_get_env_positive_int(const struct 
> uevent *uev,
>  void
>  uevent_get_wwid(struct uevent *uev)
>  {
> -     char *uid_attribute;
> +     const char *uid_attribute;
>       const char *val;
>       struct config * conf;
>  
> @@ -167,8 +167,8 @@ uevent_get_wwid(struct uevent *uev)
>  
>       val = uevent_get_env_var(uev, uid_attribute);
>       if (val)
> -             uev->wwid = (char*)val;
> -     free(uid_attribute);
> +             uev->wwid = val;
> +     FREE_CONST(uid_attribute);
>  }
>  
>  bool
> diff --git a/libmultipath/util.c b/libmultipath/util.c
> index 0b43d29d1236..d3dd3eb524d0 100644
> --- a/libmultipath/util.c
> +++ b/libmultipath/util.c
> @@ -32,7 +32,7 @@ strchop(char *str)
>  int
>  basenamecpy (const char * str1, char * str2, int str2len)
>  {
> -     char *p;
> +     const char *p;
>  
>       if (!str1 || !strlen(str1))
>               return 0;
> @@ -43,7 +43,7 @@ basenamecpy (const char * str1, char * str2, int str2len)
>       if (!str2)
>               return 0;
>  
> -     p = (char *)str1 + (strlen(str1) - 1);
> +     p = str1 + (strlen(str1) - 1);
>  
>       while (*--p != '/' && p != str1)
>               continue;
> @@ -454,7 +454,7 @@ int safe_write(int fd, const void *buf, size_t count)
>                       return -errno;
>               }
>               count -= r;
> -             buf = (char *)buf + r;
> +             buf = (const char *)buf + r;
>       }
>       return 0;
>  }
> diff --git a/multipathd/main.c b/multipathd/main.c
> index a8a0c302e8fe..b900bb3ec2e3 100644
> --- a/multipathd/main.c
> +++ b/multipathd/main.c
> @@ -408,7 +408,7 @@ uev_add_map (struct uevent * uev, struct vectors * vecs)
>       pthread_testcancel();
>       rc = ev_add_map(uev->kernel, alias, vecs);
>       lock_cleanup_pop(vecs->lock);
> -     FREE(alias);
> +     FREE_CONST(alias);
>       return rc;
>  }
>  
> @@ -532,7 +532,7 @@ uev_remove_map (struct uevent * uev, struct vectors * 
> vecs)
>       remove_map_and_stop_waiter(mpp, vecs, 1);
>  out:
>       lock_cleanup_pop(vecs->lock);
> -     FREE(alias);
> +     FREE_CONST(alias);
>       return 0;
>  }
>  
> @@ -1028,11 +1028,11 @@ uev_pathfail_check(struct uevent *uev, struct vectors 
> *vecs)
>                               pp->dev);
>  out_lock:
>       lock_cleanup_pop(vecs->lock);
> -     FREE(devt);
> -     FREE(action);
> +     FREE_CONST(devt);
> +     FREE_CONST(action);
>       return r;
>  out:
> -     FREE(action);
> +     FREE_CONST(action);
>       return 1;
>  }
>  
> -- 
> 2.16.1

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to