diff options
| author | Lloyd Atkinson <latkinso@codeaurora.org> | 2017-03-22 18:49:49 -0400 |
|---|---|---|
| committer | Abhinav Kumar <abhinavk@codeaurora.org> | 2017-08-26 00:34:00 -0700 |
| commit | 53b888583f335ae6984e3646c8c1a3907aaddd4b (patch) | |
| tree | 1141c6f5875cf68f203fe15dbcf4c008675c0271 /drivers/gpu | |
| parent | 7a426f07b90f40ef4f7de4d0759a46f6517b6eda (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.c | 14 |
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) { |
