From: Kimberly Brown <kimbrownkd@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] kobject: Add support for default attribute groups to kobj_type
Date: Fri, 22 Mar 2019 16:14:40 -0400 [thread overview]
Message-ID: <20190322201440.GA30814@ubu-Virtual-Machine> (raw)
kobj_type currently uses a list of individual attributes to store
default attributes. Attribute groups are more flexible than a list of
attributes because groups provide support for attribute visibility. So,
add support for default attribute groups to kobj_type.
In future patches, the existing uses of kobj_type’s attribute list will
be converted to attribute groups. When that is complete, kobj_type’s
attribute list, “default_attrs”, will be removed.
Signed-off-by: Kimberly Brown <kimbrownkd@gmail.com>
---
include/linux/kobject.h | 3 ++-
lib/kobject.c | 14 ++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 1ab0d624fb36..e2ca0a292e21 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -139,7 +139,8 @@ static inline bool kobject_has_children(struct kobject *kobj)
struct kobj_type {
void (*release)(struct kobject *kobj);
const struct sysfs_ops *sysfs_ops;
- struct attribute **default_attrs;
+ struct attribute **default_attrs; /* use default_groups instead */
+ const struct attribute_group **default_groups;
const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj);
const void *(*namespace)(struct kobject *kobj);
void (*get_ownership)(struct kobject *kobj, kuid_t *uid, kgid_t *gid);
diff --git a/lib/kobject.c b/lib/kobject.c
index b72e00fd7d09..67789f34951d 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -82,6 +82,7 @@ static int populate_dir(struct kobject *kobj)
static int create_dir(struct kobject *kobj)
{
+ const struct kobj_type *ktype = get_ktype(kobj);
const struct kobj_ns_type_operations *ops;
int error;
@@ -95,6 +96,14 @@ static int create_dir(struct kobject *kobj)
return error;
}
+ if (ktype) {
+ error = sysfs_create_groups(kobj, ktype->default_groups);
+ if (error) {
+ sysfs_remove_dir(kobj);
+ return error;
+ }
+ }
+
/*
* @kobj->sd may be deleted by an ancestor going away. Hold an
* extra reference so that it stays until @kobj is gone.
@@ -584,11 +593,16 @@ EXPORT_SYMBOL_GPL(kobject_move);
void kobject_del(struct kobject *kobj)
{
struct kernfs_node *sd;
+ const struct kobj_type *ktype = get_ktype(kobj);
if (!kobj)
return;
sd = kobj->sd;
+
+ if (ktype)
+ sysfs_remove_groups(kobj, ktype->default_groups);
+
sysfs_remove_dir(kobj);
sysfs_put(sd);
--
2.17.1
next reply other threads:[~2019-03-22 20:14 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-22 20:14 Kimberly Brown [this message]
2019-03-23 6:07 ` [PATCH] kobject: Add support for default attribute groups to kobj_type Greg Kroah-Hartman
2019-03-24 3:48 ` Kimberly Brown
2019-03-24 5:15 ` Greg Kroah-Hartman
2019-04-02 2:51 ` [PATCH v2 0/8] kobject: Add default group support to kobj_type and replace subsystem uses Kimberly Brown
2019-04-02 2:51 ` [PATCH v2 1/8] kobject: Add support for default attribute groups to kobj_type Kimberly Brown
2019-04-02 2:51 ` [PATCH v2 2/8] samples/kobject: Replace foo_ktype's default_attrs field with groups Kimberly Brown
2019-04-02 2:51 ` [PATCH v2 3/8] block: Replace all ktype default_attrs " Kimberly Brown
2019-04-02 16:02 ` Bart Van Assche
2019-04-02 17:46 ` Greg Kroah-Hartman
2019-04-02 18:06 ` Bart Van Assche
2019-04-02 2:51 ` [PATCH v2 4/8] net-sysfs: Replace ktype default_attrs field " Kimberly Brown
2019-04-02 2:51 ` [PATCH v2 5/8] irqdesc: Replace irq_kobj_type's " Kimberly Brown
2019-04-02 8:04 ` Thomas Gleixner
2019-04-02 2:51 ` [PATCH v2 6/8] padata: Replace padata_attr_type " Kimberly Brown
2019-04-02 2:51 ` [PATCH v2 7/8] cpufreq: schedutil: Replace " Kimberly Brown
2019-04-02 7:56 ` Rafael J. Wysocki
2019-04-02 8:50 ` Peter Zijlstra
2019-04-02 2:51 ` [PATCH v2 8/8] livepatch: Replace klp_ktype_patch's default_attrs " Kimberly Brown
2019-04-02 10:22 ` Jiri Kosina
2019-04-03 11:51 ` Miroslav Benes
2019-04-08 14:16 ` Petr Mladek
2019-04-02 6:29 ` [PATCH v2 0/8] kobject: Add default group support to kobj_type and replace subsystem uses Greg Kroah-Hartman
2019-04-25 20:12 ` Greg Kroah-Hartman
2019-04-27 6:18 ` Kimberly Brown
2019-04-27 6:41 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190322201440.GA30814@ubu-Virtual-Machine \
--to=kimbrownkd@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.