util: Use 'long' to represent millisecond durations

timespec_diff_ms() returns an int representing a duration in milliseconds.
This will overflow in about 25 days when an int is 32 bits.  The way we
use this function, we're probably not going to get a result that long, but
it's not outrageously implausible.  Use a long for safety.

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-06-06 20:09:49 +10:00 committed by Stefano Brivio
parent f9e8ee0777
commit 3f63743a65
2 changed files with 2 additions and 2 deletions

2
util.c
View file

@ -216,7 +216,7 @@ void sock_probe_mem(struct ctx *c)
* *
* Return: difference in milliseconds * Return: difference in milliseconds
*/ */
int timespec_diff_ms(const struct timespec *a, const struct timespec *b) long timespec_diff_ms(const struct timespec *a, const struct timespec *b)
{ {
if (a->tv_nsec < b->tv_nsec) { if (a->tv_nsec < b->tv_nsec) {
return (b->tv_nsec - a->tv_nsec) / 1000000 + return (b->tv_nsec - a->tv_nsec) / 1000000 +

2
util.h
View file

@ -147,7 +147,7 @@ int sock_l4(const struct ctx *c, sa_family_t af, uint8_t proto,
const void *bind_addr, const char *ifname, uint16_t port, const void *bind_addr, const char *ifname, uint16_t port,
uint32_t data); uint32_t data);
void sock_probe_mem(struct ctx *c); void sock_probe_mem(struct ctx *c);
int timespec_diff_ms(const struct timespec *a, const struct timespec *b); long timespec_diff_ms(const struct timespec *a, const struct timespec *b);
void bitmap_set(uint8_t *map, unsigned bit); void bitmap_set(uint8_t *map, unsigned bit);
void bitmap_clear(uint8_t *map, unsigned bit); void bitmap_clear(uint8_t *map, unsigned bit);
bool bitmap_isset(const uint8_t *map, unsigned bit); bool bitmap_isset(const uint8_t *map, unsigned bit);