- used = swap_entries[i].se_inuse * C_SWAP_BLOCK_SIZE;
- total = swap_entries[i].se_nblks * C_SWAP_BLOCK_SIZE;
+ used += ((uint64_t) swap_entries[i].se_inuse)
+ * C_SWAP_BLOCK_SIZE;
+ total += ((uint64_t) swap_entries[i].se_nblks)
+ * C_SWAP_BLOCK_SIZE;
+ }
+
+ if (total < used)
+ {
+ ERROR ("swap plugin: Total swap space (%"PRIu64") "
+ "is less than used swap space (%"PRIu64").",
+ total, used);
+ return (-1);