lkml.org 
[lkml]   [2021]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.10 14/56] Bluetooth: Fix null pointer dereference in amp_read_loc_assoc_final_data
    Date
    From: Gopal Tiwari <gtiwari@redhat.com>

    [ Upstream commit e8bd76ede155fd54d8c41d045dda43cd3174d506 ]

    kernel panic trace looks like:

    #5 [ffffb9e08698fc80] do_page_fault at ffffffffb666e0d7
    #6 [ffffb9e08698fcb0] page_fault at ffffffffb70010fe
    [exception RIP: amp_read_loc_assoc_final_data+63]
    RIP: ffffffffc06ab54f RSP: ffffb9e08698fd68 RFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffff8c8845a5a000 RCX: 0000000000000004
    RDX: 0000000000000000 RSI: ffff8c8b9153d000 RDI: ffff8c8845a5a000
    RBP: ffffb9e08698fe40 R8: 00000000000330e0 R9: ffffffffc0675c94
    R10: ffffb9e08698fe58 R11: 0000000000000001 R12: ffff8c8b9cbf6200
    R13: 0000000000000000 R14: 0000000000000000 R15: ffff8c8b2026da0b
    ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
    #7 [ffffb9e08698fda8] hci_event_packet at ffffffffc0676904 [bluetooth]
    #8 [ffffb9e08698fe50] hci_rx_work at ffffffffc06629ac [bluetooth]
    #9 [ffffb9e08698fe98] process_one_work at ffffffffb66f95e7

    hcon->amp_mgr seems NULL triggered kernel panic in following line inside
    function amp_read_loc_assoc_final_data

    set_bit(READ_LOC_AMP_ASSOC_FINAL, &mgr->state);

    Fixed by checking NULL for mgr.

    Signed-off-by: Gopal Tiwari <gtiwari@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/bluetooth/amp.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/net/bluetooth/amp.c b/net/bluetooth/amp.c
    index 9c711f0dfae35..be2d469d6369d 100644
    --- a/net/bluetooth/amp.c
    +++ b/net/bluetooth/amp.c
    @@ -297,6 +297,9 @@ void amp_read_loc_assoc_final_data(struct hci_dev *hdev,
    struct hci_request req;
    int err;

    + if (!mgr)
    + return;
    +
    cp.phy_handle = hcon->handle;
    cp.len_so_far = cpu_to_le16(0);
    cp.max_len = cpu_to_le16(hdev->amp_assoc_size);
    --
    2.27.0
    \
     
     \ /
      Last update: 2021-02-24 15:11    [W:4.475 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site