Commit 360a5cc9 authored by Paul Burton's avatar Paul Burton Committed by Kleber Sacilotto de Souza

MIPS: WARN_ON invalid DMA cache maintenance, not BUG_ON

BugLink: https://bugs.launchpad.net/bugs/1798539

[ Upstream commit d4da0e97 ]

If a driver causes DMA cache maintenance with a zero length then we
currently BUG and kill the kernel. As this is a scenario that we may
well be able to recover from, WARN & return in the condition instead.
Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/14623/
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
Signed-off-by: default avatarKleber Sacilotto de Souza <kleber.souza@canonical.com>
parent 9136b42d
...@@ -712,7 +712,8 @@ static void r4k_flush_icache_range(unsigned long start, unsigned long end) ...@@ -712,7 +712,8 @@ static void r4k_flush_icache_range(unsigned long start, unsigned long end)
static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size) static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size)
{ {
/* Catch bad driver code */ /* Catch bad driver code */
BUG_ON(size == 0); if (WARN_ON(size == 0))
return;
preempt_disable(); preempt_disable();
if (cpu_has_inclusive_pcaches) { if (cpu_has_inclusive_pcaches) {
...@@ -745,7 +746,8 @@ static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size) ...@@ -745,7 +746,8 @@ static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size)
static void r4k_dma_cache_inv(unsigned long addr, unsigned long size) static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
{ {
/* Catch bad driver code */ /* Catch bad driver code */
BUG_ON(size == 0); if (WARN_ON(size == 0))
return;
preempt_disable(); preempt_disable();
if (cpu_has_inclusive_pcaches) { if (cpu_has_inclusive_pcaches) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment