<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/gpio, branch v5.1</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v5.1</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v5.1'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2019-04-25T07:12:00Z</updated>
<entry>
<title>gpio: Fix gpiochip_add_data_with_key() error path</title>
<updated>2019-04-25T07:12:00Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2019-04-24T13:59:33Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=357798909164bf423eac6a78ff7da7e98d2d7f7f'/>
<id>urn:sha1:357798909164bf423eac6a78ff7da7e98d2d7f7f</id>
<content type='text'>
The err_remove_chip block is too coarse, and may perform cleanup that
must not be done.  E.g. if of_gpiochip_add() fails, of_gpiochip_remove()
is still called, causing:

    OF: ERROR: Bad of_node_put() on /soc/gpio@e6050000
    CPU: 1 PID: 20 Comm: kworker/1:1 Not tainted 5.1.0-rc2-koelsch+ #407
    Hardware name: Generic R-Car Gen2 (Flattened Device Tree)
    Workqueue: events deferred_probe_work_func
    [&lt;c020ec74&gt;] (unwind_backtrace) from [&lt;c020ae58&gt;] (show_stack+0x10/0x14)
    [&lt;c020ae58&gt;] (show_stack) from [&lt;c07c1224&gt;] (dump_stack+0x7c/0x9c)
    [&lt;c07c1224&gt;] (dump_stack) from [&lt;c07c5a80&gt;] (kobject_put+0x94/0xbc)
    [&lt;c07c5a80&gt;] (kobject_put) from [&lt;c0470420&gt;] (gpiochip_add_data_with_key+0x8d8/0xa3c)
    [&lt;c0470420&gt;] (gpiochip_add_data_with_key) from [&lt;c0473738&gt;] (gpio_rcar_probe+0x1d4/0x314)
    [&lt;c0473738&gt;] (gpio_rcar_probe) from [&lt;c052fca8&gt;] (platform_drv_probe+0x48/0x94)

and later, if a GPIO consumer tries to use a GPIO from a failed
controller:

    WARNING: CPU: 0 PID: 1 at lib/refcount.c:156 kobject_get+0x38/0x4c
    refcount_t: increment on 0; use-after-free.
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.1.0-rc2-koelsch+ #407
    Hardware name: Generic R-Car Gen2 (Flattened Device Tree)
    [&lt;c020ec74&gt;] (unwind_backtrace) from [&lt;c020ae58&gt;] (show_stack+0x10/0x14)
    [&lt;c020ae58&gt;] (show_stack) from [&lt;c07c1224&gt;] (dump_stack+0x7c/0x9c)
    [&lt;c07c1224&gt;] (dump_stack) from [&lt;c0221580&gt;] (__warn+0xd0/0xec)
    [&lt;c0221580&gt;] (__warn) from [&lt;c02215e0&gt;] (warn_slowpath_fmt+0x44/0x6c)
    [&lt;c02215e0&gt;] (warn_slowpath_fmt) from [&lt;c07c58fc&gt;] (kobject_get+0x38/0x4c)
    [&lt;c07c58fc&gt;] (kobject_get) from [&lt;c068b3ec&gt;] (of_node_get+0x14/0x1c)
    [&lt;c068b3ec&gt;] (of_node_get) from [&lt;c0686f24&gt;] (of_find_node_by_phandle+0xc0/0xf0)
    [&lt;c0686f24&gt;] (of_find_node_by_phandle) from [&lt;c0686fbc&gt;] (of_phandle_iterator_next+0x68/0x154)
    [&lt;c0686fbc&gt;] (of_phandle_iterator_next) from [&lt;c0687fe4&gt;] (__of_parse_phandle_with_args+0x40/0xd0)
    [&lt;c0687fe4&gt;] (__of_parse_phandle_with_args) from [&lt;c0688204&gt;] (of_parse_phandle_with_args_map+0x100/0x3ac)
    [&lt;c0688204&gt;] (of_parse_phandle_with_args_map) from [&lt;c0471240&gt;] (of_get_named_gpiod_flags+0x38/0x380)
    [&lt;c0471240&gt;] (of_get_named_gpiod_flags) from [&lt;c046f864&gt;] (gpiod_get_from_of_node+0x24/0xd8)
    [&lt;c046f864&gt;] (gpiod_get_from_of_node) from [&lt;c0470aa4&gt;] (devm_fwnode_get_index_gpiod_from_child+0xa0/0x144)
    [&lt;c0470aa4&gt;] (devm_fwnode_get_index_gpiod_from_child) from [&lt;c05f425c&gt;] (gpio_keys_probe+0x418/0x7bc)
    [&lt;c05f425c&gt;] (gpio_keys_probe) from [&lt;c052fca8&gt;] (platform_drv_probe+0x48/0x94)

Fix this by splitting the cleanup block, and adding a missing call to
gpiochip_irqchip_remove().

Fixes: 28355f81969962cf ("gpio: defer probe if pinctrl cannot be found")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Reviewed-by: Mukesh Ojha &lt;mojha@codeaurora.org&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>gpio: eic: sprd: Fix incorrect irq type setting for the sync EIC</title>
<updated>2019-04-11T13:39:48Z</updated>
<author>
<name>Baolin Wang</name>
<email>baolin.wang@linaro.org</email>
</author>
<published>2019-04-10T07:47:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=102bbe34b31c9159e714432afd64458f6f3876d7'/>
<id>urn:sha1:102bbe34b31c9159e714432afd64458f6f3876d7</id>
<content type='text'>
When setting sync EIC as IRQ_TYPE_EDGE_BOTH type, we missed to set the
SPRD_EIC_SYNC_INTMODE register to 0, which means detecting edge signals.

Thus this patch fixes the issue.

Fixes: 25518e024e3a ("gpio: Add Spreadtrum EIC driver support")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Baolin Wang &lt;baolin.wang@linaro.org&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>Merge tag 'gpio-v5.1-rc3-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into fixes</title>
<updated>2019-03-29T02:04:47Z</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2019-03-29T02:04:47Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=86d0756558b701b2c5502d90f705c2936008922d'/>
<id>urn:sha1:86d0756558b701b2c5502d90f705c2936008922d</id>
<content type='text'>
gpio fixes for v5.1-rc3

- fix for a potential NULL-pointer dereference in the aspeed driver
- revert of the commit using the new gpio_set_config() when setting
  debaunce and transitory state config as it caused a regression in
  the aspeed driver
- two fixes for gpio-mockup for debugfs problems introduced in the
  last merge window
</content>
</entry>
<entry>
<title>gpio: mockup: use simple_read_from_buffer() in debugfs read callback</title>
<updated>2019-03-28T17:04:53Z</updated>
<author>
<name>Bartosz Golaszewski</name>
<email>bgolaszewski@baylibre.com</email>
</author>
<published>2019-03-28T10:38:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ce9fb53c72834646f26ecb2213e40e6876048f87'/>
<id>urn:sha1:ce9fb53c72834646f26ecb2213e40e6876048f87</id>
<content type='text'>
Calling read() for a single byte read will return 2 currently. Use
simple_read_from_buffer() which correctly handles all sizes.

Fixes: 2a9e27408e12 ("gpio: mockup: rework debugfs interface")
Reviewed-by: Mukesh Ojha &lt;mojha@codeaurora.org&gt;
Signed-off-by: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
</content>
</entry>
<entry>
<title>gpio: of: Fix of_gpiochip_add() error path</title>
<updated>2019-03-28T16:58:34Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2019-03-28T13:13:47Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f7299d441a4da8a5088e651ea55023525a793a13'/>
<id>urn:sha1:f7299d441a4da8a5088e651ea55023525a793a13</id>
<content type='text'>
If the call to of_gpiochip_scan_gpios() in of_gpiochip_add() fails, no
error handling is performed.  This lead to the need of callers to call
of_gpiochip_remove() on failure, which causes "BAD of_node_put() on ..."
if the failure happened before the call to of_node_get().

Fix this by adding proper error handling.

Note that calling gpiochip_remove_pin_ranges() multiple times causes no
harm: subsequent calls are a no-op.

Fixes: dfbd379ba9b7431e ("gpio: of: Return error if gpio hog configuration failed")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Reviewed-by: Mukesh Ojha &lt;mojha@codeaurora.org&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>gpio: of: Check for "spi-cs-high" in child instead of parent node</title>
<updated>2019-03-28T16:10:20Z</updated>
<author>
<name>Andrey Smirnov</name>
<email>andrew.smirnov@gmail.com</email>
</author>
<published>2019-03-26T06:32:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=7ce40277bf848391705011ba37eac2e377cbd9e6'/>
<id>urn:sha1:7ce40277bf848391705011ba37eac2e377cbd9e6</id>
<content type='text'>
"spi-cs-high" is going to be specified in child node of an SPI
controller's representing attached SPI device, so change the code to
look for it there, instead of checking parent node.

Signed-off-by: Andrey Smirnov &lt;andrew.smirnov@gmail.com&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
Cc: Chris Healy &lt;cphealy@gmail.com&gt;
Cc: linux-gpio@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>gpio: of: Check propname before applying "cs-gpios" quirks</title>
<updated>2019-03-28T16:06:58Z</updated>
<author>
<name>Andrey Smirnov</name>
<email>andrew.smirnov@gmail.com</email>
</author>
<published>2019-03-26T06:32:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e5545c94e43b8f6599ffc01df8d1aedf18ee912a'/>
<id>urn:sha1:e5545c94e43b8f6599ffc01df8d1aedf18ee912a</id>
<content type='text'>
SPI GPIO device has more than just "cs-gpio" property in its node and
would request those GPIOs as a part of its initialization. To avoid
applying CS-specific quirk to all of them add a check to make sure
that propname is "cs-gpios".

Signed-off-by: Andrey Smirnov &lt;andrew.smirnov@gmail.com&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
Cc: Chris Healy &lt;cphealy@gmail.com&gt;
Cc: linux-gpio@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>gpio: mockup: fix debugfs read</title>
<updated>2019-03-27T08:56:01Z</updated>
<author>
<name>Bartosz Golaszewski</name>
<email>bgolaszewski@baylibre.com</email>
</author>
<published>2019-03-22T17:27:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2583303debb7acc77295b77901916d08a4c743c2'/>
<id>urn:sha1:2583303debb7acc77295b77901916d08a4c743c2</id>
<content type='text'>
The debugfs read callback must advance ppos or users using read() on
the file descriptor will never get the EOL. This wasn't spotted before
as I was using busybox cat for testing which uses sendfile() internally
and only noticed it now when switched to cat from coreutils.

Fixes: 2a9e27408e12 ("gpio: mockup: rework debugfs interface")
Signed-off-by: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
</content>
</entry>
<entry>
<title>Revert "gpio: use new gpio_set_config() helper in more places"</title>
<updated>2019-03-27T08:40:07Z</updated>
<author>
<name>Andrew Jeffery</name>
<email>andrew@aj.id.au</email>
</author>
<published>2019-03-26T04:49:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=fa59dd234c9a237e590a5f6db530d7f7ee88e5e8'/>
<id>urn:sha1:fa59dd234c9a237e590a5f6db530d7f7ee88e5e8</id>
<content type='text'>
gpio-aspeed implements support for PIN_CONFIG_INPUT_DEBOUNCE. As of
v5.1-rc1 we're seeing the following when booting a Romulus BMC kernel:

&gt; [   21.373137] ------------[ cut here ]------------
&gt; [   21.374545] WARNING: CPU: 0 PID: 1 at drivers/gpio/gpio-aspeed.c:834 unregister_allocated_timer+0x38/0x94
&gt; [   21.376181] No timer allocated to offset 74
&gt; [   21.377672] CPU: 0 PID: 1 Comm: swapper Not tainted 5.1.0-rc1-dirty #6
&gt; [   21.378800] Hardware name: Generic DT based system
&gt; [   21.379965] Backtrace:
&gt; [   21.381024] [&lt;80107d44&gt;] (dump_backtrace) from [&lt;80107f78&gt;] (show_stack+0x20/0x24)
&gt; [   21.382713]  r7:8038b720 r6:00000009 r5:00000000 r4:87897c64
&gt; [   21.383815] [&lt;80107f58&gt;] (show_stack) from [&lt;80656398&gt;] (dump_stack+0x20/0x28)
&gt; [   21.385042] [&lt;80656378&gt;] (dump_stack) from [&lt;80115f1c&gt;] (__warn.part.3+0xb4/0xdc)
&gt; [   21.386253] [&lt;80115e68&gt;] (__warn.part.3) from [&lt;80115fb0&gt;] (warn_slowpath_fmt+0x6c/0x90)
&gt; [   21.387471]  r6:00000342 r5:807f8758 r4:80a07008
&gt; [   21.388278] [&lt;80115f48&gt;] (warn_slowpath_fmt) from [&lt;8038b720&gt;] (unregister_allocated_timer+0x38/0x94)
&gt; [   21.389809]  r3:0000004a r2:807f8774
&gt; [   21.390526]  r7:00000000 r6:0000000a r5:60000153 r4:0000004a
&gt; [   21.391601] [&lt;8038b6e8&gt;] (unregister_allocated_timer) from [&lt;8038baac&gt;] (aspeed_gpio_set_config+0x330/0x48c)
&gt; [   21.393248] [&lt;8038b77c&gt;] (aspeed_gpio_set_config) from [&lt;803840b0&gt;] (gpiod_set_debounce+0xe8/0x114)
&gt; [   21.394745]  r10:82ee2248 r9:00000000 r8:87b63a00 r7:00001388 r6:87947320 r5:80729310
&gt; [   21.396030]  r4:879f64a0
&gt; [   21.396499] [&lt;80383fc8&gt;] (gpiod_set_debounce) from [&lt;804b4350&gt;] (gpio_keys_probe+0x69c/0x8e0)
&gt; [   21.397715]  r7:845d94b8 r6:00000001 r5:00000000 r4:87b63a1c
&gt; [   21.398618] [&lt;804b3cb4&gt;] (gpio_keys_probe) from [&lt;8040eeec&gt;] (platform_dev_probe+0x44/0x80)
&gt; [   21.399834]  r10:00000003 r9:80a3a8b0 r8:00000000 r7:00000000 r6:80a7f9dc r5:80a3a8b0
&gt; [   21.401163]  r4:8796bc10
&gt; [   21.401634] [&lt;8040eea8&gt;] (platform_drv_probe) from [&lt;8040d0d4&gt;] (really_probe+0x208/0x3dc)
&gt; [   21.402786]  r5:80a7f8d0 r4:8796bc10
&gt; [   21.403547] [&lt;8040cecc&gt;] (really_probe) from [&lt;8040d7a4&gt;] (driver_probe_device+0x130/0x170)
&gt; [   21.404744]  r10:0000007b r9:8093683c r8:00000000 r7:80a07008 r6:80a3a8b0 r5:8796bc10
&gt; [   21.405854]  r4:80a3a8b0
&gt; [   21.406324] [&lt;8040d674&gt;] (driver_probe_device) from [&lt;8040da8c&gt;] (device_driver_attach+0x68/0x70)
&gt; [   21.407568]  r9:8093683c r8:00000000 r7:80a07008 r6:80a3a8b0 r5:00000000 r4:8796bc10
&gt; [   21.408877] [&lt;8040da24&gt;] (device_driver_attach) from [&lt;8040db14&gt;] (__driver_attach+0x80/0x150)
&gt; [   21.410327]  r7:80a07008 r6:8796bc10 r5:00000001 r4:80a3a8b0
&gt; [   21.411294] [&lt;8040da94&gt;] (__driver_attach) from [&lt;8040b20c&gt;] (bus_for_each_dev+0x80/0xc4)
&gt; [   21.412641]  r7:80a07008 r6:8040da94 r5:80a3a8b0 r4:87966f30
&gt; [   21.413580] [&lt;8040b18c&gt;] (bus_for_each_dev) from [&lt;8040dc0c&gt;] (driver_attach+0x28/0x30)
&gt; [   21.414943]  r7:00000000 r6:87b411e0 r5:80a33fc8 r4:80a3a8b0
&gt; [   21.415927] [&lt;8040dbe4&gt;] (driver_attach) from [&lt;8040bbf0&gt;] (bus_add_driver+0x14c/0x200)
&gt; [   21.417289] [&lt;8040baa4&gt;] (bus_add_driver) from [&lt;8040e2b4&gt;] (driver_register+0x84/0x118)
&gt; [   21.418652]  r7:80a60ae0 r6:809226b8 r5:80a07008 r4:80a3a8b0
&gt; [   21.419652] [&lt;8040e230&gt;] (driver_register) from [&lt;8040fc28&gt;] (__platform_driver_register+0x3c/0x50)
&gt; [   21.421193]  r5:80a07008 r4:809525f8
&gt; [   21.421990] [&lt;8040fbec&gt;] (__platform_driver_register) from [&lt;809226d8&gt;] (gpio_keys_init+0x20/0x28)
&gt; [   21.423447] [&lt;809226b8&gt;] (gpio_keys_init) from [&lt;8090128c&gt;] (do_one_initcall+0x80/0x180)
&gt; [   21.424886] [&lt;8090120c&gt;] (do_one_initcall) from [&lt;80901538&gt;] (kernel_init_freeable+0x1ac/0x26c)
&gt; [   21.426354]  r8:80a60ae0 r7:80a60ae0 r6:8093685c r5:00000008 r4:809525f8
&gt; [   21.427579] [&lt;8090138c&gt;] (kernel_init_freeable) from [&lt;8066d9a0&gt;] (kernel_init+0x18/0x11c)
&gt; [   21.428819]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:8066d988
&gt; [   21.429947]  r4:00000000
&gt; [   21.430415] [&lt;8066d988&gt;] (kernel_init) from [&lt;801010e8&gt;] (ret_from_fork+0x14/0x2c)
&gt; [   21.431666] Exception stack(0x87897fb0 to 0x87897ff8)
&gt; [   21.432877] 7fa0:                                     00000000 00000000 00000000 00000000
&gt; [   21.434446] 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
&gt; [   21.436052] 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000
&gt; [   21.437308]  r5:8066d988 r4:00000000
&gt; [   21.438102] ---[ end trace d7d7ac3a80567d0e ]---

We only hit unregister_allocated_timer() if the argument to
aspeed_gpio_set_config() is 0, but we can't be calling through
gpiod_set_debounce() from gpio_keys_probe() unless the gpio-keys button has a
non-zero debounce interval.

Commit 6581eaf0e890 ("gpio: use new gpio_set_config() helper in more places")
spreads the use of gpio_set_config() to the debounce and transitory
state configuration paths. The implementation of gpio_set_config() is:

&gt; static int gpio_set_config(struct gpio_chip *gc, unsigned offset,
&gt; 			   enum pin_config_param mode)
&gt; {
&gt; 	unsigned long config = { PIN_CONF_PACKED(mode, 0) };
&gt;
&gt; 	return gc-&gt;set_config ? gc-&gt;set_config(gc, offset, config) : -ENOTSUPP;
&gt; }

Here it packs its own config value with a fixed argument of 0; this is
incorrect behaviour for implementing the debounce and transitory functions, and
the debounce and transitory gpio_set_config() call-sites now have an undetected
type mismatch as they both already pack their own config parameter (i.e. what
gets passed is not an `enum pin_config_param`). Indeed this can be seen in the
small diff for 6581eaf0e890:

&gt; diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
&gt; index de595fa31a1a..1f239aac43df 100644
&gt; --- a/drivers/gpio/gpiolib.c
&gt; +++ b/drivers/gpio/gpiolib.c
&gt; @@ -2725,7 +2725,7 @@ int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)
&gt;         }
&gt;
&gt;         config = pinconf_to_config_packed(PIN_CONFIG_INPUT_DEBOUNCE, debounce);
&gt; -       return chip-&gt;set_config(chip, gpio_chip_hwgpio(desc), config);
&gt; +       return gpio_set_config(chip, gpio_chip_hwgpio(desc), config);
&gt;  }
&gt;  EXPORT_SYMBOL_GPL(gpiod_set_debounce);
&gt;
&gt; @@ -2762,7 +2762,7 @@ int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
&gt;         packed = pinconf_to_config_packed(PIN_CONFIG_PERSIST_STATE,
&gt;                                           !transitory);
&gt;         gpio = gpio_chip_hwgpio(desc);
&gt; -       rc = chip-&gt;set_config(chip, gpio, packed);
&gt; +       rc = gpio_set_config(chip, gpio, packed);
&gt;         if (rc == -ENOTSUPP) {
&gt;                 dev_dbg(&amp;desc-&gt;gdev-&gt;dev, "Persistence not supported for GPIO %d\n",
&gt;                                 gpio);

Revert commit 6581eaf0e890 ("gpio: use new gpio_set_config() helper in
more places") to restore correct behaviour for gpiod_set_debounce() and
gpiod_set_transitory().

Cc: Thomas Petazzoni &lt;thomas.petazzoni@bootlin.com&gt;
Signed-off-by: Andrew Jeffery &lt;andrew@aj.id.au&gt;
Signed-off-by: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
</content>
</entry>
<entry>
<title>gpio: aspeed: fix a potential NULL pointer dereference</title>
<updated>2019-03-25T08:26:48Z</updated>
<author>
<name>Kangjie Lu</name>
<email>kjlu@umn.edu</email>
</author>
<published>2019-03-24T23:10:02Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=6cf4511e9729c00a7306cf94085f9cc3c52ee723'/>
<id>urn:sha1:6cf4511e9729c00a7306cf94085f9cc3c52ee723</id>
<content type='text'>
In case devm_kzalloc, the patch returns ENOMEM to avoid potential
NULL pointer dereference.

Signed-off-by: Kangjie Lu &lt;kjlu@umn.edu&gt;
Reviewed-by: Andrew Jeffery &lt;andrew@aj.id.au&gt;
Signed-off-by: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
</content>
</entry>
</feed>
