summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-07-25 15:29:46 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-07-25 15:29:46 -0700
commitdeb3b9d540221ec094d0e2118f47edca1c9afa8d (patch)
treed85a2e31374b9294ab8e3172a228853c93617b46
parent8682344a22aef14bd57e1368d35d2beb6d690843 (diff)
parent7df26d6be3b98a71106bf45e78034b0010831308 (diff)
Merge "msm: camera: Prevent kernel info leak."
-rw-r--r--drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c40
1 files changed, 25 insertions, 15 deletions
diff --git a/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c b/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c
index c243d587e308..90edadaed1ef 100644
--- a/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c
+++ b/drivers/media/platform/msm/camera_v2/common/msm_camera_io_util.c
@@ -175,35 +175,45 @@ int32_t msm_camera_io_poll_value_wmask(void __iomem *addr, u32 wait_data,
void msm_camera_io_dump(void __iomem *addr, int size, int enable)
{
- char line_str[128], *p_str;
+ char line_str[128];
int i;
- u32 *p = (u32 *) addr;
+ ptrdiff_t p = 0;
+ size_t offset = 0, used = 0;
u32 data;
CDBG("%s: addr=%pK size=%d\n", __func__, addr, size);
- if (!p || (size <= 0) || !enable)
+ if (!addr || (size <= 0) || !enable)
return;
line_str[0] = '\0';
- p_str = line_str;
for (i = 0; i < size/4; i++) {
if (i % 4 == 0) {
-#ifdef CONFIG_COMPAT
- snprintf(p_str, 20, "%016lx: ", (unsigned long) p);
- p_str += 18;
-#else
- snprintf(p_str, 12, "%08lx: ", (unsigned long) p);
- p_str += 10;
-#endif
+ used = snprintf(line_str + offset,
+ sizeof(line_str) - offset, "0x%04tX: ", p);
+ if (offset + used >= sizeof(line_str)) {
+ pr_err("%s\n", line_str);
+ offset = 0;
+ line_str[0] = '\0';
+ } else {
+ offset += used;
+ }
+ }
+ data = readl_relaxed(addr + p);
+ p = p + 4;
+ used = snprintf(line_str + offset,
+ sizeof(line_str) - offset, "%08x ", data);
+ if (offset + used >= sizeof(line_str)) {
+ pr_err("%s\n", line_str);
+ offset = 0;
+ line_str[0] = '\0';
+ } else {
+ offset += used;
}
- data = readl_relaxed(p++);
- snprintf(p_str, 12, "%08x ", data);
- p_str += 9;
if ((i + 1) % 4 == 0) {
pr_err("%s\n", line_str);
line_str[0] = '\0';
- p_str = line_str;
+ offset = 0;
}
}
if (line_str[0] != '\0')