#include <linux/keyctl.h>
 #include <linux/fs.h>
 #include <linux/err.h>
+#include <linux/mutex.h>
 #include <asm/uaccess.h>
 #include "internal.h"
 
 /* session keyring create vs join semaphore */
-static DECLARE_MUTEX(key_session_sem);
+static DEFINE_MUTEX(key_session_mutex);
 
 /* the root user's tracking struct */
 struct key_user root_key_user = {
        }
 
        /* allow the user to join or create a named keyring */
-       down(&key_session_sem);
+       mutex_lock(&key_session_mutex);
 
        /* look for an existing keyring of this name */
        keyring = find_keyring_by_name(name, 0);
        key_put(keyring);
 
 error2:
-       up(&key_session_sem);
+       mutex_unlock(&key_session_mutex);
 error:
        return ret;
 
 
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/fs.h>
+#include <linux/mutex.h>
 #include <linux/init.h>
 #include <linux/string.h>
 #include <linux/security.h>
 __setup("checkreqprot=", checkreqprot_setup);
 
 
-static DECLARE_MUTEX(sel_sem);
+static DEFINE_MUTEX(sel_mutex);
 
 /* global data for booleans */
 static struct dentry *bool_dir = NULL;
        ssize_t length;
        void *data = NULL;
 
-       down(&sel_sem);
+       mutex_lock(&sel_mutex);
 
        length = task_has_security(current, SECURITY__LOAD_POLICY);
        if (length)
        else
                length = count;
 out:
-       up(&sel_sem);
+       mutex_unlock(&sel_mutex);
        vfree(data);
        return length;
 }
        int cur_enforcing;
        struct inode *inode;
 
-       down(&sel_sem);
+       mutex_lock(&sel_mutex);
 
        ret = -EFAULT;
 
        *ppos = end;
        ret = count;
 out:
-       up(&sel_sem);
+       mutex_unlock(&sel_mutex);
        if (page)
                free_page((unsigned long)page);
        return ret;
        int new_value;
        struct inode *inode;
 
-       down(&sel_sem);
+       mutex_lock(&sel_mutex);
 
        length = task_has_security(current, SECURITY__SETBOOL);
        if (length)
        length = count;
 
 out:
-       up(&sel_sem);
+       mutex_unlock(&sel_mutex);
        if (page)
                free_page((unsigned long) page);
        return length;
        ssize_t length = -EFAULT;
        int new_value;
 
-       down(&sel_sem);
+       mutex_lock(&sel_mutex);
 
        length = task_has_security(current, SECURITY__SETBOOL);
        if (length)
        length = count;
 
 out:
-       up(&sel_sem);
+       mutex_unlock(&sel_mutex);
        if (page)
                free_page((unsigned long) page);
        return length;
 
 #include <linux/in.h>
 #include <linux/sched.h>
 #include <linux/audit.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
+
 #include "flask.h"
 #include "avc.h"
 #include "avc_ss.h"
 #define POLICY_RDUNLOCK read_unlock(&policy_rwlock)
 #define POLICY_WRUNLOCK write_unlock_irq(&policy_rwlock)
 
-static DECLARE_MUTEX(load_sem);
-#define LOAD_LOCK down(&load_sem)
-#define LOAD_UNLOCK up(&load_sem)
+static DEFINE_MUTEX(load_mutex);
+#define LOAD_LOCK mutex_lock(&load_mutex)
+#define LOAD_UNLOCK mutex_unlock(&load_mutex)
 
 static struct sidtab sidtab;
 struct policydb policydb;