From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB22DC11D1B for ; Thu, 20 Feb 2020 19:38:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8E90E208CD for ; Thu, 20 Feb 2020 19:38:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728834AbgBTTim (ORCPT ); Thu, 20 Feb 2020 14:38:42 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:54705 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728248AbgBTTil (ORCPT ); Thu, 20 Feb 2020 14:38:41 -0500 Received: from ip5f5bf7ec.dynamic.kabel-deutschland.de ([95.91.247.236] helo=wittgenstein) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1j4reg-0005Xc-Ak; Thu, 20 Feb 2020 19:38:38 +0000 Date: Thu, 20 Feb 2020 20:38:37 +0100 From: Christian Brauner To: Greg Kroah-Hartman Cc: "David S. Miller" , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, "Rafael J. Wysocki" , Pavel Machek , Jakub Kicinski , Eric Dumazet , Stephen Hemminger , linux-pm@vger.kernel.org Subject: Re: [PATCH net-next v3 3/9] sysfs: add sysfs_group{s}_change_owner() Message-ID: <20200220193837.3agsi2idqirzpkiu@wittgenstein> References: <20200218162943.2488012-1-christian.brauner@ubuntu.com> <20200218162943.2488012-4-christian.brauner@ubuntu.com> <20200220111550.GE3374196@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200220111550.GE3374196@kroah.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 20, 2020 at 12:15:50PM +0100, Greg Kroah-Hartman wrote: > On Tue, Feb 18, 2020 at 05:29:37PM +0100, Christian Brauner wrote: > > Add helpers to change the owner of sysfs groups. > > This function will be used to correctly account for kobject ownership > > changes, e.g. when moving network devices between network namespaces. > > > > Signed-off-by: Christian Brauner > > --- > > /* v2 */ > > - Greg Kroah-Hartman : > > - Add comment how ownership of sysfs object is changed. > > > > /* v3 */ > > - Greg Kroah-Hartman : > > - Add explicit uid/gid parameters. > > - Christian Brauner : > > - Collapse groups ownership helper patches into a single patch. > > --- > > fs/sysfs/group.c | 117 ++++++++++++++++++++++++++++++++++++++++++ > > include/linux/sysfs.h | 20 ++++++++ > > 2 files changed, 137 insertions(+) > > > > diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c > > index c4ab045926b7..bae562d3cba1 100644 > > --- a/fs/sysfs/group.c > > +++ b/fs/sysfs/group.c > > @@ -13,6 +13,7 @@ > > #include > > #include > > #include > > +#include > > #include "sysfs.h" > > > > > > @@ -457,3 +458,119 @@ int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, > > return PTR_ERR_OR_ZERO(link); > > } > > EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj); > > + > > +static int sysfs_group_attrs_change_owner(struct kernfs_node *grp_kn, > > + const struct attribute_group *grp, > > + struct iattr *newattrs) > > +{ > > + struct kernfs_node *kn; > > + int error; > > + > > + if (grp->attrs) { > > + struct attribute *const *attr; > > + > > + for (attr = grp->attrs; *attr; attr++) { > > + kn = kernfs_find_and_get(grp_kn, (*attr)->name); > > + if (!kn) > > + return -ENOENT; > > + > > + error = kernfs_setattr(kn, newattrs); > > + kernfs_put(kn); > > + if (error) > > + return error; > > + } > > + } > > + > > + if (grp->bin_attrs) { > > + struct bin_attribute *const *bin_attr; > > + > > + for (bin_attr = grp->bin_attrs; *bin_attr; bin_attr++) { > > + kn = kernfs_find_and_get(grp_kn, (*bin_attr)->attr.name); > > + if (!kn) > > + return -ENOENT; > > + > > + error = kernfs_setattr(kn, newattrs); > > + kernfs_put(kn); > > + if (error) > > + return error; > > + } > > + } > > + > > + return 0; > > +} > > + > > +/** > > + * sysfs_group_change_owner - change owner of an attribute group. > > + * @kobj: The kobject containing the group. > > + * @grp: The attribute group. > > + * @kuid: new owner's kuid > > + * @kgid: new owner's kgid > > + * > > + * Returns 0 on success or error code on failure. > > This is fine to document, just funny it's the only one documented about > the return value so far in this series. I stuck to the documentation style common to the file. Most of the functions in fs/syfs/file.c did not mention return codes sysfs_remove_bin_file(), sysfs_create_bin_file(), sysfs_remove_file_from_group() etc. But I'll document all in this series with return codes now. Thanks! Christian