From 9c0d89f78af4bf4d4893776eeebaef6c301eaada Mon Sep 17 00:00:00 2001 From: Jan Rybar Date: Thu, 30 Apr 2026 15:34:03 +0200 Subject: [PATCH] uptime: bad time rounding when using -p Resolves: RHEL-60825 --- procps-ng.spec | 7 ++++++- uptime-bad-rounding.patch | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 uptime-bad-rounding.patch diff --git a/procps-ng.spec b/procps-ng.spec index 88f0ac1..0b591ab 100644 --- a/procps-ng.spec +++ b/procps-ng.spec @@ -4,7 +4,7 @@ Summary: System and process monitoring utilities Name: procps-ng Version: 4.0.4 -Release: 11%{?dist} +Release: 12%{?dist} License: GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-or-later URL: https://sourceforge.net/projects/procps-ng/ @@ -16,6 +16,7 @@ Patch3: free-manpage-overcommit-note.patch Patch4: sysctl-succ-on-fail.patch Patch5: ps-etime-overflow.patch Patch6: uptime-w-user-sessions-only.patch +Patch7: uptime-bad-rounding.patch BuildRequires: make BuildRequires: ncurses-devel @@ -152,6 +153,10 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof %files i18n -f %{name}.lang %changelog +* Thu Apr 30 2026 Jan Rybar - 4.0.4-12 +- uptime: bad time rounding when using -p +- Resolves: RHEL-60825 + * Thu Jan 15 2026 Jan Rybar - 4.0.4-11 - ps: etime overflow reappeared with rewritten library - uptime, w: report user sessions only; upstream backport of 734930e47 diff --git a/uptime-bad-rounding.patch b/uptime-bad-rounding.patch new file mode 100644 index 0000000..4800314 --- /dev/null +++ b/uptime-bad-rounding.patch @@ -0,0 +1,43 @@ +diff --git a/library/uptime.c b/library/uptime.c +index d63bde7..45e7d91 100644 +--- a/library/uptime.c ++++ b/library/uptime.c +@@ -202,21 +202,21 @@ PROCPS_EXPORT char *procps_uptime_sprint_short(void) + if (procps_uptime(&uptime_secs, &idle_secs) < 0) + return shortbuf; + +- if (uptime_secs>60*60*24*365*10) { ++ if (uptime_secs>=60*60*24*365*10) { + updecades = (int) uptime_secs / (60*60*24*365*10); + uptime_secs -= updecades*60*60*24*365*10; + } + else { + updecades = 0; + } +- if (uptime_secs>60*60*24*365) { ++ if (uptime_secs>=60*60*24*365) { + upyears = (int) uptime_secs / (60*60*24*365); + uptime_secs -= upyears*60*60*24*365; + } + else { + upyears = 0; + } +- if (uptime_secs>60*60*24*7) { ++ if (uptime_secs>=60*60*24*7) { + upweeks = (int) uptime_secs / (60*60*24*7); + uptime_secs -= upweeks*60*60*24*7; + } +@@ -230,11 +230,11 @@ PROCPS_EXPORT char *procps_uptime_sprint_short(void) + else { + updays = 0; + } +- if (uptime_secs>60*60) { ++ if (uptime_secs>=60*60) { + uphours = (int) uptime_secs / (60*60); + uptime_secs -= uphours*60*60; + } +- if (uptime_secs>60) { ++ if (uptime_secs>=60) { + upminutes = (int) uptime_secs / 60; + uptime_secs -= upminutes*60; + }