Heikki Krogerus 079ad2fb4b kobject: Avoid premature parent object freeing in kobject_cleanup()
If kobject_del() is invoked by kobject_cleanup() to delete the
target kobject, it may cause its parent kobject to be freed
before invoking the target kobject's ->release() method, which
effectively means freeing the parent before dealing with the
child entirely.

That is confusing at best and it may also lead to functional
issues if the callers of kobject_cleanup() are not careful enough
about the order in which these calls are made, so avoid the
problem by making kobject_cleanup() drop the last reference to
the target kobject's parent at the end, after invoking the target
kobject's ->release() method.

[ rjw: Rewrite the subject and changelog, make kobject_cleanup()
  drop the parent reference only when __kobject_del() has been
  called. ]

Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: kernel test robot <rong.a.chen@intel.com>
Fixes: 7589238a8cf3 ("Revert "software node: Simplify software_node_release() function"")
Suggested-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/r/1908555.IiAGLGrh1Z@kreacher
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-10 14:14:37 +02:00
..
2020-06-09 10:03:12 -07:00
2020-06-11 15:54:31 -07:00
2020-05-24 20:48:11 +02:00
2018-08-16 12:14:42 -07:00
2020-06-01 08:23:42 -04:00
2017-02-24 17:46:57 -08:00
2020-05-07 14:54:26 +08:00
2018-10-16 13:45:44 +02:00
2020-06-15 18:22:43 -07:00
2019-07-11 15:17:41 -07:00
2018-06-27 18:58:49 +03:00
2018-10-15 16:31:29 -04:00
2020-06-07 10:53:36 -07:00
2020-06-09 10:03:12 -07:00
2020-06-04 19:06:28 -07:00
2020-06-01 12:13:30 -07:00
2017-08-15 09:02:07 -07:00