+static int cgroup_permission(struct inode *inode, struct kernfs_node *kn,
+ int mask)
+{
+ int ret;
+ struct cgroup *cgroup;
+ struct cgroup_namespace *cgroupns;
+
+ /*
+ * First, compute the generic_permission return value. In most cases
+ * this will succeed and we can also avoid duplicating this code.
+ */
+
+ cgroup = kn->priv;
+ cgroup_get(cgroup);
This pattern which is repated for cgroupns doesn't make sense. The
code is already assuming that the cgroup is safe to deref. Getting
its reference doesn't do anything. Getting it here would only make
sense if the pointer is passed to an asynchronous context.