Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fix missing copy_from_user in macvtap

Fix missing copy_from_user in macvtap SIOCSIFHWADDR ioctl.

Signed-off-by: Justin Cormack <justin@netbsd.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Justin Cormack and committed by
David S. Miller
7f460d30 42275bd8

+4 -1
+4 -1
drivers/net/macvtap.c
··· 1006 1006 unsigned int __user *up = argp; 1007 1007 unsigned short u; 1008 1008 int __user *sp = argp; 1009 + struct sockaddr sa; 1009 1010 int s; 1010 1011 int ret; 1011 1012 ··· 1120 1119 return ret; 1121 1120 1122 1121 case SIOCSIFHWADDR: 1122 + if (copy_from_user(&sa, &ifr->ifr_hwaddr, sizeof(sa))) 1123 + return -EFAULT; 1123 1124 rtnl_lock(); 1124 1125 vlan = macvtap_get_vlan(q); 1125 1126 if (!vlan) { 1126 1127 rtnl_unlock(); 1127 1128 return -ENOLINK; 1128 1129 } 1129 - ret = dev_set_mac_address(vlan->dev, &ifr->ifr_hwaddr); 1130 + ret = dev_set_mac_address(vlan->dev, &sa); 1130 1131 macvtap_put_vlan(vlan); 1131 1132 rtnl_unlock(); 1132 1133 return ret;