Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6:
Staging: rspiusb: Fix buffer overflow
staging: add dependencies on PCI for drivers that require it
Staging: rtl8192su: fix build error
Staging: rt2870: Revert d44ca7 Removal of kernel_thread() API
Staging: rt2870: Add USB ID for Linksys, Planex Communications, Belkin

+80 -58
+1
drivers/staging/b3dfg/Kconfig
··· 1 1 config B3DFG 2 2 tristate "Brontes 3d Frame Framegrabber" 3 + depends on PCI 3 4 default n 4 5 ---help--- 5 6 This driver provides support for the Brontes 3d Framegrabber
+1
drivers/staging/heci/Kconfig
··· 1 1 config HECI 2 2 tristate "Intel Management Engine Interface (MEI) Support" 3 + depends on PCI 3 4 ---help--- 4 5 The Intel Management Engine Interface (Intel MEI) driver allows 5 6 applications to access the Active Management Technology
+2
drivers/staging/rspiusb/rspiusb.c
··· 716 716 pdx->PixelUrb[frameInfo][i]->transfer_flags = 717 717 URB_NO_TRANSFER_DMA_MAP | URB_NO_INTERRUPT; 718 718 } 719 + if (i == 0) 720 + return -EINVAL; 719 721 /* only interrupt when last URB completes */ 720 722 pdx->PixelUrb[frameInfo][--i]->transfer_flags &= ~URB_NO_INTERRUPT; 721 723 pdx->pendedPixelUrbs[frameInfo] =
+4 -9
drivers/staging/rt2860/rt_linux.h
··· 43 43 #include "rtmp_type.h" 44 44 #include <linux/module.h> 45 45 #include <linux/kernel.h> 46 - #if !defined(RT2860) && !defined(RT30xx) 47 - #include <linux/kthread.h> 48 - #endif 49 46 50 47 #include <linux/spinlock.h> 51 48 #include <linux/init.h> ··· 163 166 164 167 #ifndef RT30xx 165 168 typedef struct pid * THREAD_PID; 166 - #ifdef RT2860 167 169 #define THREAD_PID_INIT_VALUE NULL 168 - #endif 169 170 #define GET_PID(_v) find_get_pid(_v) 170 171 #define GET_PID_NUMBER(_v) pid_nr(_v) 171 172 #define CHECK_PID_LEGALITY(_pid) if (pid_nr(_pid) >= 0) ··· 183 188 dma_addr_t pAd_pa; 184 189 #endif 185 190 #ifdef RT2870 186 - struct usb_device *pUsb_Dev; 191 + struct usb_device *pUsb_Dev; 187 192 188 193 #ifndef RT30xx 189 - struct task_struct *MLMEThr_task; 190 - struct task_struct *RTUSBCmdThr_task; 191 - struct task_struct *TimerQThr_task; 194 + THREAD_PID MLMEThr_pid; 195 + THREAD_PID RTUSBCmdThr_pid; 196 + THREAD_PID TimerQThr_pid; 192 197 #endif 193 198 #ifdef RT30xx 194 199 struct pid *MLMEThr_pid;
+45 -22
drivers/staging/rt2870/2870_main_dev.c
··· 235 235 DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__)); 236 236 237 237 #ifndef RT30xx 238 - pObj->MLMEThr_task = NULL; 238 + pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE; 239 239 #endif 240 240 #ifdef RT30xx 241 241 pObj->MLMEThr_pid = NULL; ··· 348 348 DBGPRINT(RT_DEBUG_TRACE,( "<---RTUSBCmdThread\n")); 349 349 350 350 #ifndef RT30xx 351 - pObj->RTUSBCmdThr_task = NULL; 351 + pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE; 352 352 #endif 353 353 #ifdef RT30xx 354 354 pObj->RTUSBCmdThr_pid = NULL; ··· 447 447 DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__func__)); 448 448 449 449 #ifndef RT30xx 450 - pObj->TimerQThr_task = NULL; 450 + pObj->TimerQThr_pid = THREAD_PID_INIT_VALUE; 451 451 #endif 452 452 #ifdef RT30xx 453 453 pObj->TimerQThr_pid = NULL; ··· 883 883 884 884 // Terminate Threads 885 885 #ifndef RT30xx 886 - BUG_ON(pObj->TimerQThr_task == NULL); 887 - CHECK_PID_LEGALITY(task_pid(pObj->TimerQThr_task)) 886 + CHECK_PID_LEGALITY(pObj->TimerQThr_pid) 888 887 { 889 888 POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie; 890 889 891 - printk(KERN_DEBUG "Terminate the TimerQThr pid=%d!\n", 892 - pid_nr(task_pid(pObj->TimerQThr_task))); 890 + printk("Terminate the TimerQThr_pid=%d!\n", GET_PID_NUMBER(pObj->TimerQThr_pid)); 893 891 mb(); 894 892 pAd->TimerFunc_kill = 1; 895 893 mb(); 896 - kthread_stop(pObj->TimerQThr_task); 897 - pObj->TimerQThr_task = NULL; 894 + ret = KILL_THREAD_PID(pObj->TimerQThr_pid, SIGTERM, 1); 895 + if (ret) 896 + { 897 + printk(KERN_WARNING "%s: unable to stop TimerQThread, pid=%d, ret=%d!\n", 898 + pAd->net_dev->name, GET_PID_NUMBER(pObj->TimerQThr_pid), ret); 899 + } 900 + else 901 + { 902 + wait_for_completion(&pAd->TimerQComplete); 903 + pObj->TimerQThr_pid = THREAD_PID_INIT_VALUE; 904 + } 898 905 } 899 906 900 - BUG_ON(pObj->MLMEThr_task == NULL); 901 - CHECK_PID_LEGALITY(task_pid(pObj->MLMEThr_task)) 907 + CHECK_PID_LEGALITY(pObj->MLMEThr_pid) 902 908 { 903 - printk(KERN_DEBUG "Terminate the MLMEThr pid=%d!\n", 904 - pid_nr(task_pid(pObj->MLMEThr_task))); 909 + printk("Terminate the MLMEThr_pid=%d!\n", GET_PID_NUMBER(pObj->MLMEThr_pid)); 905 910 mb(); 906 911 pAd->mlme_kill = 1; 907 912 //RT28XX_MLME_HANDLER(pAd); 908 913 mb(); 909 - kthread_stop(pObj->MLMEThr_task); 910 - pObj->MLMEThr_task = NULL; 914 + ret = KILL_THREAD_PID(pObj->MLMEThr_pid, SIGTERM, 1); 915 + if (ret) 916 + { 917 + printk (KERN_WARNING "%s: unable to Mlme thread, pid=%d, ret=%d!\n", 918 + pAd->net_dev->name, GET_PID_NUMBER(pObj->MLMEThr_pid), ret); 919 + } 920 + else 921 + { 922 + //wait_for_completion (&pAd->notify); 923 + wait_for_completion (&pAd->mlmeComplete); 924 + pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE; 925 + } 911 926 } 912 927 913 - BUG_ON(pObj->RTUSBCmdThr_task == NULL); 914 - CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task)) 928 + CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid) 915 929 { 916 - printk(KERN_DEBUG "Terminate the RTUSBCmdThr pid=%d!\n", 917 - pid_nr(task_pid(pObj->RTUSBCmdThr_task))); 930 + printk("Terminate the RTUSBCmdThr_pid=%d!\n", GET_PID_NUMBER(pObj->RTUSBCmdThr_pid)); 918 931 mb(); 919 932 NdisAcquireSpinLock(&pAd->CmdQLock); 920 933 pAd->CmdQ.CmdQState = RT2870_THREAD_STOPED; 921 934 NdisReleaseSpinLock(&pAd->CmdQLock); 922 935 mb(); 923 936 //RTUSBCMDUp(pAd); 924 - kthread_stop(pObj->RTUSBCmdThr_task); 925 - pObj->RTUSBCmdThr_task = NULL; 937 + ret = KILL_THREAD_PID(pObj->RTUSBCmdThr_pid, SIGTERM, 1); 938 + if (ret) 939 + { 940 + printk(KERN_WARNING "%s: unable to RTUSBCmd thread, pid=%d, ret=%d!\n", 941 + pAd->net_dev->name, GET_PID_NUMBER(pObj->RTUSBCmdThr_pid), ret); 942 + } 943 + else 944 + { 945 + //wait_for_completion (&pAd->notify); 946 + wait_for_completion (&pAd->CmdQComplete); 947 + pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE; 948 + } 926 949 } 927 950 #endif 928 951 #ifdef RT30xx ··· 1068 1045 dev_p->descriptor.idProduct == rtusb_usb_id[i].idProduct) 1069 1046 { 1070 1047 #ifndef RT30xx 1071 - printk(KERN_DEBUG "rt2870: idVendor = 0x%x, idProduct = 0x%x\n", 1048 + printk("rt2870: idVendor = 0x%x, idProduct = 0x%x\n", 1072 1049 #endif 1073 1050 #ifdef RT30xx 1074 1051 printk("rt2870: idVendor = 0x%x, idProduct = 0x%x\n",
+16 -17
drivers/staging/rt2870/common/2870_rtmp_init.c
··· 700 700 usb_dev = pObj->pUsb_Dev; 701 701 702 702 #ifndef RT30xx 703 - pObj->MLMEThr_task = NULL; 704 - pObj->RTUSBCmdThr_task = NULL; 703 + pObj->MLMEThr_pid = THREAD_PID_INIT_VALUE; 704 + pObj->RTUSBCmdThr_pid = THREAD_PID_INIT_VALUE; 705 705 #endif 706 706 #ifdef RT30xx 707 707 pObj->MLMEThr_pid = NULL; ··· 743 743 PRTMP_ADAPTER pAd = net_dev->ml_priv; 744 744 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; 745 745 #ifndef RT30xx 746 - struct task_struct *tsk; 746 + pid_t pid_number = -1; 747 747 #endif 748 748 #ifdef RT30xx 749 749 pid_t pid_number; ··· 762 762 763 763 // Creat MLME Thread 764 764 #ifndef RT30xx 765 - pObj->MLMEThr_task = NULL; 766 - tsk = kthread_run(MlmeThread, pAd, "%s", pAd->net_dev->name); 767 - 768 - if (IS_ERR(tsk)) { 765 + pObj->MLMEThr_pid= THREAD_PID_INIT_VALUE; 766 + pid_number = kernel_thread(MlmeThread, pAd, CLONE_VM); 767 + if (pid_number < 0) 768 + { 769 769 #endif 770 770 #ifdef RT30xx 771 771 pObj->MLMEThr_pid = NULL; ··· 778 778 } 779 779 780 780 #ifndef RT30xx 781 - pObj->MLMEThr_task = tsk; 781 + pObj->MLMEThr_pid = GET_PID(pid_number); 782 782 #endif 783 783 #ifdef RT30xx 784 784 pObj->MLMEThr_pid = find_get_pid(pid_number); ··· 788 788 789 789 // Creat Command Thread 790 790 #ifndef RT30xx 791 - pObj->RTUSBCmdThr_task = NULL; 792 - tsk = kthread_run(RTUSBCmdThread, pAd, "%s", pAd->net_dev->name); 793 - 794 - if (IS_ERR(tsk) < 0) 791 + pObj->RTUSBCmdThr_pid= THREAD_PID_INIT_VALUE; 792 + pid_number = kernel_thread(RTUSBCmdThread, pAd, CLONE_VM); 793 + if (pid_number < 0) 795 794 #endif 796 795 #ifdef RT30xx 797 796 pObj->RTUSBCmdThr_pid = NULL; ··· 803 804 } 804 805 805 806 #ifndef RT30xx 806 - pObj->RTUSBCmdThr_task = tsk; 807 + pObj->RTUSBCmdThr_pid = GET_PID(pid_number); 807 808 #endif 808 809 #ifdef RT30xx 809 810 pObj->RTUSBCmdThr_pid = find_get_pid(pid_number); ··· 811 812 wait_for_completion(&(pAd->CmdQComplete)); 812 813 813 814 #ifndef RT30xx 814 - pObj->TimerQThr_task = NULL; 815 - tsk = kthread_run(TimerQThread, pAd, "%s", pAd->net_dev->name); 816 - if (IS_ERR(tsk) < 0) 815 + pObj->TimerQThr_pid= THREAD_PID_INIT_VALUE; 816 + pid_number = kernel_thread(TimerQThread, pAd, CLONE_VM); 817 + if (pid_number < 0) 817 818 #endif 818 819 #ifdef RT30xx 819 820 pObj->TimerQThr_pid = NULL; ··· 825 826 return NDIS_STATUS_FAILURE; 826 827 } 827 828 #ifndef RT30xx 828 - pObj->TimerQThr_task = tsk; 829 + pObj->TimerQThr_pid = GET_PID(pid_number); 829 830 #endif 830 831 #ifdef RT30xx 831 832 pObj->TimerQThr_pid = find_get_pid(pid_number);
+1 -2
drivers/staging/rt2870/common/rtusb_io.c
··· 984 984 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; 985 985 986 986 #ifndef RT30xx 987 - BUG_ON(pObj->RTUSBCmdThr_task == NULL); 988 - CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task)) 987 + CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid) 989 988 #endif 990 989 #ifdef RT30xx 991 990 if (pObj->RTUSBCmdThr_pid < 0)
+5 -4
drivers/staging/rt2870/rt2870.h
··· 79 79 { \ 80 80 {USB_DEVICE(0x148F,0x2770)}, /* Ralink */ \ 81 81 {USB_DEVICE(0x1737,0x0071)}, /* Linksys WUSB600N */ \ 82 + {USB_DEVICE(0x1737,0x0070)}, /* Linksys */ \ 82 83 {USB_DEVICE(0x148F,0x2870)}, /* Ralink */ \ 83 84 {USB_DEVICE(0x148F,0x3070)}, /* Ralink */ \ 84 85 {USB_DEVICE(0x0B05,0x1731)}, /* Asus */ \ ··· 94 93 {USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \ 95 94 {USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \ 96 95 {USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \ 96 + {USB_DEVICE(0x2019,0xED14)}, /* Planex Communications, Inc. */ \ 97 97 {USB_DEVICE(0x2019,0xAB25)}, /* Planex Communications, Inc. RT3070 */ \ 98 98 {USB_DEVICE(0x07D1,0x3C09)}, /* D-Link */ \ 99 99 {USB_DEVICE(0x07D1,0x3C11)}, /* D-Link */ \ 100 100 {USB_DEVICE(0x14B2,0x3C07)}, /* AL */ \ 101 101 {USB_DEVICE(0x14B2,0x3C12)}, /* AL */ \ 102 102 {USB_DEVICE(0x050D,0x8053)}, /* Belkin */ \ 103 + {USB_DEVICE(0x050D,0x815C)}, /* Belkin */ \ 103 104 {USB_DEVICE(0x14B2,0x3C23)}, /* Airlink */ \ 104 105 {USB_DEVICE(0x14B2,0x3C27)}, /* Airlink */ \ 105 106 {USB_DEVICE(0x07AA,0x002F)}, /* Corega */ \ ··· 590 587 #define RTUSBMlmeUp(pAd) \ 591 588 { \ 592 589 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; \ 593 - BUG_ON(pObj->MLMEThr_task == NULL); \ 594 - CHECK_PID_LEGALITY(task_pid(pObj->MLMEThr_task)) \ 590 + CHECK_PID_LEGALITY(pObj->MLMEThr_pid) \ 595 591 up(&(pAd->mlme_semaphore)); \ 596 592 } 597 593 598 594 #define RTUSBCMDUp(pAd) \ 599 595 { \ 600 596 POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; \ 601 - BUG_ON(pObj->RTUSBCmdThr_task == NULL); \ 602 - CHECK_PID_LEGALITY(task_pid(pObj->RTUSBCmdThr_task)) \ 597 + CHECK_PID_LEGALITY(pObj->RTUSBCmdThr_pid) \ 603 598 up(&(pAd->RTUSBCmd_semaphore)); \ 604 599 } 605 600 #endif
+1 -1
drivers/staging/rtl8192su/ieee80211.h
··· 2645 2645 struct sk_buff *frag, 2646 2646 int hdr_len); 2647 2647 2648 - extern int ieee80211_xmit(struct sk_buff *skb, 2648 + extern int rtl8192_ieee80211_xmit(struct sk_buff *skb, 2649 2649 struct net_device *dev); 2650 2650 extern void ieee80211_txb_free(struct ieee80211_txb *); 2651 2651
+1 -1
drivers/staging/rtl8192su/ieee80211/ieee80211.h
··· 2645 2645 struct sk_buff *frag, 2646 2646 int hdr_len); 2647 2647 2648 - extern int ieee80211_xmit(struct sk_buff *skb, 2648 + extern int rtl8192_ieee80211_xmit(struct sk_buff *skb, 2649 2649 struct net_device *dev); 2650 2650 extern void ieee80211_txb_free(struct ieee80211_txb *); 2651 2651
+2 -1
drivers/staging/rtl8192su/ieee80211/ieee80211_tx.c
··· 618 618 } 619 619 } 620 620 621 - int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev) 621 + int rtl8192_ieee80211_xmit(struct sk_buff *skb, struct net_device *dev) 622 622 { 623 623 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) 624 624 struct ieee80211_device *ieee = netdev_priv(dev); ··· 943 943 return 1; 944 944 945 945 } 946 + EXPORT_SYMBOL(rtl8192_ieee80211_xmit); 946 947 947 948 EXPORT_SYMBOL(ieee80211_txb_free);
+1 -1
drivers/staging/rtl8192su/r8192U_core.c
··· 12142 12142 .ndo_set_mac_address = r8192_set_mac_adr, 12143 12143 .ndo_validate_addr = eth_validate_addr, 12144 12144 .ndo_change_mtu = eth_change_mtu, 12145 - .ndo_start_xmit = ieee80211_xmit, 12145 + .ndo_start_xmit = rtl8192_ieee80211_xmit, 12146 12146 }; 12147 12147 12148 12148 #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)