From 4af7a1075ce8d833c73602e776d13cf244d9c503 Mon Sep 17 00:00:00 2001 From: zhang-liang-pengkun Date: Tue, 17 Oct 2023 16:01:03 +0800 Subject: [PATCH] Fixes swap_memory not returning bytes on FreeBSD Signed-off-by: zhang-liang-pengkun --- ...y-not-returning-bytes-on-FreeBSD-126.patch | 79 +++++++++++++++++++ python-psutil.spec | 6 +- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 0001-Fixes-swap_memory-not-returning-bytes-on-FreeBSD-126.patch diff --git a/0001-Fixes-swap_memory-not-returning-bytes-on-FreeBSD-126.patch b/0001-Fixes-swap_memory-not-returning-bytes-on-FreeBSD-126.patch new file mode 100644 index 0000000..713431a --- /dev/null +++ b/0001-Fixes-swap_memory-not-returning-bytes-on-FreeBSD-126.patch @@ -0,0 +1,79 @@ +From a4c07e9da0f7a3a92b27c856eec09954ccc824ca Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Denis=20Krienb=C3=BChl?= +Date: Thu, 29 Mar 2018 20:12:10 +0200 +Subject: [PATCH] Fixes swap_memory not returning bytes on FreeBSD (#1260) + +--- + psutil/arch/freebsd/specific.c | 10 ++++++---- + psutil/tests/test_bsd.py | 34 ++++++++++++++++++++++++++++++++++ + 2 files changed, 40 insertions(+), 4 deletions(-) + +diff --git a/psutil/arch/freebsd/specific.c b/psutil/arch/freebsd/specific.c +index 2c8944dd..f6d1a67e 100644 +--- a/psutil/arch/freebsd/specific.c ++++ b/psutil/arch/freebsd/specific.c +@@ -516,10 +516,12 @@ psutil_swap_mem(PyObject *self, PyObject *args) { + if (sysctlbyname("vm.stats.vm.v_vnodeout", &nodeout, &size, NULL, 0) == -1) + goto error; + +- return Py_BuildValue("(iiiII)", +- kvmsw[0].ksw_total, // total +- kvmsw[0].ksw_used, // used +- kvmsw[0].ksw_total - kvmsw[0].ksw_used, // free ++ int pagesize = getpagesize(); ++ ++ return Py_BuildValue("(KKKII)", ++ (unsigned long long) kvmsw[0].ksw_total * pagesize, // total ++ (unsigned long long) kvmsw[0].ksw_used * pagesize, // used ++ (unsigned long long) kvmsw[0].ksw_total * pagesize - kvmsw[0].ksw_used * pagesize, // free + swapin + swapout, // swap in + nodein + nodeout); // swap out + +diff --git a/psutil/tests/test_bsd.py b/psutil/tests/test_bsd.py +index d3868ada..63cae66a 100755 +--- a/psutil/tests/test_bsd.py ++++ b/psutil/tests/test_bsd.py +@@ -344,6 +344,40 @@ class FreeBSDSpecificTestCase(unittest.TestCase): + # self.assertAlmostEqual(psutil.cpu_stats().traps, + # sysctl('vm.stats.sys.v_trap'), delta=1000) + ++ # --- swap memory ++ @staticmethod ++ def parse_swapinfo(): ++ ++ # the last line is always the total ++ output = sh("swapinfo -k").splitlines()[-1] ++ parts = re.split(r'\s+', output) ++ ++ if not parts: ++ raise ValueError("Can't parse swapinfo: %s" % output) ++ ++ # the size is in 1k units, so multiply by 1024 ++ total, used, free = (int(p) * 1024 for p in parts[1:4]) ++ ++ return total, used, free ++ ++ def test_swapmem_free(self): ++ total, used, free = self.parse_swapinfo() ++ ++ self.assertAlmostEqual( ++ psutil.swap_memory().free, free, delta=MEMORY_TOLERANCE) ++ ++ def test_swapmem_used(self): ++ total, used, free = self.parse_swapinfo() ++ ++ self.assertAlmostEqual( ++ psutil.swap_memory().used, used, delta=MEMORY_TOLERANCE) ++ ++ def test_swapmem_total(self): ++ total, used, free = self.parse_swapinfo() ++ ++ self.assertAlmostEqual( ++ psutil.swap_memory().total, total, delta=MEMORY_TOLERANCE) ++ + # --- others + + def test_boot_time(self): +-- +2.39.0.windows.2 + diff --git a/python-psutil.spec b/python-psutil.spec index e40fd8f..37ac666 100644 --- a/python-psutil.spec +++ b/python-psutil.spec @@ -1,6 +1,6 @@ Name: python-psutil Version: 5.4.3 -Release: 9 +Release: 10 Summary: A library for retrieving information on running processes and system utilization in Python License: BSD URL: https://github.com/giampaolo/psutil @@ -8,6 +8,7 @@ Source0: https://github.com/giampaolo/psutil/archive/release-%{version}.t Patch0001: CVE-2019-18874-1.patch Patch0002: CVE-2019-18874-2.patch +Patch0003: 0001-Fixes-swap_memory-not-returning-bytes-on-FreeBSD-126.patch BuildRequires: gcc python2-devel python3-devel procps-ng python2-mock python3-mock python2-ipaddress @@ -71,6 +72,9 @@ done %{python3_sitearch}/*.egg-info %changelog +* Tue Oct 17 2023 zhangliangpengkun - 5.4.3-10 +- Fixes swap_memory not returning bytes on FreeBSD + * Wed Oct 20 2021 yaoxin - 5.4.3-9 - Fix CVE-2019-18874 -- Gitee