Commit f11bbfd8 authored by Larry Finger's avatar Larry Finger Committed by John W. Linville

rtlwifi: rtl8192ce: Remove false positives for kmemleak

When rtl8192ce is in operation, kmemleak indicates a number of leaks, yet
when the driver is removed all are gone. These false positives happen
in two locations:

unreferenced object 0xffff880041124000 (size 9536):
  comm "work_for_cpu", pid 9295, jiffies 4295037203 (age 20596.320s)
  hex dump (first 32 bytes):
    33 00 00 01 01 6d 00 00 00 00 b1 0e 21 0b 00 00  3....m......!...
    01 01 6d 00 00 00 00 8b 20 c0 e9 00 00 01 01 6d  ..m..... ......m
  backtrace:
    [<ffffffff8137a1b1>] kmemleak_alloc+0x21/0x50
    [<ffffffff8138d01f>] kmalloc_large_node+0x9a/0xa6
    [<ffffffff811335a5>] __kmalloc_node_track_caller+0x175/0x3b0
    [<ffffffff812ddfe3>] __alloc_skb+0x73/0x230
    [<ffffffff812de1b8>] dev_alloc_skb+0x18/0x30
    [<ffffffffa091a3b7>] rtl_pci_probe+0x10e0/0x17d2 [rtlwifi]
-- snip --
unreferenced object 0xffff8800b4d3f600 (size 256):
  comm "kworker/u:2", pid 13221, jiffies 4297830173 (age 9424.568s)
  hex dump (first 32 bytes):
    1c d6 45 b1 00 88 ff ff 1c d6 45 b1 00 88 ff ff  ..E.......E.....
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff8137a1b1>] kmemleak_alloc+0x21/0x50
    [<ffffffff81130f43>] kmem_cache_alloc_node+0x153/0x270
    [<ffffffff812ddfb6>] __alloc_skb+0x46/0x230
    [<ffffffff812de1b8>] dev_alloc_skb+0x18/0x30
    [<ffffffffa093264a>] rtl92c_set_fw_rsvdpagepkt+0x22a/0x5c0 [rtl8192c_common]
-- snip --
Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 88642088
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "ps.h" #include "ps.h"
#include "efuse.h" #include "efuse.h"
#include <linux/export.h> #include <linux/export.h>
#include <linux/kmemleak.h>
static const u16 pcibridge_vendors[PCI_BRIDGE_VENDOR_MAX] = { static const u16 pcibridge_vendors[PCI_BRIDGE_VENDOR_MAX] = {
PCI_VENDOR_ID_INTEL, PCI_VENDOR_ID_INTEL,
...@@ -1099,6 +1100,7 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw) ...@@ -1099,6 +1100,7 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw)
u32 bufferaddress; u32 bufferaddress;
if (!skb) if (!skb)
return 0; return 0;
kmemleak_not_leak(skb);
entry = &rtlpci->rx_ring[rx_queue_idx].desc[i]; entry = &rtlpci->rx_ring[rx_queue_idx].desc[i];
/*skb->dev = dev; */ /*skb->dev = dev; */
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "../rtl8192ce/def.h" #include "../rtl8192ce/def.h"
#include "fw_common.h" #include "fw_common.h"
#include <linux/export.h> #include <linux/export.h>
#include <linux/kmemleak.h>
static void _rtl92c_enable_fw_download(struct ieee80211_hw *hw, bool enable) static void _rtl92c_enable_fw_download(struct ieee80211_hw *hw, bool enable)
{ {
...@@ -776,6 +777,8 @@ void rtl92c_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool dl_finished) ...@@ -776,6 +777,8 @@ void rtl92c_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool dl_finished)
skb = dev_alloc_skb(totalpacketlen); skb = dev_alloc_skb(totalpacketlen);
if (!skb) if (!skb)
return; return;
kmemleak_not_leak(skb);
memcpy((u8 *) skb_put(skb, totalpacketlen), memcpy((u8 *) skb_put(skb, totalpacketlen),
&reserved_page_packet, totalpacketlen); &reserved_page_packet, totalpacketlen);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment