mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
usb: serial: spcp8x5: don't store usb_device_id
USB probe functions should not keep usb_device_id for longer than probe due to presence of dynamic ID removal. USB serial does not support ID removal, however in this case only driver_data is ever needed, there is no reason keeping the usb_device_id in the first place, so convert it as well. Reviewed-by: Manuel Ebner <manuelebner@mailbox.org> Reviewed-by: Danilo Krummrich <dakr@kernel.org> Signed-off-by: Gary Guo <gary@garyguo.net> Link: https://patch.msgid.link/20260707-usb_dyn_id_uaf-v2-3-632dcf3adfba@garyguo.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fc045acec1
commit
934e1322f1
|
|
@ -133,14 +133,14 @@ struct spcp8x5_private {
|
|||
static int spcp8x5_probe(struct usb_serial *serial,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
usb_set_serial_data(serial, (void *)id);
|
||||
usb_set_serial_data(serial, (void *)id->driver_info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int spcp8x5_port_probe(struct usb_serial_port *port)
|
||||
{
|
||||
const struct usb_device_id *id = usb_get_serial_data(port->serial);
|
||||
unsigned int quirks = (unsigned int)(unsigned long)usb_get_serial_data(port->serial);
|
||||
struct spcp8x5_private *priv;
|
||||
|
||||
priv = kzalloc_obj(*priv);
|
||||
|
|
@ -148,7 +148,7 @@ static int spcp8x5_port_probe(struct usb_serial_port *port)
|
|||
return -ENOMEM;
|
||||
|
||||
spin_lock_init(&priv->lock);
|
||||
priv->quirks = id->driver_info;
|
||||
priv->quirks = quirks;
|
||||
|
||||
usb_set_serial_port_data(port, priv);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user