From 39adeee7acf531e037fc186738c3627784ca13d3 Mon Sep 17 00:00:00 2001 From: xuxj12 Date: Wed, 14 Sep 2022 17:49:22 +0800 Subject: [PATCH] fix crashed at bm_ulog_print_log addr of bmdev->debug_enabled should be checked if it is NULL, or it may cause NULL pointer kernel panic Change-Id: I31273f9b0144e25fa7eac3ef4eca34a07c0cae70 Signed-off-by: xuxj12 Reviewed-on: https://gerrit.mot.com/2383945 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Jianqi Yang Reviewed-by: Yonghua Yan Submit-Approved: Jira Key --- drivers/power/bm_adsp_ulog/bm_adsp_ulog.c | 27 ++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/power/bm_adsp_ulog/bm_adsp_ulog.c b/drivers/power/bm_adsp_ulog/bm_adsp_ulog.c index e30fa2e43493..f5340c8bb4fa 100644 --- a/drivers/power/bm_adsp_ulog/bm_adsp_ulog.c +++ b/drivers/power/bm_adsp_ulog/bm_adsp_ulog.c @@ -38,7 +38,7 @@ #define bm_dbg(bmdev, fmt, ...) \ do { \ - if (*bmdev->debug_enabled) \ + if (bmdev->debug_enabled && *bmdev->debug_enabled) \ pr_info(fmt, ##__VA_ARGS__); \ else \ pr_debug(fmt, ##__VA_ARGS__); \ @@ -215,6 +215,11 @@ int bm_ulog_get_log(char *buf, u32 size) return -ENODEV; } + if (!bmdev->debug_enabled) { + pr_err("BM ulog debug_enabled invalid\n"); + return -ENODEV; + } + if (*bmdev->debug_enabled == false) { pr_debug("BM ulog has not enabled yet\n"); return -ENOTSUPP; @@ -254,6 +259,11 @@ int bm_ulog_get_mask_log(enum bm_ulog_category_bitmap categories, return -ENODEV; } + if (!bmdev->debug_enabled) { + pr_err("BM ulog debug_enabled invalid\n"); + return -ENODEV; + } + if (*bmdev->debug_enabled == false) { pr_debug("BM ulog has not enabled yet\n"); return -ENOTSUPP; @@ -316,6 +326,11 @@ static int bm_ulog_print_init_log(u32 size) return -ENODEV; } + if (!bmdev->debug_enabled) { + pr_err("BM ulog debug_enabled invalid\n"); + return -ENODEV; + } + if (!size || size > MAX_ULOG_READ_BUFFER_SIZE) { pr_err("BM ulog invalid size=%d\n", size); return -EINVAL; @@ -342,6 +357,11 @@ int bm_ulog_print_log(u32 size) return -ENODEV; } + if (!bmdev->debug_enabled) { + pr_err("BM ulog debug_enabled invalid\n"); + return -ENODEV; + } + if (*bmdev->debug_enabled == false) { pr_debug("BM ulog has not enabled yet\n"); return -ENOTSUPP; @@ -375,6 +395,11 @@ int bm_ulog_print_mask_log(enum bm_ulog_category_bitmap categories, return -ENODEV; } + if (!bmdev->debug_enabled) { + pr_err("BM ulog debug_enabled invalid\n"); + return -ENODEV; + } + if (*bmdev->debug_enabled == false) { pr_debug("BM ulog has not enabled yet\n"); return -ENOTSUPP;