lkml.org 
[lkml]   [2012]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 06/55] PARISC: fix panic on prefetch(NULL) on PA7300LC
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: James Bottomley <JBottomley@Parallels.com>

    commit b3cb8674811d1851bbf1486a73d62b90c119b994 upstream.

    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.

    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/parisc/include/asm/prefetch.h | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    --- a/arch/parisc/include/asm/prefetch.h
    +++ b/arch/parisc/include/asm/prefetch.h
    @@ -21,7 +21,12 @@
    #define ARCH_HAS_PREFETCH
    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. */



    \
     
     \ /
      Last update: 2012-05-27 03:41    [W:0.022 / U:63.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site