]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/3.0.33/um-fix-__swp_type.patch
drop queue-4.14/mips-make-sure-dt-memory-regions-are-valid.patch
[thirdparty/kernel/stable-queue.git] / releases / 3.0.33 / um-fix-__swp_type.patch
1 From 2b76ebaa728f8a3967c52aa189261c72fe56a6f1 Mon Sep 17 00:00:00 2001
2 From: Richard Weinberger <richard@nod.at>
3 Date: Sat, 14 Apr 2012 17:46:01 +0200
4 Subject: um: Fix __swp_type()
5
6 From: Richard Weinberger <richard@nod.at>
7
8 commit 2b76ebaa728f8a3967c52aa189261c72fe56a6f1 upstream.
9
10 The current __swp_type() function uses a too small bitshift.
11 Using more than one swap files causes bad pages because
12 the type bits clash with other page flags.
13
14 Analyzed-by: Hugh Dickins <hughd@google.com>
15 Signed-off-by: Richard Weinberger <richard@nod.at>
16 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17
18 ---
19 arch/um/include/asm/pgtable.h | 4 ++--
20 1 file changed, 2 insertions(+), 2 deletions(-)
21
22 --- a/arch/um/include/asm/pgtable.h
23 +++ b/arch/um/include/asm/pgtable.h
24 @@ -346,11 +346,11 @@ extern pte_t *virt_to_pte(struct mm_stru
25 #define update_mmu_cache(vma,address,ptep) do ; while (0)
26
27 /* Encode and de-code a swap entry */
28 -#define __swp_type(x) (((x).val >> 4) & 0x3f)
29 +#define __swp_type(x) (((x).val >> 5) & 0x1f)
30 #define __swp_offset(x) ((x).val >> 11)
31
32 #define __swp_entry(type, offset) \
33 - ((swp_entry_t) { ((type) << 4) | ((offset) << 11) })
34 + ((swp_entry_t) { ((type) << 5) | ((offset) << 11) })
35 #define __pte_to_swp_entry(pte) \
36 ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })
37 #define __swp_entry_to_pte(x) ((pte_t) { (x).val })