kobject.c (2d8ad8719591fa803b0d589ed057fa46f49b7155) | kobject.c (a685e08987d1edf1995b76511d4c98ea0e905377) |
---|---|
1/* 2 * kobject.c - library routines for handling generic kernel objects 3 * 4 * Copyright (c) 2002-2003 Patrick Mochel <mochel@osdl.org> 5 * Copyright (c) 2006-2007 Greg Kroah-Hartman <greg@kroah.com> 6 * Copyright (c) 2006-2007 Novell Inc. 7 * 8 * This file is released under the GPLv2. --- 934 unchanged lines hidden (view full) --- 943} 944 945const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj) 946{ 947 return kobj_child_ns_ops(kobj->parent); 948} 949 950 | 1/* 2 * kobject.c - library routines for handling generic kernel objects 3 * 4 * Copyright (c) 2002-2003 Patrick Mochel <mochel@osdl.org> 5 * Copyright (c) 2006-2007 Greg Kroah-Hartman <greg@kroah.com> 6 * Copyright (c) 2006-2007 Novell Inc. 7 * 8 * This file is released under the GPLv2. --- 934 unchanged lines hidden (view full) --- 943} 944 945const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj) 946{ 947 return kobj_child_ns_ops(kobj->parent); 948} 949 950 |
951const void *kobj_ns_current(enum kobj_ns_type type) | 951void *kobj_ns_grab_current(enum kobj_ns_type type) |
952{ | 952{ |
953 const void *ns = NULL; | 953 void *ns = NULL; |
954 955 spin_lock(&kobj_ns_type_lock); 956 if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) && 957 kobj_ns_ops_tbl[type]) | 954 955 spin_lock(&kobj_ns_type_lock); 956 if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) && 957 kobj_ns_ops_tbl[type]) |
958 ns = kobj_ns_ops_tbl[type]->current_ns(); | 958 ns = kobj_ns_ops_tbl[type]->grab_current_ns(); |
959 spin_unlock(&kobj_ns_type_lock); 960 961 return ns; 962} 963 964const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk) 965{ 966 const void *ns = NULL; --- 15 unchanged lines hidden (view full) --- 982 if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) && 983 kobj_ns_ops_tbl[type]) 984 ns = kobj_ns_ops_tbl[type]->initial_ns(); 985 spin_unlock(&kobj_ns_type_lock); 986 987 return ns; 988} 989 | 959 spin_unlock(&kobj_ns_type_lock); 960 961 return ns; 962} 963 964const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk) 965{ 966 const void *ns = NULL; --- 15 unchanged lines hidden (view full) --- 982 if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) && 983 kobj_ns_ops_tbl[type]) 984 ns = kobj_ns_ops_tbl[type]->initial_ns(); 985 spin_unlock(&kobj_ns_type_lock); 986 987 return ns; 988} 989 |
990/* 991 * kobj_ns_exit - invalidate a namespace tag 992 * 993 * @type: the namespace type (i.e. KOBJ_NS_TYPE_NET) 994 * @ns: the actual namespace being invalidated 995 * 996 * This is called when a tag is no longer valid. For instance, 997 * when a network namespace exits, it uses this helper to 998 * make sure no sb's sysfs_info points to the now-invalidated 999 * netns. 1000 */ 1001void kobj_ns_exit(enum kobj_ns_type type, const void *ns) | 990void kobj_ns_drop(enum kobj_ns_type type, void *ns) |
1002{ | 991{ |
1003 sysfs_exit_ns(type, ns); | 992 spin_lock(&kobj_ns_type_lock); 993 if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) && 994 kobj_ns_ops_tbl[type] && kobj_ns_ops_tbl[type]->drop_ns) 995 kobj_ns_ops_tbl[type]->drop_ns(ns); 996 spin_unlock(&kobj_ns_type_lock); |
1004} 1005 | 997} 998 |
1006 | |
1007EXPORT_SYMBOL(kobject_get); 1008EXPORT_SYMBOL(kobject_put); 1009EXPORT_SYMBOL(kobject_del); 1010 1011EXPORT_SYMBOL(kset_register); 1012EXPORT_SYMBOL(kset_unregister); | 999EXPORT_SYMBOL(kobject_get); 1000EXPORT_SYMBOL(kobject_put); 1001EXPORT_SYMBOL(kobject_del); 1002 1003EXPORT_SYMBOL(kset_register); 1004EXPORT_SYMBOL(kset_unregister); |