]> git.baikalelectronics.ru Git - kernel.git/commit
mwifiex: fix double free
authorTom Rix <trix@redhat.com>
Sun, 4 Oct 2020 13:19:31 +0000 (06:19 -0700)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 8 Oct 2020 10:46:25 +0000 (13:46 +0300)
commit67c06d1a8d23d19a3056700acfb4e788835cefb6
tree7c6a0d0b26d7af7b992cbb0b8319fe755780f34d
parentf67ffeab72cf0cb30b3446cf98bffd09fde985e5
mwifiex: fix double free

clang static analysis reports this problem:

sdio.c:2403:3: warning: Attempt to free released memory
        kfree(card->mpa_rx.buf);
        ^~~~~~~~~~~~~~~~~~~~~~~

When mwifiex_init_sdio() fails in its first call to
mwifiex_alloc_sdio_mpa_buffer, it falls back to calling it
again.  If the second alloc of mpa_tx.buf fails, the error
handler will try to free the old, previously freed mpa_rx.buf.
Reviewing the code, it looks like a second double free would
happen with mwifiex_cleanup_sdio().

So set both pointers to NULL when they are freed.

Fixes: 0564d842e815 ("wireless: mwifiex: initial commit for Marvell mwifiex driver")
Signed-off-by: Tom Rix <trix@redhat.com>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201004131931.29782-1-trix@redhat.com
drivers/net/wireless/marvell/mwifiex/sdio.c