aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Tjin <pattjin@google.com>2016-10-21 15:59:49 -0700
committerPatrick Tjin <pattjin@google.com>2016-10-21 15:59:49 -0700
commit60e36967d27e9d6603bc534ff12e870741e818bc (patch)
tree8cfd0ba8d6d6bc5bbce5108320d85bf08380f149
parentf56706c0099a1f7c3bdd0d67d851300c51e3ebfa (diff)
parent229b8b453b8dff6435abba6967da9c2b2d7c7c9d (diff)
Merge branch android-msm-shamu-3.10-nyc-security-next into android-msm-shamu-3.10-nycandroid-7.0.0_r0.42
December 2016.1
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c2
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c16
-rw-r--r--drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_hw.c2
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_sync.c2
-rw-r--r--drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c54
-rw-r--r--drivers/media/platform/msm/camera_v2/pproc/vpe/msm_vpe.c6
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/actuator/msm_actuator.c20
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c10
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c10
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c6
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_io_util.c18
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c22
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c30
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor_init.c8
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/ois/msm_ois.c4
-rw-r--r--drivers/misc/qcom/qdsp6v2/audio_utils_aio.c12
-rw-r--r--drivers/soc/qcom/qdsp6v2/apr.c10
-rw-r--r--drivers/soc/qcom/qdsp6v2/dsp_debug.c2
-rw-r--r--drivers/soc/qcom/qdsp6v2/msm_audio_ion.c30
-rw-r--r--drivers/staging/android/binder.c36
-rwxr-xr-x[-rw-r--r--]drivers/staging/android/ion/ion.c60
-rw-r--r--drivers/usb/gadget/f_mbim.c34
-rw-r--r--drivers/video/fbcmap.c2
-rw-r--r--drivers/video/msm/mdss/mdp3.c16
-rw-r--r--drivers/video/msm/mdss/mdss_debug.c10
-rw-r--r--drivers/video/msm/mdss/mdss_dsi.c12
-rw-r--r--drivers/video/msm/mdss/mdss_dsi_host.c2
-rw-r--r--drivers/video/msm/mdss/mdss_dsi_panel.c6
-rw-r--r--drivers/video/msm/mdss/mdss_fb.c4
-rw-r--r--drivers/video/msm/mdss/mdss_hdmi_tx.c2
-rw-r--r--drivers/video/msm/mdss/mdss_hdmi_util.c2
-rw-r--r--drivers/video/msm/mdss/mdss_mdp.c4
-rw-r--r--drivers/video/msm/mdss/mdss_mdp_intf_cmd.c4
-rw-r--r--drivers/video/msm/mdss/mdss_mdp_intf_video.c4
-rw-r--r--drivers/video/msm/mdss/mdss_mdp_pipe.c2
-rw-r--r--drivers/video/msm/mdss/mdss_mdp_pp.c6
-rw-r--r--drivers/video/msm/mdss/mdss_mdp_util.c6
-rw-r--r--drivers/video/msm/mdss/mdss_mdp_wb.c4
-rw-r--r--fs/attr.c8
-rw-r--r--fs/inode.c10
-rw-r--r--fs/namei.c11
-rw-r--r--include/linux/capability.h2
-rw-r--r--include/linux/perf_event.h6
-rw-r--r--kernel/capability.c18
-rw-r--r--kernel/events/core.c259
-rw-r--r--net/ipv4/ping.c2
-rw-r--r--net/netfilter/nf_conntrack_core.c20
-rw-r--r--security/keys/gc.c10
-rw-r--r--sound/soc/msm/qdsp6v2/audio_acdb.c2
-rw-r--r--sound/soc/msm/qdsp6v2/audio_ocmem.c2
-rw-r--r--sound/soc/msm/qdsp6v2/msm-compr-q6-v2.c8
-rw-r--r--sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c2
-rw-r--r--sound/soc/msm/qdsp6v2/msm-dai-q6-v2.c2
-rw-r--r--sound/soc/msm/qdsp6v2/msm-ds2-dap-config.c4
-rw-r--r--sound/soc/msm/qdsp6v2/msm-lsm-client.c4
-rw-r--r--sound/soc/msm/qdsp6v2/msm-multi-ch-pcm-q6-v2.c4
-rw-r--r--sound/soc/msm/qdsp6v2/msm-pcm-afe-v2.c4
-rw-r--r--sound/soc/msm/qdsp6v2/msm-pcm-host-voice-v2.c4
-rw-r--r--sound/soc/msm/qdsp6v2/msm-pcm-lpa-v2.c2
-rw-r--r--sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.c4
-rw-r--r--sound/soc/msm/qdsp6v2/q6adm.c2
-rw-r--r--sound/soc/msm/qdsp6v2/q6afe.c10
-rw-r--r--sound/soc/msm/qdsp6v2/q6asm.c24
-rwxr-xr-xsound/soc/msm/qdsp6v2/q6core.c2
-rw-r--r--sound/soc/msm/qdsp6v2/q6lsm.c6
-rw-r--r--sound/soc/msm/qdsp6v2/q6voice.c14
-rw-r--r--sound/soc/msm/qdsp6v2/rtac.c2
-rw-r--r--sound/soc/soc-core.c4
73 files changed, 615 insertions, 337 deletions
diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c
index 73bd9fe8719a..cdd58ae2619a 100644
--- a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c
+++ b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c
@@ -145,7 +145,7 @@ static int msm_isp_prepare_isp_buf(struct msm_isp_buf_mgr *buf_mgr,
ion_import_dma_buf(buf_mgr->client,
qbuf_buf->planes[i].addr);
if (IS_ERR_OR_NULL(mapped_info->handle)) {
- pr_err("%s: buf has null/error ION handle %p\n",
+ pr_err("%s: buf has null/error ION handle %pK\n",
__func__, mapped_info->handle);
goto ion_map_error;
}
@@ -1057,7 +1057,7 @@ int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr)
__func__, k, (unsigned int)
bufs->mapped_info[k].paddr,
bufs->mapped_info[k].len);
- pr_err(" ion handle %p\n",
+ pr_err(" ion handle %pK\n",
bufs->mapped_info[k].handle);
}
}
diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
index 34c0f9c47c01..88ca41c9e194 100644
--- a/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
+++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
@@ -1145,7 +1145,7 @@ void msm_camera_io_dump_2(void __iomem *addr, int size)
int i;
u32 *p = (u32 *) addr;
u32 data;
- ISP_DBG("%s: %p %d\n", __func__, addr, size);
+ ISP_DBG("%s: %pK %d\n", __func__, addr, size);
line_str[0] = '\0';
p_str = line_str;
for (i = 0; i < size/4; i++) {
diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c
index 289eeb3f8f79..22d30e3e8bd4 100644
--- a/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c
+++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c
@@ -263,14 +263,14 @@ static int msm_isp_get_max_clk_rate(struct vfe_device *vfe_dev, long *rate)
long round_rate = 0;
if (!vfe_dev || !rate) {
- pr_err("%s:%d failed: vfe_dev %p rate %p\n", __func__, __LINE__,
+ pr_err("%s:%d failed: vfe_dev %pK rate %pK\n", __func__, __LINE__,
vfe_dev, rate);
return -EINVAL;
}
*rate = 0;
if (!vfe_dev->hw_info) {
- pr_err("%s:%d failed: vfe_dev->hw_info %p\n", __func__,
+ pr_err("%s:%d failed: vfe_dev->hw_info %pK\n", __func__,
__LINE__, vfe_dev->hw_info);
return -EINVAL;
}
@@ -489,13 +489,13 @@ static int msm_isp_send_hw_cmd(struct vfe_device *vfe_dev,
uint32_t *cfg_data, uint32_t cmd_len)
{
if (!vfe_dev || !reg_cfg_cmd) {
- pr_err("%s:%d failed: vfe_dev %p reg_cfg_cmd %p\n", __func__,
+ pr_err("%s:%d failed: vfe_dev %pK reg_cfg_cmd %pK\n", __func__,
__LINE__, vfe_dev, reg_cfg_cmd);
return -EINVAL;
}
if ((reg_cfg_cmd->cmd_type != VFE_CFG_MASK) &&
(!cfg_data || !cmd_len)) {
- pr_err("%s:%d failed: cmd type %d cfg_data %p cmd_len %d\n",
+ pr_err("%s:%d failed: cmd type %d cfg_data %pK cmd_len %d\n",
__func__, __LINE__, reg_cfg_cmd->cmd_type, cfg_data,
cmd_len);
return -EINVAL;
@@ -817,7 +817,7 @@ int msm_isp_proc_cmd_list(struct vfe_device *vfe_dev, void *arg)
struct msm_vfe_cfg_cmd_list cmd, cmd_next;
if (!vfe_dev || !arg) {
- pr_err("%s:%d failed: vfe_dev %p arg %p", __func__, __LINE__,
+ pr_err("%s:%d failed: vfe_dev %pK arg %pK", __func__, __LINE__,
vfe_dev, arg);
return -EINVAL;
}
@@ -1209,17 +1209,17 @@ static int msm_vfe_iommu_fault_handler(struct iommu_domain *domain,
if (token) {
vfe_dev = (struct vfe_device *)token;
if (!vfe_dev->buf_mgr || !vfe_dev->buf_mgr->ops) {
- pr_err("%s:%d] buf_mgr %p\n", __func__,
+ pr_err("%s:%d] buf_mgr %pK\n", __func__,
__LINE__, vfe_dev->buf_mgr);
goto end;
}
if (!vfe_dev->buf_mgr->pagefault_debug) {
- pr_err("%s:%d] vfe_dev %p id %d\n", __func__,
+ pr_err("%s:%d] vfe_dev %pK id %d\n", __func__,
__LINE__, vfe_dev, vfe_dev->pdev->id);
vfe_dev->buf_mgr->ops->buf_mgr_debug(vfe_dev->buf_mgr);
}
} else {
- ISP_DBG("%s:%d] no token received: %p\n",
+ ISP_DBG("%s:%d] no token received: %pK\n",
__func__, __LINE__, token);
goto end;
}
diff --git a/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c b/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c
index da42a3fab2a1..8d0100b2dc92 100644
--- a/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c
+++ b/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c
@@ -883,7 +883,7 @@ static int msm_ispif_set_vfe_info(struct ispif_device *ispif,
{
if (!vfe_info || (vfe_info->num_vfe <= 0) ||
((uint32_t)(vfe_info->num_vfe) > VFE_MAX)) {
- pr_err("Invalid VFE info: %p %d\n", vfe_info,
+ pr_err("Invalid VFE info: %pK %d\n", vfe_info,
(vfe_info ? vfe_info->num_vfe:0));
return -EINVAL;
}
@@ -918,7 +918,7 @@ static int msm_ispif_init(struct ispif_device *ispif,
if (ispif->csid_version >= CSID_VERSION_V30) {
if (!ispif->clk_mux_mem || !ispif->clk_mux_io) {
- pr_err("%s csi clk mux mem %p io %p\n", __func__,
+ pr_err("%s csi clk mux mem %pK io %pK\n", __func__,
ispif->clk_mux_mem, ispif->clk_mux_io);
rc = -ENOMEM;
return rc;
diff --git a/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_hw.c b/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_hw.c
index 19696953eb78..8ae834172805 100644
--- a/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_hw.c
+++ b/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_hw.c
@@ -393,7 +393,7 @@ void msm_jpeg_io_dump(void *base, int size)
int i;
u32 *p = (u32 *) addr;
u32 data;
- JPEG_DBG_HIGH("%s:%d] %p %d", __func__, __LINE__, addr, size);
+ JPEG_DBG_HIGH("%s:%d] %pK %d", __func__, __LINE__, addr, size);
line_str[0] = '\0';
p_str = line_str;
for (i = 0; i < size/4; i++) {
diff --git a/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_sync.c b/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_sync.c
index 82a07aa6ca3f..320fec9a7e6e 100644
--- a/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_sync.c
+++ b/drivers/media/platform/msm/camera_v2/jpeg_10/msm_jpeg_sync.c
@@ -696,7 +696,7 @@ int __msm_jpeg_open(struct msm_jpeg_device *pgmn_dev)
return rc;
}
- JPEG_DBG("%s:%d] platform resources - mem %p, base %p, irq %d\n",
+ JPEG_DBG("%s:%d] platform resources - mem %pK, base %pK, irq %d\n",
__func__, __LINE__,
pgmn_dev->mem, pgmn_dev->base, pgmn_dev->irq);
pgmn_dev->res_size = resource_size(pgmn_dev->mem);
diff --git a/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c b/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c
index f9c0bd7d0225..7bd479aa4d62 100644
--- a/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c
+++ b/drivers/media/platform/msm/camera_v2/msm_vb2/msm_vb2.c
@@ -241,7 +241,7 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id,
break;
}
if (vb2_buf != vb) {
- pr_err("VB buffer is INVALID vb=%p, ses_id=%d, str_id=%d\n",
+ pr_err("VB buffer is INVALID vb=%pK, ses_id=%d, str_id=%d\n",
vb, session_id, stream_id);
spin_unlock_irqrestore(&stream->stream_lock, flags);
return -EINVAL;
@@ -282,7 +282,7 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id,
break;
}
if (vb2_buf != vb) {
- pr_err("VB buffer is INVALID ses_id=%d, str_id=%d, vb=%p\n",
+ pr_err("VB buffer is INVALID ses_id=%d, str_id=%d, vb=%pK\n",
session_id, stream_id, vb);
spin_unlock_irqrestore(&stream->stream_lock, flags);
return -EINVAL;
diff --git a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c
index ed7cb41266bd..cfed9026fbf7 100644
--- a/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c
+++ b/drivers/media/platform/msm/camera_v2/pproc/cpp/msm_cpp.c
@@ -866,7 +866,7 @@ static void cpp_load_fw(struct cpp_device *cpp_dev, char *fw_name_bin)
rc = request_firmware(&fw, fw_name_bin, dev);
if (rc) {
dev_err(dev,
- "Fail to loc blob %s from dev %p, Error: %d\n",
+ "Fail to loc blob %s from dev %pK, Error: %d\n",
fw_name_bin, dev, rc);
}
if (NULL != fw)
@@ -959,7 +959,7 @@ static int cpp_open_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
return -ENODEV;
}
- CPP_DBG("open %d %p\n", i, &fh->vfh);
+ CPP_DBG("open %d %pK\n", i, &fh->vfh);
cpp_dev->cpp_open_cnt++;
if (cpp_dev->cpp_open_cnt == 1) {
rc = cpp_init_hardware(cpp_dev);
@@ -986,7 +986,7 @@ static int cpp_close_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
struct msm_device_queue *eventData_q = NULL;
if (!cpp_dev) {
- pr_err("failed: cpp_dev %p\n", cpp_dev);
+ pr_err("failed: cpp_dev %pK\n", cpp_dev);
return -EINVAL;
}
@@ -1184,7 +1184,7 @@ static void msm_cpp_do_timeout_work(struct work_struct *work)
pr_err("cpp_timer_callback called. (jiffies=%lu)\n",
jiffies);
if (!work) {
- pr_err("Invalid work:%p\n", work);
+ pr_err("Invalid work:%pK\n", work);
return;
}
if (!atomic_read(&cpp_timer.used)) {
@@ -1508,22 +1508,60 @@ ERROR1:
return rc;
}
+static int msm_cpp_validate_input(unsigned int cmd, void *arg,
+ struct msm_camera_v4l2_ioctl_t **ioctl_ptr)
+{
+ switch (cmd) {
+ case MSM_SD_SHUTDOWN:
+ break;
+ default: {
+ if (ioctl_ptr == NULL) {
+ pr_err("Wrong ioctl_ptr for cmd %u\n", cmd);
+ return -EINVAL;
+ }
+
+ *ioctl_ptr = arg;
+ if ((*ioctl_ptr == NULL) ||
+ (*ioctl_ptr)->ioctl_ptr == NULL) {
+ pr_err("Error invalid ioctl argument cmd %u", cmd);
+ return -EINVAL;
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
long msm_cpp_subdev_ioctl(struct v4l2_subdev *sd,
unsigned int cmd, void *arg)
{
- struct cpp_device *cpp_dev = v4l2_get_subdevdata(sd);
- struct msm_camera_v4l2_ioctl_t *ioctl_ptr = arg;
+ struct cpp_device *cpp_dev = NULL;
+ struct msm_camera_v4l2_ioctl_t *ioctl_ptr = NULL;
int rc = 0;
- if ((ioctl_ptr == NULL) || (ioctl_ptr->ioctl_ptr == NULL)){
- pr_err("ioctl_ptr is null\n");
+ if (sd == NULL) {
+ pr_err("sd %pK\n", sd);
return -EINVAL;
}
+ cpp_dev = v4l2_get_subdevdata(sd);
if (cpp_dev == NULL) {
pr_err("cpp_dev is null\n");
return -EINVAL;
}
+
+ if (_IOC_DIR(cmd) == _IOC_NONE) {
+ pr_err("Invalid ioctl/subdev cmd %u", cmd);
+ return -EINVAL;
+ }
+
+ rc = msm_cpp_validate_input(cmd, arg, &ioctl_ptr);
+ if (rc != 0) {
+ pr_err("input validation failed\n");
+ return rc;
+ }
+
mutex_lock(&cpp_dev->mutex);
+
CPP_DBG("E cmd: 0x%x\n", cmd);
switch (cmd) {
case VIDIOC_MSM_CPP_GET_HW_INFO: {
diff --git a/drivers/media/platform/msm/camera_v2/pproc/vpe/msm_vpe.c b/drivers/media/platform/msm/camera_v2/pproc/vpe/msm_vpe.c
index 9698fb464380..f0c403f49043 100644
--- a/drivers/media/platform/msm/camera_v2/pproc/vpe/msm_vpe.c
+++ b/drivers/media/platform/msm/camera_v2/pproc/vpe/msm_vpe.c
@@ -52,7 +52,7 @@ static void vpe_mem_dump(const char * const name, const void * const addr,
int i;
u32 *p = (u32 *) addr;
u32 data;
- VPE_DBG("%s: (%s) %p %d\n", __func__, name, addr, size);
+ VPE_DBG("%s: (%s) %pK %d\n", __func__, name, addr, size);
line_str[0] = '\0';
p_str = line_str;
for (i = 0; i < size/4; i++) {
@@ -594,7 +594,7 @@ static int vpe_open_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
goto err_mutex_unlock;
}
- VPE_DBG("open %d %p\n", i, &fh->vfh);
+ VPE_DBG("open %d %pK\n", i, &fh->vfh);
vpe_dev->vpe_open_cnt++;
if (vpe_dev->vpe_open_cnt == 1) {
rc = vpe_init_hardware(vpe_dev);
@@ -649,7 +649,7 @@ static int vpe_close_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
return -ENODEV;
}
- VPE_DBG("close %d %p\n", i, &fh->vfh);
+ VPE_DBG("close %d %pK\n", i, &fh->vfh);
vpe_dev->vpe_open_cnt--;
if (vpe_dev->vpe_open_cnt == 0) {
vpe_deinit_mem(vpe_dev);
diff --git a/drivers/media/platform/msm/camera_v2/sensor/actuator/msm_actuator.c b/drivers/media/platform/msm/camera_v2/sensor/actuator/msm_actuator.c
index 3339ce10e67b..82eb2a8383bb 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/actuator/msm_actuator.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/actuator/msm_actuator.c
@@ -85,11 +85,6 @@ static void msm_actuator_parse_i2c_params(struct msm_actuator_ctrl_t *a_ctrl,
struct msm_camera_i2c_reg_array *i2c_tbl = a_ctrl->i2c_reg_tbl;
CDBG("Enter\n");
for (i = 0; i < size; i++) {
- /* check that the index into i2c_tbl cannot grow larger that
- the allocated size of i2c_tbl */
- if ((a_ctrl->total_steps + 1) < (a_ctrl->i2c_tbl_index)) {
- break;
- }
if (write_arr[i].reg_write_type == MSM_ACTUATOR_WRITE_DAC) {
value = (next_lens_position <<
write_arr[i].data_shift) |
@@ -103,6 +98,11 @@ static void msm_actuator_parse_i2c_params(struct msm_actuator_ctrl_t *a_ctrl,
i2c_byte2 = value & 0xFF;
CDBG("byte1:0x%x, byte2:0x%x\n",
i2c_byte1, i2c_byte2);
+ if (a_ctrl->i2c_tbl_index >
+ a_ctrl->total_steps) {
+ pr_err("failed:i2c table index out of bound\n");
+ break;
+ }
i2c_tbl[a_ctrl->i2c_tbl_index].
reg_addr = i2c_byte1;
i2c_tbl[a_ctrl->i2c_tbl_index].
@@ -123,6 +123,10 @@ static void msm_actuator_parse_i2c_params(struct msm_actuator_ctrl_t *a_ctrl,
i2c_byte2 = (hw_dword & write_arr[i].hw_mask) >>
write_arr[i].hw_shift;
}
+ if (a_ctrl->i2c_tbl_index > a_ctrl->total_steps) {
+ pr_err("failed: i2c table index out of bound\n");
+ break;
+ }
CDBG("i2c_byte1:0x%x, i2c_byte2:0x%x\n", i2c_byte1, i2c_byte2);
i2c_tbl[a_ctrl->i2c_tbl_index].reg_addr = i2c_byte1;
i2c_tbl[a_ctrl->i2c_tbl_index].reg_data = i2c_byte2;
@@ -753,7 +757,7 @@ static int32_t msm_actuator_direct_i2c_write(
int32_t i = 0;
if (NULL == i2c_table || NULL == a_ctrl) {
- pr_err("%s: NULL pointer: i2c_table:%p, a_ctrl:%p\n",
+ pr_err("%s: NULL pointer: i2c_table:%pK, a_ctrl:%pK\n",
__func__, i2c_table, a_ctrl);
return rc;
}
@@ -944,7 +948,7 @@ static long msm_actuator_subdev_ioctl(struct v4l2_subdev *sd,
struct msm_actuator_ctrl_t *a_ctrl = v4l2_get_subdevdata(sd);
void __user *argp = (void __user *)arg;
CDBG("Enter\n");
- CDBG("%s:%d a_ctrl %p argp %p\n", __func__, __LINE__, a_ctrl, argp);
+ CDBG("%s:%d a_ctrl %pK argp %pK\n", __func__, __LINE__, a_ctrl, argp);
switch (cmd) {
case VIDIOC_MSM_SENSOR_GET_SUBDEV_ID:
return msm_actuator_get_subdev_id(a_ctrl, argp);
@@ -1029,7 +1033,7 @@ static int32_t msm_actuator_i2c_probe(struct i2c_client *client,
goto probe_failure;
}
- CDBG("client = 0x%p\n", client);
+ CDBG("client = 0x%pK\n", client);
rc = of_property_read_u32(client->dev.of_node, "cell-index",
&act_ctrl_t->subdev_id);
diff --git a/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c b/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
index bb9335d28e96..3b2a8e36f665 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
@@ -461,7 +461,7 @@ static int32_t msm_cci_i2c_read_bytes(struct v4l2_subdev *sd,
uint16_t read_bytes = 0;
if (!sd || !c_ctrl) {
- pr_err("%s:%d sd %p c_ctrl %p\n", __func__,
+ pr_err("%s:%d sd %pK c_ctrl %pK\n", __func__,
__LINE__, sd, c_ctrl);
return -EINVAL;
}
@@ -709,7 +709,7 @@ static int32_t msm_cci_init(struct v4l2_subdev *sd,
enum cci_i2c_master_t master;
cci_dev = v4l2_get_subdevdata(sd);
if (!cci_dev || !c_ctrl) {
- pr_err("%s:%d failed: invalid params %p %p\n", __func__,
+ pr_err("%s:%d failed: invalid params %pK %pK\n", __func__,
__LINE__, cci_dev, c_ctrl);
rc = -ENOMEM;
return rc;
@@ -1228,7 +1228,7 @@ static int msm_cci_probe(struct platform_device *pdev)
{
struct cci_device *new_cci_dev;
int rc = 0;
- CDBG("%s: pdev %p device id = %d\n", __func__, pdev, pdev->id);
+ CDBG("%s: pdev %pK device id = %d\n", __func__, pdev, pdev->id);
new_cci_dev = kzalloc(sizeof(struct cci_device), GFP_KERNEL);
if (!new_cci_dev) {
CDBG("%s: no enough memory\n", __func__);
@@ -1240,7 +1240,7 @@ static int msm_cci_probe(struct platform_device *pdev)
ARRAY_SIZE(new_cci_dev->msm_sd.sd.name), "msm_cci");
v4l2_set_subdevdata(&new_cci_dev->msm_sd.sd, new_cci_dev);
platform_set_drvdata(pdev, &new_cci_dev->msm_sd.sd);
- CDBG("%s sd %p\n", __func__, &new_cci_dev->msm_sd.sd);
+ CDBG("%s sd %pK\n", __func__, &new_cci_dev->msm_sd.sd);
if (pdev->dev.of_node)
of_property_read_u32((&pdev->dev)->of_node,
"cell-index", &pdev->id);
@@ -1303,7 +1303,7 @@ static int msm_cci_probe(struct platform_device *pdev)
pr_err("%s: failed to add child nodes, rc=%d\n", __func__, rc);
new_cci_dev->cci_state = CCI_STATE_DISABLED;
g_cci_subdev = &new_cci_dev->msm_sd.sd;
- CDBG("%s cci subdev %p\n", __func__, &new_cci_dev->msm_sd.sd);
+ CDBG("%s cci subdev %pK\n", __func__, &new_cci_dev->msm_sd.sd);
CDBG("%s line %d\n", __func__, __LINE__);
return 0;
diff --git a/drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c b/drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c
index 877856b52d47..87c6aeb9afb2 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c
@@ -117,7 +117,7 @@ static int msm_csid_config(struct csid_device *csid_dev,
void __iomem *csidbase;
csidbase = csid_dev->base;
if (!csidbase || !csid_params) {
- pr_err("%s:%d csidbase %p, csid params %p\n", __func__,
+ pr_err("%s:%d csidbase %pK, csid params %pK\n", __func__,
__LINE__, csidbase, csid_params);
return -EINVAL;
}
@@ -316,7 +316,7 @@ static int32_t msm_csid_cmd(struct csid_device *csid_dev, void *arg)
struct csid_cfg_data *cdata = (struct csid_cfg_data *)arg;
if (!csid_dev || !cdata) {
- pr_err("%s:%d csid_dev %p, cdata %p\n", __func__, __LINE__,
+ pr_err("%s:%d csid_dev %pK, cdata %pK\n", __func__, __LINE__,
csid_dev, cdata);
return -EINVAL;
}
diff --git a/drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c b/drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c
index d7e940e3dec4..8aac9b6e67bd 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c
@@ -79,7 +79,7 @@ static int msm_csiphy_lane_config(struct csiphy_device *csiphy_dev,
val |= csiphy_params->csid_core;
}
msm_camera_io_w(val, csiphy_dev->clk_mux_base);
- CDBG("%s clk mux addr %p val 0x%x\n", __func__,
+ CDBG("%s clk mux addr %pK val 0x%x\n", __func__,
csiphy_dev->clk_mux_base, val);
mb();
}
@@ -215,7 +215,7 @@ static int msm_csiphy_init(struct csiphy_device *csiphy_dev)
ARRAY_SIZE(csiphy_clk_info), 1);
} else if (CSIPHY_VERSION >= CSIPHY_VERSION_V30) {
if (!csiphy_dev->clk_mux_mem || !csiphy_dev->clk_mux_io) {
- pr_err("%s clk mux mem %p io %p\n", __func__,
+ pr_err("%s clk mux mem %pK io %pK\n", __func__,
csiphy_dev->clk_mux_mem,
csiphy_dev->clk_mux_io);
rc = -ENOMEM;
@@ -314,7 +314,7 @@ static int msm_csiphy_init(struct csiphy_device *csiphy_dev)
ARRAY_SIZE(csiphy_clk_info), 1);
} else if (CSIPHY_VERSION >= CSIPHY_VERSION_V30) {
if (!csiphy_dev->clk_mux_mem || !csiphy_dev->clk_mux_io) {
- pr_err("%s clk mux mem %p io %p\n", __func__,
+ pr_err("%s clk mux mem %pK io %pK\n", __func__,
csiphy_dev->clk_mux_mem,
csiphy_dev->clk_mux_io);
rc = -ENOMEM;
@@ -393,7 +393,7 @@ static int msm_csiphy_release(struct csiphy_device *csiphy_dev, void *arg)
MIPI_CSIPHY_LNn_CFG2_ADDR + 0x40*i);
} else {
if (!csi_lane_params) {
- pr_err("%s:%d failed: csi_lane_params %p\n", __func__,
+ pr_err("%s:%d failed: csi_lane_params %pK\n", __func__,
__LINE__, csi_lane_params);
return -EINVAL;
}
@@ -476,7 +476,7 @@ static int msm_csiphy_release(struct csiphy_device *csiphy_dev, void *arg)
MIPI_CSIPHY_LNn_CFG2_ADDR + 0x40*i);
} else {
if (!csi_lane_params) {
- pr_err("%s:%d failed: csi_lane_params %p\n", __func__,
+ pr_err("%s:%d failed: csi_lane_params %pK\n", __func__,
__LINE__, csi_lane_params);
return -EINVAL;
}
diff --git a/drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c b/drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c
index d93b68a73807..448c1a2bf7e5 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c
@@ -193,7 +193,7 @@ static long msm_eeprom_subdev_ioctl(struct v4l2_subdev *sd,
struct msm_eeprom_ctrl_t *e_ctrl = v4l2_get_subdevdata(sd);
void __user *argp = (void __user *)arg;
CDBG("%s E\n", __func__);
- CDBG("%s:%d a_ctrl %p argp %p\n", __func__, __LINE__, e_ctrl, argp);
+ CDBG("%s:%d a_ctrl %pK argp %pK\n", __func__, __LINE__, e_ctrl, argp);
switch (cmd) {
case VIDIOC_MSM_SENSOR_GET_SUBDEV_ID:
return msm_eeprom_get_subdev_id(e_ctrl, argp);
@@ -480,7 +480,7 @@ static int msm_eeprom_i2c_probe(struct i2c_client *client,
}
e_ctrl->eeprom_v4l2_subdev_ops = &msm_eeprom_subdev_ops;
e_ctrl->eeprom_mutex = &msm_eeprom_mutex;
- CDBG("%s client = 0x%p\n", __func__, client);
+ CDBG("%s client = 0x%pK\n", __func__, client);
e_ctrl->eboard_info = (struct msm_eeprom_board_info *)(id->driver_data);
if (!e_ctrl->eboard_info) {
pr_err("%s:%d board info NULL\n", __func__, __LINE__);
diff --git a/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c b/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
index c693de011cc2..174f172945e9 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
@@ -33,7 +33,7 @@ int msm_camera_fill_vreg_params(struct camera_vreg_t *cam_vreg,
/* Validate input parameters */
if (!cam_vreg || !power_setting) {
- pr_err("%s:%d failed: cam_vreg %p power_setting %p", __func__,
+ pr_err("%s:%d failed: cam_vreg %pK power_setting %pK", __func__,
__LINE__, cam_vreg, power_setting);
return -EINVAL;
}
@@ -1066,7 +1066,7 @@ int msm_camera_power_up(struct msm_camera_power_ctrl_t *ctrl,
CDBG("%s:%d\n", __func__, __LINE__);
if (!ctrl || !sensor_i2c_client) {
- pr_err("failed ctrl %p sensor_i2c_client %p\n", ctrl,
+ pr_err("failed ctrl %pK sensor_i2c_client %pK\n", ctrl,
sensor_i2c_client);
return -EINVAL;
}
@@ -1260,7 +1260,7 @@ int msm_camera_power_down(struct msm_camera_power_ctrl_t *ctrl,
CDBG("%s:%d\n", __func__, __LINE__);
if (!ctrl || !sensor_i2c_client) {
- pr_err("failed ctrl %p sensor_i2c_client %p\n", ctrl,
+ pr_err("failed ctrl %pK sensor_i2c_client %pK\n", ctrl,
sensor_i2c_client);
return -EINVAL;
}
diff --git a/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_io_util.c b/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_io_util.c
index 2bcee6e07bc6..c9eea3c3888d 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_io_util.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_io_util.c
@@ -33,13 +33,13 @@
void msm_camera_io_w(u32 data, void __iomem *addr)
{
- CDBG("%s: 0x%p %08x\n", __func__, (addr), (data));
+ CDBG("%s: 0x%pK %08x\n", __func__, (addr), (data));
writel_relaxed((data), (addr));
}
void msm_camera_io_w_mb(u32 data, void __iomem *addr)
{
- CDBG("%s: 0x%p %08x\n", __func__, (addr), (data));
+ CDBG("%s: 0x%pK %08x\n", __func__, (addr), (data));
wmb();
writel_relaxed((data), (addr));
wmb();
@@ -48,7 +48,7 @@ void msm_camera_io_w_mb(u32 data, void __iomem *addr)
u32 msm_camera_io_r(void __iomem *addr)
{
uint32_t data = readl_relaxed(addr);
- CDBG("%s: 0x%p %08x\n", __func__, (addr), (data));
+ CDBG("%s: 0x%pK %08x\n", __func__, (addr), (data));
return data;
}
@@ -58,7 +58,7 @@ u32 msm_camera_io_r_mb(void __iomem *addr)
rmb();
data = readl_relaxed(addr);
rmb();
- CDBG("%s: 0x%p %08x\n", __func__, (addr), (data));
+ CDBG("%s: 0x%pK %08x\n", __func__, (addr), (data));
return data;
}
@@ -79,12 +79,12 @@ void msm_camera_io_dump(void __iomem *addr, int size)
int i;
u32 *p = (u32 *) addr;
u32 data;
- CDBG("%s: %p %d\n", __func__, addr, size);
+ CDBG("%s: %pK %d\n", __func__, addr, size);
line_str[0] = '\0';
p_str = line_str;
for (i = 0; i < size/4; i++) {
if (i % 4 == 0) {
- snprintf(p_str, 12, "0x%p: ", p);
+ snprintf(p_str, 12, "0x%pK: ", p);
p_str += 10;
}
data = readl_relaxed(p++);
@@ -103,7 +103,7 @@ void msm_camera_io_dump(void __iomem *addr, int size)
void msm_camera_io_memcpy(void __iomem *dest_addr,
void __iomem *src_addr, u32 len)
{
- CDBG("%s: %p %p %d\n", __func__, dest_addr, src_addr, len);
+ CDBG("%s: %pK %pK %d\n", __func__, dest_addr, src_addr, len);
msm_camera_io_memcpy_toio(dest_addr, src_addr, len / 4);
msm_camera_io_dump(dest_addr, len);
}
@@ -564,7 +564,7 @@ int msm_camera_request_gpio_table(struct gpio *gpio_tbl, uint8_t size,
int rc = 0, i = 0, err = 0;
if (!gpio_tbl || !size) {
- pr_err("%s:%d invalid gpio_tbl %p / size %d\n", __func__,
+ pr_err("%s:%d invalid gpio_tbl %pK / size %d\n", __func__,
__LINE__, gpio_tbl, size);
return -EINVAL;
}
@@ -600,7 +600,7 @@ int msm_camera_request_mux_gpio_table(struct device *dev, struct gpio *gpio_tbl,
struct pinctrl *pinctrl;
if (!gpio_tbl || !size) {
- pr_err("%s:%d invalid gpio_tbl %p / size %d\n", __func__,
+ pr_err("%s:%d invalid gpio_tbl %pK / size %d\n", __func__,
__LINE__, gpio_tbl, size);
return -EINVAL;
}
diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
index 2e78a9498435..ea2deb84a24f 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
@@ -397,7 +397,7 @@ int msm_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl)
struct msm_camera_i2c_client *sensor_i2c_client;
if (!s_ctrl) {
- pr_err("%s:%d failed: s_ctrl %p\n",
+ pr_err("%s:%d failed: s_ctrl %pK\n",
__func__, __LINE__, s_ctrl);
return -EINVAL;
}
@@ -407,7 +407,7 @@ int msm_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl)
sensor_i2c_client = s_ctrl->sensor_i2c_client;
if (!power_info || !sensor_i2c_client) {
- pr_err("%s:%d failed: power_info %p sensor_i2c_client %p\n",
+ pr_err("%s:%d failed: power_info %pK sensor_i2c_client %pK\n",
__func__, __LINE__, power_info, sensor_i2c_client);
return -EINVAL;
}
@@ -425,7 +425,7 @@ int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
uint32_t retry = 0;
if (!s_ctrl) {
- pr_err("%s:%d failed: %p\n",
+ pr_err("%s:%d failed: %pK\n",
__func__, __LINE__, s_ctrl);
return -EINVAL;
}
@@ -437,7 +437,7 @@ int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
if (!power_info || !sensor_i2c_client || !slave_info ||
!sensor_name) {
- pr_err("%s:%d failed: %p %p %p %p\n",
+ pr_err("%s:%d failed: %pK %pK %pK %pK\n",
__func__, __LINE__, power_info,
sensor_i2c_client, slave_info, sensor_name);
return -EINVAL;
@@ -471,7 +471,7 @@ int msm_sensor_match_id(struct msm_sensor_ctrl_t *s_ctrl)
const char *sensor_name;
if (!s_ctrl) {
- pr_err("%s:%d failed: %p\n",
+ pr_err("%s:%d failed: %pK\n",
__func__, __LINE__, s_ctrl);
return -EINVAL;
}
@@ -480,7 +480,7 @@ int msm_sensor_match_id(struct msm_sensor_ctrl_t *s_ctrl)
sensor_name = s_ctrl->sensordata->sensor_name;
if (!sensor_i2c_client || !slave_info || !sensor_name) {
- pr_err("%s:%d failed: %p %p %p\n",
+ pr_err("%s:%d failed: %pK %pK %pK\n",
__func__, __LINE__, sensor_i2c_client, slave_info,
sensor_name);
return -EINVAL;
@@ -1177,7 +1177,7 @@ int32_t msm_sensor_platform_probe(struct platform_device *pdev,
uint32_t session_id;
unsigned long mount_pos = 0;
s_ctrl->pdev = pdev;
- CDBG("%s called data %p\n", __func__, data);
+ CDBG("%s called data %pK\n", __func__, data);
CDBG("%s pdev name %s\n", __func__, pdev->id_entry->name);
if (pdev->dev.of_node) {
rc = msm_sensor_get_dt_data(pdev->dev.of_node, s_ctrl);
@@ -1389,13 +1389,13 @@ int32_t msm_sensor_init_default_params(struct msm_sensor_ctrl_t *s_ctrl)
/* Validate input parameters */
if (!s_ctrl) {
- pr_err("%s:%d failed: invalid params s_ctrl %p\n", __func__,
+ pr_err("%s:%d failed: invalid params s_ctrl %pK\n", __func__,
__LINE__, s_ctrl);
return -EINVAL;
}
if (!s_ctrl->sensor_i2c_client) {
- pr_err("%s:%d failed: invalid params sensor_i2c_client %p\n",
+ pr_err("%s:%d failed: invalid params sensor_i2c_client %pK\n",
__func__, __LINE__, s_ctrl->sensor_i2c_client);
return -EINVAL;
}
@@ -1404,7 +1404,7 @@ int32_t msm_sensor_init_default_params(struct msm_sensor_ctrl_t *s_ctrl)
s_ctrl->sensor_i2c_client->cci_client = kzalloc(sizeof(
struct msm_camera_cci_client), GFP_KERNEL);
if (!s_ctrl->sensor_i2c_client->cci_client) {
- pr_err("%s:%d failed: no memory cci_client %p\n", __func__,
+ pr_err("%s:%d failed: no memory cci_client %pK\n", __func__,
__LINE__, s_ctrl->sensor_i2c_client->cci_client);
return -ENOMEM;
}
@@ -1438,7 +1438,7 @@ int32_t msm_sensor_init_default_params(struct msm_sensor_ctrl_t *s_ctrl)
/* Initialize clock info */
clk_info = kzalloc(sizeof(cam_8974_clk_info), GFP_KERNEL);
if (!clk_info) {
- pr_err("%s:%d failed no memory clk_info %p\n", __func__,
+ pr_err("%s:%d failed no memory clk_info %pK\n", __func__,
__LINE__, clk_info);
rc = -ENOMEM;
goto FREE_CCI_CLIENT;
diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c
index 2557562cf693..1290e5d91e0a 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c
@@ -549,14 +549,14 @@ int32_t msm_sensor_driver_probe(void *setting)
/* Validate input parameters */
if (!setting) {
- pr_err("failed: slave_info %p", setting);
+ pr_err("failed: slave_info %pK", setting);
return -EINVAL;
}
/* Allocate memory for slave info */
slave_info = kzalloc(sizeof(*slave_info), GFP_KERNEL);
if (!slave_info) {
- pr_err("failed: no memory slave_info %p", slave_info);
+ pr_err("failed: no memory slave_info %pK", slave_info);
return -ENOMEM;
}
@@ -594,13 +594,13 @@ int32_t msm_sensor_driver_probe(void *setting)
/* Extract s_ctrl from camera id */
s_ctrl = g_sctrl[slave_info->camera_id];
if (!s_ctrl) {
- pr_err("failed: s_ctrl %p for camera_id %d", s_ctrl,
+ pr_err("failed: s_ctrl %pK for camera_id %d", s_ctrl,
slave_info->camera_id);
rc = -EINVAL;
goto FREE_SLAVE_INFO;
}
- CDBG("s_ctrl[%d] %p", slave_info->camera_id, s_ctrl);
+ CDBG("s_ctrl[%d] %pK", slave_info->camera_id, s_ctrl);
if (s_ctrl->is_probe_succeed == 1) {
/*
@@ -624,7 +624,7 @@ int32_t msm_sensor_driver_probe(void *setting)
/* Allocate memory for power up setting */
power_setting = kzalloc(sizeof(*power_setting) * size, GFP_KERNEL);
if (!power_setting) {
- pr_err("failed: no memory power_setting %p", power_setting);
+ pr_err("failed: no memory power_setting %pK", power_setting);
rc = -ENOMEM;
goto FREE_SLAVE_INFO;
}
@@ -657,7 +657,7 @@ int32_t msm_sensor_driver_probe(void *setting)
power_down_setting =
kzalloc(sizeof(*power_setting) * size_down, GFP_KERNEL);
if (!power_down_setting) {
- pr_err("failed: no memory power_setting %p",
+ pr_err("failed: no memory power_setting %pK",
power_down_setting);
rc = -ENOMEM;
goto FREE_POWER_SETTING;
@@ -705,7 +705,7 @@ int32_t msm_sensor_driver_probe(void *setting)
camera_info = kzalloc(sizeof(struct msm_camera_slave_info), GFP_KERNEL);
if (!camera_info) {
- pr_err("failed: no memory slave_info %p", camera_info);
+ pr_err("failed: no memory slave_info %pK", camera_info);
goto FREE_POWER_DOWN_SETTING;
}
@@ -727,7 +727,7 @@ int32_t msm_sensor_driver_probe(void *setting)
/* Fill CCI master, slave address and CCI default params */
if (!s_ctrl->sensor_i2c_client) {
- pr_err("failed: sensor_i2c_client %p",
+ pr_err("failed: sensor_i2c_client %pK",
s_ctrl->sensor_i2c_client);
rc = -EINVAL;
goto FREE_CAMERA_INFO;
@@ -740,7 +740,7 @@ int32_t msm_sensor_driver_probe(void *setting)
cci_client = s_ctrl->sensor_i2c_client->cci_client;
if (!cci_client) {
- pr_err("failed: cci_client %p", cci_client);
+ pr_err("failed: cci_client %pK", cci_client);
goto FREE_CAMERA_INFO;
}
cci_client->cci_i2c_master = s_ctrl->cci_i2c_master;
@@ -896,7 +896,7 @@ static int32_t msm_sensor_driver_get_gpio_data(
/* Validate input paramters */
if (!sensordata || !of_node) {
- pr_err("failed: invalid params sensordata %p of_node %p",
+ pr_err("failed: invalid params sensordata %pK of_node %pK",
sensordata, of_node);
return -EINVAL;
}
@@ -1073,7 +1073,7 @@ static int32_t msm_sensor_driver_parse(struct msm_sensor_ctrl_t *s_ctrl)
s_ctrl->sensor_i2c_client = kzalloc(sizeof(*s_ctrl->sensor_i2c_client),
GFP_KERNEL);
if (!s_ctrl->sensor_i2c_client) {
- pr_err("failed: no memory sensor_i2c_client %p",
+ pr_err("failed: no memory sensor_i2c_client %pK",
s_ctrl->sensor_i2c_client);
return -ENOMEM;
}
@@ -1082,7 +1082,7 @@ static int32_t msm_sensor_driver_parse(struct msm_sensor_ctrl_t *s_ctrl)
s_ctrl->msm_sensor_mutex = kzalloc(sizeof(*s_ctrl->msm_sensor_mutex),
GFP_KERNEL);
if (!s_ctrl->msm_sensor_mutex) {
- pr_err("failed: no memory msm_sensor_mutex %p",
+ pr_err("failed: no memory msm_sensor_mutex %pK",
s_ctrl->msm_sensor_mutex);
goto FREE_SENSOR_I2C_CLIENT;
}
@@ -1111,7 +1111,7 @@ static int32_t msm_sensor_driver_parse(struct msm_sensor_ctrl_t *s_ctrl)
/* Store sensor control structure in static database */
g_sctrl[s_ctrl->id] = s_ctrl;
- pr_err("g_sctrl[%d] %p", s_ctrl->id, g_sctrl[s_ctrl->id]);
+ pr_err("g_sctrl[%d] %pK", s_ctrl->id, g_sctrl[s_ctrl->id]);
return rc;
@@ -1137,7 +1137,7 @@ static int32_t msm_sensor_driver_platform_probe(struct platform_device *pdev)
/* Create sensor control structure */
s_ctrl = kzalloc(sizeof(*s_ctrl), GFP_KERNEL);
if (!s_ctrl) {
- pr_err("failed: no memory s_ctrl %p", s_ctrl);
+ pr_err("failed: no memory s_ctrl %pK", s_ctrl);
return -ENOMEM;
}
@@ -1183,7 +1183,7 @@ static int32_t msm_sensor_driver_i2c_probe(struct i2c_client *client,
/* Create sensor control structure */
s_ctrl = kzalloc(sizeof(*s_ctrl), GFP_KERNEL);
if (!s_ctrl) {
- pr_err("failed: no memory s_ctrl %p", s_ctrl);
+ pr_err("failed: no memory s_ctrl %pK", s_ctrl);
return -ENOMEM;
}
diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_init.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_init.c
index 971c2c5f989b..7f1c322ea0cf 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_init.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_init.c
@@ -72,7 +72,7 @@ static int32_t msm_sensor_driver_cmd(struct msm_sensor_init_t *s_init,
/* Validate input parameters */
if (!s_init || !cfg) {
- pr_err("failed: s_init %p cfg %p", s_init, cfg);
+ pr_err("failed: s_init %pK cfg %pK", s_init, cfg);
return -EINVAL;
}
@@ -112,7 +112,7 @@ static long msm_sensor_init_subdev_ioctl(struct v4l2_subdev *sd,
/* Validate input parameters */
if (!s_init) {
- pr_err("failed: s_init %p", s_init);
+ pr_err("failed: s_init %pK", s_init);
return -EINVAL;
}
@@ -134,11 +134,11 @@ static int __init msm_sensor_init_module(void)
/* Allocate memory for msm_sensor_init control structure */
s_init = kzalloc(sizeof(struct msm_sensor_init_t), GFP_KERNEL);
if (!s_init) {
- pr_err("failed: no memory s_init %p", NULL);
+ pr_err("failed: no memory s_init %pK", NULL);
return -ENOMEM;
}
- CDBG("MSM_SENSOR_INIT_MODULE %p", NULL);
+ CDBG("MSM_SENSOR_INIT_MODULE %pK", NULL);
/* Initialize mutex */
mutex_init(&s_init->imutex);
diff --git a/drivers/media/platform/msm/camera_v2/sensor/ois/msm_ois.c b/drivers/media/platform/msm/camera_v2/sensor/ois/msm_ois.c
index a570b345fa27..5d277f92f11e 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/ois/msm_ois.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/ois/msm_ois.c
@@ -733,7 +733,7 @@ static long msm_ois_subdev_ioctl(struct v4l2_subdev *sd,
struct msm_ois_ctrl_t *o_ctrl = v4l2_get_subdevdata(sd);
void __user *argp = (void __user *)arg;
CDBG("Enter\n");
- CDBG("%s:%d o_ctrl %p argp %p\n", __func__, __LINE__, o_ctrl, argp);
+ CDBG("%s:%d o_ctrl %pK argp %pK\n", __func__, __LINE__, o_ctrl, argp);
switch (cmd) {
case VIDIOC_MSM_SENSOR_GET_SUBDEV_ID:
return msm_ois_get_subdev_id(o_ctrl, argp);
@@ -817,7 +817,7 @@ static int32_t msm_ois_i2c_probe(struct i2c_client *client,
goto probe_failure;
}
- CDBG("client = 0x%p\n", client);
+ CDBG("client = 0x%pK\n", client);
rc = of_property_read_u32(client->dev.of_node, "cell-index",
&ois_ctrl_t->subdev_id);
diff --git a/drivers/misc/qcom/qdsp6v2/audio_utils_aio.c b/drivers/misc/qcom/qdsp6v2/audio_utils_aio.c
index d513d41256ef..13d3c85612de 100644
--- a/drivers/misc/qcom/qdsp6v2/audio_utils_aio.c
+++ b/drivers/misc/qcom/qdsp6v2/audio_utils_aio.c
@@ -561,6 +561,8 @@ int audio_aio_release(struct inode *inode, struct file *file)
struct q6audio_aio *audio = file->private_data;
pr_debug("%s[%p]\n", __func__, audio);
mutex_lock(&audio->lock);
+ mutex_lock(&audio->read_lock);
+ mutex_lock(&audio->write_lock);
audio->wflush = 1;
if (audio->enabled)
audio_aio_flush(audio);
@@ -576,6 +578,8 @@ int audio_aio_release(struct inode *inode, struct file *file)
audio_aio_reset_event_queue(audio);
q6asm_audio_client_free(audio->ac);
mutex_unlock(&audio->lock);
+ mutex_unlock(&audio->read_lock);
+ mutex_unlock(&audio->write_lock);
mutex_destroy(&audio->lock);
mutex_destroy(&audio->read_lock);
mutex_destroy(&audio->write_lock);
@@ -1346,22 +1350,30 @@ long audio_aio_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
struct msm_audio_ion_info info;
pr_debug("%s[%p]:AUDIO_REGISTER_ION\n", __func__, audio);
mutex_lock(&audio->lock);
+ mutex_lock(&audio->read_lock);
+ mutex_lock(&audio->write_lock);
if (copy_from_user(&info, (void *)arg, sizeof(info)))
rc = -EFAULT;
else
rc = audio_aio_ion_add(audio, &info);
mutex_unlock(&audio->lock);
+ mutex_unlock(&audio->read_lock);
+ mutex_unlock(&audio->write_lock);
break;
}
case AUDIO_DEREGISTER_ION: {
struct msm_audio_ion_info info;
mutex_lock(&audio->lock);
+ mutex_lock(&audio->read_lock);
+ mutex_lock(&audio->write_lock);
pr_debug("%s[%p]:AUDIO_DEREGISTER_ION\n", __func__, audio);
if (copy_from_user(&info, (void *)arg, sizeof(info)))
rc = -EFAULT;
else
rc = audio_aio_ion_remove(audio, &info);
mutex_unlock(&audio->lock);
+ mutex_unlock(&audio->read_lock);
+ mutex_unlock(&audio->write_lock);
break;
}
case AUDIO_GET_STREAM_CONFIG: {
diff --git a/drivers/soc/qcom/qdsp6v2/apr.c b/drivers/soc/qcom/qdsp6v2/apr.c
index a1275fa15839..1f70f3c991b2 100644
--- a/drivers/soc/qcom/qdsp6v2/apr.c
+++ b/drivers/soc/qcom/qdsp6v2/apr.c
@@ -442,7 +442,7 @@ void apr_cb_func(void *buf, int len, void *priv)
pr_debug("\n*****************\n");
if (!buf || len <= APR_HDR_SIZE) {
- pr_err("APR: Improper apr pkt received:%p %d\n", buf, len);
+ pr_err("APR: Improper apr pkt received:%pK %d\n", buf, len);
return;
}
hdr = buf;
@@ -528,7 +528,7 @@ void apr_cb_func(void *buf, int len, void *priv)
return;
}
pr_debug("svc_idx = %d\n", i);
- pr_debug("%x %x %x %p %p\n", c_svc->id, c_svc->dest_id,
+ pr_debug("%x %x %x %pK %pK\n", c_svc->id, c_svc->dest_id,
c_svc->client_id, c_svc->fn, c_svc->priv);
data.payload_size = hdr->pkt_size - hdr_size;
data.opcode = hdr->opcode;
@@ -592,7 +592,7 @@ static void apr_reset_deregister(struct work_struct *work)
container_of(work, struct apr_reset_work, work);
handle = apr_reset->handle;
- pr_debug("%s:handle[%p]\n", __func__, handle);
+ pr_debug("%s:handle[%pK]\n", __func__, handle);
apr_deregister(handle);
kfree(apr_reset);
}
@@ -625,7 +625,7 @@ int apr_deregister(void *handle)
client[dest_id][client_id].svc_cnt--;
if (!client[dest_id][client_id].svc_cnt) {
svc->need_reset = 0x0;
- pr_debug("%s: service is reset %p\n", __func__, svc);
+ pr_debug("%s: service is reset %pK\n", __func__, svc);
}
}
@@ -653,7 +653,7 @@ void apr_reset(void *handle)
if (!handle)
return;
- pr_debug("%s: handle[%p]\n", __func__, handle);
+ pr_debug("%s: handle[%pK]\n", __func__, handle);
if (apr_reset_workqueue == NULL) {
pr_err("%s: apr_reset_workqueue is NULL\n", __func__);
diff --git a/drivers/soc/qcom/qdsp6v2/dsp_debug.c b/drivers/soc/qcom/qdsp6v2/dsp_debug.c
index be47f587da40..76251013bc4a 100644
--- a/drivers/soc/qcom/qdsp6v2/dsp_debug.c
+++ b/drivers/soc/qcom/qdsp6v2/dsp_debug.c
@@ -169,7 +169,7 @@ static ssize_t dsp_read(struct file *file, char __user *buf,
}
if (copy_to_user(buf, ptr, PAGE_SIZE)) {
iounmap(mem_buffer);
- pr_err("[%s:%s] copy error @ %p\n", __MM_FILE__,
+ pr_err("[%s:%s] copy error @ %pK\n", __MM_FILE__,
__func__, buf);
return -EFAULT;
}
diff --git a/drivers/soc/qcom/qdsp6v2/msm_audio_ion.c b/drivers/soc/qcom/qdsp6v2/msm_audio_ion.c
index 1661a55bf821..a93c6315996d 100644
--- a/drivers/soc/qcom/qdsp6v2/msm_audio_ion.c
+++ b/drivers/soc/qcom/qdsp6v2/msm_audio_ion.c
@@ -95,11 +95,11 @@ int msm_audio_ion_alloc(const char *name, struct ion_client **client,
pr_err("%s: ION memory mapping for AUDIO failed\n", __func__);
goto err_ion_handle;
}
- pr_debug("%s: mapped address = %p, size=%zd\n", __func__,
+ pr_debug("%s: mapped address = %pK, size=%zd\n", __func__,
*vaddr, bufsz);
if (bufsz != 0) {
- pr_debug("%s: memset to 0 %p %zd\n", __func__, *vaddr, bufsz);
+ pr_debug("%s: memset to 0 %pK %zd\n", __func__, *vaddr, bufsz);
memset((void *)*vaddr, 0, bufsz);
}
@@ -144,7 +144,7 @@ int msm_audio_ion_import(const char *name, struct ion_client **client,
bufsz should be 0 and fd shouldn't be 0 as of now
*/
*handle = ion_import_dma_buf(*client, fd);
- pr_debug("%s: DMA Buf name=%s, fd=%d handle=%p\n", __func__,
+ pr_debug("%s: DMA Buf name=%s, fd=%d handle=%pK\n", __func__,
name, fd, *handle);
if (IS_ERR_OR_NULL((void *) (*handle))) {
pr_err("%s: ion import dma buffer failed\n",
@@ -175,7 +175,7 @@ int msm_audio_ion_import(const char *name, struct ion_client **client,
rc = -ENOMEM;
goto err_ion_handle;
}
- pr_debug("%s: mapped address = %p, size=%zd\n", __func__,
+ pr_debug("%s: mapped address = %pK, size=%zd\n", __func__,
*vaddr, bufsz);
return 0;
@@ -198,7 +198,7 @@ int msm_audio_ion_free(struct ion_client *client, struct ion_handle *handle)
}
if (msm_audio_ion_data.smmu_enabled) {
/* Need to populate book kept infomation */
- pr_debug("client=%p, domain=%p, domain_id=%d, group=%p",
+ pr_debug("client=%pK, domain=%pK, domain_id=%d, group=%pK",
client, msm_audio_ion_data.domain,
msm_audio_ion_data.domain_id, msm_audio_ion_data.group);
@@ -263,7 +263,7 @@ int msm_audio_ion_mmap(struct audio_buffer *ab,
offset = 0;
}
len = min(len, remainder);
- pr_debug("vma=%p, addr=%x len=%ld vm_start=%x vm_end=%x vm_page_prot=%ld\n",
+ pr_debug("vma=%pK, addr=%x len=%ld vm_start=%x vm_end=%x vm_page_prot=%ld\n",
vma, (unsigned int)addr, len,
(unsigned int)vma->vm_start,
(unsigned int)vma->vm_end,
@@ -287,7 +287,7 @@ int msm_audio_ion_mmap(struct audio_buffer *ab,
return ret;
}
pr_debug("phys=%pa len=%zd\n", &phys_addr, phys_len);
- pr_debug("vma=%p, vm_start=%x vm_end=%x vm_pgoff=%ld vm_page_prot=%ld\n",
+ pr_debug("vma=%pK, vm_start=%x vm_end=%x vm_pgoff=%ld vm_page_prot=%ld\n",
vma, (unsigned int)vma->vm_start,
(unsigned int)vma->vm_end, vma->vm_pgoff,
(unsigned long int)vma->vm_page_prot);
@@ -324,7 +324,7 @@ struct ion_client *msm_audio_ion_client_create(unsigned int heap_mask,
void msm_audio_ion_client_destroy(struct ion_client *client)
{
- pr_debug("%s: client = %p smmu_enabled = %d\n", __func__,
+ pr_debug("%s: client = %pK smmu_enabled = %d\n", __func__,
client, msm_audio_ion_data.smmu_enabled);
ion_client_destroy(client);
@@ -346,7 +346,7 @@ int msm_audio_ion_import_legacy(const char *name, struct ion_client *client,
bufsz should be 0 and fd shouldn't be 0 as of now
*/
*handle = ion_import_dma_buf(client, fd);
- pr_debug("%s: DMA Buf name=%s, fd=%d handle=%p\n", __func__,
+ pr_debug("%s: DMA Buf name=%s, fd=%d handle=%pK\n", __func__,
name, fd, *handle);
if (IS_ERR_OR_NULL((void *)(*handle))) {
pr_err("%s: ion import dma buffer failed\n",
@@ -412,7 +412,7 @@ int msm_audio_ion_cache_operations(struct audio_buffer *abuff, int cache_op)
int msm_cache_ops = 0;
if (!abuff) {
- pr_err("Invalid params: %p, %p\n", __func__, abuff);
+ pr_err("Invalid params: %pK, %pK\n", __func__, abuff);
return -EINVAL;
}
rc = ion_handle_get_flags(abuff->client, abuff->handle,
@@ -458,7 +458,7 @@ static int msm_audio_ion_get_phys(struct ion_client *client,
pr_err("%s: ION map iommu failed %d\n", __func__, rc);
return rc;
}
- pr_debug("client=%p, domain=%p, domain_id=%d, group=%p",
+ pr_debug("client=%pK, domain=%pK, domain_id=%d, group=%pK",
client, msm_audio_ion_data.domain,
msm_audio_ion_data.domain_id, msm_audio_ion_data.group);
} else {
@@ -503,18 +503,18 @@ static int msm_audio_ion_probe(struct platform_device *pdev)
msm_audio_ion_data.domain =
iommu_group_get_iommudata(msm_audio_ion_data.group);
if (IS_ERR_OR_NULL(msm_audio_ion_data.domain)) {
- pr_err("Failed to get domain data for group %p",
+ pr_err("Failed to get domain data for group %pK",
msm_audio_ion_data.group);
goto fail_group;
}
msm_audio_ion_data.domain_id =
msm_find_domain_no(msm_audio_ion_data.domain);
if (msm_audio_ion_data.domain_id < 0) {
- pr_err("Failed to get domain index for domain %p",
+ pr_err("Failed to get domain index for domain %pK",
msm_audio_ion_data.domain);
goto fail_group;
}
- pr_debug("domain=%p, domain_id=%d, group=%p",
+ pr_debug("domain=%pK, domain_id=%d, group=%pK",
msm_audio_ion_data.domain,
msm_audio_ion_data.domain_id, msm_audio_ion_data.group);
@@ -538,7 +538,7 @@ fail_group:
static int msm_audio_ion_remove(struct platform_device *pdev)
{
- pr_debug("%s: msm audio ion is unloaded, domain=%p, group=%p\n",
+ pr_debug("%s: msm audio ion is unloaded, domain=%pK, group=%pK\n",
__func__, msm_audio_ion_data.domain, msm_audio_ion_data.group);
iommu_detach_group(msm_audio_ion_data.domain, msm_audio_ion_data.group);
diff --git a/drivers/staging/android/binder.c b/drivers/staging/android/binder.c
index e17c2667cda8..382b7b0723f0 100644
--- a/drivers/staging/android/binder.c
+++ b/drivers/staging/android/binder.c
@@ -527,7 +527,7 @@ static void binder_insert_free_buffer(struct binder_proc *proc,
new_buffer_size = binder_buffer_size(proc, new_buffer);
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: add free buffer, size %zd, at %p\n",
+ "%d: add free buffer, size %zd, at %pK\n",
proc->pid, new_buffer_size, new_buffer);
while (*p) {
@@ -606,7 +606,7 @@ static int binder_update_page_range(struct binder_proc *proc, int allocate,
struct mm_struct *mm;
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: %s pages %p-%p\n", proc->pid,
+ "%d: %s pages %pK-%pK\n", proc->pid,
allocate ? "allocate" : "free", start, end);
if (end <= start)
@@ -648,7 +648,7 @@ static int binder_update_page_range(struct binder_proc *proc, int allocate,
BUG_ON(*page);
*page = alloc_page(GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO);
if (*page == NULL) {
- pr_err("%d: binder_alloc_buf failed for page at %p\n",
+ pr_err("%d: binder_alloc_buf failed for page at %pK\n",
proc->pid, page_addr);
goto err_alloc_page_failed;
}
@@ -657,7 +657,7 @@ static int binder_update_page_range(struct binder_proc *proc, int allocate,
page_array_ptr = page;
ret = map_vm_area(&tmp_area, PAGE_KERNEL, &page_array_ptr);
if (ret) {
- pr_err("%d: binder_alloc_buf failed to map page at %p in kernel\n",
+ pr_err("%d: binder_alloc_buf failed to map page at %pK in kernel\n",
proc->pid, page_addr);
goto err_map_kernel_failed;
}
@@ -767,7 +767,7 @@ static struct binder_buffer *binder_alloc_buf(struct binder_proc *proc,
}
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: binder_alloc_buf size %zd got buffer %p size %zd\n",
+ "%d: binder_alloc_buf size %zd got buffer %pK size %zd\n",
proc->pid, size, buffer, buffer_size);
has_page_addr =
@@ -796,7 +796,7 @@ static struct binder_buffer *binder_alloc_buf(struct binder_proc *proc,
binder_insert_free_buffer(proc, new_buffer);
}
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: binder_alloc_buf size %zd got %p\n",
+ "%d: binder_alloc_buf size %zd got %pK\n",
proc->pid, size, buffer);
buffer->data_size = data_size;
buffer->offsets_size = offsets_size;
@@ -836,7 +836,7 @@ static void binder_delete_free_buffer(struct binder_proc *proc,
if (buffer_end_page(prev) == buffer_end_page(buffer))
free_page_end = 0;
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: merge free, buffer %p share page with %p\n",
+ "%d: merge free, buffer %pK share page with %pK\n",
proc->pid, buffer, prev);
}
@@ -849,14 +849,14 @@ static void binder_delete_free_buffer(struct binder_proc *proc,
buffer_start_page(buffer))
free_page_start = 0;
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: merge free, buffer %p share page with %p\n",
+ "%d: merge free, buffer %pK share page with %pK\n",
proc->pid, buffer, prev);
}
}
list_del(&buffer->entry);
if (free_page_start || free_page_end) {
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: merge free, buffer %p do not share page%s%s with %p or %p\n",
+ "%d: merge free, buffer %pK do not share page%s%s with %pK or %pK\n",
proc->pid, buffer, free_page_start ? "" : " end",
free_page_end ? "" : " start", prev, next);
binder_update_page_range(proc, 0, free_page_start ?
@@ -877,7 +877,7 @@ static void binder_free_buf(struct binder_proc *proc,
ALIGN(buffer->offsets_size, sizeof(void *));
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%d: binder_free_buf %p size %zd buffer_size %zd\n",
+ "%d: binder_free_buf %pK size %zd buffer_size %zd\n",
proc->pid, buffer, size, buffer_size);
BUG_ON(buffer->free);
@@ -1304,7 +1304,7 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
int debug_id = buffer->debug_id;
binder_debug(BINDER_DEBUG_TRANSACTION,
- "%d buffer release %d, size %zd-%zd, failed at %p\n",
+ "%d buffer release %d, size %zd-%zd, failed at %pK\n",
proc->pid, buffer->debug_id,
buffer->data_size, buffer->offsets_size, failed_at);
@@ -2152,7 +2152,7 @@ static int binder_thread_write(struct binder_proc *proc,
}
}
binder_debug(BINDER_DEBUG_DEAD_BINDER,
- "%d:%d BC_DEAD_BINDER_DONE %016llx found %p\n",
+ "%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n",
proc->pid, thread->pid, (u64)cookie, death);
if (death == NULL) {
binder_user_error("%d:%d BC_DEAD_BINDER_DONE %016llx not found\n",
@@ -2900,7 +2900,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
#ifdef CONFIG_CPU_CACHE_VIPT
if (cache_is_vipt_aliasing()) {
while (CACHE_COLOUR((vma->vm_start ^ (uint32_t)proc->buffer))) {
- pr_info("binder_mmap: %d %lx-%lx maps %p bad alignment\n", proc->pid, vma->vm_start, vma->vm_end, proc->buffer);
+ pr_info("binder_mmap: %d %lx-%lx maps %pK bad alignment\n", proc->pid, vma->vm_start, vma->vm_end, proc->buffer);
vma->vm_start += PAGE_SIZE;
}
}
@@ -2936,7 +2936,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
proc->vma = vma;
proc->vma_vm_mm = vma->vm_mm;
- /*pr_info("binder_mmap: %d %lx-%lx maps %p\n",
+ /*pr_info("binder_mmap: %d %lx-%lx maps %pK\n",
proc->pid, vma->vm_start, vma->vm_end, proc->buffer);*/
return 0;
@@ -3158,7 +3158,7 @@ static void binder_deferred_release(struct binder_proc *proc)
page_addr = proc->buffer + i * PAGE_SIZE;
binder_debug(BINDER_DEBUG_BUFFER_ALLOC,
- "%s: %d: page %d at %p not freed\n",
+ "%s: %d: page %d at %pK not freed\n",
__func__, proc->pid, i, page_addr);
unmap_kernel_range((unsigned long)page_addr, PAGE_SIZE);
__free_page(proc->pages[i]);
@@ -3242,7 +3242,7 @@ static void print_binder_transaction(struct seq_file *m, const char *prefix,
struct binder_transaction *t)
{
seq_printf(m,
- "%s %d: %p from %d:%d to %d:%d code %x flags %x pri %ld r%d",
+ "%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %ld r%d",
prefix, t->debug_id, t,
t->from ? t->from->proc->pid : 0,
t->from ? t->from->pid : 0,
@@ -3256,7 +3256,7 @@ static void print_binder_transaction(struct seq_file *m, const char *prefix,
if (t->buffer->target_node)
seq_printf(m, " node %d",
t->buffer->target_node->debug_id);
- seq_printf(m, " size %zd:%zd data %p\n",
+ seq_printf(m, " size %zd:%zd data %pK\n",
t->buffer->data_size, t->buffer->offsets_size,
t->buffer->data);
}
@@ -3264,7 +3264,7 @@ static void print_binder_transaction(struct seq_file *m, const char *prefix,
static void print_binder_buffer(struct seq_file *m, const char *prefix,
struct binder_buffer *buffer)
{
- seq_printf(m, "%s %d: %p size %zd:%zd %s\n",
+ seq_printf(m, "%s %d: %pK size %zd:%zd %s\n",
prefix, buffer->debug_id, buffer->data,
buffer->data_size, buffer->offsets_size,
buffer->transaction ? "active" : "delivered");
diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
index 258ffe80554b..42795e803686 100644..100755
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -397,13 +397,22 @@ static void ion_handle_get(struct ion_handle *handle)
kref_get(&handle->ref);
}
+static int ion_handle_put_nolock(struct ion_handle *handle)
+{
+ int ret;
+
+ ret = kref_put(&handle->ref, ion_handle_destroy);
+
+ return ret;
+}
+
int ion_handle_put(struct ion_handle *handle)
{
struct ion_client *client = handle->client;
int ret;
mutex_lock(&client->lock);
- ret = kref_put(&handle->ref, ion_handle_destroy);
+ ret = ion_handle_put_nolock(handle);
mutex_unlock(&client->lock);
return ret;
@@ -426,20 +435,30 @@ static struct ion_handle *ion_handle_lookup(struct ion_client *client,
return ERR_PTR(-EINVAL);
}
-struct ion_handle *ion_handle_get_by_id(struct ion_client *client,
+static struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
int id)
{
struct ion_handle *handle;
- mutex_lock(&client->lock);
handle = idr_find(&client->idr, id);
if (handle)
ion_handle_get(handle);
- mutex_unlock(&client->lock);
return handle ? handle : ERR_PTR(-EINVAL);
}
+struct ion_handle *ion_handle_get_by_id(struct ion_client *client,
+ int id)
+{
+ struct ion_handle *handle;
+
+ mutex_lock(&client->lock);
+ handle = ion_handle_get_by_id_nolock(client, id);
+ mutex_unlock(&client->lock);
+
+ return handle;
+}
+
static bool ion_handle_validate(struct ion_client *client,
struct ion_handle *handle)
{
@@ -591,21 +610,28 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
}
EXPORT_SYMBOL(ion_alloc);
-void ion_free(struct ion_client *client, struct ion_handle *handle)
+static void ion_free_nolock(struct ion_client *client, struct ion_handle *handle)
{
bool valid_handle;
BUG_ON(client != handle->client);
- mutex_lock(&client->lock);
valid_handle = ion_handle_validate(client, handle);
+
if (!valid_handle) {
WARN(1, "%s: invalid handle passed to free.\n", __func__);
- mutex_unlock(&client->lock);
return;
}
+ ion_handle_put_nolock(handle);
+}
+
+void ion_free(struct ion_client *client, struct ion_handle *handle)
+{
+ BUG_ON(client != handle->client);
+
+ mutex_lock(&client->lock);
+ ion_free_nolock(client, handle);
mutex_unlock(&client->lock);
- ion_handle_put(handle);
}
EXPORT_SYMBOL(ion_free);
@@ -745,7 +771,7 @@ static int ion_debug_client_show(struct seq_file *s, void *unused)
struct ion_handle *handle = rb_entry(n, struct ion_handle,
node);
- seq_printf(s, "%16.16s: %16zx : %16d : %12p",
+ seq_printf(s, "%16.16s: %16zx : %16d : %12pK",
handle->buffer->heap->name,
handle->buffer->size,
atomic_read(&handle->ref.refcount),
@@ -1100,7 +1126,7 @@ static void ion_vm_open(struct vm_area_struct *vma)
mutex_lock(&buffer->lock);
list_add(&vma_list->list, &buffer->vmas);
mutex_unlock(&buffer->lock);
- pr_debug("%s: adding %p\n", __func__, vma);
+ pr_debug("%s: adding %pK\n", __func__, vma);
}
static void ion_vm_close(struct vm_area_struct *vma)
@@ -1115,7 +1141,7 @@ static void ion_vm_close(struct vm_area_struct *vma)
continue;
list_del(&vma_list->list);
kfree(vma_list);
- pr_debug("%s: deleting %p\n", __func__, vma);
+ pr_debug("%s: deleting %pK\n", __func__, vma);
break;
}
mutex_unlock(&buffer->lock);
@@ -1403,11 +1429,15 @@ static long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct ion_handle *handle;
- handle = ion_handle_get_by_id(client, data.handle.handle);
- if (IS_ERR(handle))
+ mutex_lock(&client->lock);
+ handle = ion_handle_get_by_id_nolock(client, data.handle.handle);
+ if (IS_ERR(handle)) {
+ mutex_unlock(&client->lock);
return PTR_ERR(handle);
- ion_free(client, handle);
- ion_handle_put(handle);
+ }
+ ion_free_nolock(client, handle);
+ ion_handle_put_nolock(handle);
+ mutex_unlock(&client->lock);
break;
}
case ION_IOC_SHARE:
diff --git a/drivers/usb/gadget/f_mbim.c b/drivers/usb/gadget/f_mbim.c
index d1d10e07eb8d..797756dc4654 100644
--- a/drivers/usb/gadget/f_mbim.c
+++ b/drivers/usb/gadget/f_mbim.c
@@ -589,24 +589,24 @@ static void fmbim_ctrl_response_available(struct f_mbim *dev)
unsigned long flags;
int ret;
- pr_debug("dev:%p portno#%d\n", dev, dev->port_num);
+ pr_debug("dev:%pK portno#%d\n", dev, dev->port_num);
spin_lock_irqsave(&dev->lock, flags);
if (!atomic_read(&dev->online)) {
- pr_err("dev:%p is not online\n", dev);
+ pr_err("dev:%pK is not online\n", dev);
spin_unlock_irqrestore(&dev->lock, flags);
return;
}
if (!req) {
- pr_err("dev:%p req is NULL\n", dev);
+ pr_err("dev:%pK req is NULL\n", dev);
spin_unlock_irqrestore(&dev->lock, flags);
return;
}
if (!req->buf) {
- pr_err("dev:%p req->buf is NULL\n", dev);
+ pr_err("dev:%pK req->buf is NULL\n", dev);
spin_unlock_irqrestore(&dev->lock, flags);
return;
}
@@ -645,21 +645,21 @@ fmbim_send_cpkt_response(struct f_mbim *gr, struct ctrl_pkt *cpkt)
unsigned long flags;
if (!gr || !cpkt) {
- pr_err("Invalid cpkt, dev:%p cpkt:%p\n",
+ pr_err("Invalid cpkt, dev:%pK cpkt:%pK\n",
gr, cpkt);
return -ENODEV;
}
- pr_debug("dev:%p port_num#%d\n", dev, dev->port_num);
+ pr_debug("dev:%pK port_num#%d\n", dev, dev->port_num);
if (!atomic_read(&dev->online)) {
- pr_err("dev:%p is not connected\n", dev);
+ pr_err("dev:%pK is not connected\n", dev);
mbim_free_ctrl_pkt(cpkt);
return 0;
}
if (dev->not_port.notify_state != MBIM_NOTIFY_RESPONSE_AVAILABLE) {
- pr_err("dev:%p state=%d, recover!!\n", dev,
+ pr_err("dev:%pK state=%d, recover!!\n", dev,
dev->not_port.notify_state);
mbim_free_ctrl_pkt(cpkt);
return 0;
@@ -700,7 +700,7 @@ static int mbim_bam_connect(struct f_mbim *dev)
enum peer_bam bam_name = (dev->xport == USB_GADGET_XPORT_BAM2BAM_IPA) ?
IPA_P_BAM : A2_P_BAM;
- pr_info("dev:%p portno:%d\n", dev, dev->port_num);
+ pr_info("dev:%pK portno:%d\n", dev, dev->port_num);
src_connection_idx = usb_bam_get_connection_idx(gadget->name, bam_name,
USB_TO_PEER_PERIPHERAL, USB_BAM_DEVICE, dev->port_num);
@@ -727,7 +727,7 @@ static int mbim_bam_connect(struct f_mbim *dev)
static int mbim_bam_disconnect(struct f_mbim *dev)
{
- pr_info("%s - dev:%p port:%d\n", __func__, dev, dev->port_num);
+ pr_info("%s - dev:%pK port:%d\n", __func__, dev, dev->port_num);
bam_data_disconnect(&dev->bam_port, dev->port_num);
return 0;
@@ -862,7 +862,7 @@ static void mbim_notify_complete(struct usb_ep *ep, struct usb_request *req)
struct f_mbim *mbim = req->context;
struct usb_cdc_notification *event = req->buf;
- pr_debug("dev:%p\n", mbim);
+ pr_debug("dev:%pK\n", mbim);
spin_lock(&mbim->lock);
switch (req->status) {
@@ -892,7 +892,7 @@ static void mbim_notify_complete(struct usb_ep *ep, struct usb_request *req)
mbim_do_notify(mbim);
spin_unlock(&mbim->lock);
- pr_debug("dev:%p Exit\n", mbim);
+ pr_debug("dev:%pK Exit\n", mbim);
}
static void mbim_ep0out_complete(struct usb_ep *ep, struct usb_request *req)
@@ -903,7 +903,7 @@ static void mbim_ep0out_complete(struct usb_ep *ep, struct usb_request *req)
struct f_mbim *mbim = func_to_mbim(f);
struct mbim_ntb_input_size *ntb = NULL;
- pr_debug("dev:%p\n", mbim);
+ pr_debug("dev:%pK\n", mbim);
req->context = NULL;
if (req->status || req->actual != req->length) {
@@ -941,7 +941,7 @@ static void mbim_ep0out_complete(struct usb_ep *ep, struct usb_request *req)
invalid:
usb_ep_set_halt(ep);
- pr_err("dev:%p Failed\n", mbim);
+ pr_err("dev:%pK Failed\n", mbim);
return;
}
@@ -963,7 +963,7 @@ fmbim_cmd_complete(struct usb_ep *ep, struct usb_request *req)
return;
}
- pr_debug("dev:%p port#%d\n", dev, dev->port_num);
+ pr_debug("dev:%pK port#%d\n", dev, dev->port_num);
cpkt = mbim_alloc_ctrl_pkt(len, GFP_ATOMIC);
if (!cpkt) {
@@ -1313,7 +1313,7 @@ static int mbim_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
return ret;
}
- pr_info("Set mbim port in_desc = 0x%p",
+ pr_info("Set mbim port in_desc = 0x%pK",
mbim->bam_port.in->desc);
ret = config_ep_by_speed(cdev->gadget, f,
@@ -1325,7 +1325,7 @@ static int mbim_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
return ret;
}
- pr_info("Set mbim port out_desc = 0x%p",
+ pr_info("Set mbim port out_desc = 0x%pK",
mbim->bam_port.out->desc);
if (mbim->xport == USB_GADGET_XPORT_BAM2BAM_IPA
diff --git a/drivers/video/fbcmap.c b/drivers/video/fbcmap.c
index f26570d83d14..2a358ae7754a 100644
--- a/drivers/video/fbcmap.c
+++ b/drivers/video/fbcmap.c
@@ -196,7 +196,7 @@ int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to)
int tooff = 0, fromoff = 0;
int size;
- if (!to || !from)
+ if (!to || !from || (int)(to->start) < 0)
return -EINVAL;
if (to->start > from->start)
diff --git a/drivers/video/msm/mdss/mdp3.c b/drivers/video/msm/mdss/mdp3.c
index 93c0f2b86bfa..28d7678da713 100644
--- a/drivers/video/msm/mdss/mdp3.c
+++ b/drivers/video/msm/mdss/mdp3.c
@@ -872,7 +872,7 @@ static int mdp3_res_init(void)
mdp3_res->ion_client = msm_ion_client_create(-1, mdp3_res->pdev->name);
if (IS_ERR_OR_NULL(mdp3_res->ion_client)) {
- pr_err("msm_ion_client_create() return error (%p)\n",
+ pr_err("msm_ion_client_create() return error (%pK)\n",
mdp3_res->ion_client);
mdp3_res->ion_client = NULL;
return -EINVAL;
@@ -1186,7 +1186,7 @@ void mdp3_unmap_iommu(struct ion_client *client, struct ion_handle *handle)
mutex_lock(&mdp3_res->iommu_lock);
meta = mdp3_iommu_meta_lookup(table);
if (!meta) {
- WARN(1, "%s: buffer was never mapped for %p\n", __func__,
+ WARN(1, "%s: buffer was never mapped for %pK\n", __func__,
handle);
mutex_unlock(&mdp3_res->iommu_lock);
goto out;
@@ -1214,7 +1214,7 @@ static void mdp3_iommu_meta_add(struct mdp3_iommu_meta *meta)
} else if (meta->table > entry->table) {
p = &(*p)->rb_right;
} else {
- pr_err("%s: handle %p already exists\n", __func__,
+ pr_err("%s: handle %pK already exists\n", __func__,
entry->handle);
BUG();
}
@@ -1276,7 +1276,7 @@ static int mdp3_iommu_map_iommu(struct mdp3_iommu_meta *meta,
ret = iommu_map_range(domain, meta->iova_addr + padding,
table->sgl, size, prot);
if (ret) {
- pr_err("%s: could not map %pa in domain %p\n",
+ pr_err("%s: could not map %pa in domain %pK\n",
__func__, &meta->iova_addr, domain);
unmap_size = padding;
goto out2;
@@ -1401,12 +1401,12 @@ int mdp3_self_map_iommu(struct ion_client *client, struct ion_handle *handle,
}
} else {
if (iommu_meta->flags != iommu_flags) {
- pr_err("%s: handle %p is already mapped with diff flag\n",
+ pr_err("%s: handle %pK is already mapped with diff flag\n",
__func__, handle);
ret = -EINVAL;
goto out_unlock;
} else if (iommu_meta->mapped_size != iova_length) {
- pr_err("%s: handle %p is already mapped with diff len\n",
+ pr_err("%s: handle %pK is already mapped with diff len\n",
__func__, handle);
ret = -EINVAL;
goto out_unlock;
@@ -1525,7 +1525,7 @@ done:
data->addr += img->offset;
data->len -= img->offset;
- pr_debug("mem=%d ihdl=%p buf=0x%pa len=0x%x\n", img->memory_id,
+ pr_debug("mem=%d ihdl=%pK buf=0x%pa len=0x%x\n", img->memory_id,
data->srcp_ihdl, &data->addr, data->len);
} else {
mdp3_put_img(data, client);
@@ -1655,7 +1655,7 @@ static int mdp3_alloc(struct msm_fb_data_type *mfd)
pr_err("fail to map to IOMMU %d\n", ret);
return ret;
}
- pr_info("allocating %u bytes at %p (%lx phys) for fb %d\n",
+ pr_info("allocating %u bytes at %pK (%lx phys) for fb %d\n",
size, virt, phys, mfd->index);
mfd->fbi->screen_base = virt;
diff --git a/drivers/video/msm/mdss/mdss_debug.c b/drivers/video/msm/mdss/mdss_debug.c
index f8f811190b00..4f28569808c2 100644
--- a/drivers/video/msm/mdss/mdss_debug.c
+++ b/drivers/video/msm/mdss/mdss_debug.c
@@ -731,7 +731,7 @@ void mdss_dump_reg(const char *name, char __iomem *base, int len, bool dump_in_m
iterator = iterator->next;
iterator->next = dump_info;
}
- pr_info("start_address:%p end_address:%p\n", dump_addr,
+ pr_info("start_address:%pK end_address:%pK\n", dump_addr,
dump_addr + dump_info->len);
mutex_unlock(&reg_dump_info_mutex);
@@ -744,7 +744,7 @@ void mdss_dump_reg(const char *name, char __iomem *base, int len, bool dump_in_m
x8 = readl_relaxed(addr+0x8);
xc = readl_relaxed(addr+0xc);
if (!dump_in_memory) {
- pr_info("%p : %08x %08x %08x %08x\n", addr, x0, x4, x8, xc);
+ pr_info("%pK : %08x %08x %08x %08x\n", addr, x0, x4, x8, xc);
} else {
dump_addr[i*4] = x0;
dump_addr[i*4 + 1] = x4;
@@ -895,7 +895,7 @@ static void mdss_dump_mdp_debug_bus(bool dump_in_memory)
iterator = iterator->next;
iterator->next = dump_info;
}
- pr_info("mdp debug bus dump start_address:%p end_address:%p\n",
+ pr_info("mdp debug bus dump start_address:%pK end_address:%pK\n",
dump_addr, dump_addr + dump_info->len);
mutex_unlock(&reg_dump_info_mutex);
@@ -1074,7 +1074,7 @@ static void mdss_dump_dsi_debug_bus(bool dump_in_memory, const char *name,
iterator = iterator->next;
iterator->next = dump_info;
}
- pr_info("%s debug bus dump start_address:%p end_address:%p\n",
+ pr_info("%s debug bus dump start_address:%pK end_address:%pK\n",
name, dump_addr, dump_addr + dump_info->len);
mutex_unlock(&reg_dump_info_mutex);
@@ -1246,7 +1246,7 @@ int mdss_misr_set(struct mdss_data_type *mdata,
bool use_mdp_up_misr = false;
if (!mdata || !req || !ctl) {
- pr_err("Invalid input params: mdata = %p req = %p ctl = %p",
+ pr_err("Invalid input params: mdata = %pK req = %pK ctl = %pK",
mdata, req, ctl);
return -EINVAL;
}
diff --git a/drivers/video/msm/mdss/mdss_dsi.c b/drivers/video/msm/mdss/mdss_dsi.c
index 0278a1cda0dc..96cd614e18a9 100644
--- a/drivers/video/msm/mdss/mdss_dsi.c
+++ b/drivers/video/msm/mdss/mdss_dsi.c
@@ -498,7 +498,7 @@ static int mdss_dsi_off(struct mdss_panel_data *pdata, int power_state)
panel_info = &ctrl_pdata->panel_data.panel_info;
- pr_debug("%s+: ctrl=%p ndx=%d power_state=%d\n",
+ pr_debug("%s+: ctrl=%pK ndx=%d power_state=%d\n",
__func__, ctrl_pdata, ctrl_pdata->ndx, power_state);
if (power_state == panel_info->panel_power_state) {
@@ -560,7 +560,7 @@ int mdss_dsi_on(struct mdss_panel_data *pdata)
panel_data);
cur_power_state = pdata->panel_info.panel_power_state;
- pr_debug("%s+: ctrl=%p ndx=%d cur_power_state=%d\n", __func__,
+ pr_debug("%s+: ctrl=%pK ndx=%d cur_power_state=%d\n", __func__,
ctrl_pdata, ctrl_pdata->ndx, cur_power_state);
pinfo = &pdata->panel_info;
@@ -687,7 +687,7 @@ static int mdss_dsi_unblank(struct mdss_panel_data *pdata)
panel_data);
mipi = &pdata->panel_info.mipi;
- pr_debug("%s+: ctrl=%p ndx=%d cur_blank_state=%d\n", __func__,
+ pr_debug("%s+: ctrl=%pK ndx=%d cur_blank_state=%d\n", __func__,
ctrl_pdata, ctrl_pdata->ndx, pdata->panel_info.blank_state);
mdss_dsi_clk_ctrl(ctrl_pdata, DSI_ALL_CLKS, 1);
@@ -738,7 +738,7 @@ static int mdss_dsi_blank(struct mdss_panel_data *pdata, int power_state)
panel_data);
mipi = &pdata->panel_info.mipi;
- pr_debug("%s+: ctrl=%p ndx=%d power_state=%d\n",
+ pr_debug("%s+: ctrl=%pK ndx=%d power_state=%d\n",
__func__, ctrl_pdata, ctrl_pdata->ndx, power_state);
mdss_dsi_clk_ctrl(ctrl_pdata, DSI_ALL_CLKS, 1);
@@ -798,7 +798,7 @@ int mdss_dsi_cont_splash_on(struct mdss_panel_data *pdata)
ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
- pr_debug("%s+: ctrl=%p ndx=%d\n", __func__,
+ pr_debug("%s+: ctrl=%pK ndx=%d\n", __func__,
ctrl_pdata, ctrl_pdata->ndx);
WARN((ctrl_pdata->ctrl_state & CTRL_STATE_PANEL_INIT),
@@ -1465,7 +1465,7 @@ int mdss_dsi_retrieve_ctrl_resources(struct platform_device *pdev, int mode,
return rc;
}
- pr_info("%s: ctrl_base=%p ctrl_size=%x phy_base=%p phy_size=%x\n",
+ pr_info("%s: ctrl_base=%pK ctrl_size=%x phy_base=%pK phy_size=%x\n",
__func__, ctrl->ctrl_base, ctrl->reg_size, ctrl->phy_io.base,
ctrl->phy_io.len);
diff --git a/drivers/video/msm/mdss/mdss_dsi_host.c b/drivers/video/msm/mdss/mdss_dsi_host.c
index 6f624b9498ca..c833b604d5dc 100644
--- a/drivers/video/msm/mdss/mdss_dsi_host.c
+++ b/drivers/video/msm/mdss/mdss_dsi_host.c
@@ -88,7 +88,7 @@ void mdss_dsi_ctrl_init(struct mdss_dsi_ctrl_pdata *ctrl)
if (mdss_register_irq(ctrl->dsi_hw))
pr_err("%s: mdss_register_irq failed.\n", __func__);
- pr_debug("%s: ndx=%d base=%p\n", __func__, ctrl->ndx, ctrl->ctrl_base);
+ pr_debug("%s: ndx=%d base=%pK\n", __func__, ctrl->ndx, ctrl->ctrl_base);
init_completion(&ctrl->dma_comp);
init_completion(&ctrl->mdp_comp);
diff --git a/drivers/video/msm/mdss/mdss_dsi_panel.c b/drivers/video/msm/mdss/mdss_dsi_panel.c
index 3ce6887d7e20..6069158da2aa 100644
--- a/drivers/video/msm/mdss/mdss_dsi_panel.c
+++ b/drivers/video/msm/mdss/mdss_dsi_panel.c
@@ -725,7 +725,7 @@ static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)
ctrl = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
- pr_info("%s: ctrl=%p ndx=%d\n", __func__, ctrl, ctrl->ndx);
+ pr_info("%s: ctrl=%pK ndx=%d\n", __func__, ctrl, ctrl->ndx);
if (pinfo->dcs_cmd_by_left) {
if (ctrl->ndx != DSI_CTRL_LEFT)
@@ -780,7 +780,7 @@ static int mdss_dsi_panel_off(struct mdss_panel_data *pdata)
ctrl = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
- pr_info("%s: ctrl=%p ndx=%d\n", __func__, ctrl, ctrl->ndx);
+ pr_info("%s: ctrl=%pK ndx=%d\n", __func__, ctrl, ctrl->ndx);
if (pinfo->dcs_cmd_by_left) {
if (ctrl->ndx != DSI_CTRL_LEFT)
@@ -817,7 +817,7 @@ static int mdss_dsi_panel_low_power_config(struct mdss_panel_data *pdata,
ctrl = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
- pr_debug("%s: ctrl=%p ndx=%d enable=%d\n", __func__, ctrl, ctrl->ndx,
+ pr_debug("%s: ctrl=%pK ndx=%d enable=%d\n", __func__, ctrl, ctrl->ndx,
enable);
/* Any panel specific low power commands/config */
diff --git a/drivers/video/msm/mdss/mdss_fb.c b/drivers/video/msm/mdss/mdss_fb.c
index 7c7eb31ebb61..19a17dbb4b42 100644
--- a/drivers/video/msm/mdss/mdss_fb.c
+++ b/drivers/video/msm/mdss/mdss_fb.c
@@ -1303,7 +1303,7 @@ static int mdss_fb_alloc_fb_ion_memory(struct msm_fb_data_type *mfd,
goto fb_mmap_failed;
}
- pr_info("alloc 0x%xB vaddr = %p (%pa iova) for fb%d\n", fb_size, vaddr,
+ pr_info("alloc 0x%xB vaddr = %pK (%pa iova) for fb%d\n", fb_size, vaddr,
&mfd->iova, mfd->index);
mfd->fbi->screen_base = (char *) vaddr;
@@ -1393,7 +1393,7 @@ static int mdss_fb_fbmem_ion_mmap(struct fb_info *info,
__mdss_fb_set_page_protection(vma, mfd);
- pr_debug("vma=%p, addr=%x len=%ld",
+ pr_debug("vma=%pK, addr=%x len=%ld",
vma, (unsigned int)addr, len);
pr_cont("vm_start=%x vm_end=%x vm_page_prot=%ld\n",
(unsigned int)vma->vm_start,
diff --git a/drivers/video/msm/mdss/mdss_hdmi_tx.c b/drivers/video/msm/mdss/mdss_hdmi_tx.c
index 3dad2cb6acda..909a7e818756 100644
--- a/drivers/video/msm/mdss/mdss_hdmi_tx.c
+++ b/drivers/video/msm/mdss/mdss_hdmi_tx.c
@@ -997,7 +997,7 @@ static int hdmi_tx_sysfs_create(struct hdmi_tx_ctrl *hdmi_ctrl,
return rc;
}
hdmi_ctrl->kobj = &fbi->dev->kobj;
- DEV_DBG("%s: sysfs group %p\n", __func__, hdmi_ctrl->kobj);
+ DEV_DBG("%s: sysfs group %pK\n", __func__, hdmi_ctrl->kobj);
return 0;
} /* hdmi_tx_sysfs_create */
diff --git a/drivers/video/msm/mdss/mdss_hdmi_util.c b/drivers/video/msm/mdss/mdss_hdmi_util.c
index 950e144f1258..2f670fb327f3 100644
--- a/drivers/video/msm/mdss/mdss_hdmi_util.c
+++ b/drivers/video/msm/mdss/mdss_hdmi_util.c
@@ -178,7 +178,7 @@ static void hdmi_ddc_print_data(struct hdmi_tx_ddc_data *ddc_data,
return;
}
- DEV_DBG("%s: buf=%p, d_len=0x%x, d_addr=0x%x, no_align=%d\n",
+ DEV_DBG("%s: buf=%pK, d_len=0x%x, d_addr=0x%x, no_align=%d\n",
caller, ddc_data->data_buf, ddc_data->data_len,
ddc_data->dev_addr, ddc_data->no_align);
DEV_DBG("%s: offset=0x%x, req_len=0x%x, retry=%d, what=%s\n",
diff --git a/drivers/video/msm/mdss/mdss_mdp.c b/drivers/video/msm/mdss/mdss_mdp.c
index fd44f39a20f5..86cf0117ef51 100644
--- a/drivers/video/msm/mdss/mdss_mdp.c
+++ b/drivers/video/msm/mdss/mdss_mdp.c
@@ -270,7 +270,7 @@ int mdss_register_irq(struct mdss_hw *hw)
if (!mdss_irq_handlers[hw->hw_ndx])
mdss_irq_handlers[hw->hw_ndx] = hw;
else
- pr_err("panel %d's irq at %p is already registered\n",
+ pr_err("panel %d's irq at %pK is already registered\n",
hw->hw_ndx, hw->irq_handler);
spin_unlock_irqrestore(&mdss_lock, irq_flags);
@@ -1222,7 +1222,7 @@ static u32 mdss_mdp_res_init(struct mdss_data_type *mdata)
mdata->iclient = msm_ion_client_create(-1, mdata->pdev->name);
if (IS_ERR_OR_NULL(mdata->iclient)) {
- pr_err("msm_ion_client_create() return error (%p)\n",
+ pr_err("msm_ion_client_create() return error (%pK)\n",
mdata->iclient);
mdata->iclient = NULL;
}
diff --git a/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c b/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c
index 8ebb48173f15..4ad3fe82bec6 100644
--- a/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c
+++ b/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c
@@ -597,7 +597,7 @@ static int mdss_mdp_cmd_wait4pingpong(struct mdss_mdp_ctl *ctl, void *arg)
ctx->rdptr_enabled, ctl->roi_bkup.w,
ctl->roi_bkup.h);
- pr_debug("%s: intf_num=%d ctx=%p koff_cnt=%d\n", __func__,
+ pr_debug("%s: intf_num=%d ctx=%pK koff_cnt=%d\n", __func__,
ctl->intf_num, ctx, atomic_read(&ctx->koff_cnt));
rc = wait_event_timeout(ctx->pp_waitq,
@@ -1038,7 +1038,7 @@ int mdss_mdp_cmd_start(struct mdss_mdp_ctl *ctl)
ctx->recovery.fxn = mdss_mdp_cmd_underflow_recovery;
ctx->recovery.data = ctx;
- pr_debug("%s: ctx=%p num=%d mixer=%d\n", __func__,
+ pr_debug("%s: ctx=%pK num=%d mixer=%d\n", __func__,
ctx, ctx->pp_num, mixer->num);
MDSS_XLOG(ctl->num, atomic_read(&ctx->koff_cnt), ctx->clk_enabled,
ctx->rdptr_enabled);
diff --git a/drivers/video/msm/mdss/mdss_mdp_intf_video.c b/drivers/video/msm/mdss/mdss_mdp_intf_video.c
index e8e8d088a4cd..5e2e1a667681 100644
--- a/drivers/video/msm/mdss/mdss_mdp_intf_video.c
+++ b/drivers/video/msm/mdss/mdss_mdp_intf_video.c
@@ -105,7 +105,7 @@ int mdss_mdp_video_addr_setup(struct mdss_data_type *mdata,
for (i = 0; i < count; i++) {
head[i].base = mdata->mdss_base + offsets[i];
- pr_debug("adding Video Intf #%d offset=0x%x virt=%p\n", i,
+ pr_debug("adding Video Intf #%d offset=0x%x virt=%pK\n", i,
offsets[i], head[i].base);
head[i].ref_cnt = 0;
head[i].intf_num = i + MDSS_MDP_INTF0;
@@ -832,7 +832,7 @@ int mdss_mdp_video_start(struct mdss_mdp_ctl *ctl)
pr_err("Intf %d already in use\n", ctl->intf_num);
return -EBUSY;
}
- pr_debug("video Intf #%d base=%p", ctx->intf_num, ctx->base);
+ pr_debug("video Intf #%d base=%pK", ctx->intf_num, ctx->base);
ctx->ref_cnt++;
} else {
pr_err("Invalid intf number: %d\n", ctl->intf_num);
diff --git a/drivers/video/msm/mdss/mdss_mdp_pipe.c b/drivers/video/msm/mdss/mdss_mdp_pipe.c
index a295266ffe9a..a57348f3951b 100644
--- a/drivers/video/msm/mdss/mdss_mdp_pipe.c
+++ b/drivers/video/msm/mdss/mdss_mdp_pipe.c
@@ -1368,7 +1368,7 @@ int mdss_mdp_pipe_queue_data(struct mdss_mdp_pipe *pipe,
}
if (src_data == NULL || !pipe->has_buf) {
- pr_debug("src_data=%p has_buf=%d pipe num=%dx",
+ pr_debug("src_data=%pK has_buf=%d pipe num=%dx",
src_data, pipe->has_buf, pipe->num);
goto update_nobuf;
}
diff --git a/drivers/video/msm/mdss/mdss_mdp_pp.c b/drivers/video/msm/mdss/mdss_mdp_pp.c
index 2b76dbbf535f..80d52700d6ae 100644
--- a/drivers/video/msm/mdss/mdss_mdp_pp.c
+++ b/drivers/video/msm/mdss/mdss_mdp_pp.c
@@ -3171,7 +3171,7 @@ static int pp_hist_enable(struct pp_hist_col_info *hist_info,
spin_lock_irqsave(&hist_info->hist_lock, flag);
if (hist_info->col_en) {
spin_unlock_irqrestore(&hist_info->hist_lock, flag);
- pr_info("%s Hist collection has already been enabled %p",
+ pr_info("%s Hist collection has already been enabled %pK",
__func__, hist_info->base);
ret = -EINVAL;
goto exit;
@@ -3309,7 +3309,7 @@ static int pp_hist_disable(struct pp_hist_col_info *hist_info)
spin_lock_irqsave(&hist_info->hist_lock, flag);
if (hist_info->col_en == false) {
spin_unlock_irqrestore(&hist_info->hist_lock, flag);
- pr_debug("Histogram already disabled (%p)", hist_info->base);
+ pr_debug("Histogram already disabled (%pK)", hist_info->base);
ret = -EINVAL;
goto exit;
}
@@ -3423,7 +3423,7 @@ int mdss_mdp_hist_intr_req(struct mdss_intr *intr, u32 bits, bool en)
unsigned long flag;
int ret = 0;
if (!intr) {
- pr_err("NULL addr passed, %p", intr);
+ pr_err("NULL addr passed, %pK", intr);
return -EINVAL;
}
diff --git a/drivers/video/msm/mdss/mdss_mdp_util.c b/drivers/video/msm/mdss/mdss_mdp_util.c
index f554d390347c..85db37141177 100644
--- a/drivers/video/msm/mdss/mdss_mdp_util.c
+++ b/drivers/video/msm/mdss/mdss_mdp_util.c
@@ -491,7 +491,7 @@ static int mdss_mdp_put_img(struct mdss_mdp_img_data *data)
pr_debug("pmem buf=0x%pa\n", &data->addr);
data->srcp_file = NULL;
} else if (!IS_ERR_OR_NULL(data->srcp_ihdl)) {
- pr_debug("ion hdl=%p buf=0x%pa\n", data->srcp_ihdl,
+ pr_debug("ion hdl=%pK buf=0x%pa\n", data->srcp_ihdl,
&data->addr);
if (!iclient) {
pr_err("invalid ion client\n");
@@ -587,7 +587,7 @@ static int mdss_mdp_get_img(struct msmfb_data *img,
data->addr += data->offset;
data->len -= data->offset;
- pr_debug("mem=%d ihdl=%p buf=0x%pa len=0x%lu\n", img->memory_id,
+ pr_debug("mem=%d ihdl=%pK buf=0x%pa len=0x%lu\n", img->memory_id,
data->srcp_ihdl, &data->addr, data->len);
} else {
mdss_mdp_put_img(data);
@@ -654,7 +654,7 @@ static int mdss_mdp_map_buffer(struct mdss_mdp_img_data *data)
data->addr += data->offset;
data->len -= data->offset;
- pr_debug("ihdl=%p buf=0x%pa len=0x%lu\n",
+ pr_debug("ihdl=%pK buf=0x%pa len=0x%lu\n",
data->srcp_ihdl, &data->addr, data->len);
} else {
mdss_mdp_put_img(data);
diff --git a/drivers/video/msm/mdss/mdss_mdp_wb.c b/drivers/video/msm/mdss/mdss_mdp_wb.c
index 77c9b340719b..bc9548b1ef99 100644
--- a/drivers/video/msm/mdss/mdss_mdp_wb.c
+++ b/drivers/video/msm/mdss/mdss_mdp_wb.c
@@ -94,7 +94,7 @@ struct mdss_mdp_data *mdss_mdp_wb_debug_buffer(struct msm_fb_data_type *mfd)
ihdl = ion_alloc(iclient, img_size, SZ_4K,
ION_HEAP(ION_SF_HEAP_ID), 0);
if (IS_ERR_OR_NULL(ihdl)) {
- pr_err("unable to alloc fbmem from ion (%p)\n", ihdl);
+ pr_err("unable to alloc fbmem from ion (%pK)\n", ihdl);
return NULL;
}
@@ -121,7 +121,7 @@ struct mdss_mdp_data *mdss_mdp_wb_debug_buffer(struct msm_fb_data_type *mfd)
img->len = img_size;
}
- pr_debug("ihdl=%p virt=%p phys=0x%pa iova=0x%pa size=%u\n",
+ pr_debug("ihdl=%pK virt=%pK phys=0x%pa iova=0x%pa size=%u\n",
ihdl, videomemory, &mdss_wb_mem, &img->addr, img_size);
}
return &mdss_wb_buffer;
diff --git a/fs/attr.c b/fs/attr.c
index 8dd5825ec708..66fa6251c398 100644
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -50,14 +50,14 @@ int inode_change_ok(const struct inode *inode, struct iattr *attr)
if ((ia_valid & ATTR_UID) &&
(!uid_eq(current_fsuid(), inode->i_uid) ||
!uid_eq(attr->ia_uid, inode->i_uid)) &&
- !inode_capable(inode, CAP_CHOWN))
+ !capable_wrt_inode_uidgid(inode, CAP_CHOWN))
return -EPERM;
/* Make sure caller can chgrp. */
if ((ia_valid & ATTR_GID) &&
(!uid_eq(current_fsuid(), inode->i_uid) ||
(!in_group_p(attr->ia_gid) && !gid_eq(attr->ia_gid, inode->i_gid))) &&
- !inode_capable(inode, CAP_CHOWN))
+ !capable_wrt_inode_uidgid(inode, CAP_CHOWN))
return -EPERM;
/* Make sure a caller can chmod. */
@@ -67,7 +67,7 @@ int inode_change_ok(const struct inode *inode, struct iattr *attr)
/* Also check the setgid bit! */
if (!in_group_p((ia_valid & ATTR_GID) ? attr->ia_gid :
inode->i_gid) &&
- !inode_capable(inode, CAP_FSETID))
+ !capable_wrt_inode_uidgid(inode, CAP_FSETID))
attr->ia_mode &= ~S_ISGID;
}
@@ -160,7 +160,7 @@ void setattr_copy(struct inode *inode, const struct iattr *attr)
umode_t mode = attr->ia_mode;
if (!in_group_p(inode->i_gid) &&
- !inode_capable(inode, CAP_FSETID))
+ !capable_wrt_inode_uidgid(inode, CAP_FSETID))
mode &= ~S_ISGID;
inode->i_mode = mode;
}
diff --git a/fs/inode.c b/fs/inode.c
index 00d5fc3b86e1..1b300a06b8be 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1837,14 +1837,18 @@ EXPORT_SYMBOL(inode_init_owner);
* inode_owner_or_capable - check current task permissions to inode
* @inode: inode being checked
*
- * Return true if current either has CAP_FOWNER to the inode, or
- * owns the file.
+ * Return true if current either has CAP_FOWNER in a namespace with the
+ * inode owner uid mapped, or owns the file.
*/
bool inode_owner_or_capable(const struct inode *inode)
{
+ struct user_namespace *ns;
+
if (uid_eq(current_fsuid(), inode->i_uid))
return true;
- if (inode_capable(inode, CAP_FOWNER))
+
+ ns = current_user_ns();
+ if (ns_capable(ns, CAP_FOWNER) && kuid_has_mapping(ns, inode->i_uid))
return true;
return false;
}
diff --git a/fs/namei.c b/fs/namei.c
index 1211ee5a1cb3..6ac16a37ded2 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -321,10 +321,11 @@ int generic_permission(struct inode *inode, int mask)
if (S_ISDIR(inode->i_mode)) {
/* DACs are overridable for directories */
- if (inode_capable(inode, CAP_DAC_OVERRIDE))
+ if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
return 0;
if (!(mask & MAY_WRITE))
- if (inode_capable(inode, CAP_DAC_READ_SEARCH))
+ if (capable_wrt_inode_uidgid(inode,
+ CAP_DAC_READ_SEARCH))
return 0;
return -EACCES;
}
@@ -334,7 +335,7 @@ int generic_permission(struct inode *inode, int mask)
* at least one exec bit set.
*/
if (!(mask & MAY_EXEC) || (inode->i_mode & S_IXUGO))
- if (inode_capable(inode, CAP_DAC_OVERRIDE))
+ if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
return 0;
/*
@@ -342,7 +343,7 @@ int generic_permission(struct inode *inode, int mask)
*/
mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
if (mask == MAY_READ)
- if (inode_capable(inode, CAP_DAC_READ_SEARCH))
+ if (capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH))
return 0;
return -EACCES;
@@ -2199,7 +2200,7 @@ static inline int check_sticky(struct inode *dir, struct inode *inode)
return 0;
if (uid_eq(dir->i_uid, fsuid))
return 0;
- return !inode_capable(inode, CAP_FOWNER);
+ return !capable_wrt_inode_uidgid(inode, CAP_FOWNER);
}
/*
diff --git a/include/linux/capability.h b/include/linux/capability.h
index d9a4f7f40f32..15f90929fb51 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -211,7 +211,7 @@ extern bool has_ns_capability_noaudit(struct task_struct *t,
extern bool capable(int cap);
extern bool ns_capable(struct user_namespace *ns, int cap);
extern bool nsown_capable(int cap);
-extern bool inode_capable(const struct inode *inode, int cap);
+extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap);
extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap);
/* audit system wants to get cap info from files as well */
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 44bb6bf179c5..e389134a77b9 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -316,6 +316,12 @@ struct perf_event {
int nr_siblings;
int group_flags;
struct perf_event *group_leader;
+
+ /*
+ * Protect the pmu, attributes and context of a group leader.
+ * Note: does not protect the pointer to the group_leader.
+ */
+ struct mutex group_leader_mutex;
struct pmu *pmu;
enum perf_event_active_state state;
diff --git a/kernel/capability.c b/kernel/capability.c
index f6c2ce5701e1..d52eecc0942b 100644
--- a/kernel/capability.c
+++ b/kernel/capability.c
@@ -445,22 +445,18 @@ bool nsown_capable(int cap)
}
/**
- * inode_capable - Check superior capability over inode
+ * capable_wrt_inode_uidgid - Check nsown_capable and uid and gid mapped
* @inode: The inode in question
* @cap: The capability in question
*
- * Return true if the current task has the given superior capability
- * targeted at it's own user namespace and that the given inode is owned
- * by the current user namespace or a child namespace.
- *
- * Currently we check to see if an inode is owned by the current
- * user namespace by seeing if the inode's owner maps into the
- * current user namespace.
- *
+ * Return true if the current task has the given capability targeted at
+ * its own user namespace and that the given inode's uid and gid are
+ * mapped into the current user namespace.
*/
-bool inode_capable(const struct inode *inode, int cap)
+bool capable_wrt_inode_uidgid(const struct inode *inode, int cap)
{
struct user_namespace *ns = current_user_ns();
- return ns_capable(ns, cap) && kuid_has_mapping(ns, inode->i_uid);
+ return ns_capable(ns, cap) && kuid_has_mapping(ns, inode->i_uid) &&
+ kgid_has_mapping(ns, inode->i_gid);
}
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 8178cfdec2d7..32b7ca93a75a 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -712,6 +712,77 @@ static void put_ctx(struct perf_event_context *ctx)
}
}
+/*
+ * Because of perf_event::ctx migration in sys_perf_event_open::move_group and
+ * perf_pmu_migrate_context() we need some magic.
+ *
+ * Those places that change perf_event::ctx will hold both
+ * perf_event_ctx::mutex of the 'old' and 'new' ctx value.
+ *
+ * Lock ordering is by mutex address. There is one other site where
+ * perf_event_context::mutex nests and that is put_event(). But remember that
+ * that is a parent<->child context relation, and migration does not affect
+ * children, therefore these two orderings should not interact.
+ *
+ * The change in perf_event::ctx does not affect children (as claimed above)
+ * because the sys_perf_event_open() case will install a new event and break
+ * the ctx parent<->child relation, and perf_pmu_migrate_context() is only
+ * concerned with cpuctx and that doesn't have children.
+ *
+ * The places that change perf_event::ctx will issue:
+ *
+ * perf_remove_from_context();
+ * synchronize_rcu();
+ * perf_install_in_context();
+ *
+ * to affect the change. The remove_from_context() + synchronize_rcu() should
+ * quiesce the event, after which we can install it in the new location. This
+ * means that only external vectors (perf_fops, prctl) can perturb the event
+ * while in transit. Therefore all such accessors should also acquire
+ * perf_event_context::mutex to serialize against this.
+ *
+ * However; because event->ctx can change while we're waiting to acquire
+ * ctx->mutex we must be careful and use the below perf_event_ctx_lock()
+ * function.
+ *
+ * Lock order:
+ * task_struct::perf_event_mutex
+ * perf_event_context::mutex
+ * perf_event_context::lock
+ * perf_event::child_mutex;
+ * perf_event::mmap_mutex
+ * mmap_sem
+ */
+static struct perf_event_context *perf_event_ctx_lock(struct perf_event *event)
+{
+ struct perf_event_context *ctx;
+
+again:
+ rcu_read_lock();
+ ctx = ACCESS_ONCE(event->ctx);
+ if (!atomic_inc_not_zero(&ctx->refcount)) {
+ rcu_read_unlock();
+ goto again;
+ }
+ rcu_read_unlock();
+
+ mutex_lock(&ctx->mutex);
+ if (event->ctx != ctx) {
+ mutex_unlock(&ctx->mutex);
+ put_ctx(ctx);
+ goto again;
+ }
+
+ return ctx;
+}
+
+static void perf_event_ctx_unlock(struct perf_event *event,
+ struct perf_event_context *ctx)
+{
+ mutex_unlock(&ctx->mutex);
+ put_ctx(ctx);
+}
+
static void unclone_ctx(struct perf_event_context *ctx)
{
if (ctx->parent_ctx) {
@@ -1398,7 +1469,7 @@ int __perf_event_disable(void *info)
* is the current context on this CPU and preemption is disabled,
* hence we can't get into perf_event_task_sched_out for this context.
*/
-void perf_event_disable(struct perf_event *event)
+static void _perf_event_disable(struct perf_event *event)
{
struct perf_event_context *ctx = event->ctx;
struct task_struct *task = ctx->task;
@@ -1439,6 +1510,19 @@ retry:
}
raw_spin_unlock_irq(&ctx->lock);
}
+
+/*
+ * Strictly speaking kernel users cannot create groups and therefore this
+ * interface does not need the perf_event_ctx_lock() magic.
+ */
+void perf_event_disable(struct perf_event *event)
+{
+ struct perf_event_context *ctx;
+
+ ctx = perf_event_ctx_lock(event);
+ _perf_event_disable(event);
+ perf_event_ctx_unlock(event, ctx);
+}
EXPORT_SYMBOL_GPL(perf_event_disable);
static void perf_set_shadow_time(struct perf_event *event,
@@ -1880,7 +1964,7 @@ unlock:
* perf_event_for_each_child or perf_event_for_each as described
* for perf_event_disable.
*/
-void perf_event_enable(struct perf_event *event)
+static void _perf_event_enable(struct perf_event *event)
{
struct perf_event_context *ctx = event->ctx;
struct task_struct *task = ctx->task;
@@ -1936,9 +2020,21 @@ retry:
out:
raw_spin_unlock_irq(&ctx->lock);
}
+
+/*
+ * See perf_event_disable();
+ */
+void perf_event_enable(struct perf_event *event)
+{
+ struct perf_event_context *ctx;
+
+ ctx = perf_event_ctx_lock(event);
+ _perf_event_enable(event);
+ perf_event_ctx_unlock(event, ctx);
+}
EXPORT_SYMBOL_GPL(perf_event_enable);
-int perf_event_refresh(struct perf_event *event, int refresh)
+static int _perf_event_refresh(struct perf_event *event, int refresh)
{
/*
* not supported on inherited events
@@ -1947,10 +2043,25 @@ int perf_event_refresh(struct perf_event *event, int refresh)
return -EINVAL;
atomic_add(refresh, &event->event_limit);
- perf_event_enable(event);
+ _perf_event_enable(event);
return 0;
}
+
+/*
+ * See perf_event_disable()
+ */
+int perf_event_refresh(struct perf_event *event, int refresh)
+{
+ struct perf_event_context *ctx;
+ int ret;
+
+ ctx = perf_event_ctx_lock(event);
+ ret = _perf_event_refresh(event, refresh);
+ perf_event_ctx_unlock(event, ctx);
+
+ return ret;
+}
EXPORT_SYMBOL_GPL(perf_event_refresh);
static void ctx_sched_out(struct perf_event_context *ctx,
@@ -3091,7 +3202,16 @@ static void put_event(struct perf_event *event)
rcu_read_unlock();
if (owner) {
- mutex_lock(&owner->perf_event_mutex);
+ /*
+ * If we're here through perf_event_exit_task() we're already
+ * holding ctx->mutex which would be an inversion wrt. the
+ * normal lock order.
+ *
+ * However we can safely take this lock because its the child
+ * ctx->mutex.
+ */
+ mutex_lock_nested(&owner->perf_event_mutex, SINGLE_DEPTH_NESTING);
+
/*
* We have to re-check the event->owner field, if it is cleared
* we raced with perf_event_exit_task(), acquiring the mutex
@@ -3153,12 +3273,13 @@ static int perf_event_read_group(struct perf_event *event,
u64 read_format, char __user *buf)
{
struct perf_event *leader = event->group_leader, *sub;
- int n = 0, size = 0, ret = -EFAULT;
struct perf_event_context *ctx = leader->ctx;
- u64 values[5];
+ int n = 0, size = 0, ret;
u64 count, enabled, running;
+ u64 values[5];
+
+ lockdep_assert_held(&ctx->mutex);
- mutex_lock(&ctx->mutex);
count = perf_event_read_value(leader, &enabled, &running);
values[n++] = 1 + leader->nr_siblings;
@@ -3173,7 +3294,7 @@ static int perf_event_read_group(struct perf_event *event,
size = n * sizeof(u64);
if (copy_to_user(buf, values, size))
- goto unlock;
+ return -EFAULT;
ret = size;
@@ -3187,14 +3308,11 @@ static int perf_event_read_group(struct perf_event *event,
size = n * sizeof(u64);
if (copy_to_user(buf + ret, values, size)) {
- ret = -EFAULT;
- goto unlock;
+ return -EFAULT;
}
ret += size;
}
-unlock:
- mutex_unlock(&ctx->mutex);
return ret;
}
@@ -3253,8 +3371,14 @@ static ssize_t
perf_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
{
struct perf_event *event = file->private_data;
+ struct perf_event_context *ctx;
+ int ret;
+
+ ctx = perf_event_ctx_lock(event);
+ ret = perf_read_hw(event, buf, count);
+ perf_event_ctx_unlock(event, ctx);
- return perf_read_hw(event, buf, count);
+ return ret;
}
static unsigned int perf_poll(struct file *file, poll_table *wait)
@@ -3278,7 +3402,7 @@ static unsigned int perf_poll(struct file *file, poll_table *wait)
return events;
}
-static void perf_event_reset(struct perf_event *event)
+static void _perf_event_reset(struct perf_event *event)
{
(void)perf_event_read(event);
local64_set(&event->count, 0);
@@ -3297,6 +3421,7 @@ static void perf_event_for_each_child(struct perf_event *event,
struct perf_event *child;
WARN_ON_ONCE(event->ctx->parent_ctx);
+
mutex_lock(&event->child_mutex);
func(event);
list_for_each_entry(child, &event->child_list, child_list)
@@ -3310,14 +3435,13 @@ static void perf_event_for_each(struct perf_event *event,
struct perf_event_context *ctx = event->ctx;
struct perf_event *sibling;
- WARN_ON_ONCE(ctx->parent_ctx);
- mutex_lock(&ctx->mutex);
+ lockdep_assert_held(&ctx->mutex);
+
event = event->group_leader;
perf_event_for_each_child(event, func);
list_for_each_entry(sibling, &event->sibling_list, group_entry)
perf_event_for_each_child(sibling, func);
- mutex_unlock(&ctx->mutex);
}
static int perf_event_period(struct perf_event *event, u64 __user *arg)
@@ -3373,25 +3497,24 @@ static int perf_event_set_output(struct perf_event *event,
struct perf_event *output_event);
static int perf_event_set_filter(struct perf_event *event, void __user *arg);
-static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+static long _perf_ioctl(struct perf_event *event, unsigned int cmd, unsigned long arg)
{
- struct perf_event *event = file->private_data;
void (*func)(struct perf_event *);
u32 flags = arg;
switch (cmd) {
case PERF_EVENT_IOC_ENABLE:
- func = perf_event_enable;
+ func = _perf_event_enable;
break;
case PERF_EVENT_IOC_DISABLE:
- func = perf_event_disable;
+ func = _perf_event_disable;
break;
case PERF_EVENT_IOC_RESET:
- func = perf_event_reset;
+ func = _perf_event_reset;
break;
case PERF_EVENT_IOC_REFRESH:
- return perf_event_refresh(event, arg);
+ return _perf_event_refresh(event, arg);
case PERF_EVENT_IOC_PERIOD:
return perf_event_period(event, (u64 __user *)arg);
@@ -3429,13 +3552,30 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
return 0;
}
+static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+ struct perf_event *event = file->private_data;
+ struct perf_event_context *ctx;
+ long ret;
+
+ ctx = perf_event_ctx_lock(event);
+ ret = _perf_ioctl(event, cmd, arg);
+ perf_event_ctx_unlock(event, ctx);
+
+ return ret;
+}
+
int perf_event_task_enable(void)
{
+ struct perf_event_context *ctx;
struct perf_event *event;
mutex_lock(&current->perf_event_mutex);
- list_for_each_entry(event, &current->perf_event_list, owner_entry)
- perf_event_for_each_child(event, perf_event_enable);
+ list_for_each_entry(event, &current->perf_event_list, owner_entry) {
+ ctx = perf_event_ctx_lock(event);
+ perf_event_for_each_child(event, _perf_event_enable);
+ perf_event_ctx_unlock(event, ctx);
+ }
mutex_unlock(&current->perf_event_mutex);
return 0;
@@ -3443,11 +3583,15 @@ int perf_event_task_enable(void)
int perf_event_task_disable(void)
{
+ struct perf_event_context *ctx;
struct perf_event *event;
mutex_lock(&current->perf_event_mutex);
- list_for_each_entry(event, &current->perf_event_list, owner_entry)
- perf_event_for_each_child(event, perf_event_disable);
+ list_for_each_entry(event, &current->perf_event_list, owner_entry) {
+ ctx = perf_event_ctx_lock(event);
+ perf_event_for_each_child(event, _perf_event_disable);
+ perf_event_ctx_unlock(event, ctx);
+ }
mutex_unlock(&current->perf_event_mutex);
return 0;
@@ -6284,6 +6428,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
if (!group_leader)
group_leader = event;
+ mutex_init(&event->group_leader_mutex);
mutex_init(&event->child_mutex);
INIT_LIST_HEAD(&event->child_list);
@@ -6589,6 +6734,15 @@ out:
return ret;
}
+static void mutex_lock_double(struct mutex *a, struct mutex *b)
+{
+ if (b < a)
+ swap(a, b);
+
+ mutex_lock(a);
+ mutex_lock_nested(b, SINGLE_DEPTH_NESTING);
+}
+
/**
* sys_perf_event_open - open a performance event, associate it to a task/cpu
*
@@ -6604,7 +6758,7 @@ SYSCALL_DEFINE5(perf_event_open,
struct perf_event *group_leader = NULL, *output_event = NULL;
struct perf_event *event, *sibling;
struct perf_event_attr attr;
- struct perf_event_context *ctx;
+ struct perf_event_context *ctx, *uninitialized_var(gctx);
struct file *event_file = NULL;
struct fd group = {NULL, 0};
struct task_struct *task = NULL;
@@ -6661,6 +6815,16 @@ SYSCALL_DEFINE5(perf_event_open,
group_leader = NULL;
}
+ /*
+ * Take the group_leader's group_leader_mutex before observing
+ * anything in the group leader that leads to changes in ctx,
+ * many of which may be changing on another thread.
+ * In particular, we want to take this lock before deciding
+ * whether we need to move_group.
+ */
+ if (group_leader)
+ mutex_lock(&group_leader->group_leader_mutex);
+
if (pid != -1 && !(flags & PERF_FLAG_PID_CGROUP)) {
task = find_lively_task_by_vpid(pid);
if (IS_ERR(task)) {
@@ -6778,9 +6942,14 @@ SYSCALL_DEFINE5(perf_event_open,
}
if (move_group) {
- struct perf_event_context *gctx = group_leader->ctx;
+ gctx = group_leader->ctx;
+
+ /*
+ * See perf_event_ctx_lock() for comments on the details
+ * of swizzling perf_event::ctx.
+ */
+ mutex_lock_double(&gctx->mutex, &ctx->mutex);
- mutex_lock(&gctx->mutex);
perf_remove_from_context(group_leader);
/*
@@ -6795,15 +6964,19 @@ SYSCALL_DEFINE5(perf_event_open,
perf_event__state_init(sibling);
put_ctx(gctx);
}
- mutex_unlock(&gctx->mutex);
- put_ctx(gctx);
+ } else {
+ mutex_lock(&ctx->mutex);
}
WARN_ON_ONCE(ctx->parent_ctx);
- mutex_lock(&ctx->mutex);
if (move_group) {
+ /*
+ * Wait for everybody to stop referencing the events through
+ * the old lists, before installing it on new lists.
+ */
synchronize_rcu();
+
perf_install_in_context(ctx, group_leader, event->cpu);
get_ctx(ctx);
list_for_each_entry(sibling, &group_leader->sibling_list,
@@ -6816,7 +6989,14 @@ SYSCALL_DEFINE5(perf_event_open,
perf_install_in_context(ctx, event, event->cpu);
++ctx->generation;
perf_unpin_context(ctx);
+
+ if (move_group) {
+ mutex_unlock(&gctx->mutex);
+ put_ctx(gctx);
+ }
mutex_unlock(&ctx->mutex);
+ if (group_leader)
+ mutex_unlock(&group_leader->group_leader_mutex);
put_online_cpus();
@@ -6852,6 +7032,8 @@ err_task:
if (task)
put_task_struct(task);
err_group_fd:
+ if (group_leader)
+ mutex_unlock(&group_leader->group_leader_mutex);
fdput(group);
err_fd:
put_unused_fd(event_fd);
@@ -6918,18 +7100,20 @@ void perf_pmu_migrate_context(struct pmu *pmu, int src_cpu, int dst_cpu)
src_ctx = &per_cpu_ptr(pmu->pmu_cpu_context, src_cpu)->ctx;
dst_ctx = &per_cpu_ptr(pmu->pmu_cpu_context, dst_cpu)->ctx;
- mutex_lock(&src_ctx->mutex);
+ /*
+ * See perf_event_ctx_lock() for comments on the details
+ * of swizzling perf_event::ctx.
+ */
+ mutex_lock_double(&src_ctx->mutex, &dst_ctx->mutex);
list_for_each_entry_safe(event, tmp, &src_ctx->event_list,
event_entry) {
perf_remove_from_context(event);
put_ctx(src_ctx);
list_add(&event->event_entry, &events);
}
- mutex_unlock(&src_ctx->mutex);
synchronize_rcu();
- mutex_lock(&dst_ctx->mutex);
list_for_each_entry_safe(event, tmp, &events, event_entry) {
list_del(&event->event_entry);
if (event->state >= PERF_EVENT_STATE_OFF)
@@ -6938,6 +7122,7 @@ void perf_pmu_migrate_context(struct pmu *pmu, int src_cpu, int dst_cpu)
get_ctx(dst_ctx);
}
mutex_unlock(&dst_ctx->mutex);
+ mutex_unlock(&src_ctx->mutex);
}
EXPORT_SYMBOL_GPL(perf_pmu_migrate_context);
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
index 616134b9420c..bc635d3ece37 100644
--- a/net/ipv4/ping.c
+++ b/net/ipv4/ping.c
@@ -651,7 +651,7 @@ int ping_common_sendmsg(int family, struct msghdr *msg, size_t len,
void *user_icmph, size_t icmph_len) {
u8 type, code;
- if (len > 0xFFFF)
+ if (len > 0xFFFF || len < icmph_len)
return -EMSGSIZE;
/*
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 1c118edd4b79..d9b86c2e96e2 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -188,7 +188,7 @@ EXPORT_SYMBOL_GPL(nf_ct_invert_tuple);
static void
clean_from_lists(struct nf_conn *ct)
{
- pr_debug("clean_from_lists(%p)\n", ct);
+ pr_debug("clean_from_lists(%pK)\n", ct);
hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode);
@@ -203,7 +203,7 @@ destroy_conntrack(struct nf_conntrack *nfct)
struct net *net = nf_ct_net(ct);
struct nf_conntrack_l4proto *l4proto;
- pr_debug("destroy_conntrack(%p)\n", ct);
+ pr_debug("destroy_conntrack(%pK)\n", ct);
NF_CT_ASSERT(atomic_read(&nfct->use) == 0);
NF_CT_ASSERT(!timer_pending(&ct->timeout));
@@ -234,7 +234,7 @@ destroy_conntrack(struct nf_conntrack *nfct)
if (ct->master)
nf_ct_put(ct->master);
- pr_debug("destroy_conntrack: returning ct=%p to slab\n", ct);
+ pr_debug("destroy_conntrack: returning ct=%pK to slab\n", ct);
nf_conntrack_free(ct);
}
@@ -496,7 +496,7 @@ __nf_conntrack_confirm(struct sk_buff *skb)
/* No external references means no one else could have
confirmed us. */
NF_CT_ASSERT(!nf_ct_is_confirmed(ct));
- pr_debug("Confirming conntrack %p\n", ct);
+ pr_debug("Confirming conntrack %pK\n", ct);
spin_lock_bh(&nf_conntrack_lock);
@@ -826,7 +826,7 @@ init_conntrack(struct net *net, struct nf_conn *tmpl,
spin_lock_bh(&nf_conntrack_lock);
exp = nf_ct_find_expectation(net, zone, tuple);
if (exp) {
- pr_debug("conntrack: expectation arrives ct=%p exp=%p\n",
+ pr_debug("conntrack: expectation arrives ct=%pK exp=%pK\n",
ct, exp);
/* Welcome, Mr. Bond. We've been expecting you... */
__set_bit(IPS_EXPECTED_BIT, &ct->status);
@@ -916,14 +916,14 @@ resolve_normal_ct(struct net *net, struct nf_conn *tmpl,
} else {
/* Once we've had two way comms, always ESTABLISHED. */
if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {
- pr_debug("nf_conntrack_in: normal packet for %p\n", ct);
+ pr_debug("nf_conntrack_in: normal packet for %pK\n", ct);
*ctinfo = IP_CT_ESTABLISHED;
} else if (test_bit(IPS_EXPECTED_BIT, &ct->status)) {
- pr_debug("nf_conntrack_in: related packet for %p\n",
+ pr_debug("nf_conntrack_in: related packet for %pK\n",
ct);
*ctinfo = IP_CT_RELATED;
} else {
- pr_debug("nf_conntrack_in: new packet for %p\n", ct);
+ pr_debug("nf_conntrack_in: new packet for %pK\n", ct);
*ctinfo = IP_CT_NEW;
}
*set_reply = 0;
@@ -1065,7 +1065,7 @@ void nf_conntrack_alter_reply(struct nf_conn *ct,
/* Should be unconfirmed, so not in hash table yet */
NF_CT_ASSERT(!nf_ct_is_confirmed(ct));
- pr_debug("Altering reply tuple of %p to ", ct);
+ pr_debug("Altering reply tuple of %pK to ", ct);
nf_ct_dump_tuple(newreply);
ct->tuplehash[IP_CT_DIR_REPLY].tuple = *newreply;
@@ -1640,7 +1640,7 @@ int nf_conntrack_init_net(struct net *net)
goto err_stat;
}
- net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net);
+ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%pK", net);
if (!net->ct.slabname) {
ret = -ENOMEM;
goto err_slabname;
diff --git a/security/keys/gc.c b/security/keys/gc.c
index 797818695c87..de34c290bd6f 100644
--- a/security/keys/gc.c
+++ b/security/keys/gc.c
@@ -187,6 +187,12 @@ static noinline void key_gc_unused_keys(struct list_head *keys)
kdebug("- %u", key->serial);
key_check(key);
+ /* Throw away the key data if the key is instantiated */
+ if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags) &&
+ !test_bit(KEY_FLAG_NEGATIVE, &key->flags) &&
+ key->type->destroy)
+ key->type->destroy(key);
+
security_key_free(key);
/* deal with the user's key tracking and quota */
@@ -201,10 +207,6 @@ static noinline void key_gc_unused_keys(struct list_head *keys)
if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags))
atomic_dec(&key->user->nikeys);
- /* now throw away the key memory */
- if (key->type->destroy)
- key->type->destroy(key);
-
key_user_put(key->user);
kfree(key->description);
diff --git a/sound/soc/msm/qdsp6v2/audio_acdb.c b/sound/soc/msm/qdsp6v2/audio_acdb.c
index 5389dd9e2b01..74ec51ace77c 100644
--- a/sound/soc/msm/qdsp6v2/audio_acdb.c
+++ b/sound/soc/msm/qdsp6v2/audio_acdb.c
@@ -1332,7 +1332,7 @@ static int register_memory(void)
acdb_data.kvaddr = (void *)kvaddr;
acdb_data.mem_len = mem_len;
- pr_debug("%s done! paddr = 0x%pa, kvaddr = 0x%p, len = 0x%llx\n",
+ pr_debug("%s done! paddr = 0x%pa, kvaddr = 0x%pK, len = 0x%llx\n",
__func__, &acdb_data.paddr, acdb_data.kvaddr,
acdb_data.mem_len);
diff --git a/sound/soc/msm/qdsp6v2/audio_ocmem.c b/sound/soc/msm/qdsp6v2/audio_ocmem.c
index 525cf8a3aa9b..8db9b9bad738 100644
--- a/sound/soc/msm/qdsp6v2/audio_ocmem.c
+++ b/sound/soc/msm/qdsp6v2/audio_ocmem.c
@@ -243,7 +243,7 @@ int audio_ocmem_enable(int cid)
struct ocmem_buf *buf = NULL;
struct avcs_cmd_rsp_get_low_power_segments_info_t *lp_segptr;
- pr_debug("%s, %p\n", __func__, &audio_ocmem_lcl);
+ pr_debug("%s, %pK\n", __func__, &audio_ocmem_lcl);
atomic_set(&audio_ocmem_lcl.audio_state, OCMEM_STATE_DEFAULT);
if (audio_ocmem_lcl.lp_memseg_ptr == NULL) {
/* Retrieve low power segments */
diff --git a/sound/soc/msm/qdsp6v2/msm-compr-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-compr-q6-v2.c
index f80a1c6dacf3..08a55728131c 100644
--- a/sound/soc/msm/qdsp6v2/msm-compr-q6-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-compr-q6-v2.c
@@ -243,7 +243,7 @@ static void compr_event_handler(uint32_t opcode,
break;
case ASM_DATA_EVENT_READ_DONE_V2: {
pr_debug("ASM_DATA_EVENT_READ_DONE\n");
- pr_debug("buf = %p, data = 0x%X, *data = %p,\n"
+ pr_debug("buf = %pK, data = 0x%X, *data = %pK,\n"
"prtd->pcm_irq_pos = %d\n",
prtd->audio_client->port[OUT].buf,
*(uint32_t *)prtd->audio_client->port[OUT].buf->data,
@@ -253,7 +253,7 @@ static void compr_event_handler(uint32_t opcode,
memcpy(prtd->audio_client->port[OUT].buf->data +
prtd->pcm_irq_pos, (ptrmem + READDONE_IDX_SIZE),
COMPRE_CAPTURE_HEADER_SIZE);
- pr_debug("buf = %p, updated data = 0x%X, *data = %p\n",
+ pr_debug("buf = %pK, updated data = 0x%X, *data = %pK\n",
prtd->audio_client->port[OUT].buf,
*(uint32_t *)(prtd->audio_client->port[OUT].buf->data +
prtd->pcm_irq_pos),
@@ -603,7 +603,7 @@ static int msm_compr_capture_prepare(struct snd_pcm_substream *substream)
read_param.paddr = buf[i].phys
+ COMPRE_CAPTURE_HEADER_SIZE;
pr_debug("Push buffer [%d] to DSP, "\
- "paddr: %pa, vaddr: %p\n",
+ "paddr: %pa, vaddr: %pK\n",
i, &read_param.paddr,
buf[i].data);
q6asm_async_read(prtd->audio_client, &read_param);
@@ -964,7 +964,7 @@ static int msm_compr_hw_params(struct snd_pcm_substream *substream,
dma_buf->addr = buf[0].phys;
dma_buf->bytes = runtime->hw.buffer_bytes_max;
- pr_debug("%s: buf[%p]dma_buf->area[%p]dma_buf->addr[%pa]\n"
+ pr_debug("%s: buf[%pK]dma_buf->area[%pK]dma_buf->addr[%pa]\n"
"dma_buf->bytes[%zd]\n", __func__,
(void *)buf, (void *)dma_buf->area,
&dma_buf->addr, dma_buf->bytes);
diff --git a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
index a1fd8bb24fe3..8e16a78a4e47 100644
--- a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
@@ -1729,7 +1729,7 @@ static int msm_compr_get_caps(struct snd_compr_stream *cstream,
memcpy(arg, &prtd->compr_cap, sizeof(struct snd_compr_caps));
} else {
ret = -EINVAL;
- pr_err("%s: arg (0x%p), prtd (0x%p)\n", __func__, arg, prtd);
+ pr_err("%s: arg (0x%pK), prtd (0x%pK)\n", __func__, arg, prtd);
}
return ret;
diff --git a/sound/soc/msm/qdsp6v2/msm-dai-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-dai-q6-v2.c
index 1466fe1bc688..6fc7aea5cc02 100644
--- a/sound/soc/msm/qdsp6v2/msm-dai-q6-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-dai-q6-v2.c
@@ -1517,7 +1517,7 @@ static int msm_auxpcm_dev_probe(struct platform_device *pdev)
goto fail_pdata_nomem;
}
- dev_dbg(&pdev->dev, "%s: dev %p, dai_data %p, auxpcm_pdata %p\n",
+ dev_dbg(&pdev->dev, "%s: dev %pK, dai_data %pK, auxpcm_pdata %pK\n",
__func__, &pdev->dev, dai_data, auxpcm_pdata);
rc = of_property_read_u32_array(pdev->dev.of_node,
diff --git a/sound/soc/msm/qdsp6v2/msm-ds2-dap-config.c b/sound/soc/msm/qdsp6v2/msm-ds2-dap-config.c
index 68d03da56d46..1a53ccca4a2e 100644
--- a/sound/soc/msm/qdsp6v2/msm-ds2-dap-config.c
+++ b/sound/soc/msm/qdsp6v2/msm-ds2-dap-config.c
@@ -1045,7 +1045,7 @@ static int msm_ds2_dap_send_end_point(int dev_map_idx, int endp_idx)
ds2_ap_params_obj = &ds2_dap_params[cache_device];
pr_debug("%s: cache dev %d, dev_map_idx %d\n", __func__,
cache_device, dev_map_idx);
- pr_debug("%s: endp - %p %p\n", __func__,
+ pr_debug("%s: endp - %pK %pK\n", __func__,
&ds2_dap_params[cache_device], ds2_ap_params_obj);
params_value = kzalloc(params_length, GFP_KERNEL);
@@ -1122,7 +1122,7 @@ static int msm_ds2_dap_send_cached_params(int dev_map_idx,
}
ds2_ap_params_obj = &ds2_dap_params[cache_device];
- pr_debug("%s: cached param - %p %p, cache_device %d\n", __func__,
+ pr_debug("%s: cached param - %pK %pK, cache_device %d\n", __func__,
&ds2_dap_params[cache_device], ds2_ap_params_obj,
cache_device);
params_value = kzalloc(params_length, GFP_KERNEL);
diff --git a/sound/soc/msm/qdsp6v2/msm-lsm-client.c b/sound/soc/msm/qdsp6v2/msm-lsm-client.c
index b1008ff9ad69..2c89bc63fec9 100644
--- a/sound/soc/msm/qdsp6v2/msm-lsm-client.c
+++ b/sound/soc/msm/qdsp6v2/msm-lsm-client.c
@@ -151,7 +151,7 @@ static int msm_lsm_ioctl_shared(struct snd_pcm_substream *substream,
if (copy_from_user(prtd->lsm_client->sound_model.data,
snd_model_v2.data, snd_model_v2.data_size)) {
pr_err("%s: copy from user data failed\n"
- "data %p size %d\n", __func__,
+ "data %pK size %d\n", __func__,
snd_model_v2.data, snd_model_v2.data_size);
rc = -EFAULT;
}
@@ -208,7 +208,7 @@ static int msm_lsm_ioctl_shared(struct snd_pcm_substream *substream,
if (copy_from_user(prtd->lsm_client->sound_model.data,
snd_model.data, snd_model.data_size)) {
- pr_err("%s: copy from user data failed data %p size %d\n",
+ pr_err("%s: copy from user data failed data %pK size %d\n",
__func__, snd_model.data, snd_model.data_size);
rc = -EFAULT;
break;
diff --git a/sound/soc/msm/qdsp6v2/msm-multi-ch-pcm-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-multi-ch-pcm-q6-v2.c
index a3e25a76d75a..e39aa946c852 100644
--- a/sound/soc/msm/qdsp6v2/msm-multi-ch-pcm-q6-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-multi-ch-pcm-q6-v2.c
@@ -557,7 +557,7 @@ static int msm_pcm_capture_copy(struct snd_pcm_substream *substream,
pr_debug("%s: pcm stopped in_count 0\n", __func__);
return 0;
}
- pr_debug("Checking if valid buffer is available...%p\n", data);
+ pr_debug("Checking if valid buffer is available...%pK\n", data);
data = q6asm_is_cpu_buf_avail(OUT, prtd->audio_client, &size, &idx);
bufptr = data;
pr_debug("Size = %d\n", size);
@@ -710,7 +710,7 @@ static int msm_pcm_hw_params(struct snd_pcm_substream *substream,
}
buf = prtd->audio_client->port[dir].buf;
- pr_debug("%s:buf = %p\n", __func__, buf);
+ pr_debug("%s:buf = %pK\n", __func__, buf);
dma_buf->dev.type = SNDRV_DMA_TYPE_DEV;
dma_buf->dev.dev = substream->pcm->card->dev;
dma_buf->private_data = NULL;
diff --git a/sound/soc/msm/qdsp6v2/msm-pcm-afe-v2.c b/sound/soc/msm/qdsp6v2/msm-pcm-afe-v2.c
index af19106d58e6..605e7fdcbf62 100644
--- a/sound/soc/msm/qdsp6v2/msm-pcm-afe-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-pcm-afe-v2.c
@@ -381,7 +381,7 @@ static int msm_afe_open(struct snd_pcm_substream *substream)
pr_err("Failed to allocate memory for msm_audio\n");
return -ENOMEM;
} else
- pr_debug("prtd %p\n", prtd);
+ pr_debug("prtd %pK\n", prtd);
mutex_init(&prtd->lock);
spin_lock_init(&prtd->dsp_lock);
@@ -600,7 +600,7 @@ static int msm_afe_hw_params(struct snd_pcm_substream *substream,
return -ENOMEM;
}
- pr_debug("%s:buf = %p\n", __func__, buf);
+ pr_debug("%s:buf = %pK\n", __func__, buf);
dma_buf->dev.type = SNDRV_DMA_TYPE_DEV;
dma_buf->dev.dev = substream->pcm->card->dev;
dma_buf->private_data = NULL;
diff --git a/sound/soc/msm/qdsp6v2/msm-pcm-host-voice-v2.c b/sound/soc/msm/qdsp6v2/msm-pcm-host-voice-v2.c
index 522dc85ac702..27b1cb6c6e88 100644
--- a/sound/soc/msm/qdsp6v2/msm-pcm-host-voice-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-pcm-host-voice-v2.c
@@ -504,7 +504,7 @@ static int hpcm_allocate_shared_memory(struct hpcm_drv *prtd)
sess->tp_mem_table.size = sizeof(struct vss_imemory_table_t);
- pr_debug("%s: data %p phys %pa\n", __func__,
+ pr_debug("%s: data %pK phys %pa\n", __func__,
sess->tp_mem_table.data, &sess->tp_mem_table.phys);
/* Split 4096 block into four 1024 byte blocks for each dai */
@@ -682,7 +682,7 @@ void hpcm_notify_evt_processing(uint8_t *data, char *session,
}
if (tp == NULL || tmd == NULL) {
- pr_err("%s: tp = %p or tmd = %p is null\n", __func__,
+ pr_err("%s: tp = %pK or tmd = %pK is null\n", __func__,
tp, tmd);
return;
diff --git a/sound/soc/msm/qdsp6v2/msm-pcm-lpa-v2.c b/sound/soc/msm/qdsp6v2/msm-pcm-lpa-v2.c
index 80991704b82d..b6866d0e8065 100644
--- a/sound/soc/msm/qdsp6v2/msm-pcm-lpa-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-pcm-lpa-v2.c
@@ -616,7 +616,7 @@ static int msm_pcm_hw_params(struct snd_pcm_substream *substream,
if (buf == NULL || buf[0].data == NULL)
return -ENOMEM;
- pr_debug("%s:buf = %p\n", __func__, buf);
+ pr_debug("%s:buf = %pK\n", __func__, buf);
dma_buf->dev.type = SNDRV_DMA_TYPE_DEV;
dma_buf->dev.dev = substream->pcm->card->dev;
dma_buf->private_data = NULL;
diff --git a/sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.c
index 1a1cc7977f53..74ea2034f070 100644
--- a/sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.c
@@ -654,7 +654,7 @@ static int msm_pcm_capture_copy(struct snd_pcm_substream *substream,
pr_debug("%s: pcm stopped in_count 0\n", __func__);
return 0;
}
- pr_debug("Checking if valid buffer is available...%p\n",
+ pr_debug("Checking if valid buffer is available...%pK\n",
data);
data = q6asm_is_cpu_buf_avail(OUT, prtd->audio_client, &size, &idx);
bufptr = data;
@@ -811,7 +811,7 @@ static int msm_pcm_hw_params(struct snd_pcm_substream *substream,
if (buf == NULL || buf[0].data == NULL)
return -ENOMEM;
- pr_debug("%s:buf = %p\n", __func__, buf);
+ pr_debug("%s:buf = %pK\n", __func__, buf);
dma_buf->dev.type = SNDRV_DMA_TYPE_DEV;
dma_buf->dev.dev = substream->pcm->card->dev;
dma_buf->private_data = NULL;
diff --git a/sound/soc/msm/qdsp6v2/q6adm.c b/sound/soc/msm/qdsp6v2/q6adm.c
index 14565cc22acb..986dc3126641 100644
--- a/sound/soc/msm/qdsp6v2/q6adm.c
+++ b/sound/soc/msm/qdsp6v2/q6adm.c
@@ -648,7 +648,7 @@ static int32_t adm_callback(struct apr_client_data *data, void *priv)
payload = data->payload;
if (data->opcode == RESET_EVENTS) {
- pr_debug("%s: Reset event is received: %d %d apr[%p]\n",
+ pr_debug("%s: Reset event is received: %d %d apr[%pK]\n",
__func__,
data->reset_event, data->reset_proc,
this_adm.apr);
diff --git a/sound/soc/msm/qdsp6v2/q6afe.c b/sound/soc/msm/qdsp6v2/q6afe.c
index 9abf1caa59e6..ee1785f8a121 100644
--- a/sound/soc/msm/qdsp6v2/q6afe.c
+++ b/sound/soc/msm/qdsp6v2/q6afe.c
@@ -100,7 +100,7 @@ static int32_t afe_callback(struct apr_client_data *data, void *priv)
return -EINVAL;
}
if (data->opcode == RESET_EVENTS) {
- pr_debug("%s: reset event = %d %d apr[%p]\n",
+ pr_debug("%s: reset event = %d %d apr[%pK]\n",
__func__,
data->reset_event, data->reset_proc, this_afe.apr);
@@ -128,7 +128,7 @@ static int32_t afe_callback(struct apr_client_data *data, void *priv)
u8 *payload = data->payload;
if ((data->payload_size < sizeof(this_afe.calib_data))
|| !payload || (data->token >= AFE_MAX_PORTS)) {
- pr_err("%s: size %d payload %p token %d\n",
+ pr_err("%s: size %d payload %pK token %d\n",
__func__, data->payload_size, payload, data->token);
return -EINVAL;
}
@@ -2252,7 +2252,7 @@ int q6afe_audio_client_buf_alloc_contiguous(unsigned int dir,
size_t len;
if (!(ac) || ((dir != IN) && (dir != OUT))) {
- pr_err("%s: ac %p dir %d\n", __func__, ac, dir);
+ pr_err("%s: ac %pK dir %d\n", __func__, ac, dir);
return -EINVAL;
}
@@ -2304,7 +2304,7 @@ int q6afe_audio_client_buf_alloc_contiguous(unsigned int dir,
buf[cnt].used = dir ^ 1;
buf[cnt].size = bufsz;
buf[cnt].actual_size = bufsz;
- pr_debug("%s: data[%p]phys[%pa][%p]\n", __func__,
+ pr_debug("%s: data[%pK]phys[%pa][%pK]\n", __func__,
buf[cnt].data,
&buf[cnt].phys,
&buf[cnt].phys);
@@ -2515,7 +2515,7 @@ int q6afe_audio_client_buf_free_contiguous(unsigned int dir,
cnt = port->max_buf_cnt - 1;
if (port->buf[0].data) {
- pr_debug("%s: data[%p]phys[%pa][%p] , client[%p] handle[%p]\n",
+ pr_debug("%s: data[%pK]phys[%pa][%pK] , client[%pK] handle[%pK]\n",
__func__,
port->buf[0].data,
&port->buf[0].phys,
diff --git a/sound/soc/msm/qdsp6v2/q6asm.c b/sound/soc/msm/qdsp6v2/q6asm.c
index 189fa720f00b..524cdd0f017f 100644
--- a/sound/soc/msm/qdsp6v2/q6asm.c
+++ b/sound/soc/msm/qdsp6v2/q6asm.c
@@ -699,7 +699,7 @@ int q6asm_audio_client_buf_free_contiguous(unsigned int dir,
}
if (port->buf[0].data) {
- pr_debug("%s:data[%p]phys[%pa][%p] , client[%p] handle[%p]\n",
+ pr_debug("%s:data[%pK]phys[%pa][%pK] , client[%pK] handle[%pK]\n",
__func__,
(void *)port->buf[0].data,
&port->buf[0].phys,
@@ -975,7 +975,7 @@ int q6asm_audio_client_buf_alloc(unsigned int dir,
buf[cnt].used = 1;
buf[cnt].size = bufsz;
buf[cnt].actual_size = bufsz;
- pr_debug("%s data[%p]phys[%pa][%p]\n",
+ pr_debug("%s data[%pK]phys[%pa][%pK]\n",
__func__,
(void *)buf[cnt].data,
&buf[cnt].phys,
@@ -1074,7 +1074,7 @@ int q6asm_audio_client_buf_alloc_contiguous(unsigned int dir,
buf[cnt].used = dir ^ 1;
buf[cnt].size = bufsz;
buf[cnt].actual_size = bufsz;
- pr_debug("%s data[%p]phys[%pa][%p]\n", __func__,
+ pr_debug("%s data[%pK]phys[%pa][%pK]\n", __func__,
(void *)buf[cnt].data,
&buf[cnt].phys,
(void *)&buf[cnt].phys);
@@ -1116,7 +1116,7 @@ static int32_t q6asm_srvc_callback(struct apr_client_data *data, void *priv)
if (data->opcode == RESET_EVENTS) {
- pr_debug("%s: Reset event is received: %d %d apr[%p]\n",
+ pr_debug("%s: Reset event is received: %d %d apr[%pK]\n",
__func__,
data->reset_event,
data->reset_proc,
@@ -1275,7 +1275,7 @@ static int32_t q6asm_callback(struct apr_client_data *data, void *priv)
if (data->opcode == RESET_EVENTS) {
if (ac->apr == NULL)
ac->apr = ac->apr2;
- pr_debug("q6asm_callback: Reset event is received: %d %d apr[%p]\n",
+ pr_debug("q6asm_callback: Reset event is received: %d %d apr[%pK]\n",
data->reset_event, data->reset_proc, ac->apr);
if (ac->cb)
ac->cb(data->opcode, data->token,
@@ -1532,7 +1532,7 @@ void *q6asm_is_cpu_buf_avail(int dir, struct audio_client *ac, uint32_t *size,
*size = port->buf[idx].actual_size;
*index = port->cpu_buf;
data = port->buf[idx].data;
- pr_debug("%s:session[%d]index[%d] data[%p]size[%d]\n",
+ pr_debug("%s:session[%d]index[%d] data[%pK]size[%d]\n",
__func__,
ac->session,
port->cpu_buf,
@@ -1581,7 +1581,7 @@ void *q6asm_is_cpu_buf_avail_nolock(int dir, struct audio_client *ac,
*size = port->buf[idx].actual_size;
*index = port->cpu_buf;
data = port->buf[idx].data;
- pr_debug("%s:session[%d]index[%d] data[%p]size[%d]\n",
+ pr_debug("%s:session[%d]index[%d] data[%pK]size[%d]\n",
__func__, ac->session, port->cpu_buf,
data, *size);
/*
@@ -1851,13 +1851,13 @@ int q6asm_open_write_compressed(struct audio_client *ac, uint32_t format,
struct asm_stream_cmd_open_write_compressed open;
if (ac == NULL) {
- pr_err("%s: ac[%p] NULL\n", __func__, ac);
+ pr_err("%s: ac[%pK] NULL\n", __func__, ac);
rc = -EINVAL;
goto fail_cmd;
}
if (ac->apr == NULL) {
- pr_err("%s: APR handle[%p] NULL\n", __func__, ac->apr);
+ pr_err("%s: APR handle[%pK] NULL\n", __func__, ac->apr);
rc = -EINVAL;
goto fail_cmd;
}
@@ -3421,7 +3421,7 @@ static int q6asm_memory_map_regions(struct audio_client *ac, int dir,
q6asm_add_mmaphdr(ac, &mmap_regions->hdr, cmd_size, TRUE,
((ac->session << 8) | dir));
atomic_set(&ac->mem_state, 1);
- pr_debug("mmap_region=0x%p token=0x%x\n",
+ pr_debug("mmap_region=0x%pK token=0x%x\n",
mmap_regions, ((ac->session << 8) | dir));
mmap_regions->hdr.opcode = ASM_CMD_SHARED_MEM_MAP_REGIONS;
@@ -3965,7 +3965,7 @@ int q6asm_read(struct audio_client *ac)
}
ab = &port->buf[dsp_buf];
- pr_debug("%s:session[%d]dsp-buf[%d][%p]cpu_buf[%d][%pa]\n",
+ pr_debug("%s:session[%d]dsp-buf[%d][%pK]cpu_buf[%d][%pa]\n",
__func__,
ac->session,
dsp_buf,
@@ -4027,7 +4027,7 @@ int q6asm_read_nolock(struct audio_client *ac)
dsp_buf = port->dsp_buf;
ab = &port->buf[dsp_buf];
- pr_debug("%s:session[%d]dsp-buf[%d][%p]cpu_buf[%d][%pa]\n",
+ pr_debug("%s:session[%d]dsp-buf[%d][%pK]cpu_buf[%d][%pa]\n",
__func__,
ac->session,
dsp_buf,
diff --git a/sound/soc/msm/qdsp6v2/q6core.c b/sound/soc/msm/qdsp6v2/q6core.c
index 0af49ef2c04b..3155dbf72b61 100755
--- a/sound/soc/msm/qdsp6v2/q6core.c
+++ b/sound/soc/msm/qdsp6v2/q6core.c
@@ -137,7 +137,7 @@ void ocm_core_open(void)
if (q6core_lcl.core_handle_q == NULL)
q6core_lcl.core_handle_q = apr_register("ADSP", "CORE",
aprv2_core_fn_q, 0xFFFFFFFF, NULL);
- pr_debug("%s: Open_q %p\n", __func__, q6core_lcl.core_handle_q);
+ pr_debug("%s: Open_q %pK\n", __func__, q6core_lcl.core_handle_q);
if (q6core_lcl.core_handle_q == NULL)
pr_err("%s: Unable to register CORE\n", __func__);
}
diff --git a/sound/soc/msm/qdsp6v2/q6lsm.c b/sound/soc/msm/qdsp6v2/q6lsm.c
index a9c491dfe4eb..85652911b7b6 100644
--- a/sound/soc/msm/qdsp6v2/q6lsm.c
+++ b/sound/soc/msm/qdsp6v2/q6lsm.c
@@ -80,7 +80,7 @@ static int q6lsm_callback(struct apr_client_data *data, void *priv)
uint32_t *payload;
if (!client || !data) {
- pr_err("%s: client %p data %p\n",
+ pr_err("%s: client %pK data %pK\n",
__func__, client, data);
WARN_ON(1);
return -EINVAL;
@@ -711,7 +711,7 @@ static int q6lsm_memory_map_regions(struct lsm_client *client,
int rc;
int cmd_size = 0;
- pr_debug("%s: dma_addr_p 0x%pa, dma_buf_sz %d, mmap_p 0x%p, session %d\n",
+ pr_debug("%s: dma_addr_p 0x%pa, dma_buf_sz %d, mmap_p 0x%pK, session %d\n",
__func__, &dma_addr_p, dma_buf_sz, mmap_p,
client->session);
if (CHECK_SESSION(client->session)) {
@@ -931,7 +931,7 @@ int q6lsm_snd_model_buf_alloc(struct lsm_client *client, size_t len)
size_t pad_zero = 0, total_mem = 0;
if (!client || len <= LSM_ALIGN_BOUNDARY) {
- pr_err("%s: client %p len %zu\n",
+ pr_err("%s: client %pK len %zu\n",
__func__, client, len);
return rc;
}
diff --git a/sound/soc/msm/qdsp6v2/q6voice.c b/sound/soc/msm/qdsp6v2/q6voice.c
index 0f858009c5c7..89e03972103d 100644
--- a/sound/soc/msm/qdsp6v2/q6voice.c
+++ b/sound/soc/msm/qdsp6v2/q6voice.c
@@ -302,7 +302,7 @@ static struct voice_data *voice_get_session(u32 session_id)
break;
}
- pr_debug("%s:session_id 0x%x session handle %p\n",
+ pr_debug("%s:session_id 0x%x session handle %pK\n",
__func__, session_id, v);
return v;
@@ -4048,7 +4048,7 @@ int voc_start_record(uint32_t port_id, uint32_t set, uint32_t session_id)
break;
}
- pr_debug("%s: port_id: %d, set: %d, v: %p\n",
+ pr_debug("%s: port_id: %d, set: %d, v: %pK\n",
__func__, port_id, set, v);
mutex_lock(&v->lock);
@@ -5826,12 +5826,12 @@ static int voice_alloc_oob_shared_mem(void)
cnt++;
}
- pr_debug("%s buf[0].data:[%p], buf[0].phys:[%pa], &buf[0].phys:[%p],\n",
+ pr_debug("%s buf[0].data:[%pK], buf[0].phys:[%pa], &buf[0].phys:[%pK],\n",
__func__,
(void *)v->shmem_info.sh_buf.buf[0].data,
&v->shmem_info.sh_buf.buf[0].phys,
(void *)&v->shmem_info.sh_buf.buf[0].phys);
- pr_debug("%s: buf[1].data:[%p], buf[1].phys[%pa], &buf[1].phys[%p]\n",
+ pr_debug("%s: buf[1].data:[%pK], buf[1].phys[%pa], &buf[1].phys[%pK]\n",
__func__,
(void *)v->shmem_info.sh_buf.buf[1].data,
&v->shmem_info.sh_buf.buf[1].phys,
@@ -5873,7 +5873,7 @@ static int voice_alloc_oob_mem_table(void)
}
v->shmem_info.memtbl.size = sizeof(struct vss_imemory_table_t);
- pr_debug("%s data[%p]phys[%pa][%p]\n", __func__,
+ pr_debug("%s data[%pK]phys[%pa][%pK]\n", __func__,
(void *)v->shmem_info.memtbl.data,
&v->shmem_info.memtbl.phys,
(void *)&v->shmem_info.memtbl.phys);
@@ -6123,7 +6123,7 @@ static int voice_alloc_cal_mem_map_table(void)
}
common.cal_mem_map_table.size = sizeof(struct vss_imemory_table_t);
- pr_debug("%s: data %p phys %pa\n", __func__,
+ pr_debug("%s: data %pK phys %pa\n", __func__,
common.cal_mem_map_table.data,
&common.cal_mem_map_table.phys);
@@ -6150,7 +6150,7 @@ static int voice_alloc_rtac_mem_map_table(void)
}
common.rtac_mem_map_table.size = sizeof(struct vss_imemory_table_t);
- pr_debug("%s: data %p phys %pa\n", __func__,
+ pr_debug("%s: data %pK phys %pa\n", __func__,
common.rtac_mem_map_table.data,
&common.rtac_mem_map_table.phys);
diff --git a/sound/soc/msm/qdsp6v2/rtac.c b/sound/soc/msm/qdsp6v2/rtac.c
index fb677c8226ff..41f76df76905 100644
--- a/sound/soc/msm/qdsp6v2/rtac.c
+++ b/sound/soc/msm/qdsp6v2/rtac.c
@@ -204,7 +204,7 @@ int rtac_allocate_cal_buffer(uint32_t cal_type)
goto done;
}
- pr_debug("%s: cal_type %d, paddr 0x%pa, kvaddr 0x%p, map_size 0x%x\n",
+ pr_debug("%s: cal_type %d, paddr 0x%pa, kvaddr 0x%pK, map_size 0x%x\n",
__func__, cal_type,
&rtac_cal[cal_type].cal_data.paddr,
rtac_cal[cal_type].cal_data.kvaddr,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index abcb4719632f..772b93f6e00f 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2113,7 +2113,7 @@ unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg)
trace_snd_soc_reg_read(codec, reg, ret);
}
else
- ret = -EIO;
+ ret = -1;
return ret;
}
@@ -2132,7 +2132,7 @@ unsigned int snd_soc_write(struct snd_soc_codec *codec,
return codec->write(codec, reg, val);
}
else
- return -EIO;
+ return -1;
}
EXPORT_SYMBOL_GPL(snd_soc_write);