diff options
Diffstat (limited to 'freed-ora/current/f21/arm64-__clear_user-handle-exceptions-on-strb.patch')
-rw-r--r-- | freed-ora/current/f21/arm64-__clear_user-handle-exceptions-on-strb.patch | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/freed-ora/current/f21/arm64-__clear_user-handle-exceptions-on-strb.patch b/freed-ora/current/f21/arm64-__clear_user-handle-exceptions-on-strb.patch deleted file mode 100644 index 199da5e7c..000000000 --- a/freed-ora/current/f21/arm64-__clear_user-handle-exceptions-on-strb.patch +++ /dev/null @@ -1,58 +0,0 @@ -From: Kyle McMartin <kyle@redhat.com> -Date: Wed, 12 Nov 2014 16:07:44 -0500 -Subject: [PATCH] arm64: __clear_user: handle exceptions on strb - -ARM64 currently doesn't fix up faults on the single-byte (strb) case of -__clear_user... which means that we can cause a nasty kernel panic as an -ordinary user with any multiple PAGE_SIZE+1 read from /dev/zero. -i.e.: dd if=/dev/zero of=foo ibs=1 count=1 (or ibs=65537, etc.) - -This is a pretty obscure bug in the general case since we'll only -__do_kernel_fault (since there's no extable entry for pc) if the -mmap_sem is contended. However, with CONFIG_DEBUG_VM enabled, we'll -always fault. - -if (!down_read_trylock(&mm->mmap_sem)) { - if (!user_mode(regs) && !search_exception_tables(regs->pc)) - goto no_context; -retry: - down_read(&mm->mmap_sem); -} else { - /* - * The above down_read_trylock() might have succeeded in - * which - * case, we'll have missed the might_sleep() from - * down_read(). - */ - might_sleep(); -#ifdef CONFIG_DEBUG_VM - if (!user_mode(regs) && !search_exception_tables(regs->pc)) - goto no_context; -#endif -} - -Fix that by adding an extable entry for the strb instruction, since it -touches user memory, similar to the other stores in __clear_user. - -Signed-off-by: Kyle McMartin <kyle@redhat.com> -Cc: stable@vger.kernel.org ---- - arch/arm64/lib/clear_user.S | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S -index 6e0ed93d51fe..c17967fdf5f6 100644 ---- a/arch/arm64/lib/clear_user.S -+++ b/arch/arm64/lib/clear_user.S -@@ -46,7 +46,7 @@ USER(9f, strh wzr, [x0], #2 ) - sub x1, x1, #2 - 4: adds x1, x1, #1 - b.mi 5f -- strb wzr, [x0] -+USER(9f, strb wzr, [x0] ) - 5: mov x0, #0 - ret - ENDPROC(__clear_user) --- -1.9.3 - |