lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 15 Sep 2014 12:25:48 -0700 From: Greg Kroah-Hartman <gregkh@...uxfoundation.org> To: linux-kernel@...r.kernel.org Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, stable@...r.kernel.org, Huacai Chen <chenhc@...ote.com>, Jie Chen <chenj@...ote.com>, Rui Wang <wangr@...ote.com>, John Crispin <john@...ozen.org>, "Steven J. Hill" <Steven.Hill@...tec.com>, linux-mips@...ux-mips.org, Fuxin Zhang <zhangfx@...ote.com>, Zhangjin Wu <wuzhangjin@...il.com>, Ralf Baechle <ralf@...ux-mips.org> Subject: [PATCH 3.14 048/114] MIPS: Remove BUG_ON(!is_fpu_owner()) in do_ade() 3.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Huacai Chen <chenhc@...ote.com> commit 2e5767a27337812f6850b3fa362419e2f085e5c3 upstream. In do_ade(), is_fpu_owner() isn't preempt-safe. For example, when an unaligned ldc1 is executed, do_cpu() is called and then FPU will be enabled (and TIF_USEDFPU will be set for the current process). Then, do_ade() is called because the access is unaligned. If the current process is preempted at this time, TIF_USEDFPU will be cleard. So when the process is scheduled again, BUG_ON(!is_fpu_owner()) is triggered. This small program can trigger this BUG in a preemptible kernel: int main (int argc, char *argv[]) { double u64[2]; while (1) { asm volatile ( ".set push \n\t" ".set noreorder \n\t" "ldc1 $f3, 4(%0) \n\t" ".set pop \n\t" ::"r"(u64): ); } return 0; } V2: Remove the BUG_ON() unconditionally due to Paul's suggestion. Signed-off-by: Huacai Chen <chenhc@...ote.com> Signed-off-by: Jie Chen <chenj@...ote.com> Signed-off-by: Rui Wang <wangr@...ote.com> Cc: John Crispin <john@...ozen.org> Cc: Steven J. Hill <Steven.Hill@...tec.com> Cc: linux-mips@...ux-mips.org Cc: Fuxin Zhang <zhangfx@...ote.com> Cc: Zhangjin Wu <wuzhangjin@...il.com> Signed-off-by: Ralf Baechle <ralf@...ux-mips.org> Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org> --- arch/mips/kernel/unaligned.c | 1 - 1 file changed, 1 deletion(-) --- a/arch/mips/kernel/unaligned.c +++ b/arch/mips/kernel/unaligned.c @@ -605,7 +605,6 @@ static void emulate_load_store_insn(stru case sdc1_op: die_if_kernel("Unaligned FP access in kernel code", regs); BUG_ON(!used_math()); - BUG_ON(!is_fpu_owner()); lose_fpu(1); /* Save FPU state for the emulator. */ res = fpu_emulator_cop1Handler(regs, ¤t->thread.fpu, 1, -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists