aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/garmin_gps.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-02-01 22:28:57 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2008-02-01 22:28:57 -0500
commitb6cf160c4b788a31f6a4017a469b956ca77febf4 (patch)
treed4d525000e283fe08905385d91dd0170454eae9a /drivers/usb/serial/garmin_gps.c
parented50d6cbc394cd0966469d3e249353c9dd1d38b9 (diff)
parent2c044a4803804708984931bcbd03314732e995d5 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (128 commits) USB: fix codingstyle issues in drivers/usb/core/*.c USB: fix codingstyle issues in drivers/usb/core/message.c USB: fix codingstyle issues in drivers/usb/core/hcd-pci.c USB: fix codingstyle issues in drivers/usb/core/devio.c USB: fix codingstyle issues in drivers/usb/core/devices.c USB: fix codingstyle issues in drivers/usb/core/*.h USB: fix codingstyle issues in include/linux/usb/ USB: fix codingstyle issues in include/linux/usb.h USB: mark USB drivers as being GPL only USB: use a real vendor and product id for root hubs USB: mount options: fix usbfs USB: Fix usb_serial_driver structure for Kobil cardreader driver. usb: ehci should use u16 for isochronous intervals usb: ehci, remove false clear-reset path USB: Use menuconfig objects usb: ohci-sm501 driver usb: dma bounce buffer support USB: last abuses of intfdata in close for usb-serial drivers USB: kl5kusb105 don't flush to logically disconnected devices USB: oti6858: cleanup ...
Diffstat (limited to 'drivers/usb/serial/garmin_gps.c')
-rw-r--r--drivers/usb/serial/garmin_gps.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
index f1c90cfe7251..d74e43d69230 100644
--- a/drivers/usb/serial/garmin_gps.c
+++ b/drivers/usb/serial/garmin_gps.c
@@ -1020,19 +1020,26 @@ static void garmin_close (struct usb_serial_port *port, struct file * filp)
1020 if (!serial) 1020 if (!serial)
1021 return; 1021 return;
1022 1022
1023 garmin_clear(garmin_data_p); 1023 mutex_lock(&port->serial->disc_mutex);
1024 if (!port->serial->disconnected)
1025 garmin_clear(garmin_data_p);
1024 1026
1025 /* shutdown our urbs */ 1027 /* shutdown our urbs */
1026 usb_kill_urb (port->read_urb); 1028 usb_kill_urb (port->read_urb);
1027 usb_kill_urb (port->write_urb); 1029 usb_kill_urb (port->write_urb);
1028 1030
1029 if (noResponseFromAppLayer(garmin_data_p) || 1031 if (!port->serial->disconnected) {
1030 ((garmin_data_p->flags & CLEAR_HALT_REQUIRED) != 0)) { 1032 if (noResponseFromAppLayer(garmin_data_p) ||
1031 process_resetdev_request(port); 1033 ((garmin_data_p->flags & CLEAR_HALT_REQUIRED) != 0)) {
1032 garmin_data_p->state = STATE_RESET; 1034 process_resetdev_request(port);
1035 garmin_data_p->state = STATE_RESET;
1036 } else {
1037 garmin_data_p->state = STATE_DISCONNECTED;
1038 }
1033 } else { 1039 } else {
1034 garmin_data_p->state = STATE_DISCONNECTED; 1040 garmin_data_p->state = STATE_DISCONNECTED;
1035 } 1041 }
1042 mutex_unlock(&port->serial->disc_mutex);
1036} 1043}
1037 1044
1038 1045