Skip to content

Commit 32dbfb4

Browse files
jhovoldWolfram Sang
authored andcommitted
i2c: diolan-u2c: drop redundant device reference
Driver core holds a reference to the USB interface and its parent USB device while the interface is bound to a driver and there is no need to take additional references unless the structures are needed after disconnect. Drop the redundant device reference to reduce cargo culting, make it easier to spot drivers where an extra reference is needed, and reduce the risk of memory leaks when drivers fail to release it. Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
1 parent 7bc4c8f commit 32dbfb4

1 file changed

Lines changed: 3 additions & 9 deletions

File tree

drivers/i2c/busses/i2c-diolan-u2c.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -427,12 +427,6 @@ static const struct usb_device_id diolan_u2c_table[] = {
427427

428428
MODULE_DEVICE_TABLE(usb, diolan_u2c_table);
429429

430-
static void diolan_u2c_free(struct i2c_diolan_u2c *dev)
431-
{
432-
usb_put_dev(dev->usb_dev);
433-
kfree(dev);
434-
}
435-
436430
static int diolan_u2c_probe(struct usb_interface *interface,
437431
const struct usb_device_id *id)
438432
{
@@ -453,7 +447,7 @@ static int diolan_u2c_probe(struct usb_interface *interface,
453447
dev->ep_out = hostif->endpoint[0].desc.bEndpointAddress;
454448
dev->ep_in = hostif->endpoint[1].desc.bEndpointAddress;
455449

456-
dev->usb_dev = usb_get_dev(interface_to_usbdev(interface));
450+
dev->usb_dev = interface_to_usbdev(interface);
457451
dev->interface = interface;
458452

459453
/* save our data pointer in this interface device */
@@ -488,7 +482,7 @@ static int diolan_u2c_probe(struct usb_interface *interface,
488482

489483
error_free:
490484
usb_set_intfdata(interface, NULL);
491-
diolan_u2c_free(dev);
485+
kfree(dev);
492486
error:
493487
return ret;
494488
}
@@ -499,7 +493,7 @@ static void diolan_u2c_disconnect(struct usb_interface *interface)
499493

500494
i2c_del_adapter(&dev->adapter);
501495
usb_set_intfdata(interface, NULL);
502-
diolan_u2c_free(dev);
496+
kfree(dev);
503497

504498
dev_dbg(&interface->dev, "disconnected\n");
505499
}

0 commit comments

Comments
 (0)