From a3f1e070e118c47adde86745832aea6b6824327a Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Fri, 4 Feb 2022 11:19:44 +0100 Subject: Add patch to prevent division by zero in IO rate calculation Backport of 265a7b8a501174e2f5c8268a76b5e88d6688ad70 from Benny Baumann --- debian/changelog | 6 +++++ .../0102-fix-division-by-zero-in-io-rates.patch | 31 ++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 38 insertions(+) create mode 100644 debian/patches/0102-fix-division-by-zero-in-io-rates.patch diff --git a/debian/changelog b/debian/changelog index 0578414..5fd7929 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +htop (3.0.5-8) UNRELEASED; urgency=medium + + * Fix division by zero in IO rate calculation + + -- Daniel Lange Fri, 04 Feb 2022 11:17:03 +0100 + htop (3.0.5-7) unstable; urgency=medium * Fix division by 0 on ZfsCompressedArcMeter (when no ZFS volume is mounted) diff --git a/debian/patches/0102-fix-division-by-zero-in-io-rates.patch b/debian/patches/0102-fix-division-by-zero-in-io-rates.patch new file mode 100644 index 0000000..0fc10bc --- /dev/null +++ b/debian/patches/0102-fix-division-by-zero-in-io-rates.patch @@ -0,0 +1,31 @@ +Backport of 265a7b8a501174e2f5c8268a76b5e88d6688ad70 +--- + +--- a/linux/LinuxProcessList.c ++++ b/linux/LinuxProcessList.c +@@ -398,6 +398,7 @@ + + unsigned long long last_read = process->io_read_bytes; + unsigned long long last_write = process->io_write_bytes; ++ + char* buf = buffer; + char* line = NULL; + while ((line = strsep(&buf, "\n")) != NULL) { +@@ -408,7 +409,7 @@ + } else if (String_startsWith(line + 1, "ead_bytes: ")) { + process->io_read_bytes = strtoull(line + 12, NULL, 10); + process->io_rate_read_bps = +- ((double)(process->io_read_bytes - last_read)) / (((double)(now - process->io_rate_read_time)) / 1000); ++ now > process->io_rate_read_time ? ((double)(process->io_read_bytes - last_read)) / (((double)(now - process->io_rate_read_time)) / 1000) : NAN; + process->io_rate_read_time = now; + } + break; +@@ -418,7 +419,7 @@ + } else if (String_startsWith(line + 1, "rite_bytes: ")) { + process->io_write_bytes = strtoull(line + 13, NULL, 10); + process->io_rate_write_bps = +- ((double)(process->io_write_bytes - last_write)) / (((double)(now - process->io_rate_write_time)) / 1000); ++ now > process->io_rate_write_time ? ((double)(process->io_write_bytes - last_write)) / (((double)(now - process->io_rate_write_time)) / 1000) : NAN; + process->io_rate_write_time = now; + } + break; diff --git a/debian/patches/series b/debian/patches/series index f8e08e4..b041a42 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -16,3 +16,4 @@ 0016-fix-div-by-zero-zfscompressedarcmeter.patch 0100-update-uid-on-change.patch 0101-drop-o-path-usage.patch +0102-fix-division-by-zero-in-io-rates.patch -- cgit v1.2.3