Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: io: Add barrier after register read in readX()

While a barrier is present in the writeX() functions before the register
write, a similar barrier is missing in the readX() functions after the
register read. This could allow memory accesses following readX() to
observe stale data.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Burton <paul.burton@mips.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/19069/
[jhogan@kernel.org: Tidy commit message]
Signed-off-by: James Hogan <jhogan@kernel.org>

authored by

Sinan Kaya and committed by
James Hogan
a1cc7034 f6b7aeee

+2
+2
arch/mips/include/asm/io.h
··· 377 377 BUG(); \ 378 378 } \ 379 379 \ 380 + /* prevent prefetching of coherent DMA data prematurely */ \ 381 + rmb(); \ 380 382 return pfx##ioswab##bwlq(__mem, __val); \ 381 383 } 382 384