]> git.baikalelectronics.ru Git - kernel.git/commit
iio: inkern: only release the device node when done with it
authorNuno Sá <nuno.sa@analog.com>
Fri, 15 Jul 2022 12:28:49 +0000 (14:28 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 15 Aug 2022 21:29:59 +0000 (22:29 +0100)
commitea943fea67ce966f44c7c0f895cb1b0029fbee1e
treeb2bf89e1c5d74bb8b719ba32b99cea8771d9f1b8
parent8d08ce0fcee3a5b915d5a9c6a61ec067266f9dd3
iio: inkern: only release the device node when done with it

'of_node_put()' can potentially release the memory pointed to by
'iiospec.np' which would leave us with an invalid pointer (and we would
still pass it in 'of_xlate()'). Note that it is not guaranteed for the
of_node lifespan to be attached to the device (to which is attached)
lifespan so that there is (even though very unlikely) the possibility
for the node to be freed while the device is still around. Thus, as there
are indeed some of_xlate users which do access the node, a race is indeed
possible.

As such, we can only release the node after we are done with it.

Fixes: 263880f5d92b8 ("iio: Add OF support")
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20220715122903.332535-2-nuno.sa@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/inkern.c