mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
wifi: mac80211: add more ops assertions
Add more might_sleep() checks and check sdata-in-driver for one additional place. type=feature ticket=jira:WIFI-314309 Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
1b67211895
commit
5549b0885d
@ -285,6 +285,8 @@ int drv_assign_vif_chanctx(struct ieee80211_local *local,
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
might_sleep();
|
||||
|
||||
drv_verify_link_exists(sdata, link_conf);
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return -EIO;
|
||||
|
@ -40,6 +40,8 @@ static inline void drv_tx(struct ieee80211_local *local,
|
||||
static inline void drv_sync_rx_queues(struct ieee80211_local *local,
|
||||
struct sta_info *sta)
|
||||
{
|
||||
might_sleep();
|
||||
|
||||
if (local->ops->sync_rx_queues) {
|
||||
trace_drv_sync_rx_queues(local, sta->sdata, &sta->sta);
|
||||
local->ops->sync_rx_queues(&local->hw);
|
||||
@ -569,6 +571,8 @@ static inline void drv_sta_statistics(struct ieee80211_local *local,
|
||||
struct ieee80211_sta *sta,
|
||||
struct station_info *sinfo)
|
||||
{
|
||||
might_sleep();
|
||||
|
||||
sdata = get_bss_sdata(sdata);
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
@ -616,6 +620,8 @@ static inline int drv_get_survey(struct ieee80211_local *local, int idx,
|
||||
{
|
||||
int ret = -EOPNOTSUPP;
|
||||
|
||||
might_sleep();
|
||||
|
||||
trace_drv_get_survey(local, idx, survey);
|
||||
|
||||
if (local->ops->get_survey)
|
||||
@ -797,6 +803,8 @@ static inline void drv_set_rekey_data(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
struct cfg80211_gtk_rekey_data *data)
|
||||
{
|
||||
might_sleep();
|
||||
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
|
||||
@ -987,6 +995,8 @@ static inline void drv_stop_ap(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
might_sleep();
|
||||
|
||||
/* make sure link_conf is protected */
|
||||
drv_verify_link_exists(sdata, link_conf);
|
||||
|
||||
@ -1016,6 +1026,8 @@ drv_set_default_unicast_key(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
int key_idx)
|
||||
{
|
||||
might_sleep();
|
||||
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
|
||||
@ -1046,6 +1058,8 @@ drv_channel_switch_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
|
||||
might_sleep();
|
||||
|
||||
if (local->ops->channel_switch_beacon) {
|
||||
trace_drv_channel_switch_beacon(local, sdata, chandef);
|
||||
local->ops->channel_switch_beacon(&local->hw, &sdata->vif,
|
||||
@ -1060,6 +1074,8 @@ drv_pre_channel_switch(struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
int ret = 0;
|
||||
|
||||
might_sleep();
|
||||
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return -EIO;
|
||||
|
||||
@ -1077,6 +1093,8 @@ drv_post_channel_switch(struct ieee80211_sub_if_data *sdata)
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
int ret = 0;
|
||||
|
||||
might_sleep();
|
||||
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return -EIO;
|
||||
|
||||
@ -1092,6 +1110,8 @@ drv_abort_channel_switch(struct ieee80211_sub_if_data *sdata)
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
|
||||
might_sleep();
|
||||
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
|
||||
@ -1107,6 +1127,8 @@ drv_channel_switch_rx_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
|
||||
might_sleep();
|
||||
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
|
||||
@ -1163,6 +1185,8 @@ static inline int drv_get_txpower(struct ieee80211_local *local,
|
||||
{
|
||||
int ret;
|
||||
|
||||
might_sleep();
|
||||
|
||||
if (!local->ops->get_txpower)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@ -1267,6 +1291,10 @@ drv_get_ftm_responder_stats(struct ieee80211_local *local,
|
||||
{
|
||||
u32 ret = -EOPNOTSUPP;
|
||||
|
||||
might_sleep();
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return -EIO;
|
||||
|
||||
if (local->ops->get_ftm_responder_stats)
|
||||
ret = local->ops->get_ftm_responder_stats(&local->hw,
|
||||
&sdata->vif,
|
||||
@ -1436,6 +1464,8 @@ static inline void drv_sta_set_4addr(struct ieee80211_local *local,
|
||||
struct ieee80211_sta *sta, bool enabled)
|
||||
{
|
||||
sdata = get_bss_sdata(sdata);
|
||||
|
||||
might_sleep();
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
|
||||
@ -1451,6 +1481,8 @@ static inline void drv_sta_set_decap_offload(struct ieee80211_local *local,
|
||||
bool enabled)
|
||||
{
|
||||
sdata = get_bss_sdata(sdata);
|
||||
|
||||
might_sleep();
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return;
|
||||
|
||||
@ -1526,6 +1558,8 @@ static inline int drv_net_setup_tc(struct ieee80211_local *local,
|
||||
{
|
||||
int ret = -EOPNOTSUPP;
|
||||
|
||||
might_sleep();
|
||||
|
||||
sdata = get_bss_sdata(sdata);
|
||||
trace_drv_net_setup_tc(local, sdata, type);
|
||||
if (local->ops->net_setup_tc)
|
||||
|
Loading…
Reference in New Issue
Block a user