udp: Reduce scope of rport in udp_invert_portmap()
cppcheck 2.14 warns that the scope of the rport variable could be
reduced: do that, as reverted commit c80fa6a6bb
("udp: Make rport
calculation more local") did, but keep the temporary variable of
in_port_t type, otherwise the sum gets promoted to int.
While at it, add a comment explaining why we calculate rport like
this instead of directly using the sum as array index.
Reported-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
054697598f
commit
1ee2ecade3
1 changed files with 10 additions and 2 deletions
10
udp.c
10
udp.c
|
@ -279,12 +279,20 @@ static void udp_invert_portmap(struct udp_fwd_ports *fwd)
|
||||||
"Forward and reverse delta arrays must have same size");
|
"Forward and reverse delta arrays must have same size");
|
||||||
for (i = 0; i < ARRAY_SIZE(fwd->f.delta); i++) {
|
for (i = 0; i < ARRAY_SIZE(fwd->f.delta); i++) {
|
||||||
in_port_t delta = fwd->f.delta[i];
|
in_port_t delta = fwd->f.delta[i];
|
||||||
|
|
||||||
|
if (delta) {
|
||||||
|
/* Keep rport calculation separate from its usage: we
|
||||||
|
* need to perform the sum in in_port_t width (that is,
|
||||||
|
* modulo 65536), but C promotion rules would sum the
|
||||||
|
* two terms as 'int', if we just open-coded the array
|
||||||
|
* index as 'i + delta'.
|
||||||
|
*/
|
||||||
in_port_t rport = i + delta;
|
in_port_t rport = i + delta;
|
||||||
|
|
||||||
if (delta)
|
|
||||||
fwd->rdelta[rport] = NUM_PORTS - delta;
|
fwd->rdelta[rport] = NUM_PORTS - delta;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* udp_update_l2_buf() - Update L2 buffers with Ethernet and IPv4 addresses
|
* udp_update_l2_buf() - Update L2 buffers with Ethernet and IPv4 addresses
|
||||||
|
|
Loading…
Reference in a new issue