[SPARC64]: flush_ptrace_access() needs preemption disable.
authorDavid S. Miller <davem@davemloft.net>
Wed, 26 Mar 2008 11:51:12 +0000 (04:51 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 26 Mar 2008 11:51:12 +0000 (04:51 -0700)
Based upon a report by Mariusz Kozlowski.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/kernel/ptrace.c

index bcf58ece2ba11c13b08dc90af1fa02561b1420fc..aaae865e79329aafd093974a2fb1a26c61992a5f 100644 (file)
@@ -70,6 +70,8 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
        if (tlb_type == hypervisor)
                return;
 
+       preempt_disable();
+
 #ifdef DCACHE_ALIASING_POSSIBLE
        /* If bit 13 of the kernel address we used to access the
         * user page is the same as the virtual address that page
@@ -108,6 +110,8 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
                for (; start < end; start += icache_line_size)
                        flushi(start);
        }
+
+       preempt_enable();
 }
 
 enum sparc_regset {