|
@@ -1062,8 +1062,7 @@ static ssize_t random_write(struct file *file, const char __user *buffer,
|
|
|
return (ssize_t)count;
|
|
|
}
|
|
|
|
|
|
-static int random_ioctl(struct inode *inode, struct file *file,
|
|
|
- unsigned int cmd, unsigned long arg)
|
|
|
+static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
|
|
|
{
|
|
|
int size, ent_count;
|
|
|
int __user *p = (int __user *)arg;
|
|
@@ -1071,8 +1070,8 @@ static int random_ioctl(struct inode *inode, struct file *file,
|
|
|
|
|
|
switch (cmd) {
|
|
|
case RNDGETENTCNT:
|
|
|
- ent_count = input_pool.entropy_count;
|
|
|
- if (put_user(ent_count, p))
|
|
|
+ /* inherently racy, no point locking */
|
|
|
+ if (put_user(input_pool.entropy_count, p))
|
|
|
return -EFAULT;
|
|
|
return 0;
|
|
|
case RNDADDTOENTCNT:
|
|
@@ -1115,13 +1114,13 @@ const struct file_operations random_fops = {
|
|
|
.read = random_read,
|
|
|
.write = random_write,
|
|
|
.poll = random_poll,
|
|
|
- .ioctl = random_ioctl,
|
|
|
+ .unlocked_ioctl = random_ioctl,
|
|
|
};
|
|
|
|
|
|
const struct file_operations urandom_fops = {
|
|
|
.read = urandom_read,
|
|
|
.write = random_write,
|
|
|
- .ioctl = random_ioctl,
|
|
|
+ .unlocked_ioctl = random_ioctl,
|
|
|
};
|
|
|
|
|
|
/***************************************************************
|