Fix use after free or NULL-pointer dereference during suspend and
resume.
The port data may never have been allocated (port probe failed)
or may already have been released by port_remove (e.g. driver is
unloaded) when suspend and resume are called.
Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
online")
Cc: <stable@vger.kernel.org>	# v2.6.32
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        struct sierra_port_private *portdata;
 
        portdata = usb_get_serial_port_data(port);
+       usb_set_serial_port_data(port, NULL);
        kfree(portdata);
 
        return 0;
        for (i = 0; i < serial->num_ports; ++i) {
                port = serial->port[i];
                portdata = usb_get_serial_port_data(port);
+               if (!portdata)
+                       continue;
                sierra_stop_rx_urbs(port);
                usb_kill_anchored_urbs(&portdata->active);
        }
                port = serial->port[i];
                portdata = usb_get_serial_port_data(port);
 
+               if (!portdata)
+                       continue;
+
                while ((urb = usb_get_from_anchor(&portdata->delayed))) {
                        usb_anchor_urb(urb, &portdata->active);
                        intfdata->in_flight++;