All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] platform/x86: fujitsu-laptop: add NULL check on devm_kzalloc() return value
@ 2017-07-06 22:19 Gustavo A. R. Silva
  2017-07-07  0:19 ` Jonathan Woithe
  0 siblings, 1 reply; 4+ messages in thread
From: Gustavo A. R. Silva @ 2017-07-06 22:19 UTC (permalink / raw)
  To: Jonathan Woithe, Darren Hart, Andy Shevchenko
  Cc: platform-driver-x86, linux-kernel, Gustavo A. R. Silva

Check return value from call to devm_kzalloc()
in order to prevent a NULL pointer dereference.

This issue was detected using Coccinelle and the following semantic patch:

@@
expression x;
identifier fld;
@@

* x = devm_kzalloc(...);
  ... when != x == NULL
  x->fld

Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
---
 drivers/platform/x86/fujitsu-laptop.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
index c1a8528..593a350 100644
--- a/drivers/platform/x86/fujitsu-laptop.c
+++ b/drivers/platform/x86/fujitsu-laptop.c
@@ -695,6 +695,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
 	if (call_fext_func(device,
 			   FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) {
 		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
+		if (!led)
+			return -ENOMEM;
+
 		led->name = "fujitsu::logolamp";
 		led->brightness_set_blocking = logolamp_set;
 		led->brightness_get = logolamp_get;
@@ -707,6 +710,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
 			    FUNC_LEDS, 0x0, 0x0, 0x0) & KEYBOARD_LAMPS) &&
 	    (call_fext_func(device, FUNC_BUTTONS, 0x0, 0x0, 0x0) == 0x0)) {
 		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
+		if (!led)
+			return -ENOMEM;
+
 		led->name = "fujitsu::kblamps";
 		led->brightness_set_blocking = kblamps_set;
 		led->brightness_get = kblamps_get;
@@ -723,6 +729,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
 	 */
 	if (call_fext_func(device, FUNC_BUTTONS, 0x0, 0x0, 0x0) & BIT(24)) {
 		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
+		if (!led)
+			return -ENOMEM;
+
 		led->name = "fujitsu::radio_led";
 		led->brightness_set_blocking = radio_led_set;
 		led->brightness_get = radio_led_get;
@@ -741,6 +750,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
 	    (call_fext_func(device,
 			    FUNC_LEDS, 0x2, ECO_LED, 0x0) != UNSUPPORTED_CMD)) {
 		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
+		if (!led)
+			return -ENOMEM;
+
 		led->name = "fujitsu::eco_led";
 		led->brightness_set_blocking = eco_led_set;
 		led->brightness_get = eco_led_get;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] platform/x86: fujitsu-laptop: add NULL check on devm_kzalloc() return value
  2017-07-06 22:19 [PATCH] platform/x86: fujitsu-laptop: add NULL check on devm_kzalloc() return value Gustavo A. R. Silva
@ 2017-07-07  0:19 ` Jonathan Woithe
  2017-07-07 17:02   ` Darren Hart
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Woithe @ 2017-07-07  0:19 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Darren Hart, Andy Shevchenko, platform-driver-x86, linux-kernel

On Thu, Jul 06, 2017 at 05:19:02PM -0500, Gustavo A. R. Silva wrote:
> Check return value from call to devm_kzalloc()
> in order to prevent a NULL pointer dereference.
> 
> This issue was detected using Coccinelle and the following semantic patch:
> 
> @@
> expression x;
> identifier fld;
> @@
> 
> * x = devm_kzalloc(...);
>   ... when != x == NULL
>   x->fld
> 
> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>

These checks should be added in the interest of code correctness. 
devm_kzalloc() can fail (even if it's extremely unlikely in practice) so we
should check for this.

Reviewed-by: Jonathan Woithe <jwoithe@just42.net>

> ---
>  drivers/platform/x86/fujitsu-laptop.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
> index c1a8528..593a350 100644
> --- a/drivers/platform/x86/fujitsu-laptop.c
> +++ b/drivers/platform/x86/fujitsu-laptop.c
> @@ -695,6 +695,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
>  	if (call_fext_func(device,
>  			   FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) {
>  		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
> +		if (!led)
> +			return -ENOMEM;
> +
>  		led->name = "fujitsu::logolamp";
>  		led->brightness_set_blocking = logolamp_set;
>  		led->brightness_get = logolamp_get;
> @@ -707,6 +710,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
>  			    FUNC_LEDS, 0x0, 0x0, 0x0) & KEYBOARD_LAMPS) &&
>  	    (call_fext_func(device, FUNC_BUTTONS, 0x0, 0x0, 0x0) == 0x0)) {
>  		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
> +		if (!led)
> +			return -ENOMEM;
> +
>  		led->name = "fujitsu::kblamps";
>  		led->brightness_set_blocking = kblamps_set;
>  		led->brightness_get = kblamps_get;
> @@ -723,6 +729,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
>  	 */
>  	if (call_fext_func(device, FUNC_BUTTONS, 0x0, 0x0, 0x0) & BIT(24)) {
>  		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
> +		if (!led)
> +			return -ENOMEM;
> +
>  		led->name = "fujitsu::radio_led";
>  		led->brightness_set_blocking = radio_led_set;
>  		led->brightness_get = radio_led_get;
> @@ -741,6 +750,9 @@ static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device)
>  	    (call_fext_func(device,
>  			    FUNC_LEDS, 0x2, ECO_LED, 0x0) != UNSUPPORTED_CMD)) {
>  		led = devm_kzalloc(&device->dev, sizeof(*led), GFP_KERNEL);
> +		if (!led)
> +			return -ENOMEM;
> +
>  		led->name = "fujitsu::eco_led";
>  		led->brightness_set_blocking = eco_led_set;
>  		led->brightness_get = eco_led_get;
> -- 
> 2.5.0

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] platform/x86: fujitsu-laptop: add NULL check on devm_kzalloc() return value
  2017-07-07  0:19 ` Jonathan Woithe
@ 2017-07-07 17:02   ` Darren Hart
  2017-07-10 19:37     ` Gustavo A. R. Silva
  0 siblings, 1 reply; 4+ messages in thread
From: Darren Hart @ 2017-07-07 17:02 UTC (permalink / raw)
  To: Jonathan Woithe
  Cc: Gustavo A. R. Silva, Andy Shevchenko, platform-driver-x86,
	linux-kernel

On Fri, Jul 07, 2017 at 09:49:00AM +0930, Jonathan Woithe wrote:
> On Thu, Jul 06, 2017 at 05:19:02PM -0500, Gustavo A. R. Silva wrote:
> > Check return value from call to devm_kzalloc()
> > in order to prevent a NULL pointer dereference.
> > 
> > This issue was detected using Coccinelle and the following semantic patch:
> > 
> > @@
> > expression x;
> > identifier fld;
> > @@
> > 
> > * x = devm_kzalloc(...);
> >   ... when != x == NULL
> >   x->fld
> > 
> > Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
> 
> These checks should be added in the interest of code correctness. 
> devm_kzalloc() can fail (even if it's extremely unlikely in practice) so we
> should check for this.
> 
> Reviewed-by: Jonathan Woithe <jwoithe@just42.net>

Thanks Gustavo and Jonathan,

Queued to testing.

-- 
Darren Hart
VMware Open Source Technology Center

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] platform/x86: fujitsu-laptop: add NULL check on devm_kzalloc() return value
  2017-07-07 17:02   ` Darren Hart
@ 2017-07-10 19:37     ` Gustavo A. R. Silva
  0 siblings, 0 replies; 4+ messages in thread
From: Gustavo A. R. Silva @ 2017-07-10 19:37 UTC (permalink / raw)
  To: Darren Hart
  Cc: Jonathan Woithe, Andy Shevchenko, platform-driver-x86,
	linux-kernel

Hi Darren, Jonathan,

Quoting Darren Hart <dvhart@infradead.org>:

> On Fri, Jul 07, 2017 at 09:49:00AM +0930, Jonathan Woithe wrote:
>> On Thu, Jul 06, 2017 at 05:19:02PM -0500, Gustavo A. R. Silva wrote:
>> > Check return value from call to devm_kzalloc()
>> > in order to prevent a NULL pointer dereference.
>> >
>> > This issue was detected using Coccinelle and the following semantic patch:
>> >
>> > @@
>> > expression x;
>> > identifier fld;
>> > @@
>> >
>> > * x = devm_kzalloc(...);
>> >   ... when != x == NULL
>> >   x->fld
>> >
>> > Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
>>
>> These checks should be added in the interest of code correctness.
>> devm_kzalloc() can fail (even if it's extremely unlikely in practice) so we
>> should check for this.
>>
>> Reviewed-by: Jonathan Woithe <jwoithe@just42.net>
>
> Thanks Gustavo and Jonathan,
>
> Queued to testing.
>

Glad to help. :)

Thanks
--
Gustavo A. R. Silva

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-07-10 19:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-06 22:19 [PATCH] platform/x86: fujitsu-laptop: add NULL check on devm_kzalloc() return value Gustavo A. R. Silva
2017-07-07  0:19 ` Jonathan Woithe
2017-07-07 17:02   ` Darren Hart
2017-07-10 19:37     ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.