USB: serial: fix interface refcounting
commit d7971051e4 upstream.
Make sure the interface is not released before our serial device.
Note that drivers are still not allowed to access the interface in
any way that may interfere with another driver that may have gotten
bound to the same interface after disconnect returns.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
10a00e38f3
commit
cbff2b6d37
@ -168,6 +168,7 @@ static void destroy_serial(struct kref *kref)
|
||||
}
|
||||
}
|
||||
|
||||
usb_put_intf(serial->interface);
|
||||
usb_put_dev(serial->dev);
|
||||
kfree(serial);
|
||||
}
|
||||
@ -625,7 +626,7 @@ static struct usb_serial *create_serial(struct usb_device *dev,
|
||||
}
|
||||
serial->dev = usb_get_dev(dev);
|
||||
serial->type = driver;
|
||||
serial->interface = interface;
|
||||
serial->interface = usb_get_intf(interface);
|
||||
kref_init(&serial->kref);
|
||||
mutex_init(&serial->disc_mutex);
|
||||
serial->minor = SERIAL_TTY_NO_MINOR;
|
||||
|
||||
Reference in New Issue
Block a user