|
@@ -37,14 +37,14 @@
|
|
|
#include <net/genetlink.h>
|
|
|
#include <net/netlabel.h>
|
|
|
#include <net/cipso_ipv4.h>
|
|
|
+#include <asm/atomic.h>
|
|
|
|
|
|
#include "netlabel_domainhash.h"
|
|
|
#include "netlabel_user.h"
|
|
|
#include "netlabel_mgmt.h"
|
|
|
|
|
|
-/* NetLabel configured protocol count */
|
|
|
-static DEFINE_SPINLOCK(netlabel_mgmt_protocount_lock);
|
|
|
-static u32 netlabel_mgmt_protocount = 0;
|
|
|
+/* NetLabel configured protocol counter */
|
|
|
+atomic_t netlabel_mgmt_protocount = ATOMIC_INIT(0);
|
|
|
|
|
|
/* Argument struct for netlbl_domhsh_walk() */
|
|
|
struct netlbl_domhsh_walk_arg {
|
|
@@ -70,63 +70,6 @@ static const struct nla_policy netlbl_mgmt_genl_policy[NLBL_MGMT_A_MAX + 1] = {
|
|
|
[NLBL_MGMT_A_CV4DOI] = { .type = NLA_U32 },
|
|
|
};
|
|
|
|
|
|
-/*
|
|
|
- * NetLabel Misc Management Functions
|
|
|
- */
|
|
|
-
|
|
|
-/**
|
|
|
- * netlbl_mgmt_protocount_inc - Increment the configured labeled protocol count
|
|
|
- *
|
|
|
- * Description:
|
|
|
- * Increment the number of labeled protocol configurations in the current
|
|
|
- * NetLabel configuration. Keep track of this for use in determining if
|
|
|
- * NetLabel label enforcement should be active/enabled or not in the LSM.
|
|
|
- *
|
|
|
- */
|
|
|
-void netlbl_mgmt_protocount_inc(void)
|
|
|
-{
|
|
|
- spin_lock(&netlabel_mgmt_protocount_lock);
|
|
|
- netlabel_mgmt_protocount++;
|
|
|
- spin_unlock(&netlabel_mgmt_protocount_lock);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * netlbl_mgmt_protocount_dec - Decrement the configured labeled protocol count
|
|
|
- *
|
|
|
- * Description:
|
|
|
- * Decrement the number of labeled protocol configurations in the current
|
|
|
- * NetLabel configuration. Keep track of this for use in determining if
|
|
|
- * NetLabel label enforcement should be active/enabled or not in the LSM.
|
|
|
- *
|
|
|
- */
|
|
|
-void netlbl_mgmt_protocount_dec(void)
|
|
|
-{
|
|
|
- spin_lock(&netlabel_mgmt_protocount_lock);
|
|
|
- if (netlabel_mgmt_protocount > 0)
|
|
|
- netlabel_mgmt_protocount--;
|
|
|
- spin_unlock(&netlabel_mgmt_protocount_lock);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * netlbl_mgmt_protocount_value - Return the number of configured protocols
|
|
|
- *
|
|
|
- * Description:
|
|
|
- * Return the number of labeled protocols in the current NetLabel
|
|
|
- * configuration. This value is useful in determining if NetLabel label
|
|
|
- * enforcement should be active/enabled or not in the LSM.
|
|
|
- *
|
|
|
- */
|
|
|
-u32 netlbl_mgmt_protocount_value(void)
|
|
|
-{
|
|
|
- u32 val;
|
|
|
-
|
|
|
- rcu_read_lock();
|
|
|
- val = netlabel_mgmt_protocount;
|
|
|
- rcu_read_unlock();
|
|
|
-
|
|
|
- return val;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* NetLabel Command Handlers
|
|
|
*/
|