- /* free our own name, another process may wait for us */
- newdup = strdup(ifr.ifr_newname);
- util_strscpyl(ifr.ifr_newname, IFNAMSIZ, udev_device_get_sysname(dev), "-", newdup, NULL);
- free(newdup);
- err = ioctl(sk, SIOCSIFNAME, &ifr);
- if (err != 0) {
- err(event->udev, "error changing netif name %s to %s: %m\n",
- ifr.ifr_name, ifr.ifr_newname);
- goto exit;
- }
- rename_netif_kernel_log(ifr);
+ /* keep trying if the destination interface name already exists */
+ err = -errno;
+ if (err != -EEXIST)
+ goto out;
+
+ /* free our own name, another process may wait for us */
+ util_strscpyl(ifr.ifr_newname, IFNAMSIZ, udev_device_get_sysname(dev), "-", event->name, NULL);
+ err = ioctl(sk, SIOCSIFNAME, &ifr);
+ if (err < 0) {
+ err = -errno;
+ goto out;
+ }