瀏覽代碼

Blackfin arch: fix bug - MPU crashes under stress

Bug Description:
a customer reported under IRQ stress, running applications may
wrongly trigger an ICPLB miss and be killed. after playing a
bit more, here's a test case that may be triggering the same bug.

Fixing:
After modifying page protections, only modify the active CPLBs if the
protection change was made for the active mm.

Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Bernd Schmidt 16 年之前
父節點
當前提交
3d9b7a5ce5
共有 1 個文件被更改,包括 4 次插入2 次删除
  1. 4 2
      include/asm-blackfin/mmu_context.h

+ 4 - 2
include/asm-blackfin/mmu_context.h

@@ -173,8 +173,10 @@ static inline void protect_page(struct mm_struct *mm, unsigned long addr,
 
 static inline void update_protections(struct mm_struct *mm)
 {
-	flush_switched_cplbs();
-	set_mask_dcplbs(mm->context.page_rwx_mask);
+	if (mm->context.page_rwx_mask == current_rwx_mask) {
+		flush_switched_cplbs();
+		set_mask_dcplbs(mm->context.page_rwx_mask);
+	}
 }
 #endif