Skip to content

Commit 6250ebe

Browse files
groeckWolfram Sang
authored andcommitted
i2c: Fix core-managed per-client debugfs handling
The debugfs directory should be created when a device is probed, not when it is registered. It should be removed when the device is removed, not when it is unregistered. Fixes: d06905d ("i2c: add core-managed per-client directory in debugfs") Signed-off-by: Guenter Roeck <linux@roeck-us.net>
1 parent 5851a88 commit 6250ebe

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/i2c/i2c-core-base.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,9 @@ static int i2c_device_probe(struct device *dev)
583583
goto err_detach_pm_domain;
584584
}
585585

586+
client->debugfs = debugfs_create_dir(dev_name(&client->dev),
587+
client->adapter->debugfs);
588+
586589
if (driver->probe)
587590
status = driver->probe(client);
588591
else
@@ -602,6 +605,7 @@ static int i2c_device_probe(struct device *dev)
602605
return 0;
603606

604607
err_release_driver_resources:
608+
debugfs_remove_recursive(client->debugfs);
605609
devres_release_group(&client->dev, client->devres_group_id);
606610
err_detach_pm_domain:
607611
dev_pm_domain_detach(&client->dev, do_power_on);
@@ -627,6 +631,8 @@ static void i2c_device_remove(struct device *dev)
627631
driver->remove(client);
628632
}
629633

634+
debugfs_remove_recursive(client->debugfs);
635+
630636
devres_release_group(&client->dev, client->devres_group_id);
631637

632638
dev_pm_domain_detach(&client->dev, true);
@@ -1015,8 +1021,6 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
10151021
if (status)
10161022
goto out_remove_swnode;
10171023

1018-
client->debugfs = debugfs_create_dir(dev_name(&client->dev), adap->debugfs);
1019-
10201024
dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
10211025
client->name, dev_name(&client->dev));
10221026

@@ -1061,7 +1065,6 @@ void i2c_unregister_device(struct i2c_client *client)
10611065
if (ACPI_COMPANION(&client->dev))
10621066
acpi_device_clear_enumerated(ACPI_COMPANION(&client->dev));
10631067

1064-
debugfs_remove_recursive(client->debugfs);
10651068
device_remove_software_node(&client->dev);
10661069
device_unregister(&client->dev);
10671070
}

0 commit comments

Comments
 (0)