summaryrefslogtreecommitdiff
path: root/2.6.32
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2012-04-10 11:25:41 -0400
committerAnthony G. Basile <blueness@gentoo.org>2012-04-10 11:25:41 -0400
commit16c0f4a1cf9b30e6cca3a4ef0a839338c67ff3a0 (patch)
treee07b2cefaace5609b0ee07843f5c6cc4982286a9 /2.6.32
parentGrsec/PaX: 2.9-{2.6.32.59,3.2.14,3.3.1}-201204062020 (diff)
downloadhardened-patchset-16c0f4a1cf9b30e6cca3a4ef0a839338c67ff3a0.tar.gz
hardened-patchset-16c0f4a1cf9b30e6cca3a4ef0a839338c67ff3a0.tar.bz2
hardened-patchset-16c0f4a1cf9b30e6cca3a4ef0a839338c67ff3a0.zip
Grsec/PaX: 2.9-{2.6.32.59,3.2.14,3.3.1}-201204081846
Diffstat (limited to '2.6.32')
-rw-r--r--2.6.32/0000_README2
-rw-r--r--2.6.32/4420_grsecurity-2.9-2.6.32.59-201204091727.patch (renamed from 2.6.32/4420_grsecurity-2.9-2.6.32.59-201204081845.patch)37
2 files changed, 28 insertions, 11 deletions
diff --git a/2.6.32/0000_README b/2.6.32/0000_README
index 5165b40..0ae8b42 100644
--- a/2.6.32/0000_README
+++ b/2.6.32/0000_README
@@ -30,7 +30,7 @@ Patch: 1058_linux-2.6.32.59.patch
From: http://www.kernel.org
Desc: Linux 2.6.32.59
-Patch: 4420_grsecurity-2.9-2.6.32.59-201204081845.patch
+Patch: 4420_grsecurity-2.9-2.6.32.59-201204091727.patch
From: http://www.grsecurity.net
Desc: hardened-sources base patch from upstream grsecurity
diff --git a/2.6.32/4420_grsecurity-2.9-2.6.32.59-201204081845.patch b/2.6.32/4420_grsecurity-2.9-2.6.32.59-201204091727.patch
index 221682f..e32341f 100644
--- a/2.6.32/4420_grsecurity-2.9-2.6.32.59-201204081845.patch
+++ b/2.6.32/4420_grsecurity-2.9-2.6.32.59-201204091727.patch
@@ -19231,6 +19231,19 @@ index 7d35d0f..03f1d52 100644
/*
* Shouldnt happen, we returned above if in_interrupt():
*/
+diff --git a/arch/x86/kernel/kdebugfs.c b/arch/x86/kernel/kdebugfs.c
+index e444357..437b4c5 100644
+--- a/arch/x86/kernel/kdebugfs.c
++++ b/arch/x86/kernel/kdebugfs.c
+@@ -27,6 +27,8 @@ struct setup_data_node {
+ };
+
+ static ssize_t setup_data_read(struct file *file, char __user *user_buf,
++ size_t count, loff_t *ppos) __size_overflow(3);
++static ssize_t setup_data_read(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+ {
+ struct setup_data_node *node = file->private_data;
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
index 8d82a77..0baf312 100644
--- a/arch/x86/kernel/kgdb.c
@@ -27321,10 +27334,10 @@ index df3d5c8..c2223e1 100644
p += get_opcode(p, &opcode);
for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
-index e0e6fad..2d8a9a5 100644
+index e0e6fad..8aae04d 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
-@@ -83,9 +83,56 @@ static inline void pgd_list_del(pgd_t *pgd)
+@@ -83,9 +83,60 @@ static inline void pgd_list_del(pgd_t *pgd)
list_del(&page->lru);
}
@@ -27346,7 +27359,11 @@ index e0e6fad..2d8a9a5 100644
+ while (count--) {
+ pgd_t pgd;
+
++#ifdef CONFIG_X86_64
+ pgd = __pgd(pgd_val(*src++) | _PAGE_USER);
++#else
++ pgd = *src++;
++#endif
+
+#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
+ pgd = __pgd(pgd_val(pgd) & clone_pgd_mask);
@@ -27383,7 +27400,7 @@ index e0e6fad..2d8a9a5 100644
static void pgd_ctor(pgd_t *pgd)
{
/* If the pgd points to a shared pagetable level (either the
-@@ -119,6 +166,7 @@ static void pgd_dtor(pgd_t *pgd)
+@@ -119,6 +170,7 @@ static void pgd_dtor(pgd_t *pgd)
pgd_list_del(pgd);
spin_unlock_irqrestore(&pgd_lock, flags);
}
@@ -27391,7 +27408,7 @@ index e0e6fad..2d8a9a5 100644
/*
* List of all pgd's needed for non-PAE so it can invalidate entries
-@@ -131,7 +179,7 @@ static void pgd_dtor(pgd_t *pgd)
+@@ -131,7 +183,7 @@ static void pgd_dtor(pgd_t *pgd)
* -- wli
*/
@@ -27400,7 +27417,7 @@ index e0e6fad..2d8a9a5 100644
/*
* In PAE mode, we need to do a cr3 reload (=tlb flush) when
* updating the top-level pagetable entries to guarantee the
-@@ -143,7 +191,7 @@ static void pgd_dtor(pgd_t *pgd)
+@@ -143,7 +195,7 @@ static void pgd_dtor(pgd_t *pgd)
* not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate
* and initialize the kernel pmds here.
*/
@@ -27409,7 +27426,7 @@ index e0e6fad..2d8a9a5 100644
void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
{
-@@ -161,36 +209,38 @@ void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
+@@ -161,36 +213,38 @@ void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
*/
flush_tlb_mm(mm);
}
@@ -27459,7 +27476,7 @@ index e0e6fad..2d8a9a5 100644
return -ENOMEM;
}
-@@ -203,51 +253,56 @@ static int preallocate_pmds(pmd_t *pmds[])
+@@ -203,51 +257,56 @@ static int preallocate_pmds(pmd_t *pmds[])
* preallocate which never got a corresponding vma will need to be
* freed manually.
*/
@@ -27533,7 +27550,7 @@ index e0e6fad..2d8a9a5 100644
unsigned long flags;
pgd = (pgd_t *)__get_free_page(PGALLOC_GFP);
-@@ -257,11 +312,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
+@@ -257,11 +316,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
mm->pgd = pgd;
@@ -27547,7 +27564,7 @@ index e0e6fad..2d8a9a5 100644
/*
* Make sure that pre-populating the pmds is atomic with
-@@ -271,14 +326,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
+@@ -271,14 +330,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
spin_lock_irqsave(&pgd_lock, flags);
pgd_ctor(pgd);
@@ -27565,7 +27582,7 @@ index e0e6fad..2d8a9a5 100644
out_free_pgd:
free_page((unsigned long)pgd);
out:
-@@ -287,7 +342,7 @@ out:
+@@ -287,7 +346,7 @@ out:
void pgd_free(struct mm_struct *mm, pgd_t *pgd)
{