calling "hasmntopt" to determine if the controller name exists in
"mntopt", may cause errors because of "hasmntopt" only match substring.
cpu controller may incorrectly match to cpuset when cpuset mount info
appeared before cpu,cpuacct in "/proc/mounts", so we need to validate
the last character to make sure the controller name matches exactly.
Signed-off-by: liupan <490021209@qq.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit
a18ae861e77f106517df203e30a810ba59b082d9)
char *strtok_buffer = NULL, *mntopt = NULL;
int duplicate = 0;
int i, j, ret = 0;
+ char c = 0;
for (i = 0; controllers[i] != NULL; i++) {
mntopt = hasmntopt(ent, controllers[i]);
if (!mntopt)
continue;
+ c = mntopt[strlen(controllers[i])];
+
+ if (c != '\0' && c != ',')
+ continue;
+
cgroup_dbg("found %s in %s\n", controllers[i], ent->mnt_opts);
/* do not have duplicates in mount table */