migration: fix-possible-int-overflow
authorDmitry Frolov <frolov@swemel.ru>
Wed, 13 Nov 2024 14:05:01 +0000 (17:05 +0300)
committerPeter Xu <peterx@redhat.com>
Wed, 13 Nov 2024 18:02:46 +0000 (13:02 -0500)
stat64_add() takes uint64_t as 2nd argument, but both
"p->next_packet_size" and "p->packet_len" are uint32_t.
Thus, theyr sum may overflow uint32_t.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Dmitry Frolov <frolov@swemel.ru>
Link: https://lore.kernel.org/r/20241113140509.325732-2-frolov@swemel.ru
Signed-off-by: Peter Xu <peterx@redhat.com>
migration/multifd.c

index 4374e14a9658a69c7c894428f78b095c7aa49ea4..498e71fd102472b17835fc2a2b5b83e2ab8775ba 100644 (file)
@@ -623,7 +623,7 @@ static void *multifd_send_thread(void *opaque)
             }
 
             stat64_add(&mig_stats.multifd_bytes,
-                       p->next_packet_size + p->packet_len);
+                       (uint64_t)p->next_packet_size + p->packet_len);
 
             p->next_packet_size = 0;
             multifd_set_payload_type(p->data, MULTIFD_PAYLOAD_NONE);