i2c: ensure timely release of driver-allocated resources
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 22 Mar 2021 01:38:32 +0000 (18:38 -0700)
committerWolfram Sang <wsa@kernel.org>
Sat, 10 Apr 2021 19:59:21 +0000 (21:59 +0200)
commit5b5475826c5265cead7ce4ca6d34ec0c566c70aa
treecc4e7b918d2eacf131398d59037c74649c873fd0
parent71aee62783e9dc16472acf7657ce16318613ad2f
i2c: ensure timely release of driver-allocated resources

More and more drivers rely on devres to manage their resources, however
if bus' probe() and release() methods are not trivial and control some
of resources as well (for example enable or disable clocks, or attach
device to a power domain), we need to make sure that driver-allocated
resources are released immediately after driver's remove() method
returns, and not postponed until driver core gets around to releasing
resources. To fix that we open a new devres group before calling
driver's probe() and explicitly release it when we return from driver's
remove().

Tested-by: Jeff LaBundy <jeff@labundy.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/i2c-core-base.c
include/linux/i2c.h