> However, I'm not sure I'm supposed to do that. I went by Documentation/i2c/instantiating-devices, which in "Method 2" says: > > The driver which instantiated the I2C device is responsible for destroying > it on cleanup. This is done by calling i2c_unregister_device() on the > pointer that was earlier returned by i2c_new_device() or > i2c_new_probed_device(). > > > So, what is preferred and why? What the documentation says is preferred. For consistency and because of the general "free what you allocated" rule. If we have arguments to change that for i2c_unregister_device(), we would need to do this tree-wide anyhow. Until then, the above is valid.