Commit 7f460d30 authored by Justin Cormack's avatar Justin Cormack Committed by David S. Miller

fix missing copy_from_user in macvtap

Fix missing copy_from_user in macvtap SIOCSIFHWADDR ioctl.
Signed-off-by: default avatarJustin Cormack <justin@netbsd.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 42275bd8
...@@ -1006,6 +1006,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, ...@@ -1006,6 +1006,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd,
unsigned int __user *up = argp; unsigned int __user *up = argp;
unsigned short u; unsigned short u;
int __user *sp = argp; int __user *sp = argp;
struct sockaddr sa;
int s; int s;
int ret; int ret;
...@@ -1119,13 +1120,15 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd, ...@@ -1119,13 +1120,15 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd,
return ret; return ret;
case SIOCSIFHWADDR: case SIOCSIFHWADDR:
if (copy_from_user(&sa, &ifr->ifr_hwaddr, sizeof(sa)))
return -EFAULT;
rtnl_lock(); rtnl_lock();
vlan = macvtap_get_vlan(q); vlan = macvtap_get_vlan(q);
if (!vlan) { if (!vlan) {
rtnl_unlock(); rtnl_unlock();
return -ENOLINK; return -ENOLINK;
} }
ret = dev_set_mac_address(vlan->dev, &ifr->ifr_hwaddr); ret = dev_set_mac_address(vlan->dev, &sa);
macvtap_put_vlan(vlan); macvtap_put_vlan(vlan);
rtnl_unlock(); rtnl_unlock();
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment