summaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-05-29 15:10:07 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-05-29 15:10:07 +0200
commitbe64a9bacb7584f6daf5464d695c1114ad0db5a6 (patch)
tree9a2f73ac99da950f239eb43d2321627ad8b1e85a /debian
parent82ecb836995c5abd172739d07182cf0089058728 (diff)
add patch series
Diffstat (limited to 'debian')
-rw-r--r--debian/patches/fix0001-kern-fix-argument-handling.patch61
-rw-r--r--debian/patches/series1
2 files changed, 62 insertions, 0 deletions
diff --git a/debian/patches/fix0001-kern-fix-argument-handling.patch b/debian/patches/fix0001-kern-fix-argument-handling.patch
new file mode 100644
index 0000000..b505260
--- /dev/null
+++ b/debian/patches/fix0001-kern-fix-argument-handling.patch
@@ -0,0 +1,61 @@
+From 6da39e9e955d8eb5420349de7b124857e131044c Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Fri, 29 May 2015 14:44:39 +0200
+Subject: [PATCH gnumach] kern: fix argument handling
+
+Previously, the processor argument was not checked. If called with a
+non-processor argument (like a task), `processor' is set to NULL,
+triggering a page fault. Likewise for the other functions.
+
+* kern/processor.c (processor_get_assignment): Fix argument handling.
+* kern/task.c (task_get_assignment): Likewise.
+* kern/thread.c (thread_get_assignment): Likewise.
+---
+ kern/processor.c | 2 ++
+ kern/task.c | 3 +++
+ kern/thread.c | 2 ++
+ 3 files changed, 7 insertions(+)
+
+diff --git a/kern/processor.c b/kern/processor.c
+index 865c324..48e9273 100644
+--- a/kern/processor.c
++++ b/kern/processor.c
+@@ -657,6 +657,8 @@ processor_get_assignment(
+ processor_set_t *pset)
+ {
+ int state;
++ if (processor == PROCESSOR_NULL)
++ return KERN_INVALID_ARGUMENT;
+
+ state = processor->state;
+ if (state == PROCESSOR_SHUTDOWN || state == PROCESSOR_OFF_LINE)
+diff --git a/kern/task.c b/kern/task.c
+index dcd5371..b384347 100644
+--- a/kern/task.c
++++ b/kern/task.c
+@@ -1063,6 +1063,9 @@ kern_return_t task_get_assignment(
+ task_t task,
+ processor_set_t *pset)
+ {
++ if (task == TASK_NULL)
++ return KERN_INVALID_ARGUMENT;
++
+ if (!task->active)
+ return KERN_FAILURE;
+
+diff --git a/kern/thread.c b/kern/thread.c
+index f52c95b..5af0cd5 100644
+--- a/kern/thread.c
++++ b/kern/thread.c
+@@ -1974,6 +1974,8 @@ kern_return_t thread_get_assignment(
+ thread_t thread,
+ processor_set_t *pset)
+ {
++ if (thread == THREAD_NULL)
++ return KERN_INVALID_ARGUMENT;
+ *pset = thread->processor_set;
+ pset_reference(*pset);
+ return KERN_SUCCESS;
+--
+2.1.4
+
diff --git a/debian/patches/series b/debian/patches/series
index 186db4c..6e937be 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -15,3 +15,4 @@ vm-cache-policy0003-vm-evict-clean-pages-first.patch
strict-aliasing0001-kern-avoid-breaking-the-strict-aliasing-rules.patch
strict-aliasing0002-i386-avoid-breaking-the-strict-aliasing-rules.patch
strict-aliasing0003-Restrict-fno-strict-aliasing-to-the-Linux-drivers.patch
+fix0001-kern-fix-argument-handling.patch