summaryrefslogtreecommitdiff
path: root/dsp
diff options
context:
space:
mode:
authorDhanalakshmi Siddani <quic_dsiddani@quicinc.com>2022-11-28 15:19:56 +0530
committerDhanalakshmi Siddani <quic_dsiddani@quicinc.com>2022-11-28 15:25:27 +0530
commitab255e3fd313e2312923ea6e6662ecb6f31c5ac9 (patch)
tree312a913e9460caa306dd3570820aa8f8559e515e /dsp
parenta6fd19e7162b7aaf2489e7bb157f36fd12aaa8b9 (diff)
downloadmsm-extra-ab255e3fd313e2312923ea6e6662ecb6f31c5ac9.tar.gz
audio: Add compat ioctl cmds
Ioctl commands are failing on 32bit userspace to 64bit kernel variants. Use compat ioctl to fix the issue. Change-Id: Icde6bfb89c6247e7c5bb1ea5811f5399a6a26922
Diffstat (limited to 'dsp')
-rw-r--r--dsp/msm_audio_ion.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/dsp/msm_audio_ion.c b/dsp/msm_audio_ion.c
index 0af62064..e00d659c 100644
--- a/dsp/msm_audio_ion.c
+++ b/dsp/msm_audio_ion.c
@@ -20,6 +20,7 @@
#include <linux/of_device.h>
#include <linux/export.h>
#include <linux/ioctl.h>
+#include <linux/compat.h>
#include <linux/cdev.h>
#include <linux/fs.h>
#include <linux/device.h>
@@ -679,6 +680,7 @@ static long msm_audio_ion_ioctl(struct file *file, unsigned int ioctl_num,
pr_debug("%s ioctl num %u ioctl_param %d\n", __func__, ioctl_num, ioctl_param);
switch (ioctl_num) {
case IOCTL_MAP_PHYS_ADDR:
+ case COMPAT_IOCTL_MAP_PHYS_ADDR:
dma_vmap = kzalloc(sizeof(struct msm_audio_fd_data), GFP_KERNEL);
if (!dma_vmap)
return -ENOMEM;
@@ -704,6 +706,7 @@ static long msm_audio_ion_ioctl(struct file *file, unsigned int ioctl_num,
msm_audio_update_fd_list(msm_audio_fd_data);
break;
case IOCTL_UNMAP_PHYS_ADDR:
+ case COMPAT_IOCTL_UNMAP_PHYS_ADDR:
msm_audio_get_handle((int)ioctl_param, &mem_handle);
ret = msm_audio_ion_free(mem_handle, ion_data);
if (ret < 0) {
@@ -757,6 +760,14 @@ static long msm_audio_ion_ioctl(struct file *file, unsigned int ioctl_num,
return ret;
}
+static long msm_audio_ion_compat_ioctl(struct file *file, unsigned int ioctl_num,
+ unsigned long __user ioctl_param)
+{
+ unsigned int ioctl_nr = _IOC_NR(ioctl_num);
+
+ return (long)msm_audio_ion_ioctl(file, ioctl_nr, ioctl_param);
+}
+
static int __audio_mem_hyp_assign(struct device *dev, int *source_vms,
int source_nelems, int *dest_vms,
int *dest_perms, int dest_nelems)
@@ -824,6 +835,7 @@ static const struct file_operations msm_audio_ion_fops = {
.open = msm_audio_ion_open,
.release = msm_audio_ion_release,
.unlocked_ioctl = msm_audio_ion_ioctl,
+ .compat_ioctl = msm_audio_ion_compat_ioctl,
};
static int msm_audio_ion_reg_chrdev(struct msm_audio_ion_private *ion_data)