Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757969AbbKGAYB (ORCPT ); Fri, 6 Nov 2015 19:24:01 -0500 Received: from mail-pa0-f46.google.com ([209.85.220.46]:35765 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753140AbbKGAX7 (ORCPT ); Fri, 6 Nov 2015 19:23:59 -0500 Date: Fri, 6 Nov 2015 16:23:56 -0800 From: Jeremiah Mahler To: Jarkko Sakkinen Cc: tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, peterhuewe@gmx.de, gregkh@linuxfoundation.org, jgunthorpe@obsidianresearch.com, dhowells@redhat.com, artem.bityutskiy@linux.intel.com, Tejun Heo , NeilBrown , Guenter Roeck , "Eric W. Biederman" Subject: Re: [PATCH 03/10] sysfs: added __compat_only_sysfs_link_entry_to_kobj() Message-ID: <20151107002356.GA6026@newt.localdomain> Mail-Followup-To: Jeremiah Mahler , Jarkko Sakkinen , tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, peterhuewe@gmx.de, gregkh@linuxfoundation.org, jgunthorpe@obsidianresearch.com, dhowells@redhat.com, artem.bityutskiy@linux.intel.com, Tejun Heo , NeilBrown , Guenter Roeck , "Eric W. Biederman" References: <1445020843-9382-1-git-send-email-jarkko.sakkinen@linux.intel.com> <1445020843-9382-4-git-send-email-jarkko.sakkinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1445020843-9382-4-git-send-email-jarkko.sakkinen@linux.intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3949 Lines: 115 Jarkko, On Fri, Oct 16, 2015 at 09:40:22PM +0300, Jarkko Sakkinen wrote: > Added a new function __compat_only_sysfs_link_group_to_kobj() that adds > a symlink from attribute or group to a kobject. This needed for > maintaining backwards compatibility with PPI attributes in the TPM > driver. > > Signed-off-by: Jarkko Sakkinen > --- > fs/sysfs/group.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > include/linux/sysfs.h | 11 +++++++++++ > 2 files changed, 55 insertions(+) > > diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c > index 39a0199..e123659 100644 > --- a/fs/sysfs/group.c > +++ b/fs/sysfs/group.c > @@ -352,3 +352,47 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name, > } > } > EXPORT_SYMBOL_GPL(sysfs_remove_link_from_group); > + > +/** > + * __compat_only_sysfs_link_entry_to_kobj - add a symlink to a kobject pointing > + * to a group or an attribute > + * @kobj: The kobject containing the group. > + * @target_kobj: The target kobject. > + * @target_name: The name of the target group or attribute. > + */ > +int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, > + struct kobject *target_kobj, > + const char *target_name) > +{ > + struct kernfs_node *target; > + struct kernfs_node *entry; > + struct kernfs_node *link; > + > + /* > + * We don't own @target_kobj and it may be removed at any time. > + * Synchronize using sysfs_symlink_target_lock. See sysfs_remove_dir() > + * for details. > + */ > + spin_lock(&sysfs_symlink_target_lock); > + target = target_kobj->sd; > + if (target) > + kernfs_get(target); > + spin_unlock(&sysfs_symlink_target_lock); > + if (!target) > + return -ENOENT; > + > + entry = kernfs_find_and_get(target_kobj->sd, target_name); > + if (!entry) { > + kernfs_put(target); > + return -ENOENT; > + } > + > + link = kernfs_create_link(kobj->sd, target_name, entry); > + if (IS_ERR(link) && PTR_ERR(link) == -EEXIST) > + sysfs_warn_dup(kobj->sd, target_name); > + > + kernfs_put(entry); > + kernfs_put(target); > + return IS_ERR(link) ? PTR_ERR(link) : 0; > +} > +EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj); > diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h > index 9f65758..ea090ea 100644 > --- a/include/linux/sysfs.h > +++ b/include/linux/sysfs.h > @@ -268,6 +268,9 @@ int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name, > struct kobject *target, const char *link_name); > void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name, > const char *link_name); > +int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, > + struct kobject *target_kobj, > + const char *target_name); > > void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr); > > @@ -451,6 +454,14 @@ static inline void sysfs_remove_link_from_group(struct kobject *kobj, > { > } > > +static inline int __compat_only_sysfs_link_entry_to_kobj( > + struct kobject *kobj, > + struct kobject *target_kobj, > + const char *target_name) > +{ > + return 0; > +} > + > static inline void sysfs_notify(struct kobject *kobj, const char *dir, > const char *attr) > { > -- > 2.5.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ One problem with this patch is that it adds a bunch of code but none of it is used. So if there is a bug, git bisect will point to a later patch instead of this one. -- - Jeremiah Mahler -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/