compat: Added support for SRP on RHEL7.5
[compat-rdma/compat.git] / compat / compat-4.16.c
1 #ifndef HAVE_KOBJ_NS_DROP_EXPORTED
2 // SPDX-License-Identifier: GPL-2.0
3 /*
4  * kobject.c - library routines for handling generic kernel objects
5  *
6  * Copyright (c) 2002-2003 Patrick Mochel <mochel@osdl.org>
7  * Copyright (c) 2006-2007 Greg Kroah-Hartman <greg@kroah.com>
8  * Copyright (c) 2006-2007 Novell Inc.
9  *
10  * Please see the file Documentation/kobject.txt for critical information
11  * about using the kobject interface.
12  */
13
14 #include <linux/kobject.h>
15 #include <linux/string.h>
16 #include <linux/export.h>
17 #include <linux/stat.h>
18 #include <linux/slab.h>
19 #include <linux/random.h>
20
21 static DEFINE_SPINLOCK(kobj_ns_type_lock);
22 static const struct kobj_ns_type_operations *kobj_ns_ops_tbl[KOBJ_NS_TYPES];
23
24 #define kobj_ns_grab_current LINUX_BACKPORT(kobj_ns_grab_current)
25 void *kobj_ns_grab_current(enum kobj_ns_type type)
26 {
27         void *ns = NULL;
28
29         spin_lock(&kobj_ns_type_lock);
30         if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) &&
31             kobj_ns_ops_tbl[type])
32                 ns = kobj_ns_ops_tbl[type]->grab_current_ns();
33         spin_unlock(&kobj_ns_type_lock);
34
35         return ns;
36 }
37 EXPORT_SYMBOL_GPL(kobj_ns_grab_current);
38
39 #define kobj_ns_drop LINUX_BACKPORT(kobj_ns_drop)
40 void kobj_ns_drop(enum kobj_ns_type type, void *ns)
41 {
42         spin_lock(&kobj_ns_type_lock);
43         if ((type > KOBJ_NS_TYPE_NONE) && (type < KOBJ_NS_TYPES) &&
44             kobj_ns_ops_tbl[type] && kobj_ns_ops_tbl[type]->drop_ns)
45                 kobj_ns_ops_tbl[type]->drop_ns(ns);
46         spin_unlock(&kobj_ns_type_lock);
47 }
48 EXPORT_SYMBOL_GPL(kobj_ns_drop);
49 #endif