On 08/07/2025 17:59, Mikulas Patocka wrote:
+
+ /*
+ * If chunk sectors is so large that its value in bytes overflows
+ * UINT_MAX, then just shift it down so it definitely will fit.
+ * We don't support atomic writes of such a large size anyway.
+ */
+ if ((unsigned long)chunk_sectors << SECTOR_SHIFT > UINT_MAX)
+ chunk_bytes = chunk_sectors;
+ else
+ chunk_bytes = chunk_sectors << SECTOR_SHIFT;
Why do we cast it to unsigned long? unsigned long is 32-bit on 32-bit
machines, so the code will not detect the overflow in that case. We should
cast it to unsigned long long (or uint64_t).
Right, I said earlier that I would use an unsigned long long, but didn't
do it that way, which was unintentional.
Anyway, I will change this code as suggested by Nilay.
Thanks,
John