LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Leilei Zhao <leilei.zhao@atmel.com> To: <nicolas.ferre@atmel.com>, <gregkh@linuxfoundation.org>, <linux-serial@vger.kernel.org>, <jslaby@suse.cz> Cc: <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, Leilei Zhao <leilei.zhao@atmel.com> Subject: [PATCH 5/5] tty/serial: at91: correct the usage of tasklet Date: Thu, 26 Feb 2015 14:55:25 +0800 [thread overview] Message-ID: <1424933725-16242-6-git-send-email-leilei.zhao@atmel.com> (raw) In-Reply-To: <1424933725-16242-1-git-send-email-leilei.zhao@atmel.com> The tasklet may be scheduled and executed after serial port was shutdown, for example, DMA rx callback will schedule the tasklet while serial port is shutting down, especially serial port is sending and receiving data in a higher baud rate and it's killed by external program. In this case, tasklet_kill can only clear the current scheduling out, so tasklet should be disabled to prevent being executed in later scheduling. Otherwise, the tasklet executed after serial port was shutdown can lead to kernel crash. Signed-off-by: Leilei Zhao <leilei.zhao@atmel.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> --- drivers/tty/serial/atmel_serial.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c index 8d28210..39ec278 100644 --- a/drivers/tty/serial/atmel_serial.c +++ b/drivers/tty/serial/atmel_serial.c @@ -1755,6 +1755,8 @@ static int atmel_startup(struct uart_port *port) if (retval) goto free_irq; + tasklet_enable(&atmel_port->tasklet); + /* * Initialize DMA (if necessary) */ @@ -1858,6 +1860,7 @@ static void atmel_shutdown(struct uart_port *port) * Clear out any scheduled tasklets before * we destroy the buffers */ + tasklet_disable(&atmel_port->tasklet); tasklet_kill(&atmel_port->tasklet); /* @@ -2251,6 +2254,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port, tasklet_init(&atmel_port->tasklet, atmel_tasklet_func, (unsigned long)port); + tasklet_disable(&atmel_port->tasklet); memset(&atmel_port->rx_ring, 0, sizeof(atmel_port->rx_ring)); -- 1.7.9.5
prev parent reply other threads:[~2015-02-26 7:04 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-02-26 6:55 [PATCH 0/5] tty/serial: at91: fix bugs when using multiple serials Leilei Zhao 2015-02-26 6:55 ` [PATCH 1/5] tty/serial: at91: correct check of buf used in DMA Leilei Zhao 2015-02-26 9:29 ` Jiri Slaby 2015-02-27 7:38 ` Zhao, Leilei 2015-02-26 6:55 ` [PATCH 2/5] tty/serial: at91: correct buffer size " Leilei Zhao 2015-02-26 6:55 ` [PATCH 3/5] tty/serial: at91: revise the return type of atmel_init_property Leilei Zhao 2015-02-26 6:55 ` [PATCH 4/5] tty/serial: at91: set ops in property init each time Leilei Zhao 2015-02-26 6:55 ` Leilei Zhao [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1424933725-16242-6-git-send-email-leilei.zhao@atmel.com \ --to=leilei.zhao@atmel.com \ --cc=gregkh@linuxfoundation.org \ --cc=jslaby@suse.cz \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=nicolas.ferre@atmel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).