mirror of
https://github.com/torvalds/linux.git
synced 2026-10-25 01:05:03 +02:00
serial: revert guards in uart_wait_modem_status()
Mixing scope-based and regular cleanup is discouraged and
uart_port_deref() used by uart_wait_modem_status() falls in the latter
category.
Revert the guard conversion in preparation for fixing a hangup race.
Fixes: 56609c0500 ("serial: serial_core: use guard()s")
Cc: stable@kernel.org # 6.18
Cc: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260910130816.642699-2-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b48820de8c
commit
f658e6bcd0
|
|
@ -1213,15 +1213,16 @@ static int uart_wait_modem_status(struct uart_state *state, unsigned long arg)
|
|||
uport = uart_port_ref(state);
|
||||
if (!uport)
|
||||
return -EIO;
|
||||
scoped_guard(uart_port_lock_irq, uport) {
|
||||
memcpy(&cprev, &uport->icount, sizeof(struct uart_icount));
|
||||
uart_enable_ms(uport);
|
||||
}
|
||||
uart_port_lock_irq(uport);
|
||||
memcpy(&cprev, &uport->icount, sizeof(struct uart_icount));
|
||||
uart_enable_ms(uport);
|
||||
uart_port_unlock_irq(uport);
|
||||
|
||||
add_wait_queue(&port->delta_msr_wait, &wait);
|
||||
for (;;) {
|
||||
scoped_guard(uart_port_lock_irq, uport)
|
||||
memcpy(&cnow, &uport->icount, sizeof(struct uart_icount));
|
||||
uart_port_lock_irq(uport);
|
||||
memcpy(&cnow, &uport->icount, sizeof(struct uart_icount));
|
||||
uart_port_unlock_irq(uport);
|
||||
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user