udev: do not try to assign invalid ifname
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 18 Mar 2021 21:26:53 +0000 (06:26 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 23 Mar 2021 00:35:18 +0000 (01:35 +0100)
Fixes #19038.

(cherry picked from commit 5cdb3f70ebe035323f4f079028a262669a2bbbf6)

src/udev/net/link-config.c

index d12fd0e2991225b9b0fa8fd2d17e32104e43e126..9bd718fdac63c5294cd0e9704eb8c9d9eb3ef469 100644 (file)
@@ -444,8 +444,6 @@ static int link_config_apply_rtnl_settings(sd_netlink **rtnl, const link_config
 
 static int link_config_generate_new_name(const link_config_ctx *ctx, const link_config *config, sd_device *device, const char **ret_name) {
         unsigned name_type = NET_NAME_UNKNOWN;
-        const char *new_name = NULL;
-        NamePolicy policy;
         int r;
 
         assert(ctx);
@@ -463,7 +461,8 @@ static int link_config_generate_new_name(const link_config_ctx *ctx, const link_
 
         if (ctx->enable_name_policy && config->name_policy)
                 for (NamePolicy *p = config->name_policy; *p != _NAMEPOLICY_INVALID; p++) {
-                        policy = *p;
+                        const char *new_name = NULL;
+                        NamePolicy policy = *p;
 
                         switch (policy) {
                         case NAMEPOLICY_KERNEL:
@@ -499,16 +498,13 @@ static int link_config_generate_new_name(const link_config_ctx *ctx, const link_
                         default:
                                 assert_not_reached("invalid policy");
                         }
-                        if (ifname_valid(new_name))
-                                break;
+                        if (ifname_valid(new_name)) {
+                                log_device_debug(device, "Policy *%s* yields \"%s\".", name_policy_to_string(policy), new_name);
+                                *ret_name = new_name;
+                                return 0;
+                        }
                 }
 
-        if (new_name) {
-                log_device_debug(device, "Policy *%s* yields \"%s\".", name_policy_to_string(policy), new_name);
-                *ret_name = new_name;
-                return 0;
-        }
-
         if (config->name) {
                 log_device_debug(device, "Policies didn't yield a name, using specified Name=%s.", config->name);
                 *ret_name = config->name;