[RFC 9/13] Char: nozomi, lock cleanup

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Frank Seidel <fseidel@...>
Date: Friday, November 9, 2007 - 7:48 pm

nozomi, lock cleanup

- semaphore is deprecated, use mutex instead
- don't return -ERESTARTSYS when signal might not be pending since it's not
  permitted (unknown retval mioght reach userspace)
- don't lock interruptible in close or the card might not be stopped on last
  close

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>

---
commit 19a0196a97ed70efdc421b359e28684e058d7121
tree 1c65691920ac6efddc7d9e221ee302a0b32b2831
parent d0b01ce89a7b18ba37ea6192eea6a98cdc01d62e
author Jiri Slaby <jirislaby@gmail.com> Mon, 05 Nov 2007 13:53:39 +0100
committer Jiri Slaby <jirislaby@gmail.com> Sat, 10 Nov 2007 00:13:46 +0100

 drivers/char/nozomi.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c
index 4a3ab38..2c4d388 100644
--- a/drivers/char/nozomi.c
+++ b/drivers/char/nozomi.c
@@ -406,7 +406,7 @@ struct port {
 
 	struct tty_struct *tty;
 	int tty_open_count;
-	struct semaphore tty_sem;
+	struct mutex tty_sem;
 	wait_queue_head_t tty_wait;
 	struct async_icount tty_icount;
 };
@@ -1560,7 +1560,7 @@ static int __devinit nozomi_card_init(struct pci_dev *pdev,
 	dc->index_start = ndev_idx * NOZOMI_MAX_PORTS;
 	ndevs[ndev_idx] = dc;
 	for (i = 0; i < NOZOMI_MAX_PORTS; i++) {
-		init_MUTEX(&dc->port[i].tty_sem);
+		mutex_init(&dc->port[i].tty_sem);
 		dc->port[i].tty_open_count = 0;
 		dc->port[i].tty = NULL;
 		tty_register_device(ntty_driver, dc->index_start + i,
@@ -1687,7 +1687,7 @@ static int ntty_open(struct tty_struct *tty, struct file *file)
 	if (!port || !dc)
 		return -ENODEV;
 
-	if (down_interruptible(&port->tty_sem))
+	if (mutex_lock_interruptible(&port->tty_sem))
 		return -ERESTARTSYS;
 
 	port->tty_open_count++;
@@ -1706,7 +1706,7 @@ static int ntty_open(struct tty_struct *tty, struct file *file)
 		spin_unlock_irqrestore(&dc->spin_mutex, flags);
 	}
 
-	up(&port->tty_sem);
+	mutex_unlock(&port->tty_sem);
 
 	return 0;
 }
@@ -1721,8 +1721,7 @@ static void ntty_close(struct tty_struct *tty, struct file *file)
 	if (!dc || !port)
 		return;
 
-	if (down_interruptible(&port->tty_sem))
-		return;
+	mutex_lock(&port->tty_sem);
 
 	if (!port->tty_open_count)
 		goto exit;
@@ -1739,7 +1738,7 @@ static void ntty_close(struct tty_struct *tty, struct file *file)
 	}
 
 exit:
-	up(&port->tty_sem);
+	mutex_unlock(&port->tty_sem);
 }
 
 /*
@@ -1759,14 +1758,14 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer,
 	if (!dc || !port)
 		return -ENODEV;
 
-	if (unlikely(down_trylock(&port->tty_sem))) {
+	if (unlikely(mutex_trylock(&port->tty_sem))) {
 		/*
 		 * must test lock as tty layer wraps calls
 		 * to this function with BKL
 		 */
 		dev_err(&dc->pdev->dev, "Would have deadlocked - "
-			"return ERESTARTSYS\n");
-		return -ERESTARTSYS;
+			"return EAGAIN\n");
+		return -EAGAIN;
 	}
 
 	if (unlikely(!port->tty_open_count)) {
@@ -1798,7 +1797,7 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer,
 	spin_unlock_irqrestore(&dc->spin_mutex, flags);
 
 exit:
-	up(&port->tty_sem);
+	mutex_unlock(&port->tty_sem);
 	return rval;
 }
 
@@ -1816,7 +1815,7 @@ static int ntty_write_room(struct tty_struct *tty)
 
 	if (!dc || !port)
 		return 0;
-	if (down_trylock(&port->tty_sem))
+	if (mutex_trylock(&port->tty_sem))
 		return 0;
 
 	if (!port->tty_open_count)
@@ -1825,7 +1824,7 @@ static int ntty_write_room(struct tty_struct *tty)
 	room = port->fifo_ul->size - __kfifo_len(port->fifo_ul);
 
 exit:
-	up(&port->tty_sem);
+	mutex_unlock(&port->tty_sem);
 	return room;
 }
 
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC 1/13] Char: nozomi, remove unneded stuff, Jiri Slaby, (Fri Nov 9, 7:43 pm)
Re: [RFC 1/13] Char: nozomi, remove unneded stuff, Frank Seidel, (Sat Nov 10, 11:41 am)
Re: [RFC 1/13] Char: nozomi, remove unneded stuff, Jiri Slaby, (Sat Nov 10, 11:55 am)
[RFC 13/13] Char: nozomi, cleanup read and write, Jiri Slaby, (Fri Nov 9, 7:51 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Adrian Bunk, (Sat Nov 10, 12:15 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Jiri Slaby, (Sat Nov 10, 6:04 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Adrian Bunk, (Mon Nov 12, 3:54 am)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Mon Nov 12, 5:43 am)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Sat Nov 10, 10:37 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Sun Nov 11, 12:02 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Sat Nov 10, 11:43 am)
[RFC 11/13] Char: nozomi, remove unused includes, Jiri Slaby, (Fri Nov 9, 7:50 pm)
Re: [RFC 11/13] Char: nozomi, remove unused includes, Frank Seidel, (Sat Nov 10, 11:43 am)
[RFC! 10/13] Char: nozomi, fix tty_flip_buffer_push, Jiri Slaby, (Fri Nov 9, 7:49 pm)
Re: [RFC! 10/13] Char: nozomi, fix tty_flip_buffer_push, Frank Seidel, (Sat Nov 10, 11:43 am)
[RFC 9/13] Char: nozomi, lock cleanup, Jiri Slaby, (Fri Nov 9, 7:48 pm)
Re: [RFC 9/13] Char: nozomi, lock cleanup, Frank Seidel, (Sat Nov 10, 11:42 am)
[RFC 8/13] Char: nozomi, tty cleanup, Jiri Slaby, (Fri Nov 9, 7:48 pm)
Re: [RFC 8/13] Char: nozomi, tty cleanup, Frank Seidel, (Mon Nov 12, 2:43 pm)
Re: [RFC 8/13] Char: nozomi, tty cleanup, Frank Seidel, (Sat Nov 10, 11:42 am)
[RFC 7/13] Char: nozomi, remove struct irq, Jiri Slaby, (Fri Nov 9, 7:47 pm)
Re: [RFC 7/13] Char: nozomi, remove struct irq, Frank Seidel, (Mon Nov 12, 11:11 am)
Re: [RFC 7/13] Char: nozomi, remove struct irq, Frank Seidel, (Sat Nov 10, 11:42 am)
[RFC 5/13] Char: nozomi, ioctls cleanup, Jiri Slaby, (Fri Nov 9, 7:46 pm)
Re: [RFC 5/13] Char: nozomi, ioctls cleanup, Frank Seidel, (Sat Nov 10, 11:41 am)
[RFC 4/13] Char: nozomi, tty index cleanup, Jiri Slaby, (Fri Nov 9, 7:45 pm)
Re: [RFC 4/13] Char: nozomi, tty index cleanup, Frank Seidel, (Sat Nov 10, 11:41 am)
Re: [RFC 4/13] Char: nozomi, tty index cleanup, Jiri Slaby, (Sat Nov 10, 11:50 am)
[RFC 3/13] Char: nozomi, fix fail paths, Jiri Slaby, (Fri Nov 9, 7:44 pm)
Re: [RFC 3/13] Char: nozomi, fix fail paths, Frank Seidel, (Sat Nov 10, 11:41 am)
[RFC 2/13] Char: nozomi, expand some functions, Jiri Slaby, (Fri Nov 9, 7:44 pm)
Re: [RFC 2/13] Char: nozomi, expand some functions, Frank Seidel, (Sat Nov 10, 11:41 am)