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: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Родитель
3d1a5bbfaf
Коммит
2f98abb17d
|
@ -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])
|
||||
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])
|
||||
param.use_chanctx = true;
|
||||
else
|
||||
|
@ -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]) {
|
||||
u32 idx = nla_get_u32(info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]);
|
||||
|
||||
if (idx >= ARRAY_SIZE(hwsim_world_regdom_custom)) {
|
||||
kfree(hwname);
|
||||
if (idx >= ARRAY_SIZE(hwsim_world_regdom_custom))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
idx = array_index_nospec(idx,
|
||||
ARRAY_SIZE(hwsim_world_regdom_custom));
|
||||
|
@ -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");
|
||||
NL_SET_BAD_ATTR(info->extack,
|
||||
info->attrs[HWSIM_ATTR_PERM_ADDR]);
|
||||
kfree(hwname);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -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]);
|
||||
}
|
||||
|
||||
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, ¶m);
|
||||
kfree(hwname);
|
||||
return ret;
|
||||
|
|
Загрузка…
Ссылка в новой задаче