max3110: Fix up port->tty backreferencing

We want to keep refcounts properly on this against hangup.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Alan Cox 2011-08-26 11:26:00 +01:00 коммит произвёл Greg Kroah-Hartman
Родитель 51808f051e
Коммит da4e40e271
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -347,7 +347,7 @@ receive_chars(struct uart_max3110 *max, unsigned short *str, int len)
if (!port->state) if (!port->state)
return 0; return 0;
tty = port->state->port.tty; tty = tty_port_tty_get(&port->state->port);
if (!tty) if (!tty)
return 0; return 0;
@ -364,8 +364,10 @@ receive_chars(struct uart_max3110 *max, unsigned short *str, int len)
} }
} }
if (!w) if (!w) {
tty_kref_put(tty);
return 0; return 0;
}
for (r = 0; w; r += usable, w -= usable) { for (r = 0; w; r += usable, w -= usable) {
usable = tty_buffer_request_room(tty, w); usable = tty_buffer_request_room(tty, w);
@ -375,6 +377,7 @@ receive_chars(struct uart_max3110 *max, unsigned short *str, int len)
} }
} }
tty_flip_buffer_push(tty); tty_flip_buffer_push(tty);
tty_kref_put(tty);
return r; return r;
} }