Skip to content

Commit

Permalink
atm: switch do_atm_iobuf() to direct use of atm_getnames()
Browse files Browse the repository at this point in the history
... and sod the compat_alloc_user_space() with its complications

Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed May 21, 2020
1 parent a392948 commit 3608504
Showing 1 changed file with 3 additions and 22 deletions.
25 changes: 3 additions & 22 deletions net/atm/ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,32 +251,13 @@ static struct {
static int do_atm_iobuf(struct socket *sock, unsigned int cmd,
unsigned long arg)
{
struct atm_iobuf __user *iobuf;
struct compat_atm_iobuf __user *iobuf32;
struct compat_atm_iobuf __user *iobuf32 = compat_ptr(arg);
u32 data;
void __user *datap;
int len, err;

iobuf = compat_alloc_user_space(sizeof(*iobuf));
iobuf32 = compat_ptr(arg);

if (get_user(len, &iobuf32->length) ||
get_user(data, &iobuf32->buffer))
return -EFAULT;
datap = compat_ptr(data);
if (put_user(len, &iobuf->length) ||
put_user(datap, &iobuf->buffer))
if (get_user(data, &iobuf32->buffer))
return -EFAULT;

err = do_vcc_ioctl(sock, cmd, (unsigned long) iobuf, 0);

if (!err) {
if (copy_in_user(&iobuf32->length, &iobuf->length,
sizeof(int)))
err = -EFAULT;
}

return err;
return atm_getnames(&iobuf32->length, compat_ptr(data));
}

static int do_atmif_sioc(struct socket *sock, unsigned int cmd,
Expand Down

0 comments on commit 3608504

Please sign in to comment.