return wd;
}
+static DEFINE_MUTEX(ndiswrapper_ioctl_mutex);
+
/* called with loader_mutex is down */
-static int wrapper_ioctl(struct inode *inode, struct file *file,
+static long wrapper_ioctl(struct file *file,
unsigned int cmd, unsigned long arg)
{
struct load_driver *load_driver;
int ret;
void __user *addr = (void __user *)arg;
+ mutex_lock(&ndiswrapper_ioctl_mutex);
+
ENTER1("cmd: %u", cmd);
ret = 0;
break;
}
complete(&loader_complete);
+
+ mutex_unlock(&ndiswrapper_ioctl_mutex);
+
EXIT1(return ret);
}
static struct file_operations wrapper_fops = {
.owner = THIS_MODULE,
- .ioctl = wrapper_ioctl,
+ .unlocked_ioctl = wrapper_ioctl,
.release = wrapper_ioctl_release,
};