John Keeping
e1cfd4533f
dmaengine: pl330: fix irq race with terminate_all
...
[ Upstream commit e49756544a ]
In pl330_update() when checking if a channel has been aborted, the
channel's lock is not taken, only the overall pl330_dmac lock. But in
pl330_terminate_all() the aborted flag (req_running==-1) is set under
the channel lock and not the pl330_dmac lock.
With threaded interrupts, this leads to a potential race:
pl330_terminate_all pl330_update
------------------- ------------
lock channel
entry
lock pl330
_stop channel
unlock pl330
lock pl330
check req_running != -1
req_running = -1
_start channel
Signed-off-by: John Keeping <john@metanate.com >
Signed-off-by: Vinod Koul <vkoul@kernel.org >
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2018-09-26 08:38:00 +02:00
..
2017-11-02 11:10:55 +01:00
2018-09-15 09:45:30 +02:00
2018-05-01 12:58:21 -07:00
2018-09-19 22:43:35 +02:00
2018-09-19 22:43:41 +02:00
2018-07-22 14:28:43 +02:00
2018-07-03 11:24:56 +02:00
2018-09-05 09:26:42 +02:00
2017-11-02 11:10:55 +01:00
2018-09-19 22:43:43 +02:00
2018-09-19 22:43:38 +02:00
2018-08-03 07:50:31 +02:00
2018-09-05 09:26:42 +02:00
2018-09-19 22:43:43 +02:00
2018-09-26 08:37:59 +02:00
2018-06-21 04:02:40 +09:00
2018-09-09 19:55:58 +02:00
2018-07-03 11:24:51 +02:00
2018-09-09 19:56:02 +02:00
2018-08-24 13:09:08 +02:00
2018-04-12 12:32:13 +02:00
2017-11-02 11:10:55 +01:00
2018-09-26 08:38:00 +02:00
2018-06-05 11:41:57 +02:00
2018-08-24 13:08:55 +02:00
2017-11-02 11:10:55 +01:00
2018-09-09 19:55:56 +02:00
2018-04-26 11:02:03 +02:00
2018-09-19 22:43:40 +02:00
2017-11-02 11:10:55 +01:00
2018-05-01 12:58:24 -07:00
2017-08-28 17:15:16 +02:00
2018-09-19 22:43:42 +02:00
2018-09-19 22:43:45 +02:00
2018-09-15 09:45:35 +02:00
2017-11-02 11:10:55 +01:00
2018-09-19 22:43:40 +02:00
2018-09-05 09:26:40 +02:00
2017-11-02 11:10:55 +01:00
2018-06-05 11:41:59 +02:00
2018-09-19 22:43:38 +02:00
2018-05-30 07:52:34 +02:00
2018-08-09 12:16:39 +02:00
2018-09-09 19:55:56 +02:00
2018-09-19 22:43:45 +02:00
2018-09-19 22:43:43 +02:00
2018-09-26 08:37:59 +02:00
2018-09-15 09:45:29 +02:00
2018-08-22 07:46:11 +02:00
2018-03-19 08:42:50 +01:00
2018-09-15 09:45:35 +02:00
2018-09-19 22:43:41 +02:00
2018-09-09 19:55:54 +02:00
2017-11-02 11:10:55 +01:00
2018-09-19 22:43:43 +02:00
2018-09-26 08:38:00 +02:00
2018-08-03 07:50:38 +02:00
2017-11-02 11:10:55 +01:00
2018-05-25 16:17:47 +02:00
2018-09-19 22:43:44 +02:00
2018-09-19 22:43:39 +02:00
2018-09-09 19:55:53 +02:00
2018-09-19 22:43:48 +02:00
2018-01-17 09:45:27 +01:00
2018-09-26 08:37:59 +02:00
2018-08-24 13:09:06 +02:00
2018-04-26 11:02:13 +02:00
2017-11-02 11:10:55 +01:00
2018-09-09 19:56:01 +02:00
2018-09-05 09:26:36 +02:00
2018-08-24 13:09:14 +02:00
2018-07-03 11:24:52 +02:00
2017-11-02 11:10:55 +01:00
2018-05-30 07:52:28 +02:00
2018-04-08 14:26:31 +02:00
2018-09-19 22:43:37 +02:00
2018-05-30 07:52:39 +02:00
2018-08-24 13:08:59 +02:00
2018-08-15 18:12:48 +02:00
2018-09-19 22:43:42 +02:00
2018-09-15 09:45:28 +02:00
2017-11-02 11:10:55 +01:00
2018-09-05 09:26:42 +02:00
2017-09-08 18:26:51 -07:00
2018-07-25 11:25:10 +02:00
2018-09-15 09:45:27 +02:00
2017-12-14 09:53:08 +01:00
2017-11-02 11:10:55 +01:00
2018-08-03 07:50:40 +02:00
2018-06-21 04:02:48 +09:00
2017-11-02 11:10:55 +01:00
2018-09-19 22:43:41 +02:00
2018-09-09 19:55:57 +02:00
2018-09-15 09:45:30 +02:00
2017-11-02 11:10:55 +01:00
2018-09-19 22:43:42 +02:00
2017-07-20 11:37:58 +02:00
2017-11-02 11:10:55 +01:00
2018-08-24 13:09:19 +02:00
2018-09-09 19:55:53 +02:00
2017-08-28 13:52:22 +02:00
2017-11-02 11:10:55 +01:00
2018-09-15 09:45:36 +02:00
2018-09-19 22:43:39 +02:00
2018-06-21 04:02:54 +09:00
2018-08-03 07:50:37 +02:00
2018-04-24 09:36:29 +02:00
2018-09-19 22:43:40 +02:00
2018-09-19 22:43:40 +02:00
2018-09-26 08:37:58 +02:00
2017-11-02 11:10:55 +01:00
2018-08-03 07:50:23 +02:00
2018-09-15 09:45:25 +02:00
2018-09-09 19:56:01 +02:00
2017-08-29 08:52:51 -05:00
2018-09-15 09:45:27 +02:00
2017-11-02 11:10:55 +01:00
2018-07-03 11:24:47 +02:00
2018-08-03 07:50:24 +02:00
2018-09-15 09:45:30 +02:00
2018-05-30 07:52:30 +02:00
2017-11-02 11:10:55 +01:00
2018-02-25 11:07:53 +01:00