A mutex should be used here (and it's name even says that) so remove the hiding of a semaphore behind a #define and use a real mutex that the kernel provides. Signed-off-by: Giedrius Statkevičius <giedrius.statkevicius@xxxxxxxxx> --- drivers/staging/dgnc/dgnc_tty.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c index ce4187f..0b9bed4 100644 --- a/drivers/staging/dgnc/dgnc_tty.c +++ b/drivers/staging/dgnc/dgnc_tty.c @@ -42,16 +42,12 @@ #include "dgnc_sysfs.h" #include "dgnc_utils.h" -#define init_MUTEX(sem) sema_init(sem, 1) -#define DECLARE_MUTEX(name) \ - struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1) - /* * internal variables */ static struct dgnc_board *dgnc_BoardsByMajor[256]; static unsigned char *dgnc_TmpWriteBuf; -static DECLARE_MUTEX(dgnc_TmpWriteSem); +static DEFINE_MUTEX(dgnc_TmpWriteSem); /* * Default transparent print information. @@ -1797,7 +1793,7 @@ static int dgnc_tty_write(struct tty_struct *tty, * the board. */ /* we're allowed to block if it's from_user */ - if (down_interruptible(&dgnc_TmpWriteSem)) + if (mutex_lock_interruptible(&dgnc_TmpWriteSem)) return -EINTR; /* @@ -1807,7 +1803,7 @@ static int dgnc_tty_write(struct tty_struct *tty, count -= copy_from_user(dgnc_TmpWriteBuf, (const unsigned char __user *) buf, count); if (!count) { - up(&dgnc_TmpWriteSem); + mutex_unlock(&dgnc_TmpWriteSem); return -EFAULT; } @@ -1855,7 +1851,7 @@ static int dgnc_tty_write(struct tty_struct *tty, if (from_user) { spin_unlock_irqrestore(&ch->ch_lock, flags); - up(&dgnc_TmpWriteSem); + mutex_unlock(&dgnc_TmpWriteSem); } else { spin_unlock_irqrestore(&ch->ch_lock, flags); } -- 2.3.5 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel