summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--4.8.17/0000_README2
-rw-r--r--4.8.17/4420_grsecurity-3.1-4.8.17-201701121950.patch (renamed from 4.8.17/4420_grsecurity-3.1-4.8.17-201701090823.patch)31
2 files changed, 31 insertions, 2 deletions
diff --git a/4.8.17/0000_README b/4.8.17/0000_README
index c7c05dd..a2e828f 100644
--- a/4.8.17/0000_README
+++ b/4.8.17/0000_README
@@ -6,7 +6,7 @@ Patch: 1016_linux-4.8.17.patch
From: http://www.kernel.org
Desc: Linux 4.8.17
-Patch: 4420_grsecurity-3.1-4.8.17-201701090823.patch
+Patch: 4420_grsecurity-3.1-4.8.17-201701121950.patch
From: http://www.grsecurity.net
Desc: hardened-sources base patch from upstream grsecurity
diff --git a/4.8.17/4420_grsecurity-3.1-4.8.17-201701090823.patch b/4.8.17/4420_grsecurity-3.1-4.8.17-201701121950.patch
index 2dc50ac..07572d7 100644
--- a/4.8.17/4420_grsecurity-3.1-4.8.17-201701090823.patch
+++ b/4.8.17/4420_grsecurity-3.1-4.8.17-201701121950.patch
@@ -155668,7 +155668,7 @@ index 38aa5e0..9b3e13b 100644
return -ENOMEM;
diff --git a/mm/slab.c b/mm/slab.c
-index 525a911..227387b 100644
+index 525a911..b6279c0 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -116,6 +116,7 @@
@@ -155761,6 +155761,35 @@ index 525a911..227387b 100644
/*
* Check that size is in terms of words. This is needed to avoid
* unaligned accesses for some archs when redzoning is used, and makes
+@@ -2482,7 +2489,6 @@ union freelist_init_state {
+ unsigned int pos;
+ unsigned int *list;
+ unsigned int count;
+- unsigned int rand;
+ };
+ struct rnd_state rnd_state;
+ };
+@@ -2508,8 +2514,7 @@ static bool freelist_state_initialize(union freelist_init_state *state,
+ } else {
+ state->list = cachep->random_seq;
+ state->count = count;
+- state->pos = 0;
+- state->rand = rand;
++ state->pos = rand % count;
+ ret = true;
+ }
+ return ret;
+@@ -2518,7 +2523,9 @@ static bool freelist_state_initialize(union freelist_init_state *state,
+ /* Get the next entry on the list and randomize it using a random shift */
+ static freelist_idx_t next_random_slot(union freelist_init_state *state)
+ {
+- return (state->list[state->pos++] + state->rand) % state->count;
++ if (state->pos >= state->count)
++ state->pos = 0;
++ return state->list[state->pos++];
+ }
+
+ /* Swap two freelist entries */
@@ -3524,6 +3531,20 @@ void ___cache_free(struct kmem_cache *cachep, void *objp,
struct array_cache *ac = cpu_cache_get(cachep);