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

net: set name assign type for renamed devices

Based on a patch from David Herrmann.

This is the only place devices can be renamed.

v9: restore revers-christmas-tree order of local variables

Signed-off-by: Tom Gundersen <teg@jklm.no>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Tom Gundersen and committed by
David S. Miller
238fa362 685343fc

+7
+7
net/core/dev.c
··· 1082 1082 */ 1083 1083 int dev_change_name(struct net_device *dev, const char *newname) 1084 1084 { 1085 + unsigned char old_assign_type; 1085 1086 char oldname[IFNAMSIZ]; 1086 1087 int err = 0; 1087 1088 int ret; ··· 1110 1109 return err; 1111 1110 } 1112 1111 1112 + old_assign_type = dev->name_assign_type; 1113 + dev->name_assign_type = NET_NAME_RENAMED; 1114 + 1113 1115 rollback: 1114 1116 ret = device_rename(&dev->dev, dev->name); 1115 1117 if (ret) { 1116 1118 memcpy(dev->name, oldname, IFNAMSIZ); 1119 + dev->name_assign_type = old_assign_type; 1117 1120 write_seqcount_end(&devnet_rename_seq); 1118 1121 return ret; 1119 1122 } ··· 1146 1141 write_seqcount_begin(&devnet_rename_seq); 1147 1142 memcpy(dev->name, oldname, IFNAMSIZ); 1148 1143 memcpy(oldname, newname, IFNAMSIZ); 1144 + dev->name_assign_type = old_assign_type; 1145 + old_assign_type = NET_NAME_RENAMED; 1149 1146 goto rollback; 1150 1147 } else { 1151 1148 pr_err("%s: name change rollback failed: %d\n",