diff options
author | Oliver Neukum <oneukum@suse.de> | 2007-07-23 02:58:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-07-30 16:27:45 -0400 |
commit | e31c18804f584dd838a752f6628e8c15bd7a3372 (patch) | |
tree | abead87733ffe5e3da890058d523851e849794f1 /drivers/usb/serial/usb-serial.c | |
parent | 209b3cfd538e7d56d228cf6daf0b27e2cc26c6c2 (diff) |
USB: fix usb_serial_suspend(): buggy code
Am Montag 23 Juli 2007 schrieb Adrian Bunk:
> Commit ec22559e0b7a05283a3413bda5d177e42c950e23 added the following
> function to drivers/usb/serial/usb-serial.c:
>
[..]
>
> The Coverity checker spotted the inconsequent NULL checking for "serial".
>
> Looking at the code it also doesn't seem to have been intended to always
> return 0.
Coverity is right. The check for NULL is wrongly done and the error
return is lost.
Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/serial/usb-serial.c')
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index a3665659d13b..5e1cf78c7786 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
@@ -1077,16 +1077,17 @@ int usb_serial_suspend(struct usb_interface *intf, pm_message_t message) | |||
1077 | struct usb_serial_port *port; | 1077 | struct usb_serial_port *port; |
1078 | int i, r = 0; | 1078 | int i, r = 0; |
1079 | 1079 | ||
1080 | if (serial) { | 1080 | if (!serial) /* device has been disconnected */ |
1081 | for (i = 0; i < serial->num_ports; ++i) { | 1081 | return 0; |
1082 | port = serial->port[i]; | 1082 | |
1083 | if (port) | 1083 | for (i = 0; i < serial->num_ports; ++i) { |
1084 | kill_traffic(port); | 1084 | port = serial->port[i]; |
1085 | } | 1085 | if (port) |
1086 | kill_traffic(port); | ||
1086 | } | 1087 | } |
1087 | 1088 | ||
1088 | if (serial->type->suspend) | 1089 | if (serial->type->suspend) |
1089 | serial->type->suspend(serial, message); | 1090 | r = serial->type->suspend(serial, message); |
1090 | 1091 | ||
1091 | return r; | 1092 | return r; |
1092 | } | 1093 | } |