summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-02-21 11:54:47 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-02-21 11:54:47 +0100
commite9d808169e8ed80186dfa8741a27f982feb0f593 (patch)
tree40c2a715b4b4f7c923c231d3a36595b981194559
parent090e964eec2d26aaa279609597743122b1dcb55d (diff)
update protected_payload.patch (add size hack)
-rw-r--r--debian/patches/protected_payload.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/debian/patches/protected_payload.patch b/debian/patches/protected_payload.patch
index 50dd791..d5a89c0 100644
--- a/debian/patches/protected_payload.patch
+++ b/debian/patches/protected_payload.patch
@@ -494,3 +494,28 @@ index 13572a1..057278b 100644
+ ip_unlock(port);
+ return KERN_SUCCESS;
+}
+commit 34d7379f599edfc2c7046e08f1a884bbf2866eb5
+Author: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Wed Nov 27 14:42:55 2013 +0100
+
+ XXX fix the size of ipc_port structs
+
+ I do not know why this is happening, but w/o this, some kernel
+ pointers leak into the ip_protected_payload field. So it looks like
+ sizeof(struct ipc_tree_entry) is wrong here, not sure why
+ though. Maybe the global header is imported? But the compiler flags
+ should prevent this...
+
+diff --git a/ipc/ipc_init.c b/ipc/ipc_init.c
+index debda47..7627b4e 100644
+--- a/ipc/ipc_init.c
++++ b/ipc/ipc_init.c
+@@ -80,7 +80,7 @@ ipc_bootstrap(void)
+ sizeof(struct ipc_tree_entry), 0, NULL, NULL, NULL, 0);
+
+ kmem_cache_init(&ipc_object_caches[IOT_PORT], "ipc_port",
+- sizeof(struct ipc_port), 0, NULL, NULL, NULL, 0);
++ sizeof(struct ipc_port)+4, 0, NULL, NULL, NULL, 0);
+
+ kmem_cache_init(&ipc_object_caches[IOT_PORT_SET], "ipc_pset",
+ sizeof(struct ipc_pset), 0, NULL, NULL, NULL, 0);