Commit 94c35de9 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6

* 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (27 commits)
  Staging: rt2870: Add USB ID for Buffalo Airstation WLI-UC-GN
  staging: easycap needs smp_lock.h, fixes build error
  Staging: batman-adv: ensure that eth_type_trans gets linear memory
  Staging: batman-adv: Don't remove interface with spinlock held
  staging: brcm80211: updated maintainers contact information
  staging: fix winbond build, needs delay.h
  Staging: line6: fix up my fixup for some sysfs attribute permissions
  Staging: zram: fix up my fixup for some sysfs attribute permissions
  Staging: udlfb: fix up my fixup for some sysfs attribute permissions
  Staging: samsung-laptop: fix up my fixup for some sysfs attribute permissions
  Staging: iio: adis16220: fix up my fixup for some sysfs attribute permissions
  Staging: frontier: fix up my fixup for some sysfs attribute permissions
  Staging: asus_oled: fix up my fixup for some sysfs attribute permissions
  staging: spectra: fix build error
  Staging: intel_sst: fix memory leak
  Staging: rtl8712: signedness bug in init
  staging: rtl8187se: Change panic to warn when RF switch turned off
  staging: comedi: fix memory leak
  Staging: quickstart: free after input_unregister_device()
  Staging: speakup: free after input_unregister_device()
  ...
parents 8733cb29 251d3800
...@@ -620,13 +620,13 @@ static ssize_t class_set_picture(struct device *device, ...@@ -620,13 +620,13 @@ static ssize_t class_set_picture(struct device *device,
#define ASUS_OLED_DEVICE_ATTR(_file) dev_attr_asus_oled_##_file #define ASUS_OLED_DEVICE_ATTR(_file) dev_attr_asus_oled_##_file
static DEVICE_ATTR(asus_oled_enabled, S_IWUGO | S_IRUGO, static DEVICE_ATTR(asus_oled_enabled, S_IWUSR | S_IRUGO,
get_enabled, set_enabled); get_enabled, set_enabled);
static DEVICE_ATTR(asus_oled_picture, S_IWUGO , NULL, set_picture); static DEVICE_ATTR(asus_oled_picture, S_IWUSR , NULL, set_picture);
static DEVICE_ATTR(enabled, S_IWUGO | S_IRUGO, static DEVICE_ATTR(enabled, S_IWUSR | S_IRUGO,
class_get_enabled, class_set_enabled); class_get_enabled, class_set_enabled);
static DEVICE_ATTR(picture, S_IWUGO, NULL, class_set_picture); static DEVICE_ATTR(picture, S_IWUSR, NULL, class_set_picture);
static int asus_oled_probe(struct usb_interface *interface, static int asus_oled_probe(struct usb_interface *interface,
const struct usb_device_id *id) const struct usb_device_id *id)
......
...@@ -463,9 +463,6 @@ static void hardif_remove_interface(struct batman_if *batman_if) ...@@ -463,9 +463,6 @@ static void hardif_remove_interface(struct batman_if *batman_if)
return; return;
batman_if->if_status = IF_TO_BE_REMOVED; batman_if->if_status = IF_TO_BE_REMOVED;
/* caller must take if_list_lock */
list_del_rcu(&batman_if->list);
synchronize_rcu(); synchronize_rcu();
sysfs_del_hardif(&batman_if->hardif_obj); sysfs_del_hardif(&batman_if->hardif_obj);
hardif_put(batman_if); hardif_put(batman_if);
...@@ -474,13 +471,21 @@ static void hardif_remove_interface(struct batman_if *batman_if) ...@@ -474,13 +471,21 @@ static void hardif_remove_interface(struct batman_if *batman_if)
void hardif_remove_interfaces(void) void hardif_remove_interfaces(void)
{ {
struct batman_if *batman_if, *batman_if_tmp; struct batman_if *batman_if, *batman_if_tmp;
struct list_head if_queue;
INIT_LIST_HEAD(&if_queue);
rtnl_lock();
spin_lock(&if_list_lock); spin_lock(&if_list_lock);
list_for_each_entry_safe(batman_if, batman_if_tmp, &if_list, list) { list_for_each_entry_safe(batman_if, batman_if_tmp, &if_list, list) {
hardif_remove_interface(batman_if); list_del_rcu(&batman_if->list);
list_add_tail(&batman_if->list, &if_queue);
} }
spin_unlock(&if_list_lock); spin_unlock(&if_list_lock);
rtnl_lock();
list_for_each_entry_safe(batman_if, batman_if_tmp, &if_queue, list) {
hardif_remove_interface(batman_if);
}
rtnl_unlock(); rtnl_unlock();
} }
...@@ -507,8 +512,10 @@ static int hard_if_event(struct notifier_block *this, ...@@ -507,8 +512,10 @@ static int hard_if_event(struct notifier_block *this,
break; break;
case NETDEV_UNREGISTER: case NETDEV_UNREGISTER:
spin_lock(&if_list_lock); spin_lock(&if_list_lock);
hardif_remove_interface(batman_if); list_del_rcu(&batman_if->list);
spin_unlock(&if_list_lock); spin_unlock(&if_list_lock);
hardif_remove_interface(batman_if);
break; break;
case NETDEV_CHANGEMTU: case NETDEV_CHANGEMTU:
if (batman_if->soft_iface) if (batman_if->soft_iface)
......
...@@ -194,14 +194,15 @@ void interface_rx(struct net_device *soft_iface, ...@@ -194,14 +194,15 @@ void interface_rx(struct net_device *soft_iface,
struct bat_priv *priv = netdev_priv(soft_iface); struct bat_priv *priv = netdev_priv(soft_iface);
/* check if enough space is available for pulling, and pull */ /* check if enough space is available for pulling, and pull */
if (!pskb_may_pull(skb, hdr_size)) { if (!pskb_may_pull(skb, hdr_size))
kfree_skb(skb); goto dropped;
return;
}
skb_pull_rcsum(skb, hdr_size); skb_pull_rcsum(skb, hdr_size);
/* skb_set_mac_header(skb, -sizeof(struct ethhdr));*/ /* skb_set_mac_header(skb, -sizeof(struct ethhdr));*/
/* skb->dev & skb->pkt_type are set here */ /* skb->dev & skb->pkt_type are set here */
if (unlikely(!pskb_may_pull(skb, ETH_HLEN)))
goto dropped;
skb->protocol = eth_type_trans(skb, soft_iface); skb->protocol = eth_type_trans(skb, soft_iface);
/* should not be neccesary anymore as we use skb_pull_rcsum() /* should not be neccesary anymore as we use skb_pull_rcsum()
...@@ -216,6 +217,11 @@ void interface_rx(struct net_device *soft_iface, ...@@ -216,6 +217,11 @@ void interface_rx(struct net_device *soft_iface,
soft_iface->last_rx = jiffies; soft_iface->last_rx = jiffies;
netif_rx(skb); netif_rx(skb);
return;
dropped:
kfree_skb(skb);
return;
} }
#ifdef HAVE_NET_DEVICE_OPS #ifdef HAVE_NET_DEVICE_OPS
......
...@@ -88,7 +88,9 @@ with the driver. ...@@ -88,7 +88,9 @@ with the driver.
Contact Info: Contact Info:
============= =============
Brett Rudley brudley@broadcom.com Brett Rudley brudley@broadcom.com
Henry Ptasinski henryp@broadcom.com Henry Ptasinski henryp@broadcom.com
Dowan Kim dowan@broadcom.com Dowan Kim dowan@broadcom.com
Roland Vossen rvossen@broadcom.com
Arend van Spriel arend@broadcom.com
...@@ -46,4 +46,6 @@ Contact ...@@ -46,4 +46,6 @@ Contact
Brett Rudley <brudley@broadcom.com> Brett Rudley <brudley@broadcom.com>
Henry Ptasinski <henryp@broadcom.com> Henry Ptasinski <henryp@broadcom.com>
Dowan Kim <dowan@broadcom.com> Dowan Kim <dowan@broadcom.com>
Roland Vossen <rvossen@broadcom.com>
Arend van Spriel <arend@broadcom.com>
...@@ -2295,8 +2295,8 @@ static void tidy_up(struct usbduxsub *usbduxsub_tmp) ...@@ -2295,8 +2295,8 @@ static void tidy_up(struct usbduxsub *usbduxsub_tmp)
usbduxsub_tmp->inBuffer = NULL; usbduxsub_tmp->inBuffer = NULL;
kfree(usbduxsub_tmp->insnBuffer); kfree(usbduxsub_tmp->insnBuffer);
usbduxsub_tmp->insnBuffer = NULL; usbduxsub_tmp->insnBuffer = NULL;
kfree(usbduxsub_tmp->inBuffer); kfree(usbduxsub_tmp->outBuffer);
usbduxsub_tmp->inBuffer = NULL; usbduxsub_tmp->outBuffer = NULL;
kfree(usbduxsub_tmp->dac_commands); kfree(usbduxsub_tmp->dac_commands);
usbduxsub_tmp->dac_commands = NULL; usbduxsub_tmp->dac_commands = NULL;
kfree(usbduxsub_tmp->dux_commands); kfree(usbduxsub_tmp->dux_commands);
......
...@@ -75,6 +75,7 @@ ...@@ -75,6 +75,7 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/kref.h> #include <linux/kref.h>
#include <linux/usb.h> #include <linux/usb.h>
......
...@@ -204,7 +204,7 @@ static void usb_tranzport_abort_transfers(struct usb_tranzport *dev) ...@@ -204,7 +204,7 @@ static void usb_tranzport_abort_transfers(struct usb_tranzport *dev)
t->value = temp; \ t->value = temp; \
return count; \ return count; \
} \ } \
static DEVICE_ATTR(value, S_IWUGO | S_IRUGO, show_##value, set_##value); static DEVICE_ATTR(value, S_IWUSR | S_IRUGO, show_##value, set_##value);
show_int(enable); show_int(enable);
show_int(offline); show_int(offline);
......
...@@ -507,7 +507,7 @@ static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, ...@@ -507,7 +507,7 @@ static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL,
adis16220_write_reset, 0); adis16220_write_reset, 0);
#define IIO_DEV_ATTR_CAPTURE(_store) \ #define IIO_DEV_ATTR_CAPTURE(_store) \
IIO_DEVICE_ATTR(capture, S_IWUGO, NULL, _store, 0) IIO_DEVICE_ATTR(capture, S_IWUSR, NULL, _store, 0)
static IIO_DEV_ATTR_CAPTURE(adis16220_write_capture); static IIO_DEV_ATTR_CAPTURE(adis16220_write_capture);
......
...@@ -1269,7 +1269,7 @@ int sst_decode(int str_id, struct snd_sst_dbufs *dbufs) ...@@ -1269,7 +1269,7 @@ int sst_decode(int str_id, struct snd_sst_dbufs *dbufs)
dbufs->output_bytes_produced = total_output; dbufs->output_bytes_produced = total_output;
str_info->status = str_info->prev; str_info->status = str_info->prev;
str_info->prev = STREAM_DECODE; str_info->prev = STREAM_DECODE;
str_info->decode_ibuf = NULL;
kfree(str_info->decode_ibuf); kfree(str_info->decode_ibuf);
str_info->decode_ibuf = NULL;
return retval; return retval;
} }
This diff is collapsed.
...@@ -350,9 +350,9 @@ static ssize_t midi_set_midi_mask_receive(struct device *dev, ...@@ -350,9 +350,9 @@ static ssize_t midi_set_midi_mask_receive(struct device *dev,
return count; return count;
} }
static DEVICE_ATTR(midi_mask_transmit, S_IWUGO | S_IRUGO, static DEVICE_ATTR(midi_mask_transmit, S_IWUSR | S_IRUGO,
midi_get_midi_mask_transmit, midi_set_midi_mask_transmit); midi_get_midi_mask_transmit, midi_set_midi_mask_transmit);
static DEVICE_ATTR(midi_mask_receive, S_IWUGO | S_IRUGO, static DEVICE_ATTR(midi_mask_receive, S_IWUSR | S_IRUGO,
midi_get_midi_mask_receive, midi_set_midi_mask_receive); midi_get_midi_mask_receive, midi_set_midi_mask_receive);
/* MIDI device destructor */ /* MIDI device destructor */
......
...@@ -79,9 +79,9 @@ static ssize_t pcm_set_impulse_period(struct device *dev, ...@@ -79,9 +79,9 @@ static ssize_t pcm_set_impulse_period(struct device *dev,
return count; return count;
} }
static DEVICE_ATTR(impulse_volume, S_IWUGO | S_IRUGO, pcm_get_impulse_volume, static DEVICE_ATTR(impulse_volume, S_IWUSR | S_IRUGO, pcm_get_impulse_volume,
pcm_set_impulse_volume); pcm_set_impulse_volume);
static DEVICE_ATTR(impulse_period, S_IWUGO | S_IRUGO, pcm_get_impulse_period, static DEVICE_ATTR(impulse_period, S_IWUSR | S_IRUGO, pcm_get_impulse_period,
pcm_set_impulse_period); pcm_set_impulse_period);
#endif #endif
......
...@@ -1051,48 +1051,48 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1); ...@@ -1051,48 +1051,48 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
#undef GET_SYSTEM_PARAM #undef GET_SYSTEM_PARAM
/* POD special files: */ /* POD special files: */
static DEVICE_ATTR(channel, S_IWUGO | S_IRUGO, pod_get_channel, static DEVICE_ATTR(channel, S_IWUSR | S_IRUGO, pod_get_channel,
pod_set_channel); pod_set_channel);
static DEVICE_ATTR(clip, S_IRUGO, pod_wait_for_clip, line6_nop_write); static DEVICE_ATTR(clip, S_IRUGO, pod_wait_for_clip, line6_nop_write);
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write); static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write); static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write);
static DEVICE_ATTR(dump, S_IWUGO | S_IRUGO, pod_get_dump, pod_set_dump); static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, pod_get_dump, pod_set_dump);
static DEVICE_ATTR(dump_buf, S_IWUGO | S_IRUGO, pod_get_dump_buf, static DEVICE_ATTR(dump_buf, S_IWUSR | S_IRUGO, pod_get_dump_buf,
pod_set_dump_buf); pod_set_dump_buf);
static DEVICE_ATTR(finish, S_IWUGO, line6_nop_read, pod_set_finish); static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish);
static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version, static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
line6_nop_write); line6_nop_write);
static DEVICE_ATTR(midi_postprocess, S_IWUGO | S_IRUGO, static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
pod_get_midi_postprocess, pod_set_midi_postprocess); pod_get_midi_postprocess, pod_set_midi_postprocess);
static DEVICE_ATTR(monitor_level, S_IWUGO | S_IRUGO, pod_get_monitor_level, static DEVICE_ATTR(monitor_level, S_IWUSR | S_IRUGO, pod_get_monitor_level,
pod_set_monitor_level); pod_set_monitor_level);
static DEVICE_ATTR(name, S_IRUGO, pod_get_name, line6_nop_write); static DEVICE_ATTR(name, S_IRUGO, pod_get_name, line6_nop_write);
static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write); static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write);
static DEVICE_ATTR(retrieve_amp_setup, S_IWUGO, line6_nop_read, static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read,
pod_set_retrieve_amp_setup); pod_set_retrieve_amp_setup);
static DEVICE_ATTR(retrieve_channel, S_IWUGO, line6_nop_read, static DEVICE_ATTR(retrieve_channel, S_IWUSR, line6_nop_read,
pod_set_retrieve_channel); pod_set_retrieve_channel);
static DEVICE_ATTR(retrieve_effects_setup, S_IWUGO, line6_nop_read, static DEVICE_ATTR(retrieve_effects_setup, S_IWUSR, line6_nop_read,
pod_set_retrieve_effects_setup); pod_set_retrieve_effects_setup);
static DEVICE_ATTR(routing, S_IWUGO | S_IRUGO, pod_get_routing, static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
pod_set_routing); pod_set_routing);
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number, static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
line6_nop_write); line6_nop_write);
static DEVICE_ATTR(store_amp_setup, S_IWUGO, line6_nop_read, static DEVICE_ATTR(store_amp_setup, S_IWUSR, line6_nop_read,
pod_set_store_amp_setup); pod_set_store_amp_setup);
static DEVICE_ATTR(store_channel, S_IWUGO, line6_nop_read, static DEVICE_ATTR(store_channel, S_IWUSR, line6_nop_read,
pod_set_store_channel); pod_set_store_channel);
static DEVICE_ATTR(store_effects_setup, S_IWUGO, line6_nop_read, static DEVICE_ATTR(store_effects_setup, S_IWUSR, line6_nop_read,
pod_set_store_effects_setup); pod_set_store_effects_setup);
static DEVICE_ATTR(tuner_freq, S_IWUGO | S_IRUGO, pod_get_tuner_freq, static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq,
pod_set_tuner_freq); pod_set_tuner_freq);
static DEVICE_ATTR(tuner_mute, S_IWUGO | S_IRUGO, pod_get_tuner_mute, static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute,
pod_set_tuner_mute); pod_set_tuner_mute);
static DEVICE_ATTR(tuner_note, S_IRUGO, pod_get_tuner_note, line6_nop_write); static DEVICE_ATTR(tuner_note, S_IRUGO, pod_get_tuner_note, line6_nop_write);
static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write); static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write);
#ifdef CONFIG_LINE6_USB_RAW #ifdef CONFIG_LINE6_USB_RAW
static DEVICE_ATTR(raw, S_IWUGO, line6_nop_read, line6_set_raw); static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
#endif #endif
/* control info callback */ /* control info callback */
......
...@@ -154,9 +154,9 @@ static ssize_t toneport_set_led_green(struct device *dev, ...@@ -154,9 +154,9 @@ static ssize_t toneport_set_led_green(struct device *dev,
return count; return count;
} }
static DEVICE_ATTR(led_red, S_IWUGO | S_IRUGO, line6_nop_read, static DEVICE_ATTR(led_red, S_IWUSR | S_IRUGO, line6_nop_read,
toneport_set_led_red); toneport_set_led_red);
static DEVICE_ATTR(led_green, S_IWUGO | S_IRUGO, line6_nop_read, static DEVICE_ATTR(led_green, S_IWUSR | S_IRUGO, line6_nop_read,
toneport_set_led_green); toneport_set_led_green);
static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2) static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2)
......
...@@ -549,21 +549,21 @@ static ssize_t variax_set_raw2(struct device *dev, ...@@ -549,21 +549,21 @@ static ssize_t variax_set_raw2(struct device *dev,
#endif #endif
/* Variax workbench special files: */ /* Variax workbench special files: */
static DEVICE_ATTR(model, S_IWUGO | S_IRUGO, variax_get_model, static DEVICE_ATTR(model, S_IWUSR | S_IRUGO, variax_get_model,
variax_set_model); variax_set_model);
static DEVICE_ATTR(volume, S_IWUGO | S_IRUGO, variax_get_volume, static DEVICE_ATTR(volume, S_IWUSR | S_IRUGO, variax_get_volume,
variax_set_volume); variax_set_volume);
static DEVICE_ATTR(tone, S_IWUGO | S_IRUGO, variax_get_tone, variax_set_tone); static DEVICE_ATTR(tone, S_IWUSR | S_IRUGO, variax_get_tone, variax_set_tone);
static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write); static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write);
static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write); static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write);
static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write); static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write);
static DEVICE_ATTR(active, S_IWUGO | S_IRUGO, variax_get_active, static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active,
variax_set_active); variax_set_active);
static DEVICE_ATTR(guitar, S_IRUGO, variax_get_guitar, line6_nop_write); static DEVICE_ATTR(guitar, S_IRUGO, variax_get_guitar, line6_nop_write);
#ifdef CONFIG_LINE6_USB_RAW #ifdef CONFIG_LINE6_USB_RAW
static DEVICE_ATTR(raw, S_IWUGO, line6_nop_read, line6_set_raw); static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
static DEVICE_ATTR(raw2, S_IWUGO, line6_nop_read, variax_set_raw2); static DEVICE_ATTR(raw2, S_IWUSR, line6_nop_read, variax_set_raw2);
#endif #endif
/* /*
......
...@@ -355,7 +355,6 @@ static int quickstart_acpi_remove(struct acpi_device *device, int type) ...@@ -355,7 +355,6 @@ static int quickstart_acpi_remove(struct acpi_device *device, int type)
static void quickstart_exit(void) static void quickstart_exit(void)
{ {
input_unregister_device(quickstart_input); input_unregister_device(quickstart_input);
input_free_device(quickstart_input);
device_remove_file(&pf_device->dev, &dev_attr_pressed_button); device_remove_file(&pf_device->dev, &dev_attr_pressed_button);
device_remove_file(&pf_device->dev, &dev_attr_buttons); device_remove_file(&pf_device->dev, &dev_attr_buttons);
...@@ -375,6 +374,7 @@ static int __init quickstart_init_input(void) ...@@ -375,6 +374,7 @@ static int __init quickstart_init_input(void)
{ {
struct quickstart_btn **ptr = &quickstart_data.btn_lst; struct quickstart_btn **ptr = &quickstart_data.btn_lst;
int count; int count;
int ret;
quickstart_input = input_allocate_device(); quickstart_input = input_allocate_device();
...@@ -391,7 +391,13 @@ static int __init quickstart_init_input(void) ...@@ -391,7 +391,13 @@ static int __init quickstart_init_input(void)
ptr = &((*ptr)->next); ptr = &((*ptr)->next);
} }
return input_register_device(quickstart_input); ret = input_register_device(quickstart_input);
if (ret) {
input_free_device(quickstart_input);
return ret;
}
return 0;
} }
static int __init quickstart_init(void) static int __init quickstart_init(void)
......
...@@ -182,6 +182,7 @@ struct usb_device_id rtusb_usb_id[] = { ...@@ -182,6 +182,7 @@ struct usb_device_id rtusb_usb_id[] = {
{USB_DEVICE(0x2001, 0x3C09)}, /* D-Link */ {USB_DEVICE(0x2001, 0x3C09)}, /* D-Link */
{USB_DEVICE(0x2001, 0x3C0A)}, /* D-Link 3072 */ {USB_DEVICE(0x2001, 0x3C0A)}, /* D-Link 3072 */
{USB_DEVICE(0x2019, 0xED14)}, /* Planex Communications, Inc. */ {USB_DEVICE(0x2019, 0xED14)}, /* Planex Communications, Inc. */
{USB_DEVICE(0x0411, 0x015D)}, /* Buffalo Airstation WLI-UC-GN */
{} /* Terminating entry */ {} /* Terminating entry */
}; };
......
...@@ -264,8 +264,12 @@ HwHSSIThreeWire( ...@@ -264,8 +264,12 @@ HwHSSIThreeWire(
udelay(10); udelay(10);
} }
if (TryCnt == TC_3W_POLL_MAX_TRY_CNT) if (TryCnt == TC_3W_POLL_MAX_TRY_CNT) {
panic("HwThreeWire(): CmdReg: %#X RE|WE bits are not clear!!\n", u1bTmp); printk(KERN_ERR "rtl8187se: HwThreeWire(): CmdReg:"
" %#X RE|WE bits are not clear!!\n", u1bTmp);
dump_stack();
return 0;
}
/* RTL8187S HSSI Read/Write Function */ /* RTL8187S HSSI Read/Write Function */
u1bTmp = read_nic_byte(dev, RF_SW_CONFIG); u1bTmp = read_nic_byte(dev, RF_SW_CONFIG);
...@@ -298,13 +302,23 @@ HwHSSIThreeWire( ...@@ -298,13 +302,23 @@ HwHSSIThreeWire(
int idx; int idx;
int ByteCnt = nDataBufBitCnt / 8; int ByteCnt = nDataBufBitCnt / 8;
/* printk("%d\n",nDataBufBitCnt); */ /* printk("%d\n",nDataBufBitCnt); */
if ((nDataBufBitCnt % 8) != 0) if ((nDataBufBitCnt % 8) != 0) {
panic("HwThreeWire(): nDataBufBitCnt(%d) should be multiple of 8!!!\n", printk(KERN_ERR "rtl8187se: "
nDataBufBitCnt); "HwThreeWire(): nDataBufBitCnt(%d)"
" should be multiple of 8!!!\n",
nDataBufBitCnt);
dump_stack();
nDataBufBitCnt += 8;
nDataBufBitCnt &= ~7;
}
if (nDataBufBitCnt > 64) if (nDataBufBitCnt > 64) {
panic("HwThreeWire(): nDataBufBitCnt(%d) should <= 64!!!\n", printk(KERN_ERR "rtl8187se: HwThreeWire():"
nDataBufBitCnt); " nDataBufBitCnt(%d) should <= 64!!!\n",
nDataBufBitCnt);
dump_stack();
nDataBufBitCnt = 64;
}
for (idx = 0; idx < ByteCnt; idx++) for (idx = 0; idx < ByteCnt; idx++)
write_nic_byte(dev, (SW_3W_DB0+idx), *(pDataBuf+idx)); write_nic_byte(dev, (SW_3W_DB0+idx), *(pDataBuf+idx));
......
...@@ -37,7 +37,7 @@ u8 r8712_usb_hal_bus_init(struct _adapter *padapter) ...@@ -37,7 +37,7 @@ u8 r8712_usb_hal_bus_init(struct _adapter *padapter)
{ {
u8 val8 = 0; u8 val8 = 0;
u8 ret = _SUCCESS; u8 ret = _SUCCESS;
u8 PollingCnt = 20; int PollingCnt = 20;
struct registry_priv *pregistrypriv = &padapter->registrypriv; struct registry_priv *pregistrypriv = &padapter->registrypriv;
if (pregistrypriv->chip_version == RTL8712_FPGA) { if (pregistrypriv->chip_version == RTL8712_FPGA) {
......
...@@ -356,7 +356,7 @@ static ssize_t set_silent_state(struct device *dev, ...@@ -356,7 +356,7 @@ static ssize_t set_silent_state(struct device *dev,
} }
return count; return count;
} }
static DEVICE_ATTR(silent, S_IWUGO | S_IRUGO, static DEVICE_ATTR(silent, S_IWUSR | S_IRUGO,
get_silent_state, set_silent_state); get_silent_state, set_silent_state);
......
...@@ -62,7 +62,6 @@ void speakup_remove_virtual_keyboard(void) ...@@ -62,7 +62,6 @@ void speakup_remove_virtual_keyboard(void)
{ {
if (virt_keyboard != NULL) { if (virt_keyboard != NULL) {
input_unregister_device(virt_keyboard); input_unregister_device(virt_keyboard);
input_free_device(virt_keyboard);
virt_keyboard = NULL; virt_keyboard = NULL;
} }
} }
......
...@@ -656,7 +656,7 @@ static int SBD_setup_device(struct spectra_nand_dev *dev, int which) ...@@ -656,7 +656,7 @@ static int SBD_setup_device(struct spectra_nand_dev *dev, int which)
/* Here we force report 512 byte hardware sector size to Kernel */ /* Here we force report 512 byte hardware sector size to Kernel */
blk_queue_logical_block_size(dev->queue, 512); blk_queue_logical_block_size(dev->queue, 512);
blk_queue_ordered(dev->queue, QUEUE_ORDERED_DRAIN_FLUSH); blk_queue_flush(dev->queue, REQ_FLUSH);
dev->thread = kthread_run(spectra_trans_thread, dev, "nand_thd"); dev->thread = kthread_run(spectra_trans_thread, dev, "nand_thd");
if (IS_ERR(dev->thread)) { if (IS_ERR(dev->thread)) {
......
...@@ -1441,7 +1441,7 @@ static struct device_attribute fb_device_attrs[] = { ...@@ -1441,7 +1441,7 @@ static struct device_attribute fb_device_attrs[] = {
__ATTR_RO(metrics_bytes_identical), __ATTR_RO(metrics_bytes_identical),
__ATTR_RO(metrics_bytes_sent), __ATTR_RO(metrics_bytes_sent),
__ATTR_RO(metrics_cpu_kcycles_used), __ATTR_RO(metrics_cpu_kcycles_used),
__ATTR(metrics_reset, S_IWUGO, NULL, metrics_reset_store), __ATTR(metrics_reset, S_IWUSR, NULL, metrics_reset_store),
}; };
/* /*
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
#ifndef SYS_DEF_H #ifndef SYS_DEF_H
#define SYS_DEF_H #define SYS_DEF_H
#include <linux/delay.h>
#define WB_LINUX #define WB_LINUX
#define WB_LINUX_WPA_PSK #define WB_LINUX_WPA_PSK
......
...@@ -189,10 +189,10 @@ static ssize_t mem_used_total_show(struct device *dev, ...@@ -189,10 +189,10 @@ static ssize_t mem_used_total_show(struct device *dev,
return sprintf(buf, "%llu\n", val); return sprintf(buf, "%llu\n", val);
} }
static DEVICE_ATTR(disksize, S_IRUGO | S_IWUGO, static DEVICE_ATTR(disksize, S_IRUGO | S_IWUSR,
disksize_show, disksize_store); disksize_show, disksize_store);
static DEVICE_ATTR(initstate, S_IRUGO, initstate_show, NULL); static DEVICE_ATTR(initstate, S_IRUGO, initstate_show, NULL);
static DEVICE_ATTR(reset, S_IWUGO, NULL, reset_store); static DEVICE_ATTR(reset, S_IWUSR, NULL, reset_store);
static DEVICE_ATTR(num_reads, S_IRUGO, num_reads_show, NULL); static DEVICE_ATTR(num_reads, S_IRUGO, num_reads_show, NULL);
static DEVICE_ATTR(num_writes, S_IRUGO, num_writes_show, NULL); static DEVICE_ATTR(num_writes, S_IRUGO, num_writes_show, NULL);
static DEVICE_ATTR(invalid_io, S_IRUGO, invalid_io_show, NULL); static DEVICE_ATTR(invalid_io, S_IRUGO, invalid_io_show, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment