|
@@ -350,7 +350,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
|
|
|
if (tlb_flag(TLB_WB))
|
|
|
dsb();
|
|
|
|
|
|
- if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) {
|
|
|
+ if (cpumask_test_cpu(get_cpu(), mm_cpumask(mm))) {
|
|
|
if (tlb_flag(TLB_V3_FULL))
|
|
|
asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (zero) : "cc");
|
|
|
if (tlb_flag(TLB_V4_U_FULL))
|
|
@@ -360,6 +360,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
|
|
|
if (tlb_flag(TLB_V4_I_FULL))
|
|
|
asm("mcr p15, 0, %0, c8, c5, 0" : : "r" (zero) : "cc");
|
|
|
}
|
|
|
+ put_cpu();
|
|
|
|
|
|
if (tlb_flag(TLB_V6_U_ASID))
|
|
|
asm("mcr p15, 0, %0, c8, c7, 2" : : "r" (asid) : "cc");
|