summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Peiffer <pierre.peiffer@stericsson.com>2011-12-20 13:03:53 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:07:05 +0200
commit63b0b4e154652897ae8c4dbe6228990d76d57b17 (patch)
treee020b4c65994b4ea9dd346efac492046ec5b2afb
parent2cf4e6c90e9eaa52e1e5d6160868e5232ff21fad (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.c2
-rw-r--r--drivers/staging/nmf-cm/cm_debug.c28
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);