mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-26 12:34:41 +08:00
mac80211_hwsim: Stop using NLA_PUT*().
These macros contain a hidden goto, and are thus extremely error prone and make code hard to audit. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d33e152e1e
commit
633c938940
@ -582,11 +582,13 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw *hw,
|
||||
goto nla_put_failure;
|
||||
}
|
||||
|
||||
NLA_PUT(skb, HWSIM_ATTR_ADDR_TRANSMITTER,
|
||||
sizeof(struct mac_address), data->addresses[1].addr);
|
||||
if (nla_put(skb, HWSIM_ATTR_ADDR_TRANSMITTER,
|
||||
sizeof(struct mac_address), data->addresses[1].addr))
|
||||
goto nla_put_failure;
|
||||
|
||||
/* We get the skb->data */
|
||||
NLA_PUT(skb, HWSIM_ATTR_FRAME, my_skb->len, my_skb->data);
|
||||
if (nla_put(skb, HWSIM_ATTR_FRAME, my_skb->len, my_skb->data))
|
||||
goto nla_put_failure;
|
||||
|
||||
/* We get the flags for this transmission, and we translate them to
|
||||
wmediumd flags */
|
||||
@ -597,7 +599,8 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw *hw,
|
||||
if (info->flags & IEEE80211_TX_CTL_NO_ACK)
|
||||
hwsim_flags |= HWSIM_TX_CTL_NO_ACK;
|
||||
|
||||
NLA_PUT_U32(skb, HWSIM_ATTR_FLAGS, hwsim_flags);
|
||||
if (nla_put_u32(skb, HWSIM_ATTR_FLAGS, hwsim_flags))
|
||||
goto nla_put_failure;
|
||||
|
||||
/* We get the tx control (rate and retries) info*/
|
||||
|
||||
@ -606,12 +609,14 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw *hw,
|
||||
tx_attempts[i].count = info->status.rates[i].count;
|
||||
}
|
||||
|
||||
NLA_PUT(skb, HWSIM_ATTR_TX_INFO,
|
||||
sizeof(struct hwsim_tx_rate)*IEEE80211_TX_MAX_RATES,
|
||||
tx_attempts);
|
||||
if (nla_put(skb, HWSIM_ATTR_TX_INFO,
|
||||
sizeof(struct hwsim_tx_rate)*IEEE80211_TX_MAX_RATES,
|
||||
tx_attempts))
|
||||
goto nla_put_failure;
|
||||
|
||||
/* We create a cookie to identify this skb */
|
||||
NLA_PUT_U64(skb, HWSIM_ATTR_COOKIE, (unsigned long) my_skb);
|
||||
if (nla_put_u64(skb, HWSIM_ATTR_COOKIE, (unsigned long) my_skb))
|
||||
goto nla_put_failure;
|
||||
|
||||
genlmsg_end(skb, msg_head);
|
||||
genlmsg_unicast(&init_net, skb, dst_pid);
|
||||
@ -1108,7 +1113,8 @@ static int mac80211_hwsim_testmode_cmd(struct ieee80211_hw *hw,
|
||||
nla_total_size(sizeof(u32)));
|
||||
if (!skb)
|
||||
return -ENOMEM;
|
||||
NLA_PUT_U32(skb, HWSIM_TM_ATTR_PS, hwsim->ps);
|
||||
if (nla_put_u32(skb, HWSIM_TM_ATTR_PS, hwsim->ps))
|
||||
goto nla_put_failure;
|
||||
return cfg80211_testmode_reply(skb);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
|
Loading…
Reference in New Issue
Block a user