Re: [PATCH 12/15] tty: serial: switch from circ_buf to kfifo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 16. 04. 24, 5:24, Pengfei Xu wrote:
On 2024-04-05 at 08:08:23 +0200, Jiri Slaby (SUSE) wrote:
Switch from struct circ_buf to proper kfifo. kfifo provides much better
API, esp. when wrap-around of the buffer needs to be taken into account.
Look at pl011_dma_tx_refill() or cpm_uart_tx_pump() changes for example.
...
Greeting!
I used syzkaller and Internal v6.9-rc4 kernel which include Linux next kernel,
and found deadlock in console_flush_all issue, bisected the commit is:
"
1788cf6a91d9 tty: serial: switch from circ_buf to kfifo
"
...
[   17.841628] ======================================================
[   17.841631] WARNING: possible circular locking dependency detected
[   17.841632] 6.9.0-rc4-df0b4fecf9eb+ #1 Not tainted
[   17.841636] ------------------------------------------------------
[   17.841638] repro/726 is trying to acquire lock:
[   17.841641] ffffffff86d6da80 (console_owner){....}-{0:0}, at: console_flush_all+0x51a/0xc40
[   17.841665]
[   17.841665] but task is already holding lock:
[   17.841667] ffffffff89aa52b8 (&port_lock_key){-...}-{2:2}, at: uart_put_char+0x118/0x510
[   17.841684]
[   17.841684] which lock already depends on the new lock.
...
[   17.842133] stack backtrace:
...
[   17.842461]  handle_bug+0xa2/0x130
[   17.842469]  exc_invalid_op+0x3c/0x80
[   17.842479]  asm_exc_invalid_op+0x1f/0x30
[   17.842487] RIP: 0010:uart_put_char+0x3ac/0x510

So you hit a "WARNING" (see below). And printing pretty much anything (like the WARNING report) from this point inside uart_put_char() will lead to this deadlock.

...
[   17.879899] WARNING: CPU: 0 PID: 726 at drivers/tty/serial/serial_core.c:561 uart_put_char+0x3ac/0x510

This is the real thing/root cause of the above.

WARN_ON_ONCE(!state->port.xmit_buf)) was hit in uart_put_char().

Let me see how kfifo changed xmit_buf handling.

Hope reproduced code and bisection is helpful.

Thanks, let me investigate.

--
js
suse labs





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux