summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorLloyd Atkinson <latkinso@codeaurora.org>2017-03-22 18:49:49 -0400
committerAbhinav Kumar <abhinavk@codeaurora.org>2017-08-26 00:34:00 -0700
commit53b888583f335ae6984e3646c8c1a3907aaddd4b (patch)
tree1141c6f5875cf68f203fe15dbcf4c008675c0271 /drivers/gpu
parent7a426f07b90f40ef4f7de4d0759a46f6517b6eda (diff)
drm/msm: fix issue dumping sde registers
Check register length before printing to avoid extraneous error print. Change va_args checks to avoid incorrect failure to parse all dump areas print. Change-Id: Icd057ed7aabb17d1211432a512ff80828f80f2c3 Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org> Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/msm/sde_dbg.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/msm/sde_dbg.c b/drivers/gpu/drm/msm/sde_dbg.c
index 19702e7d04d3..97ec6e247da8 100644
--- a/drivers/gpu/drm/msm/sde_dbg.c
+++ b/drivers/gpu/drm/msm/sde_dbg.c
@@ -992,6 +992,9 @@ static void _sde_dump_reg(const char *dump_name, u32 reg_dump_flag,
char __iomem *end_addr;
int i;
+ if (!len_bytes)
+ return;
+
in_log = (reg_dump_flag & SDE_DBG_DUMP_IN_LOG);
in_mem = (reg_dump_flag & SDE_DBG_DUMP_IN_MEM);
@@ -1464,8 +1467,12 @@ void sde_dbg_dump(bool queue_work, const char *name, ...)
sizeof(sde_dbg_base.req_dump_blks));
va_start(args, name);
- for (i = 0; i < SDE_EVTLOG_MAX_DATA; i++) {
- blk_name = va_arg(args, char*);
+ i = 0;
+ while ((blk_name = va_arg(args, char*))) {
+ if (i++ >= SDE_EVTLOG_MAX_DATA) {
+ pr_err("could not parse all dump arguments\n");
+ break;
+ }
if (IS_ERR_OR_NULL(blk_name))
break;
@@ -1489,9 +1496,6 @@ void sde_dbg_dump(bool queue_work, const char *name, ...)
if (!strcmp(blk_name, "panic"))
do_panic = true;
}
- blk_name = va_arg(args, char*);
- if (!IS_ERR_OR_NULL(blk_name))
- pr_err("could not parse all dump arguments\n");
va_end(args);
if (queue_work) {