diff options
| author | Patrick Williams <iawillia@us.ibm.com> | 2011-09-12 14:58:16 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2011-09-13 12:44:49 -0500 |
| commit | f00cbc2321649c74c078784a1fc47da3b10e1a54 (patch) | |
| tree | e4bf96f22176dda426bc678602aef25bc95a3564 /src/kernel | |
| parent | 89dc4c2dc72a77bc278b388d66681e943fb6d539 (diff) | |
| download | talos-hostboot-f00cbc2321649c74c078784a1fc47da3b10e1a54.tar.gz talos-hostboot-f00cbc2321649c74c078784a1fc47da3b10e1a54.zip | |
Return code cleanups.
Change-Id: I375c2f895f28b73948aa384dda781b31f027719b
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/334
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
| -rw-r--r-- | src/kernel/basesegment.C | 2 | ||||
| -rw-r--r-- | src/kernel/devicesegment.C | 10 | ||||
| -rw-r--r-- | src/kernel/syscall.C | 11 |
3 files changed, 16 insertions, 7 deletions
diff --git a/src/kernel/basesegment.C b/src/kernel/basesegment.C index 94aafec40..2c5b73c19 100644 --- a/src/kernel/basesegment.C +++ b/src/kernel/basesegment.C @@ -121,7 +121,7 @@ int BaseSegment::_mmAllocBlock(MessageQueue* i_mq,void* i_va,uint64_t i_size) l_vaddr >= (this->getBaseAddress() + (1ull << SLBE_s)) || (l_blockSizeTotal + ALIGN_PAGE(i_size)) >= (1ull << SLBE_s)) { - return -1; + return -EINVAL; } Block* l_block = new Block(l_vaddr, ALIGN_PAGE(i_size), i_mq); l_block->setParent(this); diff --git a/src/kernel/devicesegment.C b/src/kernel/devicesegment.C index 793b29f1c..f158ab3ec 100644 --- a/src/kernel/devicesegment.C +++ b/src/kernel/devicesegment.C @@ -102,7 +102,7 @@ bool DeviceSegment::handlePageFault(task_t* i_task, uint64_t i_addr) //Verify the device is mapped uint64_t segment_ea = i_addr - this->getBaseAddress(); size_t idx = segment_ea / ((1ull << SLBE_s) / MMIO_MAP_DEVICES); - uint64_t device_offset = segment_ea - + uint64_t device_offset = segment_ea - (idx * (1ull << SLBE_s) / MMIO_MAP_DEVICES); if (0 == iv_mmioMap[idx].addr || @@ -128,7 +128,7 @@ void* DeviceSegment::_mmioMap(void* ra, size_t pages) { iv_mmioMap[i].size = THIRTYTWO_GB; iv_mmioMap[i].addr = reinterpret_cast<uint64_t>(ra); - return reinterpret_cast<void*>(i * + return reinterpret_cast<void*>(i * ((1ull << SLBE_s) / MMIO_MAP_DEVICES) + this->getBaseAddress()); } @@ -142,7 +142,7 @@ void* DeviceSegment::_mmioMap(void* ra, size_t pages) */ int DeviceSegment::_mmioUnmap(void* ea, size_t pages) { - uint64_t segment_ea = reinterpret_cast<uint64_t>(ea) - + uint64_t segment_ea = reinterpret_cast<uint64_t>(ea) - this->getBaseAddress(); size_t idx = segment_ea / ((1ull << SLBE_s) / MMIO_MAP_DEVICES); if (0 != iv_mmioMap[idx].addr) @@ -154,7 +154,7 @@ int DeviceSegment::_mmioUnmap(void* ea, size_t pages) return 0; } - return -1; + return -EINVAL; } /** @@ -203,7 +203,7 @@ void *DeviceSegment::_devMap(void *ra, SEG_DATA_SIZES i_devDataSize) */ int DeviceSegment::_devUnmap(void *ea) { - int rc = -1; + int rc = -EINVAL; uint64_t segment_ea = reinterpret_cast<uint64_t>(ea); //Verify input address falls within this segment's address range if (segment_ea < this->getBaseAddress() || diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C index 622c970a7..af84cc173 100644 --- a/src/kernel/syscall.C +++ b/src/kernel/syscall.C @@ -220,6 +220,15 @@ namespace Systemcalls { MessageQueue* mq = (MessageQueue*) TASK_GETARG0(t); msg_t* m = (msg_t*) TASK_GETARG1(t); + + if ((NULL == mq) || (NULL == m)) + { + printkd("NULL pointer for message queue (%p) or message (%p).\n", + mq, m); + TASK_SETRTN(t, -EINVAL); + return; + } + m->__reserved__async = 0; // set to async msg. if (m->type >= MSG_FIRST_SYS_TYPE) @@ -327,7 +336,7 @@ namespace Systemcalls } else { - TASK_SETRTN(t, -1); + TASK_SETRTN(t, -EBADF); mq->lock.unlock(); } } |

