| From a9df21e34b422f79d9a9fa5c3eff8c2a53491be6 Mon Sep 17 00:00:00 2001 |
| From: Adam Wallis <awallis@codeaurora.org> |
| Date: Thu, 2 Nov 2017 08:53:30 -0400 |
| Subject: dmaengine: dmatest: warn user when dma test times out |
| |
| From: Adam Wallis <awallis@codeaurora.org> |
| |
| commit a9df21e34b422f79d9a9fa5c3eff8c2a53491be6 upstream. |
| |
| Commit adfa543e7314 ("dmatest: don't use set_freezable_with_signal()") |
| introduced a bug (that is in fact documented by the patch commit text) |
| that leaves behind a dangling pointer. Since the done_wait structure is |
| allocated on the stack, future invocations to the DMATEST can produce |
| undesirable results (e.g., corrupted spinlocks). Ideally, this would be |
| cleaned up in the thread handler, but at the very least, the kernel |
| is left in a very precarious scenario that can lead to some long debug |
| sessions when the crash comes later. |
| |
| Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=197605 |
| Signed-off-by: Adam Wallis <awallis@codeaurora.org> |
| Signed-off-by: Vinod Koul <vinod.koul@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/dma/dmatest.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/dma/dmatest.c |
| +++ b/drivers/dma/dmatest.c |
| @@ -702,6 +702,7 @@ static int dmatest_func(void *data) |
| * free it this time?" dancing. For now, just |
| * leave it dangling. |
| */ |
| + WARN(1, "dmatest: Kernel stack may be corrupted!!\n"); |
| dmaengine_unmap_put(um); |
| result("test timed out", total_tests, src_off, dst_off, |
| len, 0); |