Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce0dffaf authored by Wolfram Sang's avatar Wolfram Sang Committed by Wolfram Sang
Browse files

i2c: free idr when sanity checks in i2c_register_adapter() fail



On error, we should give idr back to the pool in any case.

Signed-off-by: default avatarWolfram Sang <wsa-dev@sang-engineering.com>
Reviewed-by: default avatarJean Delvare <jdelvare@suse.de>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent cc461881
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -1554,7 +1554,7 @@ static int __process_new_adapter(struct device_driver *d, void *data)


static int i2c_register_adapter(struct i2c_adapter *adap)
static int i2c_register_adapter(struct i2c_adapter *adap)
{
{
	int res = 0;
	int res = -EINVAL;


	/* Can't register until after driver model init */
	/* Can't register until after driver model init */
	if (WARN_ON(!is_registered)) {
	if (WARN_ON(!is_registered)) {
@@ -1566,12 +1566,12 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
	if (unlikely(adap->name[0] == '\0')) {
	if (unlikely(adap->name[0] == '\0')) {
		pr_err("i2c-core: Attempt to register an adapter with "
		pr_err("i2c-core: Attempt to register an adapter with "
		       "no name!\n");
		       "no name!\n");
		return -EINVAL;
		goto out_list;
	}
	}
	if (unlikely(!adap->algo)) {
	if (unlikely(!adap->algo)) {
		pr_err("i2c-core: Attempt to register adapter '%s' with "
		pr_err("i2c-core: Attempt to register adapter '%s' with "
		       "no algo!\n", adap->name);
		       "no algo!\n", adap->name);
		return -EINVAL;
		goto out_list;
	}
	}


	if (!adap->lock_bus) {
	if (!adap->lock_bus) {