Commit 778ef1e6cbb049c9bcbf405936ee6f2b6e451892
Exists in
master
and in
4 other branches
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: w35und: fix usb_control_msg() error handling in wb35_probe() Staging: w35und: fix registration with wlan stack Staging: panel: fix oops on panel_cleanup_module Staging: rtl8187se: Fix oops and memory poison caused by builtin ieee80211. Staging: rtl8187se: fix Kconfig dependencies
Showing 5 changed files Side-by-side Diff
drivers/staging/panel/panel.c
... | ... | @@ -2164,19 +2164,20 @@ |
2164 | 2164 | if (scan_timer.function != NULL) |
2165 | 2165 | del_timer(&scan_timer); |
2166 | 2166 | |
2167 | - if (keypad_enabled) | |
2168 | - misc_deregister(&keypad_dev); | |
2167 | + if (pprt != NULL) { | |
2168 | + if (keypad_enabled) | |
2169 | + misc_deregister(&keypad_dev); | |
2169 | 2170 | |
2170 | - if (lcd_enabled) { | |
2171 | - panel_lcd_print("\x0cLCD driver " PANEL_VERSION | |
2172 | - "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-"); | |
2173 | - misc_deregister(&lcd_dev); | |
2174 | - } | |
2171 | + if (lcd_enabled) { | |
2172 | + panel_lcd_print("\x0cLCD driver " PANEL_VERSION | |
2173 | + "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-"); | |
2174 | + misc_deregister(&lcd_dev); | |
2175 | + } | |
2175 | 2176 | |
2176 | - /* TODO: free all input signals */ | |
2177 | - | |
2178 | - parport_release(pprt); | |
2179 | - parport_unregister_device(pprt); | |
2177 | + /* TODO: free all input signals */ | |
2178 | + parport_release(pprt); | |
2179 | + parport_unregister_device(pprt); | |
2180 | + } | |
2180 | 2181 | parport_unregister_driver(&panel_driver); |
2181 | 2182 | } |
2182 | 2183 |
drivers/staging/rtl8187se/Kconfig
drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c
... | ... | @@ -234,20 +234,21 @@ |
234 | 234 | void ieee80211_crypto_deinit(void) |
235 | 235 | { |
236 | 236 | struct list_head *ptr, *n; |
237 | + struct ieee80211_crypto_alg *alg = NULL; | |
237 | 238 | |
238 | 239 | if (hcrypt == NULL) |
239 | 240 | return; |
240 | 241 | |
241 | - for (ptr = hcrypt->algs.next, n = ptr->next; ptr != &hcrypt->algs; | |
242 | - ptr = n, n = ptr->next) { | |
243 | - struct ieee80211_crypto_alg *alg = | |
244 | - (struct ieee80211_crypto_alg *) ptr; | |
245 | - list_del(ptr); | |
246 | - printk(KERN_DEBUG "ieee80211_crypt: unregistered algorithm " | |
247 | - "'%s' (deinit)\n", alg->ops->name); | |
248 | - kfree(alg); | |
242 | + list_for_each_safe(ptr, n, &hcrypt->algs) { | |
243 | + alg = list_entry(ptr, struct ieee80211_crypto_alg, list); | |
244 | + if (alg) { | |
245 | + list_del(ptr); | |
246 | + printk(KERN_DEBUG | |
247 | + "ieee80211_crypt: unregistered algorithm '%s' (deinit)\n", | |
248 | + alg->ops->name); | |
249 | + kfree(alg); | |
250 | + } | |
249 | 251 | } |
250 | - | |
251 | 252 | kfree(hcrypt); |
252 | 253 | } |
253 | 254 |
drivers/staging/rtl8187se/r8180_core.c
... | ... | @@ -6161,10 +6161,10 @@ |
6161 | 6161 | { |
6162 | 6162 | pci_unregister_driver (&rtl8180_pci_driver); |
6163 | 6163 | rtl8180_proc_module_remove(); |
6164 | - ieee80211_crypto_deinit(); | |
6165 | 6164 | ieee80211_crypto_tkip_exit(); |
6166 | 6165 | ieee80211_crypto_ccmp_exit(); |
6167 | 6166 | ieee80211_crypto_wep_exit(); |
6167 | + ieee80211_crypto_deinit(); | |
6168 | 6168 | DMESG("Exiting"); |
6169 | 6169 | } |
6170 | 6170 |
drivers/staging/winbond/wbusb.c
... | ... | @@ -319,16 +319,18 @@ |
319 | 319 | struct usb_device *udev = interface_to_usbdev(intf); |
320 | 320 | struct wbsoft_priv *priv; |
321 | 321 | struct ieee80211_hw *dev; |
322 | - int err; | |
322 | + int nr, err; | |
323 | 323 | |
324 | 324 | usb_get_dev(udev); |
325 | 325 | |
326 | 326 | // 20060630.2 Check the device if it already be opened |
327 | - err = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ), | |
328 | - 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN, | |
329 | - 0x0, 0x400, <mp, 4, HZ*100 ); | |
330 | - if (err) | |
327 | + nr = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ), | |
328 | + 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN, | |
329 | + 0x0, 0x400, <mp, 4, HZ*100 ); | |
330 | + if (nr < 0) { | |
331 | + err = nr; | |
331 | 332 | goto error; |
333 | + } | |
332 | 334 | |
333 | 335 | ltmp = cpu_to_le32(ltmp); |
334 | 336 | if (ltmp) { // Is already initialized? |
335 | 337 | |
... | ... | @@ -337,8 +339,10 @@ |
337 | 339 | } |
338 | 340 | |
339 | 341 | dev = ieee80211_alloc_hw(sizeof(*priv), &wbsoft_ops); |
340 | - if (!dev) | |
342 | + if (!dev) { | |
343 | + err = -ENOMEM; | |
341 | 344 | goto error; |
345 | + } | |
342 | 346 | |
343 | 347 | priv = dev->priv; |
344 | 348 | |
345 | 349 | |
... | ... | @@ -369,9 +373,11 @@ |
369 | 373 | } |
370 | 374 | |
371 | 375 | dev->extra_tx_headroom = 12; /* FIXME */ |
372 | - dev->flags = 0; | |
376 | + dev->flags = IEEE80211_HW_SIGNAL_UNSPEC; | |
377 | + dev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); | |
373 | 378 | |
374 | 379 | dev->channel_change_time = 1000; |
380 | + dev->max_signal = 100; | |
375 | 381 | dev->queues = 1; |
376 | 382 | |
377 | 383 | dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &wbsoft_band_2GHz; |