Commit 005c5344 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'devprop-5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull device properties framework fix from Rafael Wysocki:
 "Prevent the promotion of the secondary firmware node of a device to
  the primary one from leaking a pointer (Heikki Krogerus)"

* tag 'devprop-5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  device property: Fix the secondary firmware node handling in set_primary_fwnode()
parents 0b2f18e7 c15e1bdd
...@@ -4264,9 +4264,9 @@ static inline bool fwnode_is_primary(struct fwnode_handle *fwnode) ...@@ -4264,9 +4264,9 @@ static inline bool fwnode_is_primary(struct fwnode_handle *fwnode)
*/ */
void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
{ {
if (fwnode) { struct fwnode_handle *fn = dev->fwnode;
struct fwnode_handle *fn = dev->fwnode;
if (fwnode) {
if (fwnode_is_primary(fn)) if (fwnode_is_primary(fn))
fn = fn->secondary; fn = fn->secondary;
...@@ -4276,8 +4276,12 @@ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) ...@@ -4276,8 +4276,12 @@ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
} }
dev->fwnode = fwnode; dev->fwnode = fwnode;
} else { } else {
dev->fwnode = fwnode_is_primary(dev->fwnode) ? if (fwnode_is_primary(fn)) {
dev->fwnode->secondary : NULL; dev->fwnode = fn->secondary;
fn->secondary = NULL;
} else {
dev->fwnode = NULL;
}
} }
} }
EXPORT_SYMBOL_GPL(set_primary_fwnode); EXPORT_SYMBOL_GPL(set_primary_fwnode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment