i2c: dev: check return value when calling dev_set_name()

If dev_set_name() fails, the dev_name() is null, check the return
value of dev_set_name() to avoid the null-ptr-deref.

Fixes: 1413ef638aba ("i2c: dev: Fix the race between the release of i2c_dev and cdev")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>

authored by Andy Shevchenko and committed by Wolfram Sang 993eb48f c60bd968

Changed files
+10 -5
drivers
i2c
+10 -5
drivers/i2c/i2c-dev.c
··· 668 668 i2c_dev->dev.class = i2c_dev_class; 669 669 i2c_dev->dev.parent = &adap->dev; 670 670 i2c_dev->dev.release = i2cdev_dev_release; 671 - dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr); 671 + 672 + res = dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr); 673 + if (res) 674 + goto err_put_i2c_dev; 672 675 673 676 res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev); 674 - if (res) { 675 - put_i2c_dev(i2c_dev, false); 676 - return res; 677 - } 677 + if (res) 678 + goto err_put_i2c_dev; 678 679 679 680 pr_debug("adapter [%s] registered as minor %d\n", adap->name, adap->nr); 680 681 return 0; 682 + 683 + err_put_i2c_dev: 684 + put_i2c_dev(i2c_dev, false); 685 + return res; 681 686 } 682 687 683 688 static int i2cdev_detach_adapter(struct device *dev, void *dummy)