dmaengine: dmatest: warn user when dma test times out
authorAdam Wallis <awallis@codeaurora.org>
Thu, 2 Nov 2017 12:53:30 +0000 (08:53 -0400)
committerVinod Koul <vinod.koul@intel.com>
Wed, 8 Nov 2017 05:54:03 +0000 (11:24 +0530)
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>
drivers/dma/dmatest.c

index 34ff53290b0378434a253b75a2c2eac4215a4fb5..47edc7fbf91f52e5259060824c38eaab69ebdb56 100644 (file)
@@ -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);