]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh
authorPavel Skripkin <paskripkin@gmail.com>
Thu, 30 Dec 2021 19:55:47 +0000 (22:55 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Feb 2023 10:53:26 +0000 (11:53 +0100)
commiteb06f57422543399d3f29705b9eb9d8cbdef7d2d
tree9d8a65a304674a16ae2adfed6da311c2135dfda5
parent3a97bd03fd7243a8ca979cf13c42e8c1f4fa5046
mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh

commit 05c8346499a9370e4ec5c62cef14646149770080 upstream.

Syzbot hit NULL deref in rhashtable_free_and_destroy(). The problem was
in mesh_paths and mpp_paths being NULL.

mesh_pathtbl_init() could fail in case of memory allocation failure, but
nobody cared, since ieee80211_mesh_init_sdata() returns void. It led to
leaving 2 pointers as NULL. Syzbot has found null deref on exit path,
but it could happen anywhere else, because code assumes these pointers are
valid.

Since all ieee80211_*_setup_sdata functions are void and do not fail,
let's embedd mesh_paths and mpp_paths into parent struct to avoid
adding error handling on higher levels and follow the pattern of others
setup_sdata functions

Fixes: 33d81d1d804c ("mac80211: mesh: convert path table to rhashtable")
Reported-and-tested-by: syzbot+860268315ba86ea6b96b@syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Link: https://lore.kernel.org/r/20211230195547.23977-1-paskripkin@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
[pchelkin@ispras.ru: adapt a comment spell fixing issue]
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/mac80211/ieee80211_i.h
net/mac80211/mesh.h
net/mac80211/mesh_pathtbl.c