On 6/12/23 09:55, Martin Kletzander wrote: > It is used to fill an unsigned long long anyway and if it is negative > than there is really an issue somewhere. > > Signed-off-by: Martin Kletzander <mklet...@redhat.com> > --- > src/qemu/qemu_driver.c | 2 +- > src/util/virprocess.c | 17 ++++++++++------- > src/util/virprocess.h | 2 +- > 3 files changed, 12 insertions(+), 9 deletions(-) > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index 56f4cd619715..857fbfb7992c 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -9937,7 +9937,7 @@ qemuDomainMemoryStatsInternal(virDomainObj *vm, > > { > int ret = -1; > - long rss; > + unsigned long long rss; > > if (virDomainObjCheckActive(vm) < 0) > return -1; > diff --git a/src/util/virprocess.c b/src/util/virprocess.c > index d12fe4f7171f..a9f249413ce1 100644 > --- a/src/util/virprocess.c > +++ b/src/util/virprocess.c > @@ -23,6 +23,7 @@ > #include <config.h> > > #include <fcntl.h> > +#include <limits.h> > #include <signal.h> > #ifndef WIN32 > # include <sys/wait.h> > @@ -1739,7 +1740,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime, > unsigned long long *userTime, > unsigned long long *sysTime, > int *lastCpu, > - long *vm_rss, > + unsigned long long *vm_rss, > pid_t pid, > pid_t tid) > { > @@ -1748,14 +1749,16 @@ virProcessGetStatInfo(unsigned long long *cpuTime, > unsigned long long stime = 0; > const unsigned long long jiff2nsec = 1000ull * 1000ull * 1000ull / > (unsigned long long) > sysconf(_SC_CLK_TCK); > - long rss = 0; > + long pagesize = virGetSystemPageSizeKB();
const please. We don't really want anybody change this value. > + unsigned long long rss = 0; > int cpu = 0; > > if (!proc_stat || > virStrToLong_ullp(proc_stat[VIR_PROCESS_STAT_UTIME], NULL, 10, > &utime) < 0 || > virStrToLong_ullp(proc_stat[VIR_PROCESS_STAT_STIME], NULL, 10, > &stime) < 0 || > - virStrToLong_l(proc_stat[VIR_PROCESS_STAT_RSS], NULL, 10, &rss) < 0 > || > - virStrToLong_i(proc_stat[VIR_PROCESS_STAT_PROCESSOR], NULL, 10, > &cpu) < 0) { > + virStrToLong_ullp(proc_stat[VIR_PROCESS_STAT_RSS], NULL, 10, &rss) < > 0 || > + virStrToLong_i(proc_stat[VIR_PROCESS_STAT_PROCESSOR], NULL, 10, > &cpu) < 0 || > + rss > ULLONG_MAX / pagesize) { > VIR_WARN("cannot parse process status data"); > } > Michal