diff options
author | Pierre Peiffer <pierre.peiffer@stericsson.com> | 2011-12-20 13:03:53 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:07:05 +0200 |
commit | 63b0b4e154652897ae8c4dbe6228990d76d57b17 (patch) | |
tree | e020b4c65994b4ea9dd346efac492046ec5b2afb | |
parent | 2cf4e6c90e9eaa52e1e5d6160868e5232ff21fad (diff) |
U8500 CM: fix crash when dumping domains info
Fix a crash that happens when retrieving certain domains information
through debugfs
ST-Ericsson FOSS-OUT ID: Trivial
ST-Ericsson ID: 405694
ST-Ericsson Linux next: NA
Change-Id: Ia6940d1af6c696c00f630d56a9437f7bc7367667
Signed-off-by: Pierre Peiffer <pierre.peiffer@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/43255
Reviewed-by: QABUILD
-rw-r--r-- | drivers/staging/nmf-cm/cm/engine/dsp/src/dsp.c | 2 | ||||
-rw-r--r-- | drivers/staging/nmf-cm/cm_debug.c | 28 |
2 files changed, 18 insertions, 12 deletions
diff --git a/drivers/staging/nmf-cm/cm/engine/dsp/src/dsp.c b/drivers/staging/nmf-cm/cm/engine/dsp/src/dsp.c index 7646f6301de..ef11a5265aa 100644 --- a/drivers/staging/nmf-cm/cm/engine/dsp/src/dsp.c +++ b/drivers/staging/nmf-cm/cm/engine/dsp/src/dsp.c @@ -513,6 +513,8 @@ PUBLIC void cm_DSP_GetDspAddress(t_memory_handle memHandle, t_uint32 *pDspAddres PUBLIC t_cm_error cm_DSP_GetDspBaseAddress(t_nmf_core_id coreId, t_dsp_memory_type_id memType, t_cm_system_address *pAddr) { cm_migration_check_state(coreId, STATE_NORMAL); + if (mpcDesc[coreId].allocator[memType] == NULL) + return CM_INVALID_PARAMETER; *pAddr = mpcDesc[coreId].allocator[memType]->baseAddress; return CM_OK; } diff --git a/drivers/staging/nmf-cm/cm_debug.c b/drivers/staging/nmf-cm/cm_debug.c index b894c6b8e4a..ffb067c65d9 100644 --- a/drivers/staging/nmf-cm/cm_debug.c +++ b/drivers/staging/nmf-cm/cm_debug.c @@ -306,9 +306,10 @@ static ssize_t domain_read(struct file *file, char __user *userbuf, "address Size Free Used\n" "---------------------------------------" "-----------------------------------\n"); - if (domain->domain.esramCode.size) { - cm_DSP_GetDspBaseAddress(ARM_CORE_ID, - ESRAM_CODE, &addr); + if (domain->domain.esramCode.size && + cm_DSP_GetDspBaseAddress(ARM_CORE_ID, + ESRAM_CODE, + &addr) == CM_OK) { cm_DSP_GetInternalMemoriesInfo(id, ESRAM_CODE, &dOffset, &dSize); @@ -330,9 +331,10 @@ static ssize_t domain_read(struct file *file, char __user *userbuf, status.global.accumulate_free_memory, status.global.accumulate_used_memory); } - if (domain->domain.esramData.size) { - cm_DSP_GetDspBaseAddress(ARM_CORE_ID, - ESRAM_EXT24, &addr); + if (domain->domain.esramData.size && + cm_DSP_GetDspBaseAddress(ARM_CORE_ID, + ESRAM_EXT24, + &addr) == CM_OK) { cm_DSP_GetInternalMemoriesInfo(id, ESRAM_EXT24, &dOffset, &dSize); @@ -354,9 +356,10 @@ static ssize_t domain_read(struct file *file, char __user *userbuf, status.global.accumulate_free_memory, status.global.accumulate_used_memory); } - if (domain->domain.sdramCode.size) { - cm_DSP_GetDspBaseAddress(ARM_CORE_ID, - SDRAM_CODE, &addr); + if (domain->domain.sdramCode.size && + cm_DSP_GetDspBaseAddress(ARM_CORE_ID, + SDRAM_CODE, + &addr) == CM_OK) { cm_DSP_GetInternalMemoriesInfo(id, SDRAM_CODE, &dOffset, &dSize); @@ -378,9 +381,10 @@ static ssize_t domain_read(struct file *file, char __user *userbuf, status.global.accumulate_free_memory, status.global.accumulate_used_memory); } - if (domain->domain.sdramData.size) { - cm_DSP_GetDspBaseAddress(ARM_CORE_ID, - SDRAM_EXT24, &addr); + if (domain->domain.sdramData.size && + cm_DSP_GetDspBaseAddress(ARM_CORE_ID, + SDRAM_EXT24, + &addr) == CM_OK) { cm_DSP_GetInternalMemoriesInfo(id, SDRAM_EXT24, &dOffset, &dSize); |