• Mike Looijmans's avatar
    rsi: Fix failure to load firmware after memory leak fix and fix the leak · 5d5cd85f
    Mike Looijmans authored
    Fixes commit eae79b4f ("rsi: fix memory leak in rsi_load_ta_instructions()")
    which stopped the driver from functioning.
    
    Firmware data has been allocated using vmalloc(), resulting in memory
    that cannot be used for DMA. Hence the firmware was first copied to a
    buffer allocated with kmalloc() in the original code. This patch reverts
    the commit and only calls "kfree()" to release the buffer after sending
    the data. This fixes the memory leak without breaking the driver.
    
    Add a comment to the kmemdup() calls to explain why this is done, and abort
    if memory allocation fails.
    
    Tested on a Topic Miami-Florida board which contains the rsi SDIO chip.
    
    Also added the same kfree() call to the USB glue driver. This was not
    tested on actual hardware though, as I only have the SDIO version.
    
    Fixes: eae79b4f ("rsi: fix memory leak in rsi_load_ta_instructions()")
    Signed-off-by: default avatarMike Looijmans <mike.looijmans@topic.nl>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    5d5cd85f
rsi_91x_usb_ops.c 5.11 KB