From 19372d8528d25d9774c1c6ede2642bdf57ce3cc3 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 12 Feb 2023 21:07:31 +0100 Subject: netifd: Fix multiple -Wsign-compare warnings This fixes warnings like this: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare] Mostly this was an int compared to a size_t returned by ARRAY_SIZE(). The easiest fix is to count on the size_t type. The ifindex is sometimes an unsigned int and sometimes a signed int in the kernel interfaces. I think it normally fits into an unsigned 16 bit value, so this should be fine. Do the one comparison where the compiler complains as a long. Casting the result of sizeof() to int should be safe. These values are never out of range of int. Signed-off-by: Hauke Mehrtens --- bonding.c | 2 +- handler.c | 5 +++-- interface-ip.c | 2 +- main.c | 4 ++-- system-linux.c | 21 ++++++++++++--------- ubus.c | 4 ++-- vlan.c | 4 ++-- wireless.c | 2 +- 8 files changed, 24 insertions(+), 20 deletions(-) diff --git a/bonding.c b/bonding.c index 457fe51..f4005de 100644 --- a/bonding.c +++ b/bonding.c @@ -396,7 +396,7 @@ bonding_apply_settings(struct bonding_device *bdev, struct blob_attr **tb) if ((cur = tb[BOND_ATTR_POLICY]) != NULL) { const char *policy = blobmsg_get_string(cur); - int i; + size_t i; for (i = 0; i < ARRAY_SIZE(bonding_policy_str); i++) { if (strcmp(policy, bonding_policy_str[i]) != 0) diff --git a/handler.c b/handler.c index 04bdbee..78fc9a0 100644 --- a/handler.c +++ b/handler.c @@ -229,7 +229,8 @@ netifd_parse_extdev_handler(const char *path_to_file, create_extdev_handler_cb c void netifd_init_script_handlers(int dir_fd, script_dump_cb cb) { glob_t g; - int i, prev_fd; + int prev_fd; + size_t i; prev_fd = netifd_dir_push(dir_fd); if (glob("./*.sh", 0, NULL, &g)) { @@ -252,7 +253,7 @@ netifd_init_extdev_handlers(int dir_fd, create_extdev_handler_cb cb) prev_fd = netifd_dir_push(dir_fd); glob("*.json", 0, NULL, &g); - for (int i = 0; i < g.gl_pathc; i++) + for (size_t i = 0; i < g.gl_pathc; i++) netifd_parse_extdev_handler(g.gl_pathv[i], cb); netifd_dir_pop(prev_fd); } diff --git a/interface-ip.c b/interface-ip.c index ab4a5cf..7359db2 100644 --- a/interface-ip.c +++ b/interface-ip.c @@ -99,7 +99,7 @@ static struct uloop_timeout valid_until_timeout; static void clear_if_addr(union if_addr *a, int mask) { - int m_bytes = (mask + 7) / 8; + size_t m_bytes = (mask + 7) / 8; uint8_t m_clear = (1 << (m_bytes * 8 - mask)) - 1; uint8_t *p = (uint8_t *) a; diff --git a/main.c b/main.c index 4c1c855..874dc8b 100644 --- a/main.c +++ b/main.c @@ -303,8 +303,8 @@ int main(int argc, char **argv) break; case 'l': log_level = atoi(optarg); - if (log_level >= ARRAY_SIZE(log_class)) - log_level = ARRAY_SIZE(log_class) - 1; + if (log_level >= (int)ARRAY_SIZE(log_class)) + log_level = (int)ARRAY_SIZE(log_class) - 1; break; #ifndef DUMMY_MODE case 'S': diff --git a/system-linux.c b/system-linux.c index 45a9efb..d13a561 100644 --- a/system-linux.c +++ b/system-linux.c @@ -1154,7 +1154,7 @@ static bool check_ifaddr(struct nlmsghdr *hdr, int ifindex) { struct ifaddrmsg *ifa = NLMSG_DATA(hdr); - return ifa->ifa_index == ifindex; + return (long)ifa->ifa_index == ifindex; } static bool check_route(struct nlmsghdr *hdr, int ifindex) @@ -1438,7 +1438,8 @@ int system_macvlan_add(struct device *macvlan, struct device *dev, struct macvla { struct nl_msg *msg; struct nlattr *linkinfo, *data; - int i, rv; + size_t i; + int rv; static const struct { const char *name; enum macvlan_mode val; @@ -1700,7 +1701,7 @@ system_set_ethtool_settings(struct device *dev, struct device_settings *s) .ifr_data = (caddr_t)&ecmd, }; static const struct { - int speed; + unsigned int speed; uint8_t bit_half; uint8_t bit_full; } speed_mask[] = { @@ -1709,7 +1710,7 @@ system_set_ethtool_settings(struct device *dev, struct device_settings *s) { 1000, ETHTOOL_LINK_MODE_1000baseT_Half_BIT, ETHTOOL_LINK_MODE_1000baseT_Full_BIT }, }; uint32_t adv; - int i; + size_t i; strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1); @@ -2355,7 +2356,7 @@ static const struct { static void system_add_link_modes(struct blob_buf *b, __u32 mask) { - int i; + size_t i; for (i = 0; i < ARRAY_SIZE(ethtool_link_modes); i++) { if (mask & ethtool_link_modes[i].mask) blobmsg_add_string(b, NULL, ethtool_link_modes[i].name); @@ -2373,7 +2374,7 @@ system_if_force_external(const char *ifname) static const char * system_netdevtype_name(unsigned short dev_type) { - unsigned int i; + size_t i; for (i = 0; i < ARRAY_SIZE(netdev_types); i++) { if (netdev_types[i].id == dev_type) @@ -2457,7 +2458,8 @@ ethtool_feature_index(const char *ifname, const char *keyname) { struct ethtool_gstrings *feature_names; struct ifreq ifr = { 0 }; - int32_t n_features, i; + int32_t n_features; + uint32_t i; n_features = ethtool_feature_count(ifname); @@ -2592,7 +2594,7 @@ system_if_dump_stats(struct device *dev, struct blob_buf *b) "rx_fifo_errors", "tx_carrier_errors", }; int stats_dir; - int i; + size_t i; uint64_t val = 0; stats_dir = open(dev_sysfs_path(dev->ifname, "statistics"), O_DIRECTORY); @@ -2838,7 +2840,8 @@ int system_del_route(struct device *dev, struct device_route *route) int system_flush_routes(void) { const char *names[] = { "ipv4", "ipv6" }; - int fd, i; + size_t i; + int fd; for (i = 0; i < ARRAY_SIZE(names); i++) { snprintf(dev_buf, sizeof(dev_buf), "%s/sys/net/%s/route/flush", proc_path, names[i]); diff --git a/ubus.c b/ubus.c index 7f4821d..4d05786 100644 --- a/ubus.c +++ b/ubus.c @@ -1132,7 +1132,7 @@ netifd_handle_iface(struct ubus_context *ctx, struct ubus_object *obj, { struct interface *iface; struct blob_attr *tb; - int i; + size_t i; blobmsg_parse(&iface_policy, 1, &tb, blob_data(msg), blob_len(msg)); if (!tb) @@ -1158,7 +1158,7 @@ netifd_handle_iface(struct ubus_context *ctx, struct ubus_object *obj, static void netifd_add_iface_object(void) { struct ubus_method *methods; - int i; + size_t i; methods = calloc(1, sizeof(iface_object_methods)); if (!methods) diff --git a/vlan.c b/vlan.c index 3d444a9..4d32b60 100644 --- a/vlan.c +++ b/vlan.c @@ -143,7 +143,7 @@ static void vlan_dev_cb(struct device_user *dep, enum device_event ev) vlan_hotplug_check(vldev, dep->dev); vldev->dev.hidden = dep->dev->hidden; if (snprintf(name, sizeof(name), "%s.%d", dep->dev->ifname, - vldev->id) >= sizeof(name) - 1 || + vldev->id) >= (int)sizeof(name) - 1 || device_set_ifname(&vldev->dev, name)) free_vlan_if(&vldev->dev); break; @@ -203,7 +203,7 @@ static struct device *get_vlan_device(struct device *dev, char *id_str, bool cre if (!create) return NULL; - if (snprintf(name, sizeof(name), "%s.%d", dev->ifname, id) >= sizeof(name) - 1) + if (snprintf(name, sizeof(name), "%s.%d", dev->ifname, id) >= (int)sizeof(name) - 1) return NULL; D(DEVICE, "Create vlan device '%s'\n", name); diff --git a/wireless.c b/wireless.c index 705d6dd..1f54bfb 100644 --- a/wireless.c +++ b/wireless.c @@ -1542,7 +1542,7 @@ void wireless_device_hotplug_event(const char *name, bool add) struct wireless_interface *vif; struct wireless_device *wdev; const char *s; - int len; + size_t len; s = strstr(name, ".sta"); if (s) { -- cgit v1.2.1