Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cfg80211: fix regulatory code const

A few pointers and structures in the regulatory code are const,
but because it wasn't done properly a whole bunch of bogus
casts were needed to compile without warning. Mark everything
const properly to avoid that kind of junk code.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by

Johannes Berg and committed by
John W. Linville
a3d2eaf0 734366de

+31 -33
+28 -30
net/wireless/reg.c
··· 68 68 /* Central wireless core regulatory domains, we only need two, 69 69 * the current one and a world regulatory domain in case we have no 70 70 * information to give us an alpha2 */ 71 - static struct ieee80211_regdomain *cfg80211_regdomain; 71 + static const struct ieee80211_regdomain *cfg80211_regdomain; 72 72 73 73 /* We keep a static world regulatory domain in case of the absence of CRDA */ 74 74 static const struct ieee80211_regdomain world_regdom = { ··· 81 81 } 82 82 }; 83 83 84 - static struct ieee80211_regdomain *cfg80211_world_regdom = 85 - (struct ieee80211_regdomain *) &world_regdom; 84 + static const struct ieee80211_regdomain *cfg80211_world_regdom = 85 + &world_regdom; 86 86 87 87 #ifdef CONFIG_WIRELESS_OLD_REGULATORY 88 88 static char *ieee80211_regdom = "US"; ··· 168 168 return &us_regdom; 169 169 } 170 170 171 - static bool is_old_static_regdom(struct ieee80211_regdomain *rd) 171 + static bool is_old_static_regdom(const struct ieee80211_regdomain *rd) 172 172 { 173 173 if (rd == &us_regdom || rd == &jp_regdom || rd == &eu_regdom) 174 174 return true; ··· 201 201 } else if (cfg80211_regdomain && cfg80211_regdomain != &world_regdom) 202 202 kfree(cfg80211_regdomain); 203 203 204 - cfg80211_world_regdom = (struct ieee80211_regdomain *) &world_regdom; 204 + cfg80211_world_regdom = &world_regdom; 205 205 cfg80211_regdomain = NULL; 206 206 } 207 207 208 208 /* Dynamic world regulatory domain requested by the wireless 209 209 * core upon initialization */ 210 - static void update_world_regdomain(struct ieee80211_regdomain *rd) 210 + static void update_world_regdomain(const struct ieee80211_regdomain *rd) 211 211 { 212 212 BUG_ON(list_empty(&regulatory_requests)); 213 213 ··· 218 218 } 219 219 #endif 220 220 221 - bool is_world_regdom(char *alpha2) 221 + bool is_world_regdom(const char *alpha2) 222 222 { 223 223 if (!alpha2) 224 224 return false; ··· 227 227 return false; 228 228 } 229 229 230 - static bool is_alpha2_set(char *alpha2) 230 + static bool is_alpha2_set(const char *alpha2) 231 231 { 232 232 if (!alpha2) 233 233 return false; ··· 244 244 return false; 245 245 } 246 246 247 - static bool is_unknown_alpha2(char *alpha2) 247 + static bool is_unknown_alpha2(const char *alpha2) 248 248 { 249 249 if (!alpha2) 250 250 return false; ··· 255 255 return false; 256 256 } 257 257 258 - static bool is_an_alpha2(char *alpha2) 258 + static bool is_an_alpha2(const char *alpha2) 259 259 { 260 260 if (!alpha2) 261 261 return false; ··· 264 264 return false; 265 265 } 266 266 267 - static bool alpha2_equal(char *alpha2_x, char *alpha2_y) 267 + static bool alpha2_equal(const char *alpha2_x, const char *alpha2_y) 268 268 { 269 269 if (!alpha2_x || !alpha2_y) 270 270 return false; ··· 274 274 return false; 275 275 } 276 276 277 - static bool regdom_changed(char *alpha2) 277 + static bool regdom_changed(const char *alpha2) 278 278 { 279 279 if (!cfg80211_regdomain) 280 280 return true; ··· 405 405 } 406 406 } 407 407 408 - static bool __reg_is_valid_request(char *alpha2, 408 + static bool __reg_is_valid_request(const char *alpha2, 409 409 struct regulatory_request **request) 410 410 { 411 411 struct regulatory_request *req; ··· 421 421 } 422 422 423 423 /* Used by nl80211 before kmalloc'ing our regulatory domain */ 424 - bool reg_is_valid_request(char *alpha2) 424 + bool reg_is_valid_request(const char *alpha2) 425 425 { 426 426 struct regulatory_request *request = NULL; 427 427 return __reg_is_valid_request(alpha2, &request); 428 428 } 429 429 430 430 /* Sanity check on a regulatory rule */ 431 - static bool is_valid_reg_rule(struct ieee80211_reg_rule *rule) 431 + static bool is_valid_reg_rule(const struct ieee80211_reg_rule *rule) 432 432 { 433 - struct ieee80211_freq_range *freq_range = &rule->freq_range; 433 + const struct ieee80211_freq_range *freq_range = &rule->freq_range; 434 434 u32 freq_diff; 435 435 436 436 if (freq_range->start_freq_khz == 0 || freq_range->end_freq_khz == 0) ··· 447 447 return true; 448 448 } 449 449 450 - static bool is_valid_rd(struct ieee80211_regdomain *rd) 450 + static bool is_valid_rd(const struct ieee80211_regdomain *rd) 451 451 { 452 - struct ieee80211_reg_rule *reg_rule = NULL; 452 + const struct ieee80211_reg_rule *reg_rule = NULL; 453 453 unsigned int i; 454 454 455 455 if (!rd->n_reg_rules) ··· 661 661 EXPORT_SYMBOL(regulatory_hint); 662 662 663 663 664 - static void print_rd_rules(struct ieee80211_regdomain *rd) 664 + static void print_rd_rules(const struct ieee80211_regdomain *rd) 665 665 { 666 666 unsigned int i; 667 - struct ieee80211_reg_rule *reg_rule = NULL; 668 - struct ieee80211_freq_range *freq_range = NULL; 669 - struct ieee80211_power_rule *power_rule = NULL; 667 + const struct ieee80211_reg_rule *reg_rule = NULL; 668 + const struct ieee80211_freq_range *freq_range = NULL; 669 + const struct ieee80211_power_rule *power_rule = NULL; 670 670 671 671 printk(KERN_INFO "\t(start_freq - end_freq @ bandwidth), " 672 672 "(max_antenna_gain, max_eirp)\n"); ··· 696 696 } 697 697 } 698 698 699 - static void print_regdomain(struct ieee80211_regdomain *rd) 699 + static void print_regdomain(const struct ieee80211_regdomain *rd) 700 700 { 701 701 702 702 if (is_world_regdom(rd->alpha2)) ··· 715 715 print_rd_rules(rd); 716 716 } 717 717 718 - void print_regdomain_info(struct ieee80211_regdomain *rd) 718 + void print_regdomain_info(const struct ieee80211_regdomain *rd) 719 719 { 720 720 printk(KERN_INFO "cfg80211: Regulatory domain: %c%c\n", 721 721 rd->alpha2[0], rd->alpha2[1]); 722 722 print_rd_rules(rd); 723 723 } 724 724 725 - static int __set_regdom(struct ieee80211_regdomain *rd) 725 + static int __set_regdom(const struct ieee80211_regdomain *rd) 726 726 { 727 727 struct regulatory_request *request = NULL; 728 728 ··· 804 804 * multiple drivers can be ironed out later. Caller must've already 805 805 * kmalloc'd the rd structure. If this calls fails you should kfree() 806 806 * the passed rd. Caller must hold cfg80211_drv_mutex */ 807 - int set_regdom(struct ieee80211_regdomain *rd) 807 + int set_regdom(const struct ieee80211_regdomain *rd) 808 808 { 809 809 struct regulatory_request *this_request = NULL, *prev_request = NULL; 810 810 int r; ··· 857 857 return PTR_ERR(reg_pdev); 858 858 859 859 #ifdef CONFIG_WIRELESS_OLD_REGULATORY 860 - cfg80211_regdomain = 861 - (struct ieee80211_regdomain *) static_regdom(ieee80211_regdom); 860 + cfg80211_regdomain = static_regdom(ieee80211_regdom); 862 861 /* Used during reset_regdomains_static() */ 863 862 cfg80211_world_regdom = cfg80211_regdomain; 864 863 ··· 871 872 err = __regulatory_hint(NULL, REGDOM_SET_BY_CORE, 872 873 ieee80211_regdom, NULL); 873 874 #else 874 - cfg80211_regdomain = 875 - (struct ieee80211_regdomain *) cfg80211_world_regdom; 875 + cfg80211_regdomain = cfg80211_world_regdom; 876 876 877 877 err = __regulatory_hint(NULL, REGDOM_SET_BY_CORE, "00", NULL); 878 878 if (err)
+3 -3
net/wireless/reg.h
··· 2 2 #define __NET_WIRELESS_REG_H 3 3 4 4 extern struct mutex cfg80211_reg_mutex; 5 - bool is_world_regdom(char *alpha2); 6 - bool reg_is_valid_request(char *alpha2); 5 + bool is_world_regdom(const char *alpha2); 6 + bool reg_is_valid_request(const char *alpha2); 7 7 8 8 int regulatory_init(void); 9 9 void regulatory_exit(void); 10 10 11 - int set_regdom(struct ieee80211_regdomain *rd); 11 + int set_regdom(const struct ieee80211_regdomain *rd); 12 12 13 13 #endif /* __NET_WIRELESS_REG_H */