Commit 2f98abb1 authored by Johannes Berg's avatar Johannes Berg

mac80211_hwsim: move HWSIM_ATTR_RADIO_NAME parsing last

Avoid the need to kfree() the name in many places by moving
the name parsing last.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 3d1a5bbf
...@@ -3321,15 +3321,6 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info) ...@@ -3321,15 +3321,6 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
if (info->attrs[HWSIM_ATTR_NO_VIF]) if (info->attrs[HWSIM_ATTR_NO_VIF])
param.no_vif = true; param.no_vif = true;
if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
hwname = kasprintf(GFP_KERNEL, "%.*s",
nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
(char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
if (!hwname)
return -ENOMEM;
param.hwname = hwname;
}
if (info->attrs[HWSIM_ATTR_USE_CHANCTX]) if (info->attrs[HWSIM_ATTR_USE_CHANCTX])
param.use_chanctx = true; param.use_chanctx = true;
else else
...@@ -3342,10 +3333,8 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info) ...@@ -3342,10 +3333,8 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
if (info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]) { if (info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]) {
u32 idx = nla_get_u32(info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]); u32 idx = nla_get_u32(info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]);
if (idx >= ARRAY_SIZE(hwsim_world_regdom_custom)) { if (idx >= ARRAY_SIZE(hwsim_world_regdom_custom))
kfree(hwname);
return -EINVAL; return -EINVAL;
}
idx = array_index_nospec(idx, idx = array_index_nospec(idx,
ARRAY_SIZE(hwsim_world_regdom_custom)); ARRAY_SIZE(hwsim_world_regdom_custom));
...@@ -3358,7 +3347,6 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info) ...@@ -3358,7 +3347,6 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
GENL_SET_ERR_MSG(info,"MAC is no valid source addr"); GENL_SET_ERR_MSG(info,"MAC is no valid source addr");
NL_SET_BAD_ATTR(info->extack, NL_SET_BAD_ATTR(info->extack,
info->attrs[HWSIM_ATTR_PERM_ADDR]); info->attrs[HWSIM_ATTR_PERM_ADDR]);
kfree(hwname);
return -EINVAL; return -EINVAL;
} }
...@@ -3366,6 +3354,15 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info) ...@@ -3366,6 +3354,15 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
param.perm_addr = nla_data(info->attrs[HWSIM_ATTR_PERM_ADDR]); param.perm_addr = nla_data(info->attrs[HWSIM_ATTR_PERM_ADDR]);
} }
if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
hwname = kasprintf(GFP_KERNEL, "%.*s",
nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
(char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
if (!hwname)
return -ENOMEM;
param.hwname = hwname;
}
ret = mac80211_hwsim_new_radio(info, &param); ret = mac80211_hwsim_new_radio(info, &param);
kfree(hwname); kfree(hwname);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment