From 92b7a56b1a23d1cf39e810a58a6d7d0b1f500e69 Mon Sep 17 00:00:00 2001
Message-Id: <92b7a56b1a23d1cf39e810a58a6d7d0b1f500e69@dist-git>
From: Pavel Hrdina <phrdina@redhat.com>
Date: Thu, 21 Jan 2021 10:24:06 -0300
Subject: [PATCH] vircgroup: fix cpu quota maximum limit
Kernel commit <d505b8af58912ae1e1a211fabc9995b19bd40828> added proper
check for cpu quota maximum limit to prevent internal overflow.
Even though this change is not present in all kernels it makes sense
to enforce the same limit in libvirt.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1750315
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
(cherry picked from commit ed1ba69f5a8132f8c1e73d2a1f142d70de0b564a)
https://bugzilla.redhat.com/1915733
Signed-off-by: Daniel Henrique Barboza <dbarboza@redhat.com>
Message-Id: <20210121132406.337681-5-dbarboza@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
---
src/util/vircgroup.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index 83fa74840f..1c6edea0be 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -246,7 +246,9 @@ int virCgroupGetCpuShares(virCgroupPtr group, unsigned long long *shares);
#define VIR_CGROUP_CPU_PERIOD_MIN 1000LL
#define VIR_CGROUP_CPU_PERIOD_MAX 1000000LL
#define VIR_CGROUP_CPU_QUOTA_MIN 1000LL
-#define VIR_CGROUP_CPU_QUOTA_MAX 18446744073709551LL
+/* Based on kernel code ((1ULL << MAX_BW_BITS) - 1) where MAX_BW_BITS is
+ * (64 - BW_SHIFT) and BW_SHIFT is 20 */
+#define VIR_CGROUP_CPU_QUOTA_MAX 17592186044415LL
int virCgroupSetCpuCfsPeriod(virCgroupPtr group, unsigned long long cfs_period);
int virCgroupGetCpuCfsPeriod(virCgroupPtr group, unsigned long long *cfs_period);
--
2.30.0