summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2013-05-29 14:58:35 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-06-10 10:04:41 -0500
commit12ef1b0406ba52ce78ee55db292bfb0ae72e5a5b (patch)
tree43fb6f2d8845e813101d2ce9306d9ea6dcb4fd19 /src/kernel
parent857112a56dc57b18b1feacf948b87875dc4aea45 (diff)
downloadtalos-hostboot-12ef1b0406ba52ce78ee55db292bfb0ae72e5a5b.tar.gz
talos-hostboot-12ef1b0406ba52ce78ee55db292bfb0ae72e5a5b.zip
Ensure VMM operations are page aligned.
Change-Id: I55e07062e18bf8652752914151f640dce1a1623e Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4744 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: ADAM R. MUHLE <armuhle@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/syscall.C15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index 305e3c39a..610f36d26 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -535,7 +535,11 @@ namespace Systemcalls
uint64_t devDataSize = ALIGN_PAGE(TASK_GETARG1(t));
bool cacheable = (0 != TASK_GETARG2(t));
- if (devDataSize > THIRTYTWO_GB)
+ if (TASK_GETARG0(t) & (PAGESIZE - 1)) // ensure address page alignment.
+ {
+ TASK_SETRTN(t, NULL);
+ }
+ else if (devDataSize > THIRTYTWO_GB)
{
TASK_SETRTN(t, NULL);
}
@@ -764,7 +768,14 @@ namespace Systemcalls
void* va = (void*)TASK_GETARG1(t);
uint64_t size = (uint64_t)TASK_GETARG2(t);
- TASK_SETRTN(t, VmmManager::mmAllocBlock(mq,va,size));
+ if (TASK_GETARG1(t) & (PAGESIZE - 1)) // ensure address page alignment.
+ {
+ TASK_SETRTN(t, NULL);
+ }
+ else
+ {
+ TASK_SETRTN(t, VmmManager::mmAllocBlock(mq,va,size));
+ }
}
/**
OpenPOWER on IntegriCloud