| From 0aa45b61d06f4c6a6b1614721c54d04502387138 Mon Sep 17 00:00:00 2001 |
| From: Ondrej Mosnacek <omosnace@redhat.com> |
| Date: Thu, 13 Dec 2018 15:17:37 +0100 |
| Subject: cgroup: fix parsing empty mount option string |
| |
| [ Upstream commit e250d91d65750a0c0c62483ac4f9f357e7317617 ] |
| |
| This fixes the case where all mount options specified are consumed by an |
| LSM and all that's left is an empty string. In this case cgroupfs should |
| accept the string and not fail. |
| |
| How to reproduce (with SELinux enabled): |
| |
| # umount /sys/fs/cgroup/unified |
| # mount -o context=system_u:object_r:cgroup_t:s0 -t cgroup2 cgroup2 /sys/fs/cgroup/unified |
| mount: /sys/fs/cgroup/unified: wrong fs type, bad option, bad superblock on cgroup2, missing codepage or helper program, or other error. |
| # dmesg | tail -n 1 |
| [ 31.575952] cgroup: cgroup2: unknown option "" |
| |
| Fixes: 67e9c74b8a87 ("cgroup: replace __DEVEL__sane_behavior with cgroup2 fs type") |
| [NOTE: should apply on top of commit 5136f6365ce3 ("cgroup: implement "nsdelegate" mount option"), older versions need manual rebase] |
| Suggested-by: Stephen Smalley <sds@tycho.nsa.gov> |
| Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> |
| Signed-off-by: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| kernel/cgroup/cgroup.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c |
| index 109c32c56de7..21bbfc09e395 100644 |
| --- a/kernel/cgroup/cgroup.c |
| +++ b/kernel/cgroup/cgroup.c |
| @@ -1692,7 +1692,7 @@ static int parse_cgroup_root_flags(char *data, unsigned int *root_flags) |
| |
| *root_flags = 0; |
| |
| - if (!data) |
| + if (!data || *data == '\0') |
| return 0; |
| |
| while ((token = strsep(&data, ",")) != NULL) { |
| -- |
| 2.19.1 |
| |