component: Detach components when deleting master struct
authorJon Medhurst (Tixy) <tixy@linaro.org>
Tue, 26 Jan 2016 17:59:13 +0000 (17:59 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 27 Jan 2016 19:07:51 +0000 (19:07 +0000)
commit57480484f9f7631738ef28b952eca3c9081c4291
treecd79993b4871964d8d8bef8206dde643d9c55c27
parent9a4e7849b5e4e8742d71fa90fbf0722dd0710a56
component: Detach components when deleting master struct

component_master_add_with_match calls find_components which, if any
components already exist, it attaches to the master struct. However, if
we later encounter an error the master struct is deleted, leaving
components with a dangling pointer to it.

If the error was a temporary one, e.g. for probe deferral, then when
the master device is re-probed, it will fail to find the required
components as they appear to already be attached to a master.

Fix this by nulling components pointers to the master struct when it is
deleted. This code is factored out into a separate function so it can be
shared with component_master_del.

Signed-off-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/base/component.c