Commit 0235f641 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman Committed by Jeff Garzik

USB: HSO: minor fixes due to code review

Fix up problems in hso.c driver as pointed out by Andrew.

Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 6c59f569
...@@ -102,8 +102,12 @@ ...@@ -102,8 +102,12 @@
#define MAX_RX_URBS 2 #define MAX_RX_URBS 2
#define get_serial_by_tty(x) \ static inline struct hso_serial *get_serial_by_tty(struct tty_struct *tty)
(x ? (struct hso_serial *)x->driver_data : NULL) {
if (tty)
return tty->driver_data;
return NULL;
}
/*****************************************************************************/ /*****************************************************************************/
/* Debugging functions */ /* Debugging functions */
...@@ -294,24 +298,25 @@ static int hso_get_activity(struct hso_device *hso_dev); ...@@ -294,24 +298,25 @@ static int hso_get_activity(struct hso_device *hso_dev);
/* #define DEBUG */ /* #define DEBUG */
#define dev2net(x) (x->port_data.dev_net) static inline struct hso_net *dev2net(struct hso_device *hso_dev)
#define dev2ser(x) (x->port_data.dev_serial) {
return hso_dev->port_data.dev_net;
}
static inline struct hso_serial *dev2ser(struct hso_device *hso_dev)
{
return hso_dev->port_data.dev_serial;
}
/* Debugging functions */ /* Debugging functions */
#ifdef DEBUG #ifdef DEBUG
static void dbg_dump(int line_count, const char *func_name, unsigned char *buf, static void dbg_dump(int line_count, const char *func_name, unsigned char *buf,
unsigned int len) unsigned int len)
{ {
u8 i = 0; static char name[255];
printk(KERN_DEBUG "[%d:%s]: len %d", line_count, func_name, len);
for (i = 0; i < len; i++) { sprintf(name, "hso[%d:%s]", line_count, func_name);
if (!(i % 16)) print_hex_dump_bytes(name, DUMP_PREFIX_NONE, buf, len);
printk("\n 0x%03x: ", i);
printk("%02x ", (unsigned char)buf[i]);
}
printk("\n");
} }
#define DUMP(buf_, len_) \ #define DUMP(buf_, len_) \
...@@ -528,13 +533,12 @@ static struct hso_serial *get_serial_by_shared_int_and_type( ...@@ -528,13 +533,12 @@ static struct hso_serial *get_serial_by_shared_int_and_type(
static struct hso_serial *get_serial_by_index(unsigned index) static struct hso_serial *get_serial_by_index(unsigned index)
{ {
struct hso_serial *serial; struct hso_serial *serial = NULL;
unsigned long flags; unsigned long flags;
if (!serial_table[index])
return NULL;
spin_lock_irqsave(&serial_table_lock, flags); spin_lock_irqsave(&serial_table_lock, flags);
serial = dev2ser(serial_table[index]); if (serial_table[index])
serial = dev2ser(serial_table[index]);
spin_unlock_irqrestore(&serial_table_lock, flags); spin_unlock_irqrestore(&serial_table_lock, flags);
return serial; return serial;
...@@ -561,6 +565,7 @@ static int get_free_serial_index(void) ...@@ -561,6 +565,7 @@ static int get_free_serial_index(void)
static void set_serial_by_index(unsigned index, struct hso_serial *serial) static void set_serial_by_index(unsigned index, struct hso_serial *serial)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&serial_table_lock, flags); spin_lock_irqsave(&serial_table_lock, flags);
if (serial) if (serial)
serial_table[index] = serial->parent; serial_table[index] = serial->parent;
...@@ -569,7 +574,7 @@ static void set_serial_by_index(unsigned index, struct hso_serial *serial) ...@@ -569,7 +574,7 @@ static void set_serial_by_index(unsigned index, struct hso_serial *serial)
spin_unlock_irqrestore(&serial_table_lock, flags); spin_unlock_irqrestore(&serial_table_lock, flags);
} }
/* log a meaningfull explanation of an USB status */ /* log a meaningful explanation of an USB status */
static void log_usb_status(int status, const char *function) static void log_usb_status(int status, const char *function)
{ {
char *explanation; char *explanation;
...@@ -2654,7 +2659,7 @@ static void hso_free_interface(struct usb_interface *interface) ...@@ -2654,7 +2659,7 @@ static void hso_free_interface(struct usb_interface *interface)
hso_stop_net_device(network_table[i]); hso_stop_net_device(network_table[i]);
cancel_work_sync(&network_table[i]->async_put_intf); cancel_work_sync(&network_table[i]->async_put_intf);
cancel_work_sync(&network_table[i]->async_get_intf); cancel_work_sync(&network_table[i]->async_get_intf);
if(rfk) if (rfk)
rfkill_unregister(rfk); rfkill_unregister(rfk);
hso_free_net_device(network_table[i]); hso_free_net_device(network_table[i]);
} }
......
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