Linux 2.6.36 compat, use fops->unlocked_ioctl()
As of linux-2.6.36 the last in-tree consumer of fops->ioctl() has been removed and thus fops()->ioctl() has also been removed. The replacement hook is fops->unlocked_ioctl() which has existed in kernel since 2.6.12. Since the SPL only contains support back to 2.6.18 vintage kernels, I'm not adding an autoconf check for this and simply moving everything to use fops->unlocked_ioctl().
This commit is contained in:
parent
9b2048c26b
commit
8655ce492f
|
@ -53,10 +53,11 @@ out:
|
||||||
return di;
|
return di;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static long
|
||||||
mod_generic_ioctl(struct inode *ino, struct file *file,
|
mod_generic_unlocked_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
|
struct inode *ino = file->f_dentry->d_inode;
|
||||||
struct dev_info *di;
|
struct dev_info *di;
|
||||||
int rc, flags = 0, rvalp = 0;
|
int rc, flags = 0, rvalp = 0;
|
||||||
cred_t *cr = NULL;
|
cred_t *cr = NULL;
|
||||||
|
@ -84,7 +85,7 @@ static long
|
||||||
mod_generic_compat_ioctl(struct file *file,
|
mod_generic_compat_ioctl(struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return mod_generic_ioctl(file->f_dentry->d_inode, file, cmd, arg);
|
return mod_generic_unlocked_ioctl(file, cmd, arg);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_COMPAT */
|
#endif /* CONFIG_COMPAT */
|
||||||
|
|
||||||
|
@ -125,7 +126,7 @@ __ddi_create_minor_node(dev_info_t *di, char *name, int spec_type,
|
||||||
/* Setup the fops to cb_ops mapping */
|
/* Setup the fops to cb_ops mapping */
|
||||||
fops->owner = mod;
|
fops->owner = mod;
|
||||||
if (cb_ops->cb_ioctl) {
|
if (cb_ops->cb_ioctl) {
|
||||||
fops->ioctl = mod_generic_ioctl;
|
fops->unlocked_ioctl = mod_generic_unlocked_ioctl;
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
fops->compat_ioctl = mod_generic_compat_ioctl;
|
fops->compat_ioctl = mod_generic_compat_ioctl;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -445,9 +445,8 @@ splat_ioctl_cmd(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static long
|
||||||
splat_ioctl(struct inode *inode, struct file *file,
|
splat_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
{
|
||||||
unsigned int minor = iminor(file->f_dentry->d_inode);
|
unsigned int minor = iminor(file->f_dentry->d_inode);
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -480,7 +479,7 @@ splat_ioctl(struct inode *inode, struct file *file,
|
||||||
static long
|
static long
|
||||||
splat_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
splat_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return splat_ioctl(NULL, file, cmd, arg);
|
return splat_unlocked_ioctl(file, cmd, arg);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_COMPAT */
|
#endif /* CONFIG_COMPAT */
|
||||||
|
|
||||||
|
@ -601,7 +600,7 @@ static struct file_operations splat_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = splat_open,
|
.open = splat_open,
|
||||||
.release = splat_release,
|
.release = splat_release,
|
||||||
.ioctl = splat_ioctl,
|
.unlocked_ioctl = splat_unlocked_ioctl,
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
.compat_ioctl = splat_compat_ioctl,
|
.compat_ioctl = splat_compat_ioctl,
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue