Commit 2ac66657 authored by Matt Ranostay's avatar Matt Ranostay Committed by Greg Kroah-Hartman

pps: add ioctl_compat function to correct ioctl definitions

ioctl definitions use the pointer size of the architecture which
is fine when userspace and kernel are the same bitsize. This
patchset workarounds an issue with mixed bitsize kernel + userspace
by rewriting the cmd to the kernelspace architecture pointer size.
Acked-by: default avatarRodolfo Giometti <giometti@enneenne.com>
Signed-off-by: default avatarMatt Ranostay <matt.ranostay@konsulko.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 48a5e6bd
...@@ -242,6 +242,18 @@ static long pps_cdev_ioctl(struct file *file, ...@@ -242,6 +242,18 @@ static long pps_cdev_ioctl(struct file *file,
return 0; return 0;
} }
#ifdef CONFIG_COMPAT
static long pps_cdev_compat_ioctl(struct file *file,
unsigned int cmd, unsigned long arg)
{
cmd = _IOC(_IOC_DIR(cmd), _IOC_TYPE(cmd), _IOC_NR(cmd), sizeof(void *));
return pps_cdev_ioctl(file, cmd, arg);
}
#else
#define pps_cdev_compat_ioctl NULL
#endif
static int pps_cdev_open(struct inode *inode, struct file *file) static int pps_cdev_open(struct inode *inode, struct file *file)
{ {
struct pps_device *pps = container_of(inode->i_cdev, struct pps_device *pps = container_of(inode->i_cdev,
...@@ -268,6 +280,7 @@ static const struct file_operations pps_cdev_fops = { ...@@ -268,6 +280,7 @@ static const struct file_operations pps_cdev_fops = {
.llseek = no_llseek, .llseek = no_llseek,
.poll = pps_cdev_poll, .poll = pps_cdev_poll,
.fasync = pps_cdev_fasync, .fasync = pps_cdev_fasync,
.compat_ioctl = pps_cdev_compat_ioctl,
.unlocked_ioctl = pps_cdev_ioctl, .unlocked_ioctl = pps_cdev_ioctl,
.open = pps_cdev_open, .open = pps_cdev_open,
.release = pps_cdev_release, .release = pps_cdev_release,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment