uptime: bad time rounding when using -p

Resolves: RHEL-60825
This commit is contained in:
Jan Rybar 2026-04-30 15:34:03 +02:00
parent 423c7e57f7
commit 9c0d89f78a
2 changed files with 49 additions and 1 deletions

View File

@ -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 <jrybar@redhat.com> - 4.0.4-12
- uptime: bad time rounding when using -p
- Resolves: RHEL-60825
* Thu Jan 15 2026 Jan Rybar <jrybar@redhat.com> - 4.0.4-11
- ps: etime overflow reappeared with rewritten library
- uptime, w: report user sessions only; upstream backport of 734930e47

43
uptime-bad-rounding.patch Normal file
View File

@ -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;
}