From: "Valeriy.Vdovin" <[email protected]>

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 <[email protected]>
---
 fs/kernfs/ve.c | 9 +++++++++
 1 file changed, 9 insertions(+)

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));
 }
-- 
2.18.2

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to