[9610] wlbt: Fixed panic on __dma_inv_area
authorAlbert Cano <a.canocamps@samsung.com>
Thu, 30 Aug 2018 13:17:33 +0000 (14:17 +0100)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:23:06 +0000 (20:23 +0300)
Moved skb_free *after* the memory has been invalidated.
Otherwise, we are at risk of invalidating an non-dma or
protected area.

Enable SMAPPER by default again.

Change-Id: I3be2f5726890f1a251e4dbbdbc54ff12812e6860
SCSC-Bug-Id: SSB-43126
Signed-off-by: Albert Cano <a.canocamps@samsung.com>
drivers/misc/samsung/scsc/Kconfig
drivers/net/wireless/scsc/hip4_smapper.c

index b48371ba8da98291b8bfc14be3e5ded55b635bdb..23856cfa7d577400c1771aecb430ad50d3285fdc 100644 (file)
@@ -44,7 +44,7 @@ config SCSC_MXLOGGER
 
 config SCSC_SMAPPER
        bool "Samsung SCSC WLAN Smapper support"
-       default n
+       default y
        depends on SCSC_CORE
        ---help---
           SMAPPER provides direct access to Linux SKBs
index e3ba04e9e35e7893fb78156042d1cd8ff376acc5..4db2847818223456caa87907db335f3e3ea2e6ee 100644 (file)
@@ -106,9 +106,9 @@ static int hip4_smapper_free_skb_buffers(struct slsi_dev *sdev, struct hip4_smap
        for (i = 0; i < n; i++) {
                if (bank->skbuff[i]) {
                        SLSI_DBG4_NODEV(SLSI_SMAPPER, "SKB free: 0x%p at bank %d entry %d\n", bank->skbuff[i], bank->bank, i);
-                       slsi_kfree_skb(bank->skbuff[i]);
                        dma_unmap_single(sdev->dev, bank->skbuff_dma[i], bank->entry_size, DMA_FROM_DEVICE);
                        bank->skbuff_dma[i] = 0;
+                       slsi_kfree_skb(bank->skbuff[i]);
                        bank->skbuff[i] = NULL;
                }
        }