cfg80211: reg: clarify 'treatment' handling in reg_process_hint()
authorJohannes Berg <johannes.berg@intel.com>
Thu, 15 Oct 2015 10:58:58 +0000 (12:58 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 16 Oct 2015 07:15:44 +0000 (09:15 +0200)
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>
net/wireless/reg.c

index 85cad88..a95fc3a 100644 (file)
@@ -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);
@@ -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))
@@ -2128,10 +2127,10 @@ 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);
                /*
@@ -2139,7 +2138,7 @@ reg_process_hint_country_ie(struct wiphy *wiphy,
                 * 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;
@@ -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!
         */