diff options
| author | 2021-01-20 14:35:31 -0300 | |
|---|---|---|
| committer | 2021-01-20 14:35:31 -0300 | |
| commit | cd07e536b0201fceffd90a701bfb1e1fc07fcd34 (patch) | |
| tree | 4777d4b2f749b279fc07bd41f11b88c9e4578afe /drivers/base/core.c | |
| parent | perf tools: Add 'ping' control command (diff) | |
| parent | Merge tag 'task_work-2021-01-19' of git://git.kernel.dk/linux-block (diff) | |
| download | linux-dev-cd07e536b0201fceffd90a701bfb1e1fc07fcd34.tar.xz linux-dev-cd07e536b0201fceffd90a701bfb1e1fc07fcd34.zip | |
Merge remote-tracking branch 'torvalds/master' into perf/core
To pick up fixes.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'drivers/base/core.c')
| -rw-r--r-- | drivers/base/core.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index 25e08e5f40bd..14f165816742 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -4414,6 +4414,12 @@ static inline bool fwnode_is_primary(struct fwnode_handle *fwnode) * * Set the device's firmware node pointer to @fwnode, but if a secondary * firmware node of the device is present, preserve it. + * + * Valid fwnode cases are: + * - primary --> secondary --> -ENODEV + * - primary --> NULL + * - secondary --> -ENODEV + * - NULL */ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) { @@ -4432,8 +4438,9 @@ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) } else { if (fwnode_is_primary(fn)) { dev->fwnode = fn->secondary; + /* Set fn->secondary = NULL, so fn remains the primary fwnode */ if (!(parent && fn == parent->fwnode)) - fn->secondary = ERR_PTR(-ENODEV); + fn->secondary = NULL; } else { dev->fwnode = NULL; } |
