#include "linux/completion.h"
 #include "linux/interrupt.h"
 #include "linux/list.h"
+#include "linux/mutex.h"
 #include "asm/atomic.h"
 #include "init.h"
 #include "irq_kern.h"
        return 0;
 }
 
-static DECLARE_MUTEX(ports_sem);
+static DEFINE_MUTEX(ports_mutex);
 static LIST_HEAD(ports);
 
 static void port_work_proc(struct work_struct *unused)
        struct port_dev *dev = NULL;
        int fd;
 
-       down(&ports_sem);
+       mutex_lock(&ports_mutex);
        list_for_each(ele, &ports) {
                port = list_entry(ele, struct port_list, list);
                if (port->port == port_num)
  out_free:
        kfree(port);
  out:
-       up(&ports_sem);
+       mutex_unlock(&ports_mutex);
        return dev;
 }