]> www.infradead.org Git - users/willy/xarray.git/commit
of: Fix double free in of_parse_phandle_with_args_map
authorChristian A. Ehrhardt <lk@c--e.de>
Fri, 29 Dec 2023 10:54:11 +0000 (11:54 +0100)
committerRob Herring <robh@kernel.org>
Tue, 9 Jan 2024 18:54:02 +0000 (12:54 -0600)
commit4dde83569832f9377362e50f7748463340c5db6b
tree1d370180e33cb5df5bf0eebdbbe44a7dcd4f5c49
parent5e3ef45468196498ad1a7132f274d6709e3a1146
of: Fix double free in of_parse_phandle_with_args_map

In of_parse_phandle_with_args_map() the inner loop that
iterates through the map entries calls of_node_put(new)
to free the reference acquired by the previous iteration
of the inner loop. This assumes that the value of "new" is
NULL on the first iteration of the inner loop.

Make sure that this is true in all iterations of the outer
loop by setting "new" to NULL after its value is assigned to "cur".

Extend the unittest to detect the double free and add an additional
test case that actually triggers this path.

Fixes: bd6f2fd5a1 ("of: Support parsing phandle argument lists through a nexus node")
Cc: Stephen Boyd <stephen.boyd@linaro.org>
Signed-off-by: "Christian A. Ehrhardt" <lk@c--e.de>
Link: https://lore.kernel.org/r/20231229105411.1603434-1-lk@c--e.de
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/base.c
drivers/of/unittest-data/tests-phandle.dtsi
drivers/of/unittest.c