kni: fix ioctl signature
Fix kni's ioctl signature to correctly match the kernel's structs. This shaves off the (void*) casts and uses struct file* instead of struct inode*. With the correct signature, control flow integrity checkers are no longer confused at this point. Signed-off-by: Markus Theil <markus.theil@secunet.com> Tested-by: Michael Pfeiffer <michael.pfeiffer@tu-ilmenau.de> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
5569dd7d90
commit
f1b2991c3c
@ -480,10 +480,10 @@ kni_ioctl_release(struct net *net, uint32_t ioctl_num,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
kni_ioctl(struct inode *inode, uint32_t ioctl_num, unsigned long ioctl_param)
|
||||
static long
|
||||
kni_ioctl(struct file *file, unsigned int ioctl_num, unsigned long ioctl_param)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
long ret = -EINVAL;
|
||||
struct net *net = current->nsproxy->net_ns;
|
||||
|
||||
pr_debug("IOCTL num=0x%0x param=0x%0lx\n", ioctl_num, ioctl_param);
|
||||
@ -509,8 +509,8 @@ kni_ioctl(struct inode *inode, uint32_t ioctl_num, unsigned long ioctl_param)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
kni_compat_ioctl(struct inode *inode, uint32_t ioctl_num,
|
||||
static long
|
||||
kni_compat_ioctl(struct file *file, unsigned int ioctl_num,
|
||||
unsigned long ioctl_param)
|
||||
{
|
||||
/* 32 bits app on 64 bits OS to be supported later */
|
||||
@ -523,8 +523,8 @@ static const struct file_operations kni_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = kni_open,
|
||||
.release = kni_release,
|
||||
.unlocked_ioctl = (void *)kni_ioctl,
|
||||
.compat_ioctl = (void *)kni_compat_ioctl,
|
||||
.unlocked_ioctl = kni_ioctl,
|
||||
.compat_ioctl = kni_compat_ioctl,
|
||||
};
|
||||
|
||||
static struct miscdevice kni_misc = {
|
||||
|
Loading…
Reference in New Issue
Block a user