X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fchar%2Fmbcs.c;h=1aeaaba680d22e1e943995efeff6b0ed671c5fe8;hb=f283d22713b0bdc147097c92c9b45855339cf1c8;hp=83bef4efe37636869f418756462516d00a4f3ccd;hpb=b74b953b998bcc2db91b694446f3a2619ec32de6;p=~andy%2Flinux diff --git a/drivers/char/mbcs.c b/drivers/char/mbcs.c index 83bef4efe37..1aeaaba680d 100644 --- a/drivers/char/mbcs.c +++ b/drivers/char/mbcs.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -42,6 +41,7 @@ #else #define DBG(fmt...) #endif +static DEFINE_MUTEX(mbcs_mutex); static int mbcs_major; static LIST_HEAD(soft_list); @@ -385,19 +385,19 @@ static int mbcs_open(struct inode *ip, struct file *fp) struct mbcs_soft *soft; int minor; - lock_kernel(); + mutex_lock(&mbcs_mutex); minor = iminor(ip); /* Nothing protects access to this list... */ list_for_each_entry(soft, &soft_list, list) { if (soft->nasid == minor) { fp->private_data = soft->cxdev; - unlock_kernel(); + mutex_unlock(&mbcs_mutex); return 0; } } - unlock_kernel(); + mutex_unlock(&mbcs_mutex); return -ENODEV; }