[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20111018212105.GA10426@kroah.com>
Date: Tue, 18 Oct 2011 14:21:05 -0700
From: Greg KH <greg@...ah.com>
To: Doug Anderson <dianders@...omium.org>
Cc: Jiri Slaby <jirislaby@...il.com>,
Stephen Warren <swarren@...dia.com>,
Olof Johansson <olof@...om.net>,
Greg Kroah-Hartman <gregkh@...e.de>,
Alan Cox <alan@...ux.intel.com>,
Allen Martin <AMartin@...dia.com>,
Tom Warren <twarren@...dia.com>, linux-serial@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] TTY: serial_core: Fix crash if DCD drop during suspend
On Tue, Oct 11, 2011 at 05:25:44PM -0700, Doug Anderson wrote:
> This crash was showing up 100% of the time on Tegra CPUs when an
> agetty was running on the serial port and the console was not running
> on the serial port. The reason the Tegra saw it so reliably is that
> the Tegra CPU internally ties DTR to DCD/DSR. That means when we
> dropped DTR during suspend we would get always get an immediate DCD
> drop.
>
> The specific order of operations that were running:
> * uart_suspend_port() would be called to put the uart in suspend mode
> * we'd drop DTR (ops->set_mctrl(uport, 0)).
> * the DTR drop would be looped back in the CPU to be a DCD drop.
> * the DCD drop would look to the serial driver as a hangup
> * the hangup would call uart_shutdown()
> * ... suspend / resume happens ...
> * uart_resume_port() would be called and run the code in the
> (port->flags & ASYNC_SUSPENDED) block, which would startup the port
> (and enable tx again).
> * Since the UART would be available for tx, we'd immediately get
> an interrupt, eventually calling transmit_chars()
> * The transmit_chars() function would crash. The first crash would
> be a dereference of a NULL tty member, but since the port has been
> shutdown that was just a symptom.
>
> I have proposed a patch that would fix the Tegra CPUs here (see
> https://lkml.org/lkml/2011/10/11/444 - tty/serial: Prevent drop of DCD
> on suspend for Tegra UARTs). However, even with that fix it is still
> possible for systems that have an externally visible DCD line to see a
> crash if the DCD drops at just the right time during suspend: thus
> this patch is still useful.
>
> Signed-off-by: Doug Anderson <dianders@...omium.org>
> Acked-by: Alan Cox <alan@...ux.intel.com>
> ---
> v2: Updated change description and comments based on deeper digging.
This patch doesn't apply at all to the linux-next tree, can you redo it
so that I know it is correct, and resend it? (remember to keep Alan's
Ack on it.)
thanks,
greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists