diff options
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/core.c | 9 | ||||
| -rw-r--r-- | drivers/base/regmap/regmap-debugfs.c | 9 | 
2 files changed, 15 insertions, 3 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;  		} diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c index 8dfac7f3ed7a..ff2ee87987c7 100644 --- a/drivers/base/regmap/regmap-debugfs.c +++ b/drivers/base/regmap/regmap-debugfs.c @@ -582,8 +582,12 @@ void regmap_debugfs_init(struct regmap *map)  		devname = dev_name(map->dev);  	if (name) { -		map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s", +		if (!map->debugfs_name) { +			map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s",  					      devname, name); +			if (!map->debugfs_name) +				return; +		}  		name = map->debugfs_name;  	} else {  		name = devname; @@ -591,9 +595,10 @@ void regmap_debugfs_init(struct regmap *map)  	if (!strcmp(name, "dummy")) {  		kfree(map->debugfs_name); -  		map->debugfs_name = kasprintf(GFP_KERNEL, "dummy%d",  						dummy_index); +		if (!map->debugfs_name) +				return;  		name = map->debugfs_name;  		dummy_index++;  	} |