Message ID | 20200929173231.396261-1-anmol.karan123@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [Linux-kernel-mentees] net: bluetooth: Fix null pointer dereference in hci_event_packet() | expand |
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 4b7fc430793c..b084142c578e 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -4936,6 +4936,11 @@ static void hci_phy_link_complete_evt(struct hci_dev *hdev, return; } + if (!hcon->amp_mgr) { + hci_dev_unlock(hdev); + return 0; + } + if (ev->status) { hci_conn_del(hcon); hci_dev_unlock(hdev);
AMP_MGR is getting derefernced in hci_phy_link_complete_evt(), when called from hci_event_packet() and there is a possibility, that hcon->amp_mgr may not be found when accessing after initialization of hcon. - net/bluetooth/hci_event.c:4945 The bug seems to get triggered in this line: bredr_hcon = hcon->amp_mgr->l2cap_conn->hcon; Fix it by adding a NULL check for the hcon->amp_mgr before checking the ev-status. Fixes: d5e911928bd8 ("Bluetooth: AMP: Process Physical Link Complete evt") Reported-and-tested-by: syzbot+0bef568258653cff272f@syzkaller.appspotmail.com Link: https://syzkaller.appspot.com/bug?extid=0bef568258653cff272f Signed-off-by: Anmol Karn <anmol.karan123@gmail.com> --- Cahnge in v2: - Replaced IS_ERR_OR_NULL check with NULL check only (Suggested by: Dan Carpenter <dan.carpenter@oracle.com>) - Added "Fixes:" tag (Suggested by: Dan Carpenter <dan.carpenter@oracle.com>) net/bluetooth/hci_event.c | 5 +++++ 1 file changed, 5 insertions(+)