netlink: RTA_PAYLOAD() returns int, not size_t

Since it's the size of a chunk of memory it would seem logical that
RTA_PAYLOAD() returns size_t.  However, it doesn't - it explicitly casts
its result to an int.  RTNH_OK(), which often takes the result of
RTA_PAYLOAD() as a parameter compares it to an int, so using size_t can
result in comparison of different-signed integer warnings from clang.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
David Gibson 2024-11-06 10:25:22 +11:00 committed by Stefano Brivio
parent f6b546c6e4
commit c938d8a93e

View file

@ -353,7 +353,7 @@ unsigned int nl_get_ext_if(int s, sa_family_t af)
*/ */
bool nl_route_get_def_multipath(struct rtattr *rta, void *gw) bool nl_route_get_def_multipath(struct rtattr *rta, void *gw)
{ {
size_t nh_len = RTA_PAYLOAD(rta); int nh_len = RTA_PAYLOAD(rta);
struct rtnexthop *rtnh; struct rtnexthop *rtnh;
bool found = false; bool found = false;
int hops = -1; int hops = -1;
@ -582,7 +582,7 @@ int nl_route_dup(int s_src, unsigned int ifi_src,
*(unsigned int *)RTA_DATA(rta) = ifi_dst; *(unsigned int *)RTA_DATA(rta) = ifi_dst;
} else if (rta->rta_type == RTA_MULTIPATH) { } else if (rta->rta_type == RTA_MULTIPATH) {
size_t nh_len = RTA_PAYLOAD(rta); int nh_len = RTA_PAYLOAD(rta);
struct rtnexthop *rtnh; struct rtnexthop *rtnh;
for (rtnh = (struct rtnexthop *)RTA_DATA(rta); for (rtnh = (struct rtnexthop *)RTA_DATA(rta);