On 6/25/20 5:29 PM, Valeriy Vdovin wrote: > This will be used in further patches in same patchset.
See below > Signed-off-by: Valeriy Vdovin <[email protected]> > Reviewed-by: Kirill Tkhai <[email protected]> > --- > include/linux/cgroup.h | 7 +++++++ > kernel/cgroup.c | 15 +++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h > index 919cddd..ce46ee8 100644 > --- a/include/linux/cgroup.h > +++ b/include/linux/cgroup.h > @@ -239,6 +239,13 @@ struct cgroup_name { > char name[]; > }; > > +struct cgroup_rcu_string { > + struct rcu_head rcu_head; > + char val[]; > +}; > + > +struct cgroup_rcu_string *cgroup_rcu_strdup(const char *str, int len); > + > struct cgroup { > unsigned long flags; /* "unsigned long" so bitops work */ > > diff --git a/kernel/cgroup.c b/kernel/cgroup.c > index 9fdba79..e703927 100644 > --- a/kernel/cgroup.c > +++ b/kernel/cgroup.c > @@ -774,6 +774,21 @@ static struct inode *cgroup_new_inode(umode_t mode, > struct super_block *sb) > return inode; > } > > +struct cgroup_rcu_string *cgroup_rcu_strdup(const char *str, int len) > +{ > + struct cgroup_rcu_string *result; > + size_t buflen = len + 1; > + > + result = kmalloc(sizeof(*result) + buflen, GFP_KERNEL); > + if (!result) > + return ERR_PTR(-ENOMEM); > + if (strlcpy(result->val, str, buflen) >= buflen) { Is it better to make this check before allocation? > + kfree(result); > + return ERR_PTR(-ENAMETOOLONG); > + } > + return result; > +} > + > static struct cgroup_name *cgroup_alloc_name(struct dentry *dentry) > { > struct cgroup_name *name; > _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
