On Sun, Dec 31, 2023 at 10:32:56AM -0800, Guenter Roeck wrote: > This creates i2c<bus>-<address>/serial_number when the device is instantiated. > That debugfs entry is not removed when the device is removed, only when the > driver is unloaded. This means that de-instantiating the device will leave > stray debugfs directories and files behind until the driver is unloaded. > > We had this before, and I understand that you claimed that this doesn't happen. > To get me to believe you, you'll have to provide a log of > > - instantiating the driver > - Showing the debufs tree > - de-instantiating the driver > - Showing the debugfs tree > > ... but even then I'll want to be able to test it myself. Not sure if I > have an eval board, but either case that will take some time. Frankly, > I don't understand why you refuse to remove > i2c<bus>-<address>/serial_number on device removal. > > Guenter > Hi Guenter, Thank you for your patience. As this is my first patch set for Linux I still need to learn a lot. You are right. I was confused about driver instantiation and driver loading/unloading. The i2cX-XX directory needs to be removed explicitly. If I understood correctly, the following changes should achieve this: +static void sht3x_remove(struct i2c_client *client) +{ + struct sht3x_data *data; + + data = dev_get_drvdata(&client->dev); + debugfs_remove_recursive(data->sensor_dir); +} + static struct i2c_driver sht3x_i2c_driver = { .driver.name = "sht3x", .probe = sht3x_probe, + .remove = sht3x_remove, .id_table = sht3x_ids, }; Of course data->sensor_dir needs to be set to the i2X-XX directory when it is created. If there is nothing obviously wrong with it I'll submit v4 shortly. Best, Stefan