lkml.org 
[lkml]   [2010]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 36/38] kobj: Send hotplug events in the proper namespace.
    Date
    From: Eric W. Biederman <ebiederm@xmission.com>

    Utilize netlink_broacast_filtered to allow sending hotplug events
    in the proper namespace.

    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Acked-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    lib/kobject_uevent.c | 22 ++++++++++++++++++++--
    1 files changed, 20 insertions(+), 2 deletions(-)

    diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
    index 9084f25..239c8e8 100644
    --- a/lib/kobject_uevent.c
    +++ b/lib/kobject_uevent.c
    @@ -83,6 +83,22 @@ out:
    return ret;
    }

    +static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data)
    +{
    + struct kobject *kobj = data;
    + const struct kobj_ns_type_operations *ops;
    +
    + ops = kobj_ns_ops(kobj);
    + if (ops) {
    + const void *sock_ns, *ns;
    + ns = kobj->ktype->namespace(kobj);
    + sock_ns = ops->netlink_ns(dsk);
    + return sock_ns != ns;
    + }
    +
    + return 0;
    +}
    +
    /**
    * kobject_uevent_env - send an uevent with environmental data
    *
    @@ -244,8 +260,10 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
    }

    NETLINK_CB(skb).dst_group = 1;
    - retval = netlink_broadcast(uevent_sock, skb, 0, 1,
    - GFP_KERNEL);
    + retval = netlink_broadcast_filtered(uevent_sock, skb,
    + 0, 1, GFP_KERNEL,
    + kobj_bcast_filter,
    + kobj);
    /* ENOBUFS should be handled in userspace */
    if (retval == -ENOBUFS)
    retval = 0;
    --
    1.7.0.3


    \
     
     \ /
      Last update: 2010-05-21 18:59    [W:0.034 / U:0.012 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site