summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorShrey Vijay <shreyv@codeaurora.org>2017-06-13 13:08:25 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2017-07-09 22:34:43 -0700
commit9f3114efc5f48a8cb09dbead658aa34ea0c00e62 (patch)
treecfed48dff731bcc664fd93e189dbc2ef7780db14 /drivers/i2c
parent3ec8bfc9bb3a1f1a8584074f914c1d92f052b7f1 (diff)
i2c-msm-v2: Avoid accessing unassigned memory
Memory translation fault occurs when incorrect memory is accessed. To avoid translation fault, do not access message memory which is not initialized. Change-Id: Id5e89350a4bc51021964ee63286ea69040f1b32a Signed-off-by: Shrey Vijay <shreyv@codeaurora.org>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-msm-v2.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/i2c/busses/i2c-msm-v2.c b/drivers/i2c/busses/i2c-msm-v2.c
index 1f042fa56eea..f4ed71f9c1a7 100644
--- a/drivers/i2c/busses/i2c-msm-v2.c
+++ b/drivers/i2c/busses/i2c-msm-v2.c
@@ -2232,19 +2232,8 @@ static int i2c_msm_pm_clk_enable(struct i2c_msm_ctrl *ctrl)
static int i2c_msm_pm_xfer_start(struct i2c_msm_ctrl *ctrl)
{
int ret;
- struct i2c_msm_xfer *xfer = &ctrl->xfer;
mutex_lock(&ctrl->xfer.mtx);
- /* if system is suspended just bail out */
- if (ctrl->pwr_state == I2C_MSM_PM_SYS_SUSPENDED) {
- struct i2c_msg *msgs = xfer->msgs + xfer->cur_buf.msg_idx;
- dev_err(ctrl->dev,
- "slave:0x%x is calling xfer when system is suspended\n",
- msgs->addr);
- mutex_unlock(&ctrl->xfer.mtx);
- return -EIO;
- }
-
i2c_msm_pm_pinctrl_state(ctrl, true);
pm_runtime_get_sync(ctrl->dev);
/*
@@ -2330,6 +2319,14 @@ i2c_msm_frmwrk_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
return PTR_ERR(msgs);
}
+ /* if system is suspended just bail out */
+ if (ctrl->pwr_state == I2C_MSM_PM_SYS_SUSPENDED) {
+ dev_err(ctrl->dev,
+ "slave:0x%x is calling xfer when system is suspended\n",
+ msgs->addr);
+ return -EIO;
+ }
+
ret = i2c_msm_pm_xfer_start(ctrl);
if (ret)
return ret;