From: "Theodore Ts'o" Recently, someone has kvetched that RNDGETPOOL is a "security vulnerability". Never mind that it is superuser only, and with superuser privs you could load a nasty kernel module, or read the entropy pool out of /dev/mem directly, but they are nevertheless still spreading FUD. In any case, no one is using it (it was there for debugging purposes only), so we can remove it as dead code. Signed-off-by: Andrew Morton --- 25-akpm/drivers/char/random.c | 37 +------------------------------------ 1 files changed, 1 insertion(+), 36 deletions(-) diff -puN drivers/char/random.c~dev-random-remove-rndgetpool-ioctl drivers/char/random.c --- 25/drivers/char/random.c~dev-random-remove-rndgetpool-ioctl 2004-08-19 23:36:22.943223992 -0700 +++ 25-akpm/drivers/char/random.c 2004-08-19 23:36:22.948223232 -0700 @@ -1735,10 +1735,9 @@ static int random_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigned long arg) { - int *tmp, size, ent_count; + int size, ent_count; int __user *p = (int __user *)arg; int retval; - unsigned long flags; switch (cmd) { case RNDGETENTCNT: @@ -1759,40 +1758,6 @@ random_ioctl(struct inode * inode, struc if (random_state->entropy_count >= random_read_wakeup_thresh) wake_up_interruptible(&random_read_wait); return 0; - case RNDGETPOOL: - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; - if (get_user(size, p) || - put_user(random_state->poolinfo.poolwords, p++)) - return -EFAULT; - if (size < 0) - return -EFAULT; - if (size > random_state->poolinfo.poolwords) - size = random_state->poolinfo.poolwords; - - /* prepare to atomically snapshot pool */ - - tmp = kmalloc(size * sizeof(__u32), GFP_KERNEL); - - if (!tmp) - return -ENOMEM; - - spin_lock_irqsave(&random_state->lock, flags); - ent_count = random_state->entropy_count; - memcpy(tmp, random_state->pool, size * sizeof(__u32)); - spin_unlock_irqrestore(&random_state->lock, flags); - - if (!copy_to_user(p, tmp, size * sizeof(__u32))) { - kfree(tmp); - return -EFAULT; - } - - kfree(tmp); - - if(put_user(ent_count, p++)) - return -EFAULT; - - return 0; case RNDADDENTROPY: if (!capable(CAP_SYS_ADMIN)) return -EPERM; _