Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: twl6040-vibra - fix DT node memory management

commit e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")

made the separate vibra DT node to a subnode of the twl6040.

It now calls of_find_node_by_name() to locate the "vibra" subnode.
This function has a side effect to call of_node_put on() for the twl6040
parent node passed in as a parameter. This causes trouble later on.

Solution: we must call of_node_get() before of_find_node_by_name()

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

H. Nikolaus Schaller and committed by
Dmitry Torokhov
c52c545e 6ae645d5

+1
+1
drivers/input/misc/twl6040-vibra.c
··· 257 257 int vddvibr_uV = 0; 258 258 int error; 259 259 260 + of_node_get(twl6040_core_dev->of_node); 260 261 twl6040_core_node = of_find_node_by_name(twl6040_core_dev->of_node, 261 262 "vibra"); 262 263 if (!twl6040_core_node) {