diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2011-08-29 15:48:57 -0500 |
---|---|---|
committer | MATTHEW S. BARTH <msbarth@us.ibm.com> | 2011-09-12 16:29:03 -0500 |
commit | dcfca1f02b1a549ba57ca8e28372cef3e84268d0 (patch) | |
tree | 12e56cae37248b6ee62f75ba049f6a38d0348c24 /src/kernel | |
parent | 0c57368b19b2c47d8c3d6495d4fa166663c9c2ea (diff) | |
download | talos-hostboot-dcfca1f02b1a549ba57ca8e28372cef3e84268d0.tar.gz talos-hostboot-dcfca1f02b1a549ba57ca8e28372cef3e84268d0.zip |
Additional good/error path checks for creating block
Change-Id: If3bd74e0ee5ca4177d4bac506a4433ac3e1e778d
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/289
Tested-by: Jenkins Server
Reviewed-by: MATTHEW S. BARTH <msbarth@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/basesegment.C | 11 | ||||
-rw-r--r-- | src/kernel/blockmsghdlr.C | 1 |
2 files changed, 5 insertions, 7 deletions
diff --git a/src/kernel/basesegment.C b/src/kernel/basesegment.C index 72ace03c8..94aafec40 100644 --- a/src/kernel/basesegment.C +++ b/src/kernel/basesegment.C @@ -23,13 +23,13 @@ #include <limits.h> #include <errno.h> #include <util/singleton.H> +#include <util/align.H> #include <kernel/basesegment.H> #include <kernel/segmentmgr.H> #include <kernel/block.H> #include <kernel/vmmmgr.H> #include <kernel/cpuid.H> -//#include <kernel/console.H> #define SLBE_s 40 @@ -117,14 +117,13 @@ int BaseSegment::_mmAllocBlock(MessageQueue* i_mq,void* i_va,uint64_t i_size) uint64_t l_blockSizeTotal = 0; iv_block->totalBlocksAlloc(l_blockSizeTotal); //Verify input address and size falls within this segment's address range - if ((l_vaddr < this->getBaseAddress() || - l_vaddr >= (this->getBaseAddress() + (1ull << SLBE_s))) && - (l_blockSizeTotal+i_size <= (1ull << SLBE_s))) + if (l_vaddr < this->getBaseAddress() || + l_vaddr >= (this->getBaseAddress() + (1ull << SLBE_s)) || + (l_blockSizeTotal + ALIGN_PAGE(i_size)) >= (1ull << SLBE_s)) { return -1; } - //TODO - Align i_size to page size - Block* l_block = new Block(l_vaddr, i_size, i_mq); + Block* l_block = new Block(l_vaddr, ALIGN_PAGE(i_size), i_mq); l_block->setParent(this); iv_block->appendBlock(l_block); return 0; diff --git a/src/kernel/blockmsghdlr.C b/src/kernel/blockmsghdlr.C index 0a3140e9d..cf1683cab 100644 --- a/src/kernel/blockmsghdlr.C +++ b/src/kernel/blockmsghdlr.C @@ -22,7 +22,6 @@ // IBM_PROLOG_END #include <kernel/blockmsghdlr.H> #include <kernel/block.H> -//#include <kernel/console.H> MessageHandler::HandleResult BlockMsgHdlr::handleResponse( msg_sys_types_t i_type, void* i_key, task_t* i_task, int i_rc) |