summaryrefslogtreecommitdiff
path: root/rust/helpers/rcu.c
diff options
context:
space:
mode:
authorXion Wang <xion.wang@mediatek.com>2025-09-04 14:37:04 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-09-06 19:43:18 +0200
commite28022873c0d051e980c4145f1965cab5504b498 (patch)
tree3bb363a27d035c9b07553dc167317fea8817bf35 /rust/helpers/rcu.c
parentceda408c0d1d41094ad125332c6fb1d488e61c0c (diff)
char: Use list_del_init() in misc_deregister() to reinitialize list pointer
Currently, misc_deregister() uses list_del() to remove the device from the list. After list_del(), the list pointers are set to LIST_POISON1 and LIST_POISON2, which may help catch use-after-free bugs, but does not reset the list head. If misc_deregister() is called more than once on the same device, list_empty() will not return true, and list_del() may be called again, leading to undefined behavior. Replace list_del() with list_del_init() to reinitialize the list head after deletion. This makes the code more robust against double deregistration and allows safe usage of list_empty() on the miscdevice after deregistration. [ Note, this seems to keep broken out-of-tree drivers from doing foolish things. While this does not matter for any in-kernel drivers, external drivers could use a bit of help to show them they shouldn't be doing stuff like re-registering misc devices - gregkh ] Signed-off-by: Xion Wang <xion.wang@mediatek.com> Link: https://lore.kernel.org/r/20250904063714.28925-2-xion.wang@mediatek.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'rust/helpers/rcu.c')
0 files changed, 0 insertions, 0 deletions