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:
Родитель
51808f051e
Коммит
da4e40e271
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче