Skip to content

Commit

Permalink
cfg80211: reg: clarify 'treatment' handling in reg_process_hint()
Browse files Browse the repository at this point in the history
This function can only deal with treatment values OK and ALREADY_SET
so make the callees not return anything else and warn if they do.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Johannes Berg committed Oct 16, 2015
1 parent fd453d3 commit 480908a
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions net/wireless/reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2026,14 +2026,13 @@ reg_process_hint_driver(struct wiphy *wiphy,
break;
case REG_REQ_IGNORE:
reg_free_request(driver_request);
return treatment;
return REG_REQ_OK;
case REG_REQ_INTERSECT:
/* fall through */
case REG_REQ_ALREADY_SET:
regd = reg_copy_regd(get_cfg80211_regdom());
if (IS_ERR(regd)) {
reg_free_request(driver_request);
return REG_REQ_IGNORE;
return REG_REQ_OK;
}

tmp = get_wiphy_regdom(wiphy);
Expand All @@ -2054,7 +2053,7 @@ reg_process_hint_driver(struct wiphy *wiphy,
nl80211_send_reg_change_event(driver_request);
reg_update_last_request(driver_request);
reg_set_request_processed();
return treatment;
return REG_REQ_ALREADY_SET;
}

if (reg_query_database(driver_request))
Expand Down Expand Up @@ -2128,18 +2127,18 @@ reg_process_hint_country_ie(struct wiphy *wiphy,
case REG_REQ_OK:
break;
case REG_REQ_IGNORE:
/* fall through */
return REG_REQ_OK;
case REG_REQ_ALREADY_SET:
reg_free_request(country_ie_request);
return treatment;
return REG_REQ_ALREADY_SET;
case REG_REQ_INTERSECT:
reg_free_request(country_ie_request);
/*
* This doesn't happen yet, not sure we
* ever want to support it for this case.
*/
WARN_ONCE(1, "Unexpected intersection for country IEs");
return REG_REQ_IGNORE;
return REG_REQ_OK;
}

country_ie_request->intersect = false;
Expand Down Expand Up @@ -2184,6 +2183,9 @@ static void reg_process_hint(struct regulatory_request *reg_request)
goto out_free;
}

WARN(treatment != REG_REQ_OK && treatment != REG_REQ_ALREADY_SET,
"unexpected treatment value %d\n", treatment);

/* This is required so that the orig_* parameters are saved.
* NOTE: treatment must be set for any case that reaches here!
*/
Expand Down

0 comments on commit 480908a

Please sign in to comment.