Commit 7fdc2893 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman

Char: nozomi, remove useless tty_sem

tty_sem used to protect tty open count. This was removed in 33dd474a
but the lock remained in place.

So remove it completely as it protects nothing now.

Also this solves Mac's problem with inatomic operation called from
atomic context (ppp):
BUG: scheduling while atomic: firefox-bin/1992/0x10000800
Modules linked in: ...
Pid: 1992, comm: firefox-bin Not tainted 2.6.38 #1
Call Trace:
...
 [] ? mutex_lock+0xe/0x21
 [] ? ntty_write+0x5d/0x192 [nozomi]
 [] ? __mod_timer.clone.30+0xbe/0xcc
 [] ? check_preempt_curr+0x60/0x6d
 [] ? __nf_ct_refresh_acct+0x75/0xbe
 [] ? ppp_async_push+0xa9/0x3bd [ppp_async]
 [] ? ppp_async_send+0x34/0x40 [ppp_async]
 [] ? ppp_push+0x6c/0x4f9 [ppp_generic]
...
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Reported-by: default avatarMac <kmac@poczta.fm>
Tested-by: default avatarGerald Pfeifer <gerald@pfeifer.com>
Reviewed-by: default avatarJack Stone <jwjstone@fastmail.fm>
Cc: Alan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 6d742f65
No related merge requests found
...@@ -364,8 +364,6 @@ struct port { ...@@ -364,8 +364,6 @@ struct port {
u8 toggle_ul; u8 toggle_ul;
u16 token_dl; u16 token_dl;
/* mutex to ensure one access patch to this port */
struct mutex tty_sem;
wait_queue_head_t tty_wait; wait_queue_head_t tty_wait;
struct async_icount tty_icount; struct async_icount tty_icount;
...@@ -1474,7 +1472,6 @@ static int __devinit nozomi_card_init(struct pci_dev *pdev, ...@@ -1474,7 +1472,6 @@ static int __devinit nozomi_card_init(struct pci_dev *pdev,
struct device *tty_dev; struct device *tty_dev;
struct port *port = &dc->port[i]; struct port *port = &dc->port[i];
port->dc = dc; port->dc = dc;
mutex_init(&port->tty_sem);
tty_port_init(&port->port); tty_port_init(&port->port);
port->port.ops = &noz_tty_port_ops; port->port.ops = &noz_tty_port_ops;
tty_dev = tty_register_device(ntty_driver, dc->index_start + i, tty_dev = tty_register_device(ntty_driver, dc->index_start + i,
...@@ -1688,8 +1685,6 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer, ...@@ -1688,8 +1685,6 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer,
if (!dc || !port) if (!dc || !port)
return -ENODEV; return -ENODEV;
mutex_lock(&port->tty_sem);
rval = kfifo_in(&port->fifo_ul, (unsigned char *)buffer, count); rval = kfifo_in(&port->fifo_ul, (unsigned char *)buffer, count);
/* notify card */ /* notify card */
...@@ -1714,7 +1709,6 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer, ...@@ -1714,7 +1709,6 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer,
spin_unlock_irqrestore(&dc->spin_mutex, flags); spin_unlock_irqrestore(&dc->spin_mutex, flags);
exit: exit:
mutex_unlock(&port->tty_sem);
return rval; return rval;
} }
...@@ -1733,11 +1727,9 @@ static int ntty_write_room(struct tty_struct *tty) ...@@ -1733,11 +1727,9 @@ static int ntty_write_room(struct tty_struct *tty)
int room = 4096; int room = 4096;
const struct nozomi *dc = get_dc_by_tty(tty); const struct nozomi *dc = get_dc_by_tty(tty);
if (dc) { if (dc)
mutex_lock(&port->tty_sem);
room = kfifo_avail(&port->fifo_ul); room = kfifo_avail(&port->fifo_ul);
mutex_unlock(&port->tty_sem);
}
return room; return room;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment