kbuild test robot
2019-Mar-28 19:49 UTC
[PATCH net v3] failover: allow name change on IFF_UP slave interfaces
Hi Si-Wei, Thank you for the patch! Yet something to improve: [auto build test ERROR on net/master] url: https://github.com/0day-ci/linux/commits/Si-Wei-Liu/failover-allow-name-change-on-IFF_UP-slave-interfaces/20190329-020744 config: openrisc-or1ksim_defconfig (attached as .config) compiler: or1k-linux-gcc (GCC) 6.0.0 20160327 (experimental) reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=openrisc All errors (new ones prefixed by >>): net/core/dev.c: In function 'dev_change_name':>> net/core/dev.c:1277:9: error: too few arguments to function 'dev_open'ret = dev_open(dev); ^~~~~~~~ In file included from net/core/dev.c:93:0: include/linux/netdevice.h:2636:5: note: declared here int dev_open(struct net_device *dev, struct netlink_ext_ack *extack); ^~~~~~~~ vim +/dev_open +1277 net/core/dev.c 1166 1167 /** 1168 * dev_change_name - change name of a device 1169 * @dev: device 1170 * @newname: name (or format string) must be at least IFNAMSIZ 1171 * 1172 * Change name of a device, can pass format strings "eth%d". 1173 * for wildcarding. 1174 */ 1175 int dev_change_name(struct net_device *dev, const char *newname) 1176 { 1177 unsigned char old_assign_type; 1178 bool reopen_needed = false; 1179 char oldname[IFNAMSIZ]; 1180 int err = 0; 1181 int ret; 1182 struct net *net; 1183 1184 ASSERT_RTNL(); 1185 BUG_ON(!dev_net(dev)); 1186 1187 net = dev_net(dev); 1188 1189 /* Allow failover slave to rename even when 1190 * it is up and running. 1191 * 1192 * Failover slaves are special, since userspace 1193 * might rename the slave after the interface 1194 * has been brought up and running due to 1195 * auto-enslavement. 1196 * 1197 * Failover users don't actually care about slave 1198 * name change, as they are only expected to operate 1199 * on master interface directly. 1200 */ 1201 if (dev->flags & IFF_UP) { 1202 if (likely(!(dev->priv_flags & IFF_FAILOVER_SLAVE))) 1203 return -EBUSY; 1204 reopen_needed = true; 1205 } 1206 1207 write_seqcount_begin(&devnet_rename_seq); 1208 1209 if (strncmp(newname, dev->name, IFNAMSIZ) == 0) { 1210 write_seqcount_end(&devnet_rename_seq); 1211 return 0; 1212 } 1213 1214 memcpy(oldname, dev->name, IFNAMSIZ); 1215 1216 err = dev_get_valid_name(net, dev, newname); 1217 if (err < 0) { 1218 write_seqcount_end(&devnet_rename_seq); 1219 return err; 1220 } 1221 1222 if (reopen_needed) 1223 dev_close(dev); 1224 1225 if (oldname[0] && !strchr(oldname, '%')) 1226 netdev_info(dev, "renamed from %s\n", oldname); 1227 1228 old_assign_type = dev->name_assign_type; 1229 dev->name_assign_type = NET_NAME_RENAMED; 1230 1231 rollback: 1232 ret = device_rename(&dev->dev, dev->name); 1233 if (ret) { 1234 memcpy(dev->name, oldname, IFNAMSIZ); 1235 dev->name_assign_type = old_assign_type; 1236 write_seqcount_end(&devnet_rename_seq); 1237 if (err >= 0) 1238 err = ret; 1239 goto reopen; 1240 } 1241 1242 write_seqcount_end(&devnet_rename_seq); 1243 1244 netdev_adjacent_rename_links(dev, oldname); 1245 1246 write_lock_bh(&dev_base_lock); 1247 hlist_del_rcu(&dev->name_hlist); 1248 write_unlock_bh(&dev_base_lock); 1249 1250 synchronize_rcu(); 1251 1252 write_lock_bh(&dev_base_lock); 1253 hlist_add_head_rcu(&dev->name_hlist, dev_name_hash(net, dev->name)); 1254 write_unlock_bh(&dev_base_lock); 1255 1256 ret = call_netdevice_notifiers(NETDEV_CHANGENAME, dev); 1257 ret = notifier_to_errno(ret); 1258 1259 if (ret) { 1260 /* err >= 0 after dev_alloc_name() or stores the first errno */ 1261 if (err >= 0) { 1262 err = ret; 1263 write_seqcount_begin(&devnet_rename_seq); 1264 memcpy(dev->name, oldname, IFNAMSIZ); 1265 memcpy(oldname, newname, IFNAMSIZ); 1266 dev->name_assign_type = old_assign_type; 1267 old_assign_type = NET_NAME_RENAMED; 1268 goto rollback; 1269 } else { 1270 pr_err("%s: name change rollback failed: %d\n", 1271 dev->name, ret); 1272 } 1273 } 1274 1275 reopen: 1276 if (reopen_needed) {> 1277 ret = dev_open(dev);1278 if (ret) { 1279 pr_err("%s: reopen device failed: %d\n", 1280 dev->name, ret); 1281 } 1282 } 1283 1284 return err; 1285 } 1286 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -------------- next part -------------- A non-text attachment was scrubbed... Name: .config.gz Type: application/gzip Size: 8104 bytes Desc: not available URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20190329/b1d23628/attachment-0001.bin>
Apparently Analagous Threads
- [PATCH net v4] failover: allow name change on IFF_UP slave interfaces
- [PATCH net v3] failover: allow name change on IFF_UP slave interfaces
- [PATCH net v3] failover: allow name change on IFF_UP slave interfaces
- [PATCH net v5] failover: allow name change on IFF_UP slave interfaces
- [PATCH net v5] failover: allow name change on IFF_UP slave interfaces