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

rtl8192e: rtllib_device: Replace semaphore wx_sem with mutex

The semaphore 'wx_sem' in the rtllib_device is a simple mutex,
so it should be written as one. Semaphores are going away in the future.

Signed-off-by: Binoy Jayan <binoy.jayan@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Binoy Jayan and committed by
Greg Kroah-Hartman
9afa9370 fd181f7d

+46 -47
+2 -2
drivers/staging/rtl8192e/rtl8192e/rtl_core.c
··· 1277 1277 rtllib_stop_scan_syncro(ieee); 1278 1278 1279 1279 if (ieee->state == RTLLIB_LINKED) { 1280 - SEM_DOWN_IEEE_WX(&ieee->wx_sem); 1280 + mutex_lock(&ieee->wx_mutex); 1281 1281 netdev_info(dev, "ieee->state is RTLLIB_LINKED\n"); 1282 1282 rtllib_stop_send_beacons(priv->rtllib); 1283 1283 del_timer_sync(&ieee->associate_timer); 1284 1284 cancel_delayed_work(&ieee->associate_retry_wq); 1285 1285 rtllib_stop_scan(ieee); 1286 1286 netif_carrier_off(dev); 1287 - SEM_UP_IEEE_WX(&ieee->wx_sem); 1287 + mutex_unlock(&ieee->wx_mutex); 1288 1288 } else { 1289 1289 netdev_info(dev, "ieee->state is NOT LINKED\n"); 1290 1290 rtllib_softmac_stop_protocol(priv->rtllib, 0, true);
+2 -3
drivers/staging/rtl8192e/rtllib.h
··· 31 31 #include <linux/timer.h> 32 32 #include <linux/sched.h> 33 33 #include <linux/semaphore.h> 34 + #include <linux/mutex.h> 34 35 35 36 #include <linux/delay.h> 36 37 #include <linux/wireless.h> ··· 1652 1651 short proto_started; 1653 1652 short proto_stoppping; 1654 1653 1655 - struct semaphore wx_sem; 1654 + struct mutex wx_mutex; 1656 1655 struct semaphore scan_sem; 1657 1656 struct semaphore ips_sem; 1658 1657 ··· 2213 2212 void HTUseDefaultSetting(struct rtllib_device *ieee); 2214 2213 #define RT_ASOC_RETRY_LIMIT 5 2215 2214 u8 MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee); 2216 - #define SEM_DOWN_IEEE_WX(psem) down(psem) 2217 - #define SEM_UP_IEEE_WX(psem) up(psem) 2218 2215 2219 2216 #endif /* RTLLIB_H */
+20 -20
drivers/staging/rtl8192e/rtllib_softmac.c
··· 753 753 } 754 754 } 755 755 756 - /* called with wx_sem held */ 756 + /* called with wx_mutex held */ 757 757 void rtllib_start_scan_syncro(struct rtllib_device *ieee, u8 is_mesh) 758 758 { 759 759 if (IS_DOT11D_ENABLE(ieee)) { ··· 1590 1590 rtllib_stop_scan_syncro(ieee); 1591 1591 if (ieee->rtllib_ips_leave != NULL) 1592 1592 ieee->rtllib_ips_leave(ieee->dev); 1593 - down(&ieee->wx_sem); 1593 + mutex_lock(&ieee->wx_mutex); 1594 1594 1595 1595 if (ieee->data_hard_stop) 1596 1596 ieee->data_hard_stop(ieee->dev); ··· 1605 1605 __func__); 1606 1606 if (ieee->rtllib_ips_leave_wq != NULL) 1607 1607 ieee->rtllib_ips_leave_wq(ieee->dev); 1608 - up(&ieee->wx_sem); 1608 + mutex_unlock(&ieee->wx_mutex); 1609 1609 return; 1610 1610 } 1611 1611 ieee->associate_seq = 1; 1612 1612 1613 1613 rtllib_associate_step1(ieee, ieee->current_network.bssid); 1614 1614 1615 - up(&ieee->wx_sem); 1615 + mutex_unlock(&ieee->wx_mutex); 1616 1616 } 1617 1617 1618 1618 inline void rtllib_softmac_new_net(struct rtllib_device *ieee, ··· 2582 2582 struct rtllib_device, start_ibss_wq); 2583 2583 /* iwconfig mode ad-hoc will schedule this and return 2584 2584 * on the other hand this will block further iwconfig SET 2585 - * operations because of the wx_sem hold. 2585 + * operations because of the wx_mutex hold. 2586 2586 * Anyway some most set operations set a flag to speed-up 2587 2587 * (abort) this wq (when syncro scanning) before sleeping 2588 - * on the semaphore 2588 + * on the mutex 2589 2589 */ 2590 2590 if (!ieee->proto_started) { 2591 2591 netdev_info(ieee->dev, "==========oh driver down return\n"); 2592 2592 return; 2593 2593 } 2594 - down(&ieee->wx_sem); 2594 + mutex_lock(&ieee->wx_mutex); 2595 2595 2596 2596 if (ieee->current_network.ssid_len == 0) { 2597 2597 strcpy(ieee->current_network.ssid, RTLLIB_DEFAULT_TX_ESSID); ··· 2703 2703 2704 2704 netif_carrier_on(ieee->dev); 2705 2705 2706 - up(&ieee->wx_sem); 2706 + mutex_unlock(&ieee->wx_mutex); 2707 2707 } 2708 2708 2709 2709 inline void rtllib_start_ibss(struct rtllib_device *ieee) ··· 2711 2711 schedule_delayed_work(&ieee->start_ibss_wq, msecs_to_jiffies(150)); 2712 2712 } 2713 2713 2714 - /* this is called only in user context, with wx_sem held */ 2714 + /* this is called only in user context, with wx_mutex held */ 2715 2715 static void rtllib_start_bss(struct rtllib_device *ieee) 2716 2716 { 2717 2717 unsigned long flags; ··· 2773 2773 struct rtllib_device, associate_retry_wq); 2774 2774 unsigned long flags; 2775 2775 2776 - down(&ieee->wx_sem); 2776 + mutex_lock(&ieee->wx_mutex); 2777 2777 if (!ieee->proto_started) 2778 2778 goto exit; 2779 2779 ··· 2806 2806 2807 2807 ieee->beinretry = false; 2808 2808 exit: 2809 - up(&ieee->wx_sem); 2809 + mutex_unlock(&ieee->wx_mutex); 2810 2810 } 2811 2811 2812 2812 static struct sk_buff *rtllib_get_beacon_(struct rtllib_device *ieee) ··· 2853 2853 u8 shutdown) 2854 2854 { 2855 2855 rtllib_stop_scan_syncro(ieee); 2856 - down(&ieee->wx_sem); 2856 + mutex_lock(&ieee->wx_mutex); 2857 2857 rtllib_stop_protocol(ieee, shutdown); 2858 - up(&ieee->wx_sem); 2858 + mutex_unlock(&ieee->wx_mutex); 2859 2859 } 2860 2860 EXPORT_SYMBOL(rtllib_softmac_stop_protocol); 2861 2861 ··· 2902 2902 2903 2903 void rtllib_softmac_start_protocol(struct rtllib_device *ieee, u8 mesh_flag) 2904 2904 { 2905 - down(&ieee->wx_sem); 2905 + mutex_lock(&ieee->wx_mutex); 2906 2906 rtllib_start_protocol(ieee); 2907 - up(&ieee->wx_sem); 2907 + mutex_unlock(&ieee->wx_mutex); 2908 2908 } 2909 2909 EXPORT_SYMBOL(rtllib_softmac_start_protocol); 2910 2910 ··· 3034 3034 INIT_WORK_RSL(&ieee->wx_sync_scan_wq, (void *)rtllib_wx_sync_scan_wq, 3035 3035 ieee); 3036 3036 3037 - sema_init(&ieee->wx_sem, 1); 3037 + mutex_init(&ieee->wx_mutex); 3038 3038 sema_init(&ieee->scan_sem, 1); 3039 3039 sema_init(&ieee->ips_sem, 1); 3040 3040 ··· 3049 3049 3050 3050 void rtllib_softmac_free(struct rtllib_device *ieee) 3051 3051 { 3052 - down(&ieee->wx_sem); 3052 + mutex_lock(&ieee->wx_mutex); 3053 3053 kfree(ieee->pDot11dInfo); 3054 3054 ieee->pDot11dInfo = NULL; 3055 3055 del_timer_sync(&ieee->associate_timer); ··· 3064 3064 cancel_work_sync(&ieee->associate_complete_wq); 3065 3065 cancel_work_sync(&ieee->ips_leave_wq); 3066 3066 cancel_work_sync(&ieee->wx_sync_scan_wq); 3067 - up(&ieee->wx_sem); 3067 + mutex_unlock(&ieee->wx_mutex); 3068 3068 tasklet_kill(&ieee->ps_task); 3069 3069 } 3070 3070 ··· 3499 3499 struct ieee_param *param; 3500 3500 int ret = 0; 3501 3501 3502 - down(&ieee->wx_sem); 3502 + mutex_lock(&ieee->wx_mutex); 3503 3503 3504 3504 if (p->length < sizeof(struct ieee_param) || !p->pointer) { 3505 3505 ret = -EINVAL; ··· 3543 3543 3544 3544 kfree(param); 3545 3545 out: 3546 - up(&ieee->wx_sem); 3546 + mutex_unlock(&ieee->wx_mutex); 3547 3547 3548 3548 return ret; 3549 3549 }
+17 -17
drivers/staging/rtl8192e/rtllib_softmac_wx.c
··· 35 35 int ret; 36 36 struct iw_freq *fwrq = &wrqu->freq; 37 37 38 - down(&ieee->wx_sem); 38 + mutex_lock(&ieee->wx_mutex); 39 39 40 40 if (ieee->iw_mode == IW_MODE_INFRA) { 41 41 ret = 0; ··· 81 81 82 82 ret = 0; 83 83 out: 84 - up(&ieee->wx_sem); 84 + mutex_unlock(&ieee->wx_mutex); 85 85 return ret; 86 86 } 87 87 EXPORT_SYMBOL(rtllib_wx_set_freq); ··· 146 146 147 147 rtllib_stop_scan_syncro(ieee); 148 148 149 - down(&ieee->wx_sem); 149 + mutex_lock(&ieee->wx_mutex); 150 150 /* use ifconfig hw ether */ 151 151 if (ieee->iw_mode == IW_MODE_MASTER) { 152 152 ret = -1; ··· 185 185 if (ifup) 186 186 rtllib_start_protocol(ieee); 187 187 out: 188 - up(&ieee->wx_sem); 188 + mutex_unlock(&ieee->wx_mutex); 189 189 return ret; 190 190 } 191 191 EXPORT_SYMBOL(rtllib_wx_set_wap); ··· 287 287 int set_mode_status = 0; 288 288 289 289 rtllib_stop_scan_syncro(ieee); 290 - down(&ieee->wx_sem); 290 + mutex_lock(&ieee->wx_mutex); 291 291 switch (wrqu->mode) { 292 292 case IW_MODE_MONITOR: 293 293 case IW_MODE_ADHOC: ··· 322 322 } 323 323 324 324 out: 325 - up(&ieee->wx_sem); 325 + mutex_unlock(&ieee->wx_mutex); 326 326 return set_mode_status; 327 327 } 328 328 EXPORT_SYMBOL(rtllib_wx_set_mode); ··· 412 412 rtllib_wake_all_queues(ieee); 413 413 414 414 out: 415 - up(&ieee->wx_sem); 415 + mutex_unlock(&ieee->wx_mutex); 416 416 417 417 } 418 418 ··· 421 421 { 422 422 int ret = 0; 423 423 424 - down(&ieee->wx_sem); 424 + mutex_lock(&ieee->wx_mutex); 425 425 426 426 if (ieee->iw_mode == IW_MODE_MONITOR || !(ieee->proto_started)) { 427 427 ret = -1; ··· 435 435 } 436 436 437 437 out: 438 - up(&ieee->wx_sem); 438 + mutex_unlock(&ieee->wx_mutex); 439 439 return ret; 440 440 } 441 441 EXPORT_SYMBOL(rtllib_wx_set_scan); ··· 450 450 unsigned long flags; 451 451 452 452 rtllib_stop_scan_syncro(ieee); 453 - down(&ieee->wx_sem); 453 + mutex_lock(&ieee->wx_mutex); 454 454 455 455 proto_started = ieee->proto_started; 456 456 ··· 492 492 if (proto_started) 493 493 rtllib_start_protocol(ieee); 494 494 out: 495 - up(&ieee->wx_sem); 495 + mutex_unlock(&ieee->wx_mutex); 496 496 return ret; 497 497 } 498 498 EXPORT_SYMBOL(rtllib_wx_set_essid); ··· 514 514 int enable = (parms[0] > 0); 515 515 short prev = ieee->raw_tx; 516 516 517 - down(&ieee->wx_sem); 517 + mutex_lock(&ieee->wx_mutex); 518 518 519 519 if (enable) 520 520 ieee->raw_tx = 1; ··· 536 536 netif_carrier_off(ieee->dev); 537 537 } 538 538 539 - up(&ieee->wx_sem); 539 + mutex_unlock(&ieee->wx_mutex); 540 540 541 541 return 0; 542 542 } ··· 575 575 return -1; 576 576 } 577 577 578 - down(&ieee->wx_sem); 578 + mutex_lock(&ieee->wx_mutex); 579 579 580 580 if (wrqu->power.disabled) { 581 581 RT_TRACE(COMP_DBG, "===>%s(): power disable\n", __func__); ··· 611 611 612 612 } 613 613 exit: 614 - up(&ieee->wx_sem); 614 + mutex_unlock(&ieee->wx_mutex); 615 615 return ret; 616 616 617 617 } ··· 622 622 struct iw_request_info *info, 623 623 union iwreq_data *wrqu, char *extra) 624 624 { 625 - down(&ieee->wx_sem); 625 + mutex_lock(&ieee->wx_mutex); 626 626 627 627 if (ieee->ps == RTLLIB_PS_DISABLED) { 628 628 wrqu->power.disabled = 1; ··· 648 648 wrqu->power.flags |= IW_POWER_UNICAST_R; 649 649 650 650 exit: 651 - up(&ieee->wx_sem); 651 + mutex_unlock(&ieee->wx_mutex); 652 652 return 0; 653 653 654 654 }
+5 -5
drivers/staging/rtl8192e/rtllib_wx.c
··· 263 263 int err = 0; 264 264 265 265 netdev_dbg(ieee->dev, "Getting scan\n"); 266 - down(&ieee->wx_sem); 266 + mutex_lock(&ieee->wx_mutex); 267 267 spin_lock_irqsave(&ieee->lock, flags); 268 268 269 269 list_for_each_entry(network, &ieee->network_list, list) { ··· 287 287 } 288 288 289 289 spin_unlock_irqrestore(&ieee->lock, flags); 290 - up(&ieee->wx_sem); 290 + mutex_unlock(&ieee->wx_mutex); 291 291 wrqu->data.length = ev - extra; 292 292 wrqu->data.flags = 0; 293 293 ··· 689 689 if (ieee->state != RTLLIB_LINKED) 690 690 return -ENOLINK; 691 691 692 - down(&ieee->wx_sem); 692 + mutex_lock(&ieee->wx_mutex); 693 693 694 694 switch (mlme->cmd) { 695 695 case IW_MLME_DEAUTH: ··· 716 716 ieee->current_network.ssid_len = 0; 717 717 break; 718 718 default: 719 - up(&ieee->wx_sem); 719 + mutex_unlock(&ieee->wx_mutex); 720 720 return -EOPNOTSUPP; 721 721 } 722 722 723 - up(&ieee->wx_sem); 723 + mutex_unlock(&ieee->wx_mutex); 724 724 725 725 return 0; 726 726 }