X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=lib%2Fkobject_uevent.c;h=5f72767ddd9b8471a5237a0b39ef0865e176934b;hb=b7c5b1aa2836c933ab03f90391619ebdc9112e46;hp=52e5abbc41dbc0724e9b6664e7674b6bd680ca53;hpb=35fd3dc58da675d659513384221349ef90749a01;p=deliverable%2Flinux.git diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 52e5abbc41db..5f72767ddd9b 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -88,11 +88,17 @@ out: #ifdef CONFIG_NET static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data) { - struct kobject *kobj = data; + struct kobject *kobj = data, *ksobj; const struct kobj_ns_type_operations *ops; ops = kobj_ns_ops(kobj); - if (ops) { + if (!ops && kobj->kset) { + ksobj = &kobj->kset->kobj; + if (ksobj->parent != NULL) + ops = kobj_ns_ops(ksobj->parent); + } + + if (ops && ops->netlink_ns && kobj->ktype->namespace) { const void *sock_ns, *ns; ns = kobj->ktype->namespace(kobj); sock_ns = ops->netlink_ns(dsk);