소스 검색

s390: fix DAT off memory access, e.g. on kdump

commit 204ee2c56431 ("s390/irqflags: optimize irq restore") optimized
irqrestore to really only care about interrupts and adapted the
remaining low level users. One spot (memcpy_real) was not touched,
though - fix it. Otherwise a kdump kernel will fail while reading
the old kernel. As we re-enable irqs with a non-standard function
we have to tell lockdep about that.

Fixes: 204ee2c56431 ("s390/irqflags: optimize irq restore")
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Christian Borntraeger 9 년 전
부모
커밋
0986d97741
1개의 변경된 파일3개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 1
      arch/s390/mm/maccess.c

+ 3 - 1
arch/s390/mm/maccess.c

@@ -101,7 +101,9 @@ int memcpy_real(void *dest, void *src, size_t count)
 	local_irq_save(flags);
 	__arch_local_irq_stnsm(0xfbUL);
 	rc = __memcpy_real(dest, src, count);
-	local_irq_restore(flags);
+	if (!arch_irqs_disabled_flags(flags))
+		trace_hardirqs_on();
+	__arch_local_irq_ssm(flags);
 	return rc;
 }