diff options
author | Marek Roszko <mark.roszko@gmail.com> | 2014-01-10 09:33:11 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-06 19:22:17 (GMT) |
commit | 2d328c95bef7063598b5663f2024d3e245d19ffb (patch) | |
tree | 082528509c30f5792029e7e4a25556d4f6feab81 /drivers/hwmon | |
parent | 6bdf61a056192cf6bb4cf13a1bae5e9b7bc9c4e2 (diff) | |
download | linux-fsl-qoriq-2d328c95bef7063598b5663f2024d3e245d19ffb.tar.xz |
tty/serial: at91: disable uart timer at start of shutdown
commit 8bc661bfc0c2d221e209f4205bdaaf574d50100c upstream.
The uart timer will schedule a tasklet when it fires. It is possible that it
can fire inside _shutdown before it is killed in the dma and pdc cleanup
routines. This causes a tasklet that exists after the port is shutdown, so when
the kernel finally executes it, it panics as the tty port is NULL.
This is a somewhat rare condition but its possible if a program keeps on
opening/closing the port. It has been observed in particular with systemd
boot messages that were causing a kernel panic because of this behavior.
Moving the timer deletion to the beginning of the function stops a tasklet from
being scheduled unexpectedly.
Signed-off-by: Marek Roszko <mark.roszko@gmail.com>
[nicolas.ferre@atmel.com: modify commit message, call setup_timer() in any case]
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/hwmon')
0 files changed, 0 insertions, 0 deletions