/* The netlink socket is only to be read by 1 CPU, which lets us assume
  * that list additions and deletions never happen simultaneously in
  * auditsc.c */
-DECLARE_MUTEX(audit_netlink_sem);
+DEFINE_MUTEX(audit_netlink_mutex);
 
 /* AUDIT_BUFSIZ is the size of the temporary buffer used for formatting
  * audit records.  Since printk uses a 1024 byte buffer, this buffer
        struct sk_buff  *skb;
        unsigned int qlen;
 
-       down(&audit_netlink_sem);
+       mutex_lock(&audit_netlink_mutex);
 
        for (qlen = skb_queue_len(&sk->sk_receive_queue); qlen; qlen--) {
                skb = skb_dequeue(&sk->sk_receive_queue);
                audit_receive_skb(skb);
                kfree_skb(skb);
        }
-       up(&audit_netlink_sem);
+       mutex_unlock(&audit_netlink_mutex);
 }
 
 
 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <linux/mutex.h>
 #include <linux/fs.h>
 #include <linux/audit.h>
 
                                             void *payload, int size);
 extern void                audit_log_lost(const char *message);
 extern void                audit_panic(const char *message);
-extern struct semaphore audit_netlink_sem;
+extern struct mutex audit_netlink_mutex;
 
 }
 
 /* Add rule to given filterlist if not a duplicate.  Protected by
- * audit_netlink_sem. */
+ * audit_netlink_mutex. */
 static inline int audit_add_rule(struct audit_entry *entry,
                                  struct list_head *list)
 {
 }
 
 /* Remove an existing rule from filterlist.  Protected by
- * audit_netlink_sem. */
+ * audit_netlink_mutex. */
 static inline int audit_del_rule(struct audit_entry *entry,
                                 struct list_head *list)
 {
        seq = dest[1];
        kfree(dest);
 
-       down(&audit_netlink_sem);
+       mutex_lock(&audit_netlink_mutex);
 
        /* The *_rcu iterators not needed here because we are
-          always called with audit_netlink_sem held. */
+          always called with audit_netlink_mutex held. */
        for (i=0; i<AUDIT_NR_FILTERS; i++) {
                list_for_each_entry(entry, &audit_filter_list[i], list) {
                        struct audit_rule *rule;
        }
        audit_send_reply(pid, seq, AUDIT_LIST, 1, 1, NULL, 0);
        
-       up(&audit_netlink_sem);
+       mutex_unlock(&audit_netlink_mutex);
        return 0;
 }
 
        seq = dest[1];
        kfree(dest);
 
-       down(&audit_netlink_sem);
+       mutex_lock(&audit_netlink_mutex);
 
        /* The *_rcu iterators not needed here because we are
-          always called with audit_netlink_sem held. */
+          always called with audit_netlink_mutex held. */
        for (i=0; i<AUDIT_NR_FILTERS; i++) {
                list_for_each_entry(e, &audit_filter_list[i], list) {
                        struct audit_rule_data *data;
        }
        audit_send_reply(pid, seq, AUDIT_LIST_RULES, 1, 1, NULL, 0);
 
-       up(&audit_netlink_sem);
+       mutex_unlock(&audit_netlink_mutex);
        return 0;
 }