diff mbox series

Input: synaptics-rmi4: Fix NULL pointer dereference in rmi_driver_probe

Message ID 20240116083847.89934-1-chentao@kylinos.cn (mailing list archive)
State New
Headers show
Series Input: synaptics-rmi4: Fix NULL pointer dereference in rmi_driver_probe | expand

Commit Message

Kunwu Chan Jan. 16, 2024, 8:38 a.m. UTC
devm_kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Fixes: 2b6a321da9a2 ("Input: synaptics-rmi4 - add support for Synaptics RMI4 devices")
Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
---
 drivers/input/rmi4/rmi_driver.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Dmitry Torokhov Jan. 16, 2024, 7:11 p.m. UTC | #1
On Tue, Jan 16, 2024 at 04:38:47PM +0800, Kunwu Chan wrote:
> devm_kasprintf() returns a pointer to dynamically allocated memory
> which can be NULL upon failure. Ensure the allocation was successful
> by checking the pointer validity.

It is perfectly valid to not set "input->phys" and leave it at NULL. So
while I agree that having error handling is good I do not believe
there's chance for NULL pointer dereference, so please adjust your patch
title.

> 
> Fixes: 2b6a321da9a2 ("Input: synaptics-rmi4 - add support for Synaptics RMI4 devices")
> Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
> ---
>  drivers/input/rmi4/rmi_driver.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
> index 258d5fe3d395..d3a601ff51e6 100644
> --- a/drivers/input/rmi4/rmi_driver.c
> +++ b/drivers/input/rmi4/rmi_driver.c
> @@ -1197,6 +1197,12 @@ static int rmi_driver_probe(struct device *dev)
>  		rmi_driver_set_input_params(rmi_dev, data->input);
>  		data->input->phys = devm_kasprintf(dev, GFP_KERNEL,
>  						"%s/input0", dev_name(dev));
> +		if (!data->input->phys) {
> +			dev_err(dev, "%s: Failed to allocate memory.\n",

No need to log the error here, memory allocation will already log the
failure.

Thanks.
Kunwu Chan Jan. 17, 2024, 7:07 a.m. UTC | #2
On 2024/1/17 03:11, Dmitry Torokhov wrote:
> On Tue, Jan 16, 2024 at 04:38:47PM +0800, Kunwu Chan wrote:
>> devm_kasprintf() returns a pointer to dynamically allocated memory
>> which can be NULL upon failure. Ensure the allocation was successful
>> by checking the pointer validity.
> 
> It is perfectly valid to not set "input->phys" and leave it at NULL. So
> while I agree that having error handling is good I do not believe
> there's chance for NULL pointer dereference, so please adjust your patch
> title.

Thanks for your suggestions.
I'll change patch title to "Input: synaptics-rmi4: Add a null pointer 
check to the rmi_driver_probe".

>>
>> Fixes: 2b6a321da9a2 ("Input: synaptics-rmi4 - add support for Synaptics RMI4 devices")
>> Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
>> ---
>>   drivers/input/rmi4/rmi_driver.c | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
>> index 258d5fe3d395..d3a601ff51e6 100644
>> --- a/drivers/input/rmi4/rmi_driver.c
>> +++ b/drivers/input/rmi4/rmi_driver.c
>> @@ -1197,6 +1197,12 @@ static int rmi_driver_probe(struct device *dev)
>>   		rmi_driver_set_input_params(rmi_dev, data->input);
>>   		data->input->phys = devm_kasprintf(dev, GFP_KERNEL,
>>   						"%s/input0", dev_name(dev));
>> +		if (!data->input->phys) {
>> +			dev_err(dev, "%s: Failed to allocate memory.\n",
> 
> No need to log the error here, memory allocation will already log the
> failure.
Thanks, I'll remove the dev_err.
> 
> Thanks.
>
diff mbox series

Patch

diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
index 258d5fe3d395..d3a601ff51e6 100644
--- a/drivers/input/rmi4/rmi_driver.c
+++ b/drivers/input/rmi4/rmi_driver.c
@@ -1197,6 +1197,12 @@  static int rmi_driver_probe(struct device *dev)
 		rmi_driver_set_input_params(rmi_dev, data->input);
 		data->input->phys = devm_kasprintf(dev, GFP_KERNEL,
 						"%s/input0", dev_name(dev));
+		if (!data->input->phys) {
+			dev_err(dev, "%s: Failed to allocate memory.\n",
+					__func__);
+			retval = -ENOMEM;
+			goto err;
+		}
 	}
 
 	retval = rmi_init_functions(data);