Re: [PATCH] Driver Core patches for 2.6.10-rc1

From: Greg KH
Date: Fri Oct 22 2004 - 22:32:16 EST


ChangeSet 1.2020, 2004/10/22 14:29:19-07:00, akpm@xxxxxxxx

[PATCH] kobject_hotplug: permit no hotplug_ops

Make kobject_hotplug() work even if the kobject's kset doesn't implement any
hotplug_ops.

Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <greg@xxxxxxxxx>


lib/kobject_uevent.c | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)


diff -Nru a/lib/kobject_uevent.c b/lib/kobject_uevent.c
--- a/lib/kobject_uevent.c 2004-10-22 16:00:04 -07:00
+++ b/lib/kobject_uevent.c 2004-10-22 16:00:04 -07:00
@@ -187,6 +187,8 @@
u64 seq;
struct kobject *top_kobj = kobj;
struct kset *kset;
+ static struct kset_hotplug_ops null_hotplug_ops;
+ struct kset_hotplug_ops *hotplug_ops = &null_hotplug_ops;

if (!top_kobj->kset && top_kobj->parent) {
do {
@@ -194,15 +196,18 @@
} while (!top_kobj->kset && top_kobj->parent);
}

- if (top_kobj->kset && top_kobj->kset->hotplug_ops)
+ if (top_kobj->kset)
kset = top_kobj->kset;
else
return;

+ if (kset->hotplug_ops)
+ hotplug_ops = kset->hotplug_ops;
+
/* If the kset has a filter operation, call it.
Skip the event, if the filter returns zero. */
- if (kset->hotplug_ops->filter) {
- if (!kset->hotplug_ops->filter(kset, kobj))
+ if (hotplug_ops->filter) {
+ if (!hotplug_ops->filter(kset, kobj))
return;
}

@@ -221,8 +226,8 @@
if (!buffer)
goto exit;

- if (kset->hotplug_ops->name)
- name = kset->hotplug_ops->name(kset, kobj);
+ if (hotplug_ops->name)
+ name = hotplug_ops->name(kset, kobj);
if (name == NULL)
name = kset->kobj.name;

@@ -256,9 +261,9 @@
envp [i++] = scratch;
scratch += sprintf(scratch, "SUBSYSTEM=%s", name) + 1;

- if (kset->hotplug_ops->hotplug) {
+ if (hotplug_ops->hotplug) {
/* have the kset specific function add its stuff */
- retval = kset->hotplug_ops->hotplug (kset, kobj,
+ retval = hotplug_ops->hotplug (kset, kobj,
&envp[i], NUM_ENVP - i, scratch,
BUFFER_SIZE - (scratch - buffer));
if (retval) {

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/