Re: [PATCH] serial: 8250_dw: Fix deadlock in LCR workaround

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

 



On 03/11/2015 09:26 AM, Greg Kroah-Hartman wrote:
> On Wed, Mar 11, 2015 at 09:19:16AM -0400, Peter Hurley wrote:
>> Trying to write console output from within the serial console driver
>> while the port->lock is held causes recursive deadlock:
>>
>>   CPU 0
>> spin_lock_irqsave(&port->lock)
>> printk()
>>   console_unlock()
>>     call_console_drivers()
>>       serial8250_console_write()
>>         spin_lock_irqsave(&port->lock)
>> ** DEADLOCK **
>>
>> The 8250_dw i/o accessors try to write a console error message if the
>> LCR workaround was unsuccessful. When the port->lock is already held
>> (eg., when called from serial8250_set_termios()), this deadlocks.
>>
>> Make the error message a FIXME until a general solution is devised.
>>
>> Cc: Tim Kryger <tim.kryger@xxxxxxxxx>
>> Reported-by: Zhang Zhen <zhenzhang.zhang@xxxxxxxxxx>
>> Signed-off-by: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx>
>> ---
>>  drivers/tty/serial/8250/8250_dw.c | 15 ++++++++++++---
>>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> Should this go into 4.0-final?  Are people hitting this now, or did you
> just find it by code reading?

4.0-final

>From the original reporter in the other thread titled,
"[RFC] With 8250 Designware UART, if writes to the LCR failed the kernel will hung up"

On 03/06/2015 04:11 AM, Zhang Zhen wrote:> Hi,
> 
> 	I'm testing 4.0-rc1 kernel on my board with 8250 Designware UART.(ARM Cortex-a15 single core).
> 	
> 	I found if serial is busy and writes to the LCR failed after tried 1000 times.
> 	The kernel will hung up.


--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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