Commit 41d7d26b authored by Alexandru Ardelean's avatar Alexandru Ardelean Committed by Dmitry Torokhov
Browse files

Input: adp5589-keys - use devm_kzalloc() to allocate the kpad object



This removes the need to manually free the kpad object and cleans up some
exit/error paths.  The error path cleanup should reduce the risk of any
memory leaks with this object.

Signed-off-by: default avatarAlexandru Ardelean <alexandru.ardelean@analog.com>
Link: https://lore.kernel.org/r/20201112074308.71351-2-alexandru.ardelean@analog.com


Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent c6c74650
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -1007,7 +1007,7 @@ static int adp5589_probe(struct i2c_client *client,
		return -EINVAL;
	}

	kpad = kzalloc(sizeof(*kpad), GFP_KERNEL);
	kpad = devm_kzalloc(&client->dev, sizeof(*kpad), GFP_KERNEL);
	if (!kpad)
		return -ENOMEM;

@@ -1028,17 +1028,15 @@ static int adp5589_probe(struct i2c_client *client,
	}

	ret = adp5589_read(client, ADP5589_5_ID);
	if (ret < 0) {
		error = ret;
		goto err_free_mem;
	}
	if (ret < 0)
		return ret;

	revid = (u8) ret & ADP5589_5_DEVICE_ID_MASK;

	if (pdata->keymapsize) {
		error = adp5589_keypad_add(kpad, revid);
		if (error)
			goto err_free_mem;
			return error;
	}

	error = adp5589_setup(kpad);
@@ -1059,8 +1057,6 @@ static int adp5589_probe(struct i2c_client *client,

err_keypad_remove:
	adp5589_keypad_remove(kpad);
err_free_mem:
	kfree(kpad);

	return error;
}
@@ -1072,7 +1068,6 @@ static int adp5589_remove(struct i2c_client *client)
	adp5589_write(client, kpad->var->reg(ADP5589_GENERAL_CFG), 0);
	adp5589_keypad_remove(kpad);
	adp5589_gpio_remove(kpad);
	kfree(kpad);

	return 0;
}