[PARISC] fix panic on prefetch(NULL) on PA7300LC
Due to an errata, the PA7300LC generates a TLB miss interruption even on the prefetch instruction. This means that prefetch(NULL), which is supposed to be a nop on linux actually generates a NULL deref fault. Fix this by testing the address of prefetch against NULL before doing the prefetch. Cc: stable@vger.kernel.org Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
207f583d71
commit
b3cb867481
1 changed files with 6 additions and 1 deletions
|
@ -21,7 +21,12 @@
|
||||||
#define ARCH_HAS_PREFETCH
|
#define ARCH_HAS_PREFETCH
|
||||||
static inline void prefetch(const void *addr)
|
static inline void prefetch(const void *addr)
|
||||||
{
|
{
|
||||||
__asm__("ldw 0(%0), %%r0" : : "r" (addr));
|
__asm__(
|
||||||
|
#ifndef CONFIG_PA20
|
||||||
|
/* Need to avoid prefetch of NULL on PA7300LC */
|
||||||
|
" extrw,u,= %0,31,32,%%r0\n"
|
||||||
|
#endif
|
||||||
|
" ldw 0(%0), %%r0" : : "r" (addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* LDD is a PA2.0 addition. */
|
/* LDD is a PA2.0 addition. */
|
||||||
|
|
Loading…
Reference in a new issue