[RHEL8,COMMIT] kernfs/ve: ignore kernfs 've_perms_map' in cgroups.

Submitted by Konstantin Khorenko on June 1, 2020, 10:02 a.m.

Details

Message ID 202006011002.051A2mbB027063@finist-co8.sw.ru
State New
Series "kernfs/ve: ignore kernfs 've_perms_map' in cgroups."
Headers show

Commit Message

Konstantin Khorenko June 1, 2020, 10:02 a.m.
The commit is pushed to "branch-rh8-4.18.0-80.1.2.vz8.3.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-80.1.2.vz8.3.10
------>
commit b1df7c325d67669da2a4b06b8a00e62967fc5f11
Author: Valeriy.Vdovin <valeriy.vdovin@virtuozzo.com>
Date:   Mon Jun 1 13:02:47 2020 +0300

    kernfs/ve: ignore kernfs 've_perms_map' in cgroups.
    
    Kernfs implements file permissions logic, that relies on
    (struct kernfs_node).ve_perms_map. In VZ8 cgroups have been modified
    to use kernfs, but cgroups do not benefit from using ve_perms_map in
    any way so it's left uninitialized in cgroup code. There is no clear
    way of implementing any kind of stub ve_perms_map for cgroups, so it
    seems the best logic is to allow the field exist as NULL for those
    who uses kernfs but don't wish to use ve_perms_map.
    
    https://jira.sw.ru/browse/PSBM-104455
    
    Signed-off-by: Valeriy.Vdovin <valeriy.vdovin@virtuozzo.com>
    Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
---
 fs/kernfs/ve.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Patch hide | download patch | download mbox

diff --git a/fs/kernfs/ve.c b/fs/kernfs/ve.c
index 1fccc9a0f331..72e45daa23ae 100644
--- a/fs/kernfs/ve.c
+++ b/fs/kernfs/ve.c
@@ -129,6 +129,15 @@  bool kernfs_d_visible(struct kernfs_node *kn, struct kernfs_super_info *info)
 	if (kernfs_type(kn) == KERNFS_LINK)
 		kn = kn->symlink.target_kn;
 
+	/*
+	 * Some systems that are built on top of kernfs might
+	 * not want to use ve_perms_map (cgroup is an example)
+	 * so they leave ve_perms_map uninitialized.
+	 * For them we just true.
+	 */
+	if (!kn->ve_perms_map)
+		return true;
+
 	return !!kmapset_get_value(kn->ve_perms_map,
 				   kernfs_info_perms_key(info));
 }