tap.c (b69df2608281b71575fbb3b9f426dbcc4be8a700) | tap.c (3b23a32a63219f51a5298bc55a65ecee866e79d0) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2#include <linux/etherdevice.h> 3#include <linux/if_tap.h> 4#include <linux/if_vlan.h> 5#include <linux/interrupt.h> 6#include <linux/nsproxy.h> 7#include <linux/compat.h> 8#include <linux/if_tun.h> --- 1076 unchanged lines hidden (view full) --- 1085 case SIOCGIFHWADDR: 1086 rtnl_lock(); 1087 tap = tap_get_tap_dev(q); 1088 if (!tap) { 1089 rtnl_unlock(); 1090 return -ENOLINK; 1091 } 1092 ret = 0; | 1// SPDX-License-Identifier: GPL-2.0-only 2#include <linux/etherdevice.h> 3#include <linux/if_tap.h> 4#include <linux/if_vlan.h> 5#include <linux/interrupt.h> 6#include <linux/nsproxy.h> 7#include <linux/compat.h> 8#include <linux/if_tun.h> --- 1076 unchanged lines hidden (view full) --- 1085 case SIOCGIFHWADDR: 1086 rtnl_lock(); 1087 tap = tap_get_tap_dev(q); 1088 if (!tap) { 1089 rtnl_unlock(); 1090 return -ENOLINK; 1091 } 1092 ret = 0; |
1093 u = tap->dev->type; | 1093 dev_get_mac_address(&sa, dev_net(tap->dev), tap->dev->name); |
1094 if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) || | 1094 if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) || |
1095 copy_to_user(&ifr->ifr_hwaddr.sa_data, tap->dev->dev_addr, ETH_ALEN) || 1096 put_user(u, &ifr->ifr_hwaddr.sa_family)) | 1095 copy_to_user(&ifr->ifr_hwaddr, &sa, sizeof(sa))) |
1097 ret = -EFAULT; 1098 tap_put_tap_dev(tap); 1099 rtnl_unlock(); 1100 return ret; 1101 1102 case SIOCSIFHWADDR: 1103 if (copy_from_user(&sa, &ifr->ifr_hwaddr, sizeof(sa))) 1104 return -EFAULT; 1105 rtnl_lock(); 1106 tap = tap_get_tap_dev(q); 1107 if (!tap) { 1108 rtnl_unlock(); 1109 return -ENOLINK; 1110 } | 1096 ret = -EFAULT; 1097 tap_put_tap_dev(tap); 1098 rtnl_unlock(); 1099 return ret; 1100 1101 case SIOCSIFHWADDR: 1102 if (copy_from_user(&sa, &ifr->ifr_hwaddr, sizeof(sa))) 1103 return -EFAULT; 1104 rtnl_lock(); 1105 tap = tap_get_tap_dev(q); 1106 if (!tap) { 1107 rtnl_unlock(); 1108 return -ENOLINK; 1109 } |
1111 ret = dev_set_mac_address(tap->dev, &sa, NULL); | 1110 ret = dev_set_mac_address_user(tap->dev, &sa, NULL); |
1112 tap_put_tap_dev(tap); 1113 rtnl_unlock(); 1114 return ret; 1115 1116 default: 1117 return -EINVAL; 1118 } 1119} --- 247 unchanged lines hidden --- | 1111 tap_put_tap_dev(tap); 1112 rtnl_unlock(); 1113 return ret; 1114 1115 default: 1116 return -EINVAL; 1117 } 1118} --- 247 unchanged lines hidden --- |