mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
of: unittest: fix use-after-free in of_unittest_changeset()
The variable 'parent' is assigned the value of 'nchangeset' earlier in the
function, meaning both point to the same struct device_node. The call to
of_node_put(nchangeset) can decrement the reference count to zero and
free the node if there are no other holders. After that, the code still
uses 'parent' to check for the presence of a property and to read a
string property, leading to a use-after-free.
Fix this by moving the of_node_put() call after the last access to
'parent', avoiding the UAF.
Fixes: 1c668ea655 ("of: unittest: Use of_property_present()")
Cc: stable@vger.kernel.org
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Link: https://patch.msgid.link/20260409022233.418103-1-vulab@iscas.ac.cn
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
This commit is contained in:
parent
e9cd85a426
commit
faecdd423c
|
|
@ -896,8 +896,6 @@ static void __init of_unittest_changeset(void)
|
|||
|
||||
unittest(!of_changeset_apply(&chgset), "apply failed\n");
|
||||
|
||||
of_node_put(nchangeset);
|
||||
|
||||
/* Make sure node names are constructed correctly */
|
||||
unittest((np = of_find_node_by_path("/testcase-data/changeset/n2/n21")),
|
||||
"'%pOF' not added\n", n21);
|
||||
|
|
@ -919,6 +917,7 @@ static void __init of_unittest_changeset(void)
|
|||
if (!ret)
|
||||
unittest(strcmp(propstr, "hello") == 0, "original value not in updated property after revert");
|
||||
|
||||
of_node_put(nchangeset);
|
||||
of_changeset_destroy(&chgset);
|
||||
|
||||
of_node_put(n1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user