diff options
author | Franck Bui-Huu <vagabon.xyz@gmail.com> | 2006-06-14 04:47:18 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-21 18:04:17 -0400 |
commit | ca094f1186ef50ef8983325072cdc4f051830f13 (patch) | |
tree | 1613108cc900cda8d209b48a86d9d1bf66d174ad /drivers/usb/gadget/serial.c | |
parent | 943e1b4d60dc7acfabe2ebad31189bcb3b853688 (diff) |
[PATCH] USB: gadget-serial: do not save/restore IRQ flags in gs_close()
As pointed out by David Brownell, we know that IRQs are never
blocked when calling gs_close function. So the save/restore
IRQ flags are pointless.
Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/serial.c')
-rw-r--r-- | drivers/usb/gadget/serial.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/usb/gadget/serial.c b/drivers/usb/gadget/serial.c index b58f015554b7..e477edd681d3 100644 --- a/drivers/usb/gadget/serial.c +++ b/drivers/usb/gadget/serial.c | |||
@@ -53,8 +53,8 @@ | |||
53 | 53 | ||
54 | /* Defines */ | 54 | /* Defines */ |
55 | 55 | ||
56 | #define GS_VERSION_STR "v2.1" | 56 | #define GS_VERSION_STR "v2.2" |
57 | #define GS_VERSION_NUM 0x0201 | 57 | #define GS_VERSION_NUM 0x0202 |
58 | 58 | ||
59 | #define GS_LONG_NAME "Gadget Serial" | 59 | #define GS_LONG_NAME "Gadget Serial" |
60 | #define GS_SHORT_NAME "g_serial" | 60 | #define GS_SHORT_NAME "g_serial" |
@@ -774,18 +774,16 @@ exit_unlock_dev: | |||
774 | 774 | ||
775 | #define GS_WRITE_FINISHED_EVENT_SAFELY(p) \ | 775 | #define GS_WRITE_FINISHED_EVENT_SAFELY(p) \ |
776 | ({ \ | 776 | ({ \ |
777 | unsigned long flags; \ | ||
778 | int cond; \ | 777 | int cond; \ |
779 | \ | 778 | \ |
780 | spin_lock_irqsave(&(p)->port_lock, flags); \ | 779 | spin_lock_irq(&(p)->port_lock); \ |
781 | cond = !(p)->port_dev || !gs_buf_data_avail((p)->port_write_buf); \ | 780 | cond = !(p)->port_dev || !gs_buf_data_avail((p)->port_write_buf); \ |
782 | spin_unlock_irqrestore(&(p)->port_lock, flags); \ | 781 | spin_unlock_irq(&(p)->port_lock); \ |
783 | cond; \ | 782 | cond; \ |
784 | }) | 783 | }) |
785 | 784 | ||
786 | static void gs_close(struct tty_struct *tty, struct file *file) | 785 | static void gs_close(struct tty_struct *tty, struct file *file) |
787 | { | 786 | { |
788 | unsigned long flags; | ||
789 | struct gs_port *port = tty->driver_data; | 787 | struct gs_port *port = tty->driver_data; |
790 | struct semaphore *sem; | 788 | struct semaphore *sem; |
791 | 789 | ||
@@ -799,7 +797,7 @@ static void gs_close(struct tty_struct *tty, struct file *file) | |||
799 | sem = &gs_open_close_sem[port->port_num]; | 797 | sem = &gs_open_close_sem[port->port_num]; |
800 | down(sem); | 798 | down(sem); |
801 | 799 | ||
802 | spin_lock_irqsave(&port->port_lock, flags); | 800 | spin_lock_irq(&port->port_lock); |
803 | 801 | ||
804 | if (port->port_open_count == 0) { | 802 | if (port->port_open_count == 0) { |
805 | printk(KERN_ERR | 803 | printk(KERN_ERR |
@@ -827,11 +825,11 @@ static void gs_close(struct tty_struct *tty, struct file *file) | |||
827 | /* wait for write buffer to drain, or */ | 825 | /* wait for write buffer to drain, or */ |
828 | /* at most GS_CLOSE_TIMEOUT seconds */ | 826 | /* at most GS_CLOSE_TIMEOUT seconds */ |
829 | if (gs_buf_data_avail(port->port_write_buf) > 0) { | 827 | if (gs_buf_data_avail(port->port_write_buf) > 0) { |
830 | spin_unlock_irqrestore(&port->port_lock, flags); | 828 | spin_unlock_irq(&port->port_lock); |
831 | wait_event_interruptible_timeout(port->port_write_wait, | 829 | wait_event_interruptible_timeout(port->port_write_wait, |
832 | GS_WRITE_FINISHED_EVENT_SAFELY(port), | 830 | GS_WRITE_FINISHED_EVENT_SAFELY(port), |
833 | GS_CLOSE_TIMEOUT * HZ); | 831 | GS_CLOSE_TIMEOUT * HZ); |
834 | spin_lock_irqsave(&port->port_lock, flags); | 832 | spin_lock_irq(&port->port_lock); |
835 | } | 833 | } |
836 | 834 | ||
837 | /* free disconnected port on final close */ | 835 | /* free disconnected port on final close */ |
@@ -851,7 +849,7 @@ static void gs_close(struct tty_struct *tty, struct file *file) | |||
851 | port->port_num, tty, file); | 849 | port->port_num, tty, file); |
852 | 850 | ||
853 | exit: | 851 | exit: |
854 | spin_unlock_irqrestore(&port->port_lock, flags); | 852 | spin_unlock_irq(&port->port_lock); |
855 | up(sem); | 853 | up(sem); |
856 | } | 854 | } |
857 | 855 | ||