forked from mirrors/linux
		
	driver core: Return proper error code when dev_set_name() fails
Whe device_add() tries to assign a device name with help of dev_set_name() the error path explicitly uses -EINVAL, while the function may return something different. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20230817091221.463721-1-andriy.shevchenko@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									1b28cb81da
								
							
						
					
					
						commit
						d21fdd07ce
					
				
					 1 changed files with 6 additions and 7 deletions
				
			
		| 
						 | 
					@ -3530,18 +3530,17 @@ int device_add(struct device *dev)
 | 
				
			||||||
	 * the name, and force the use of dev_name()
 | 
						 * the name, and force the use of dev_name()
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (dev->init_name) {
 | 
						if (dev->init_name) {
 | 
				
			||||||
		dev_set_name(dev, "%s", dev->init_name);
 | 
							error = dev_set_name(dev, "%s", dev->init_name);
 | 
				
			||||||
		dev->init_name = NULL;
 | 
							dev->init_name = NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (dev_name(dev))
 | 
				
			||||||
 | 
							error = 0;
 | 
				
			||||||
	/* subsystems can specify simple device enumeration */
 | 
						/* subsystems can specify simple device enumeration */
 | 
				
			||||||
	if (!dev_name(dev) && dev->bus && dev->bus->dev_name)
 | 
						else if (dev->bus && dev->bus->dev_name)
 | 
				
			||||||
		dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
 | 
							error = dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
 | 
				
			||||||
 | 
						if (error)
 | 
				
			||||||
	if (!dev_name(dev)) {
 | 
					 | 
				
			||||||
		error = -EINVAL;
 | 
					 | 
				
			||||||
		goto name_error;
 | 
							goto name_error;
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
 | 
						pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue