diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2013-05-29 14:58:35 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-06-10 10:04:41 -0500 |
commit | 12ef1b0406ba52ce78ee55db292bfb0ae72e5a5b (patch) | |
tree | 43fb6f2d8845e813101d2ce9306d9ea6dcb4fd19 /src/kernel | |
parent | 857112a56dc57b18b1feacf948b87875dc4aea45 (diff) | |
download | talos-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.C | 15 |
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)); + } } /** |