diff mbox series

[ethtool,1/7] netlink: get rid of signed/unsigned comparison warnings

Message ID 90fd688121efaea8acce2a9547585416433493f3.1597007533.git.mkubecek@suse.cz
State Changes Requested
Delegated to: Michal Kubecek
Headers show
Series compiler warnings cleanup, part 2 | expand

Commit Message

Michal Kubecek Aug. 9, 2020, 9:24 p.m. UTC
Get rid of compiler warnings about comparison between signed and
unsigned integer values in netlink code.

Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
---
 netlink/features.c | 4 ++--
 netlink/netlink.c  | 4 ++--
 netlink/netlink.h  | 2 +-
 netlink/nlsock.c   | 2 +-
 netlink/parser.c   | 2 +-
 netlink/settings.c | 6 +++---
 6 files changed, 10 insertions(+), 10 deletions(-)

Comments

Andrew Lunn Aug. 10, 2020, 2:11 p.m. UTC | #1
On Sun, Aug 09, 2020 at 11:24:19PM +0200, Michal Kubecek wrote:
> Get rid of compiler warnings about comparison between signed and
> unsigned integer values in netlink code.
> 
> Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
> ---
>  netlink/features.c | 4 ++--
>  netlink/netlink.c  | 4 ++--
>  netlink/netlink.h  | 2 +-
>  netlink/nlsock.c   | 2 +-
>  netlink/parser.c   | 2 +-
>  netlink/settings.c | 6 +++---
>  6 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/netlink/features.c b/netlink/features.c
> index 8b5b8588ca23..f5862e97a265 100644
> --- a/netlink/features.c
> +++ b/netlink/features.c
> @@ -149,7 +149,7 @@ int dump_features(const struct nlattr *const *tb,
>  			continue;
>  
>  		for (j = 0; j < results.count; j++) {
> -			if (feature_flags[j] == i) {
> +			if (feature_flags[j] == (int)i) {
>  				n_match++;
>  				flag_value = flag_value ||
>  					feature_on(results.active, j);
> @@ -163,7 +163,7 @@ int dump_features(const struct nlattr *const *tb,
>  		for (j = 0; j < results.count; j++) {
>  			const char *name = get_string(feature_names, j);
>  
> -			if (feature_flags[j] != i)
> +			if (feature_flags[j] != (int)i)

Hi Michal

Would it be better to make feature_flags an unsigned int * ? And
change the -1 to MAX_UNIT?

       Andrew
Michal Kubecek Aug. 11, 2020, 8:30 p.m. UTC | #2
On Mon, Aug 10, 2020 at 04:11:22PM +0200, Andrew Lunn wrote:
> On Sun, Aug 09, 2020 at 11:24:19PM +0200, Michal Kubecek wrote:
> > Get rid of compiler warnings about comparison between signed and
> > unsigned integer values in netlink code.
> > 
> > Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
> > ---
> >  netlink/features.c | 4 ++--
> >  netlink/netlink.c  | 4 ++--
> >  netlink/netlink.h  | 2 +-
> >  netlink/nlsock.c   | 2 +-
> >  netlink/parser.c   | 2 +-
> >  netlink/settings.c | 6 +++---
> >  6 files changed, 10 insertions(+), 10 deletions(-)
> > 
> > diff --git a/netlink/features.c b/netlink/features.c
> > index 8b5b8588ca23..f5862e97a265 100644
> > --- a/netlink/features.c
> > +++ b/netlink/features.c
> > @@ -149,7 +149,7 @@ int dump_features(const struct nlattr *const *tb,
> >  			continue;
> >  
> >  		for (j = 0; j < results.count; j++) {
> > -			if (feature_flags[j] == i) {
> > +			if (feature_flags[j] == (int)i) {
> >  				n_match++;
> >  				flag_value = flag_value ||
> >  					feature_on(results.active, j);
> > @@ -163,7 +163,7 @@ int dump_features(const struct nlattr *const *tb,
> >  		for (j = 0; j < results.count; j++) {
> >  			const char *name = get_string(feature_names, j);
> >  
> > -			if (feature_flags[j] != i)
> > +			if (feature_flags[j] != (int)i)
> 
> Hi Michal
> 
> Would it be better to make feature_flags an unsigned int * ? And
> change the -1 to MAX_UNIT?

It certainly would. I was actually thinking about this solution for
a moment but then I managed to mistake feature_flags with off_flag_def
and convinced myself that it's shared with ioctl code so that changing
its type would require changes there as well. Thank you for pointing
this out.

Michal
diff mbox series

Patch

diff --git a/netlink/features.c b/netlink/features.c
index 8b5b8588ca23..f5862e97a265 100644
--- a/netlink/features.c
+++ b/netlink/features.c
@@ -149,7 +149,7 @@  int dump_features(const struct nlattr *const *tb,
 			continue;
 
 		for (j = 0; j < results.count; j++) {
-			if (feature_flags[j] == i) {
+			if (feature_flags[j] == (int)i) {
 				n_match++;
 				flag_value = flag_value ||
 					feature_on(results.active, j);
@@ -163,7 +163,7 @@  int dump_features(const struct nlattr *const *tb,
 		for (j = 0; j < results.count; j++) {
 			const char *name = get_string(feature_names, j);
 
-			if (feature_flags[j] != i)
+			if (feature_flags[j] != (int)i)
 				continue;
 			if (n_match == 1)
 				dump_feature(&results, NULL, NULL, j,
diff --git a/netlink/netlink.c b/netlink/netlink.c
index 76b6e825b1d0..e42d57076a4b 100644
--- a/netlink/netlink.c
+++ b/netlink/netlink.c
@@ -33,9 +33,9 @@  int nomsg_reply_cb(const struct nlmsghdr *nlhdr, void *data __maybe_unused)
 int attr_cb(const struct nlattr *attr, void *data)
 {
 	const struct attr_tb_info *tb_info = data;
-	int type = mnl_attr_get_type(attr);
+	uint16_t type = mnl_attr_get_type(attr);
 
-	if (type >= 0 && type <= tb_info->max_type)
+	if (type <= tb_info->max_type)
 		tb_info->tb[type] = attr;
 
 	return MNL_CB_OK;
diff --git a/netlink/netlink.h b/netlink/netlink.h
index a4984c82ae76..dd4a02bcc916 100644
--- a/netlink/netlink.h
+++ b/netlink/netlink.h
@@ -45,7 +45,7 @@  struct nl_context {
 	const char		*cmd;
 	const char		*param;
 	char			**argp;
-	int			argc;
+	unsigned int		argc;
 	bool			ioctl_fallback;
 	bool			wildcard_unsupported;
 };
diff --git a/netlink/nlsock.c b/netlink/nlsock.c
index c3f09b6ee9ab..ef31d8c33b29 100644
--- a/netlink/nlsock.c
+++ b/netlink/nlsock.c
@@ -168,7 +168,7 @@  static void debug_msg(struct nl_socket *nlsk, const void *msg, unsigned int len,
  *
  * Return: error code extracted from the message
  */
-static int nlsock_process_ack(struct nlmsghdr *nlhdr, ssize_t len,
+static int nlsock_process_ack(struct nlmsghdr *nlhdr, unsigned long len,
 			      unsigned int suppress_nlerr, bool pretty)
 {
 	const struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {};
diff --git a/netlink/parser.c b/netlink/parser.c
index 395bd5743af9..c5a368a65a7a 100644
--- a/netlink/parser.c
+++ b/netlink/parser.c
@@ -604,7 +604,7 @@  static int parse_numeric_bitset(struct nl_context *nlctx, uint16_t type,
 		parser_err_invalid_value(nlctx, arg);
 		return -EINVAL;
 	}
-	len1 = maskptr ? (maskptr - arg) : strlen(arg);
+	len1 = maskptr ? (unsigned int)(maskptr - arg) : strlen(arg);
 	nwords = DIV_ROUND_UP(len1, 8);
 	nbits = 0;
 
diff --git a/netlink/settings.c b/netlink/settings.c
index de35ad173627..99d047a3e497 100644
--- a/netlink/settings.c
+++ b/netlink/settings.c
@@ -276,10 +276,10 @@  int dump_link_modes(struct nl_context *nlctx, const struct nlattr *bitset,
 	const struct nlattr *bitset_tb[ETHTOOL_A_BITSET_MAX + 1] = {};
 	DECLARE_ATTR_TB_INFO(bitset_tb);
 	const unsigned int before_len = strlen(before);
+	unsigned int prev = UINT_MAX - 1;
 	const struct nlattr *bits;
 	const struct nlattr *bit;
 	bool first = true;
-	int prev = -2;
 	bool nomask;
 	int ret;
 
@@ -333,7 +333,7 @@  int dump_link_modes(struct nl_context *nlctx, const struct nlattr *bitset,
 			if (first)
 				first = false;
 			/* ugly hack to preserve old output format */
-			if (class == LM_CLASS_REAL && (prev == idx - 1) &&
+			if (class == LM_CLASS_REAL && (idx == prev + 1) &&
 			    prev < link_modes_count &&
 			    link_modes[prev].class == LM_CLASS_REAL &&
 			    link_modes[prev].duplex == DUPLEX_HALF)
@@ -375,7 +375,7 @@  int dump_link_modes(struct nl_context *nlctx, const struct nlattr *bitset,
 			first = false;
 		} else {
 			/* ugly hack to preserve old output format */
-			if ((class == LM_CLASS_REAL) && (prev == idx - 1) &&
+			if ((class == LM_CLASS_REAL) && (idx == prev + 1) &&
 			    (prev < link_modes_count) &&
 			    (link_modes[prev].class == LM_CLASS_REAL) &&
 			    (link_modes[prev].duplex == DUPLEX_HALF))