• Arnd Bergmann's avatar
    Bluetooth: btusb: fix excessive stack usage · 10888140
    Arnd Bergmann authored
    Enlarging the size of 'struct btmtk_hci_wmt_cmd' makes it no longer
    fit on the kernel stack, as seen from this compiler warning:
    
    drivers/bluetooth/btusb.c:3365:12: error: stack frame size of 1036 bytes in function 'btusb_mtk_hci_wmt_sync' [-Werror,-Wframe-larger-than=]
    
    Change the function to dynamically allocate the buffer instead.
    As there are other sleeping functions called from the same location,
    using GFP_KERNEL should be fine here, and the runtime overhead should
    not matter as this is rarely called.
    
    Unfortunately, I could not figure out why the message size is
    increased in the previous patch. Using dynamic allocation means
    any size is possible now, but there is still a range check that
    limits the total size (including the five-byte header) to 255
    bytes, so whatever was intended there is now undone.
    
    Fixes: 48c13301
    
     ("Bluetooth: btusb: Fine-tune mt7663 mechanism.")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    10888140
btusb.c 133 KB