forked from luck/tmp_suning_uos_patched
Merge branch 'uaccess.access_ok' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull uaccess/access_ok updates from Al Viro: "Removals of trivially pointless access_ok() calls. Note: the fiemap stuff was removed from the series, since they are duplicates with part of ext4 series carried in Ted's tree" * 'uaccess.access_ok' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: vmci_host: get rid of pointless access_ok() hfi1: get rid of pointless access_ok() usb: get rid of pointless access_ok() calls lpfc_debugfs: get rid of pointless access_ok() efi_test: get rid of pointless access_ok() drm_read(): get rid of pointless access_ok() via-pmu: don't bother with access_ok() drivers/crypto/ccp/sev-dev.c: get rid of pointless access_ok() omapfb: get rid of pointless access_ok() calls amifb: get rid of pointless access_ok() calls drivers/fpga/dfl-afu-dma-region.c: get rid of pointless access_ok() drivers/fpga/dfl-fme-pr.c: get rid of pointless access_ok() cm4000_cs.c cmm_ioctl(): get rid of pointless access_ok() nvram: drop useless access_ok() n_hdlc_tty_read(): remove pointless access_ok() tomoyo_write_control(): get rid of pointless access_ok() btrfs_ioctl_send(): don't bother with access_ok() fat_dir_ioctl(): hadn't needed that access_ok() for more than a decade... dlmfs_file_write(): get rid of pointless access_ok()
This commit is contained in:
commit
e0cd920687
|
@ -232,8 +232,6 @@ static ssize_t nvram_misc_read(struct file *file, char __user *buf,
|
|||
ssize_t ret;
|
||||
|
||||
|
||||
if (!access_ok(buf, count))
|
||||
return -EFAULT;
|
||||
if (*ppos >= nvram_size)
|
||||
return 0;
|
||||
|
||||
|
@ -264,8 +262,6 @@ static ssize_t nvram_misc_write(struct file *file, const char __user *buf,
|
|||
char *tmp;
|
||||
ssize_t ret;
|
||||
|
||||
if (!access_ok(buf, count))
|
||||
return -EFAULT;
|
||||
if (*ppos >= nvram_size)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -1404,7 +1404,6 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
unsigned int iobase = dev->p_dev->resource[0]->start;
|
||||
struct inode *inode = file_inode(filp);
|
||||
struct pcmcia_device *link;
|
||||
int size;
|
||||
int rc;
|
||||
void __user *argp = (void __user *)arg;
|
||||
#ifdef CM4000_DEBUG
|
||||
|
@ -1441,19 +1440,6 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
DEBUGP(4, dev, "iocnr mismatch\n");
|
||||
goto out;
|
||||
}
|
||||
size = _IOC_SIZE(cmd);
|
||||
rc = -EFAULT;
|
||||
DEBUGP(4, dev, "iocdir=%.4x iocr=%.4x iocw=%.4x iocsize=%d cmd=%.4x\n",
|
||||
_IOC_DIR(cmd), _IOC_READ, _IOC_WRITE, size, cmd);
|
||||
|
||||
if (_IOC_DIR(cmd) & _IOC_READ) {
|
||||
if (!access_ok(argp, size))
|
||||
goto out;
|
||||
}
|
||||
if (_IOC_DIR(cmd) & _IOC_WRITE) {
|
||||
if (!access_ok(argp, size))
|
||||
goto out;
|
||||
}
|
||||
rc = 0;
|
||||
|
||||
switch (cmd) {
|
||||
|
|
|
@ -394,8 +394,7 @@ static int sev_ioctl_do_pek_csr(struct sev_issue_cmd *argp, bool writable)
|
|||
goto cmd;
|
||||
|
||||
/* allocate a physically contiguous buffer to store the CSR blob */
|
||||
if (!access_ok(input.address, input.length) ||
|
||||
input.length > SEV_FW_BLOB_MAX_SIZE) {
|
||||
if (input.length > SEV_FW_BLOB_MAX_SIZE) {
|
||||
ret = -EFAULT;
|
||||
goto e_free;
|
||||
}
|
||||
|
@ -632,12 +631,6 @@ static int sev_ioctl_do_get_id2(struct sev_issue_cmd *argp)
|
|||
if (copy_from_user(&input, (void __user *)argp->data, sizeof(input)))
|
||||
return -EFAULT;
|
||||
|
||||
/* Check if we have write access to the userspace buffer */
|
||||
if (input.address &&
|
||||
input.length &&
|
||||
!access_ok(input.address, input.length))
|
||||
return -EFAULT;
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
@ -753,15 +746,13 @@ static int sev_ioctl_do_pdh_export(struct sev_issue_cmd *argp, bool writable)
|
|||
goto cmd;
|
||||
|
||||
/* Allocate a physically contiguous buffer to store the PDH blob. */
|
||||
if ((input.pdh_cert_len > SEV_FW_BLOB_MAX_SIZE) ||
|
||||
!access_ok(input.pdh_cert_address, input.pdh_cert_len)) {
|
||||
if (input.pdh_cert_len > SEV_FW_BLOB_MAX_SIZE) {
|
||||
ret = -EFAULT;
|
||||
goto e_free;
|
||||
}
|
||||
|
||||
/* Allocate a physically contiguous buffer to store the cert chain blob. */
|
||||
if ((input.cert_chain_len > SEV_FW_BLOB_MAX_SIZE) ||
|
||||
!access_ok(input.cert_chain_address, input.cert_chain_len)) {
|
||||
if (input.cert_chain_len > SEV_FW_BLOB_MAX_SIZE) {
|
||||
ret = -EFAULT;
|
||||
goto e_free;
|
||||
}
|
||||
|
|
|
@ -70,9 +70,6 @@ copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!access_ok(src, 1))
|
||||
return -EFAULT;
|
||||
|
||||
buf = memdup_user(src, len);
|
||||
if (IS_ERR(buf)) {
|
||||
*dst = NULL;
|
||||
|
@ -91,9 +88,6 @@ copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
|
|||
static inline int
|
||||
get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
|
||||
{
|
||||
if (!access_ok(src, 1))
|
||||
return -EFAULT;
|
||||
|
||||
*len = user_ucs2_strsize(src);
|
||||
if (*len == 0)
|
||||
return -EFAULT;
|
||||
|
@ -118,9 +112,6 @@ copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
|
|||
{
|
||||
size_t len;
|
||||
|
||||
if (!access_ok(src, 1))
|
||||
return -EFAULT;
|
||||
|
||||
len = user_ucs2_strsize(src);
|
||||
if (len == 0)
|
||||
return -EFAULT;
|
||||
|
@ -142,9 +133,6 @@ copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
|
|||
if (!src)
|
||||
return 0;
|
||||
|
||||
if (!access_ok(dst, 1))
|
||||
return -EFAULT;
|
||||
|
||||
return copy_to_user(dst, src, len);
|
||||
}
|
||||
|
||||
|
|
|
@ -324,10 +324,6 @@ int afu_dma_map_region(struct dfl_feature_platform_data *pdata,
|
|||
if (user_addr + length < user_addr)
|
||||
return -EINVAL;
|
||||
|
||||
if (!access_ok((void __user *)(unsigned long)user_addr,
|
||||
length))
|
||||
return -EINVAL;
|
||||
|
||||
region = kzalloc(sizeof(*region), GFP_KERNEL);
|
||||
if (!region)
|
||||
return -ENOMEM;
|
||||
|
|
|
@ -97,10 +97,6 @@ static int fme_pr(struct platform_device *pdev, unsigned long arg)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!access_ok((void __user *)(unsigned long)port_pr.buffer_address,
|
||||
port_pr.buffer_size))
|
||||
return -EFAULT;
|
||||
|
||||
/*
|
||||
* align PR buffer per PR bandwidth, as HW ignores the extra padding
|
||||
* data automatically.
|
||||
|
|
|
@ -569,9 +569,6 @@ ssize_t drm_read(struct file *filp, char __user *buffer,
|
|||
struct drm_device *dev = file_priv->minor->dev;
|
||||
ssize_t ret;
|
||||
|
||||
if (!access_ok(buffer, count))
|
||||
return -EFAULT;
|
||||
|
||||
ret = mutex_lock_interruptible(&file_priv->event_read_lock);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
|
@ -206,13 +206,6 @@ static int pin_rcv_pages(struct hfi1_filedata *fd, struct tid_user_buf *tidbuf)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Verify that access is OK for the user buffer */
|
||||
if (!access_ok((void __user *)vaddr,
|
||||
npages * PAGE_SIZE)) {
|
||||
dd_dev_err(dd, "Fail vaddr %p, %u pages, !access_ok\n",
|
||||
(void *)vaddr, npages);
|
||||
return -EFAULT;
|
||||
}
|
||||
/* Allocate the array of struct page pointers needed for pinning */
|
||||
pages = kcalloc(npages, sizeof(*pages), GFP_KERNEL);
|
||||
if (!pages)
|
||||
|
|
|
@ -2184,8 +2184,6 @@ pmu_read(struct file *file, char __user *buf,
|
|||
|
||||
if (count < 1 || !pp)
|
||||
return -EINVAL;
|
||||
if (!access_ok(buf, count))
|
||||
return -EFAULT;
|
||||
|
||||
spin_lock_irqsave(&pp->lock, flags);
|
||||
add_wait_queue(&pp->wait, &wait);
|
||||
|
|
|
@ -233,8 +233,6 @@ static int vmci_host_setup_notify(struct vmci_ctx *context,
|
|||
* about the size.
|
||||
*/
|
||||
BUILD_BUG_ON(sizeof(bool) != sizeof(u8));
|
||||
if (!access_ok((void __user *)uva, sizeof(u8)))
|
||||
return VMCI_ERROR_GENERIC;
|
||||
|
||||
/*
|
||||
* Lock physical page backing a given user VA.
|
||||
|
|
|
@ -2166,10 +2166,6 @@ lpfc_debugfs_lockstat_write(struct file *file, const char __user *buf,
|
|||
char *pbuf;
|
||||
int i;
|
||||
|
||||
/* Protect copy from user */
|
||||
if (!access_ok(buf, nbytes))
|
||||
return -EFAULT;
|
||||
|
||||
memset(mybuf, 0, sizeof(mybuf));
|
||||
|
||||
if (copy_from_user(mybuf, buf, nbytes))
|
||||
|
@ -2621,10 +2617,6 @@ lpfc_debugfs_multixripools_write(struct file *file, const char __user *buf,
|
|||
if (nbytes > 64)
|
||||
nbytes = 64;
|
||||
|
||||
/* Protect copy from user */
|
||||
if (!access_ok(buf, nbytes))
|
||||
return -EFAULT;
|
||||
|
||||
memset(mybuf, 0, sizeof(mybuf));
|
||||
|
||||
if (copy_from_user(mybuf, buf, nbytes))
|
||||
|
@ -2787,10 +2779,6 @@ lpfc_debugfs_scsistat_write(struct file *file, const char __user *buf,
|
|||
char mybuf[6] = {0};
|
||||
int i;
|
||||
|
||||
/* Protect copy from user */
|
||||
if (!access_ok(buf, nbytes))
|
||||
return -EFAULT;
|
||||
|
||||
if (copy_from_user(mybuf, buf, (nbytes >= sizeof(mybuf)) ?
|
||||
(sizeof(mybuf) - 1) : nbytes))
|
||||
return -EFAULT;
|
||||
|
|
|
@ -423,13 +423,6 @@ static ssize_t n_hdlc_tty_read(struct tty_struct *tty, struct file *file,
|
|||
struct n_hdlc_buf *rbuf;
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
|
||||
/* verify user access to buffer */
|
||||
if (!access_ok(buf, nr)) {
|
||||
pr_warn("%s(%d) %s() can't verify user buffer\n",
|
||||
__FILE__, __LINE__, __func__);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
add_wait_queue(&tty->read_wait, &wait);
|
||||
|
||||
for (;;) {
|
||||
|
|
|
@ -598,8 +598,6 @@ static ssize_t usb_device_read(struct file *file, char __user *buf,
|
|||
return -EINVAL;
|
||||
if (nbytes <= 0)
|
||||
return 0;
|
||||
if (!access_ok(buf, nbytes))
|
||||
return -EFAULT;
|
||||
|
||||
mutex_lock(&usb_bus_idr_lock);
|
||||
/* print devices for all busses */
|
||||
|
|
|
@ -1136,11 +1136,6 @@ static int proc_control(struct usb_dev_state *ps, void __user *arg)
|
|||
ctrl.bRequestType, ctrl.bRequest, ctrl.wValue,
|
||||
ctrl.wIndex, ctrl.wLength);
|
||||
if (ctrl.bRequestType & 0x80) {
|
||||
if (ctrl.wLength && !access_ok(ctrl.data,
|
||||
ctrl.wLength)) {
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
pipe = usb_rcvctrlpipe(dev, 0);
|
||||
snoop_urb(dev, NULL, pipe, ctrl.wLength, tmo, SUBMIT, NULL, 0);
|
||||
|
||||
|
@ -1225,10 +1220,6 @@ static int proc_bulk(struct usb_dev_state *ps, void __user *arg)
|
|||
}
|
||||
tmo = bulk.timeout;
|
||||
if (bulk.ep & 0x80) {
|
||||
if (len1 && !access_ok(bulk.data, len1)) {
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
snoop_urb(dev, NULL, pipe, len1, tmo, SUBMIT, NULL, 0);
|
||||
|
||||
usb_unlock_device(dev);
|
||||
|
|
|
@ -252,9 +252,6 @@ static ssize_t f_hidg_read(struct file *file, char __user *buffer,
|
|||
if (!count)
|
||||
return 0;
|
||||
|
||||
if (!access_ok(buffer, count))
|
||||
return -EFAULT;
|
||||
|
||||
spin_lock_irqsave(&hidg->read_spinlock, flags);
|
||||
|
||||
#define READ_COND (!list_empty(&hidg->completed_out_req))
|
||||
|
@ -339,9 +336,6 @@ static ssize_t f_hidg_write(struct file *file, const char __user *buffer,
|
|||
unsigned long flags;
|
||||
ssize_t status = -ENOMEM;
|
||||
|
||||
if (!access_ok(buffer, count))
|
||||
return -EFAULT;
|
||||
|
||||
spin_lock_irqsave(&hidg->write_spinlock, flags);
|
||||
|
||||
#define WRITE_COND (!hidg->write_pending)
|
||||
|
|
|
@ -1855,8 +1855,6 @@ static int ami_get_var_cursorinfo(struct fb_var_cursorinfo *var,
|
|||
var->yspot = par->crsr.spot_y;
|
||||
if (size > var->height * var->width)
|
||||
return -ENAMETOOLONG;
|
||||
if (!access_ok(data, size))
|
||||
return -EFAULT;
|
||||
delta = 1 << par->crsr.fmode;
|
||||
lspr = lofsprite + (delta << 1);
|
||||
if (par->bplcon0 & BPC0_LACE)
|
||||
|
@ -1935,8 +1933,6 @@ static int ami_set_var_cursorinfo(struct fb_var_cursorinfo *var,
|
|||
return -EINVAL;
|
||||
if (!var->height)
|
||||
return -EINVAL;
|
||||
if (!access_ok(data, var->width * var->height))
|
||||
return -EFAULT;
|
||||
delta = 1 << fmode;
|
||||
lofsprite = shfsprite = (u_short *)spritememory;
|
||||
lspr = lofsprite + (delta << 1);
|
||||
|
|
|
@ -482,9 +482,6 @@ static int omapfb_memory_read(struct fb_info *fbi,
|
|||
if (!display || !display->driver->memory_read)
|
||||
return -ENOENT;
|
||||
|
||||
if (!access_ok(mr->buffer, mr->buffer_size))
|
||||
return -EFAULT;
|
||||
|
||||
if (mr->w > 4096 || mr->h > 4096)
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -7065,13 +7065,6 @@ long btrfs_ioctl_send(struct file *mnt_file, struct btrfs_ioctl_send_args *arg)
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (!access_ok(arg->clone_sources,
|
||||
sizeof(*arg->clone_sources) *
|
||||
arg->clone_sources_count)) {
|
||||
ret = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (arg->flags & ~BTRFS_SEND_FLAG_MASK) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
|
|
|
@ -804,8 +804,6 @@ static long fat_dir_ioctl(struct file *filp, unsigned int cmd,
|
|||
return fat_generic_ioctl(filp, cmd, arg);
|
||||
}
|
||||
|
||||
if (!access_ok(d1, sizeof(struct __fat_dirent[2])))
|
||||
return -EFAULT;
|
||||
/*
|
||||
* Yes, we don't need this put_user() absolutely. However old
|
||||
* code didn't return the right value. So, app use this value,
|
||||
|
@ -844,8 +842,6 @@ static long fat_compat_dir_ioctl(struct file *filp, unsigned cmd,
|
|||
return fat_generic_ioctl(filp, cmd, (unsigned long)arg);
|
||||
}
|
||||
|
||||
if (!access_ok(d1, sizeof(struct compat_dirent[2])))
|
||||
return -EFAULT;
|
||||
/*
|
||||
* Yes, we don't need this put_user() absolutely. However old
|
||||
* code didn't return the right value. So, app use this value,
|
||||
|
|
|
@ -291,9 +291,6 @@ static ssize_t dlmfs_file_write(struct file *filp,
|
|||
if (!count)
|
||||
return 0;
|
||||
|
||||
if (!access_ok(buf, count))
|
||||
return -EFAULT;
|
||||
|
||||
lvb_buf = kmalloc(count, GFP_NOFS);
|
||||
if (!lvb_buf)
|
||||
return -ENOMEM;
|
||||
|
|
|
@ -2662,8 +2662,6 @@ ssize_t tomoyo_write_control(struct tomoyo_io_buffer *head,
|
|||
|
||||
if (!head->write)
|
||||
return -EINVAL;
|
||||
if (!access_ok(buffer, buffer_len))
|
||||
return -EFAULT;
|
||||
if (mutex_lock_interruptible(&head->io_sem))
|
||||
return -EINTR;
|
||||
head->read_user_buf_avail = 0;
|
||||
|
|
Loading…
Reference in New Issue
Block a user