Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 304151
b: refs/heads/master
c: 85bbc00
h: refs/heads/master
i:
  304149: 77881a0
  304147: 9b0c5f7
  304143: 90c8d0a
v: v3
  • Loading branch information
Jiri Slaby authored and Greg Kroah-Hartman committed Apr 9, 2012
1 parent 045f254 commit 1ecb0a3
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f3d9f25097b62eaeb9e5b71358b863c7bf54c600
refs/heads/master: 85bbc003b24335e253a392f6a9874103b77abb36
36 changes: 15 additions & 21 deletions trunk/drivers/tty/hvc/hvc_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -323,11 +323,10 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
} /* else count == 0 */

tty->driver_data = hp;

hp->tty = tty_kref_get(tty);

spin_unlock_irqrestore(&hp->lock, flags);

tty_port_tty_set(&hp->port, tty);

if (hp->ops->notifier_add)
rc = hp->ops->notifier_add(hp, hp->data);

Expand All @@ -338,9 +337,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
* tty fields and return the kref reference.
*/
if (rc) {
spin_lock_irqsave(&hp->lock, flags);
hp->tty = NULL;
spin_unlock_irqrestore(&hp->lock, flags);
tty_port_tty_set(&hp->port, NULL);
tty_kref_put(tty);
tty->driver_data = NULL;
tty_port_put(&hp->port);
Expand Down Expand Up @@ -373,9 +370,9 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
spin_lock_irqsave(&hp->lock, flags);

if (--hp->count == 0) {
/* We are done with the tty pointer now. */
hp->tty = NULL;
spin_unlock_irqrestore(&hp->lock, flags);
/* We are done with the tty pointer now. */
tty_port_tty_set(&hp->port, NULL);

if (hp->ops->notifier_del)
hp->ops->notifier_del(hp, hp->data);
Expand Down Expand Up @@ -427,9 +424,8 @@ static void hvc_hangup(struct tty_struct *tty)
temp_open_count = hp->count;
hp->count = 0;
hp->n_outbuf = 0;
hp->tty = NULL;

spin_unlock_irqrestore(&hp->lock, flags);
tty_port_tty_set(&hp->port, NULL);

if (hp->ops->notifier_hangup)
hp->ops->notifier_hangup(hp, hp->data);
Expand Down Expand Up @@ -526,13 +522,12 @@ static void hvc_set_winsz(struct work_struct *work)

hp = container_of(work, struct hvc_struct, tty_resize);

spin_lock_irqsave(&hp->lock, hvc_flags);
if (!hp->tty) {
spin_unlock_irqrestore(&hp->lock, hvc_flags);
tty = tty_port_tty_get(&hp->port);
if (!tty)
return;
}
ws = hp->ws;
tty = tty_kref_get(hp->tty);

spin_lock_irqsave(&hp->lock, hvc_flags);
ws = hp->ws;
spin_unlock_irqrestore(&hp->lock, hvc_flags);

tty_do_resize(tty, &ws);
Expand Down Expand Up @@ -601,7 +596,7 @@ int hvc_poll(struct hvc_struct *hp)
}

/* No tty attached, just skip */
tty = tty_kref_get(hp->tty);
tty = tty_port_tty_get(&hp->port);
if (tty == NULL)
goto bail;

Expand Down Expand Up @@ -681,8 +676,7 @@ int hvc_poll(struct hvc_struct *hp)

tty_flip_buffer_push(tty);
}
if (tty)
tty_kref_put(tty);
tty_kref_put(tty);

return poll_mask;
}
Expand Down Expand Up @@ -880,9 +874,9 @@ int hvc_remove(struct hvc_struct *hp)
unsigned long flags;
struct tty_struct *tty;

spin_lock_irqsave(&hp->lock, flags);
tty = tty_kref_get(hp->tty);
tty = tty_port_tty_get(&hp->port);

spin_lock_irqsave(&hp->lock, flags);
if (hp->index < MAX_NR_HVC_CONSOLES)
vtermnos[hp->index] = -1;

Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/tty/hvc/hvc_console.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ struct hvc_struct {
struct tty_port port;
spinlock_t lock;
int index;
struct tty_struct *tty;
int count;
int do_wakeup;
char *outbuf;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/tty/hvc/hvsi_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ int hvsilib_open(struct hvsi_priv *pv, struct hvc_struct *hp)
pr_devel("HVSI@%x: open !\n", pv->termno);

/* Keep track of the tty data structure */
pv->tty = tty_kref_get(hp->tty);
pv->tty = tty_port_tty_get(&hp->port);

hvsilib_establish(pv);

Expand Down

0 comments on commit 1ecb0a3

Please sign in to comment.