** Description changed:

  Hey, i got a memory leak on Ubuntu 18.04.2 even in console mode (no X/GUI) 
the memory usage grows slowly to take all the available RAM when i let the 
computer running over the night (with just top and irssi), and i have to reboot 
to get things back to normal. I didn't have this problem on Ubuntu 17.10 but i 
was still flooded with message about pci aer taking lots of disk space in the 
logs, but pci=noaer fixed this problem and i had no memory leak.
  The computer is a common laptop: HP Pavilion.
  
  ---
  Kernel log gets spammed with AERs so owner uses "pci=noaer"; that was briefly 
disabled to capture the AERs.
  
  Memory seems to be consumed (~6 GB of 8GB) just by leaving PC overnight
  booted just to console (systemd.unit=multi-user.target).
  
  The memory leak doesn't affect Windows but owner is going to check
  Windows Event Log for signs of AERs being logged.
  
  ---
  
- ## AERs (repeated several times per second)
+ Original suspect of AER is not guilty.
  
- [   34.978011] pcieport 0000:00:1d.0:   device [8086:9d1b] error 
status/mask=00000001/00002000
- [   34.978013] pcieport 0000:00:1d.0:    [ 0] Receiver Error         (First)
- [   34.978038] pcieport 0000:00:1d.0: AER: Corrected error received: 
0000:00:1d.0
- [   34.978042] pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, 
type=Physical Layer, (Receiver ID)
+ This turns out to be a bug in the rtlwifi driver where in some rare
+ circumstances it fails to free an sk_buf.
  
- ## PCI device
+ Reporter has been testing a DKMS build of rtlwfi with the fix applied
+ and confirms it solves the issue.
  
-   +-1d.0-[04]----00.0  Realtek Semiconductor Co., Ltd. RTL8723BE PCIe
- Wireless Network Adapter [10ec:b723]
+ Upstream has the commit. Can we get this cherry-picked into all
+ releases?
  
- 00:1d.0 PCI bridge [0604]: Intel Corporation Device [8086:9d1b] (rev f1) 
(prog-if 00 [Normal decode])
-       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
-       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
-       Latency: 0, Cache Line Size: 64 bytes
-       Interrupt: pin D routed to IRQ 125
-       Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
-       I/O behind bridge: 00003000-00003fff
-       Memory behind bridge: a4000000-a40fffff
-       Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
-       Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort+ <SERR- <PERR-
-       BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
-               PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
-       Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
-               DevCap: MaxPayload 128 bytes, PhantFunc 0
-                       ExtTag- RBE+
-               DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
Unsupported-
-                       RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
-                       MaxPayload 128 bytes, MaxReadReq 128 bytes
-               DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr+ 
TransPend-
-               LnkCap: Port #12, Speed 8GT/s, Width x1, ASPM L0s L1, Exit 
Latency L0s <1us, L1 <16us
-                       ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
-               LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
-                       ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
-               LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ 
DLActive+ BWMgmt+ ABWMgmt-
-               SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- 
Surprise-
-                       Slot #11, PowerLimit 10.000W; Interlock- NoCompl+
-               SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- 
LinkChg-
-                       Control: AttnInd Unknown, PwrInd Unknown, Power- 
Interlock-
-               SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ 
Interlock-
-                       Changed: MRL- PresDet- LinkState+
-               RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ 
CRSVisible-
-               RootCap: CRSVisible-
-               RootSta: PME ReqID 0000, PMEStatus- PMEPending-
-               DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF 
Not Supported ARIFwd+
-               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, 
OBFF Disabled ARIFwd-
-               LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
-                        Transmit Margin: Normal Operating Range, 
EnterModifiedCompliance- ComplianceSOS-
-                        Compliance De-emphasis: -6dB
-               LnkSta2: Current De-emphasis Level: -3.5dB, 
EqualizationComplete-, EqualizationPhase1-
-                        EqualizationPhase2-, EqualizationPhase3-, 
LinkEqualizationRequest-
-       Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
-               Address: fee002d8  Data: 0000
-       Capabilities: [90] Subsystem: Hewlett-Packard Company Device [103c:820a]
-       Capabilities: [a0] Power Management version 3
-               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA 
PME(D0+,D1-,D2-,D3hot+,D3cold+)
-               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
-       Capabilities: [100 v1] Advanced Error Reporting
-               UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- 
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
-               UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt+ 
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
-               UESvrt: DLP+ SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- 
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
-               CESta:  RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
-               CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
-               AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
-       Capabilities: [140 v1] Access Control Services
-               ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- 
EgressCtrl- DirectTrans-
-               ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- 
EgressCtrl- DirectTrans-
-       Capabilities: [220 v1] #19
-       Kernel driver in use: pcieport
+ commit 8cfa272b0d321160ebb5b45073e39ef0a6ad73f2
+ Author: Larry Finger <larry.fin...@lwfinger.net>
+ Date:   Sat Nov 17 20:55:03 2018 -0600
  
+     rtlwifi: Fix leak of skb when processing C2H_BT_INFO
+     
+     With commit 0a9f8f0a1ba9 ("rtlwifi: fix btmpinfo timeout while processing
+     C2H_BT_INFO"), calling rtl_c2hcmd_enqueue() with rtl_c2h_fast_cmd() true,
+     the routine returns without freeing that skb, thereby leaking it.
+     
+     This issue has been discussed at 
https://github.com/lwfinger/rtlwifi_new/issues/401
+     and the fix tested there.
+     
+     Fixes: 0a9f8f0a1ba9 ("rtlwifi: fix btmpinfo timeout while processing 
C2H_BT_INFO")
+     Reported-and-tested-by: Francisco Machado Magalhães Neto 
<franmagn...@gmail.com>
+     Cc: Francisco Machado Magalhães Neto <franmagn...@gmail.com>
+     Cc: Ping-Ke Shih <pks...@realtek.com>
+     Cc: Stable <sta...@vger.kernel.org> # 4.18+
+     Signed-off-by: Larry Finger <larry.fin...@lwfinger.net>
+     Signed-off-by: Kalle Valo <kv...@codeaurora.org>
  
- 04:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8723BE 
PCIe Wireless Network Adapter [10ec:b723]
-       Subsystem: Hewlett-Packard Company RTL8723BE PCIe Wireless Network 
Adapter [103c:81c1]
-       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
-       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
-       Latency: 0, Cache Line Size: 64 bytes
-       Interrupt: pin A routed to IRQ 19
-       Region 0: I/O ports at 3000 [size=256]
-       Region 2: Memory at a4000000 (64-bit, non-prefetchable) [size=16K]
-       Capabilities: [40] Power Management version 3
-               Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
-               Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
-       Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
-               Address: 0000000000000000  Data: 0000
-       Capabilities: [70] Express (v2) Endpoint, MSI 00
-               DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 
<64us
-                       ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- 
SlotPowerLimit 10.000W
-               DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
Unsupported-
-                       RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
-                       MaxPayload 128 bytes, MaxReadReq 512 bytes
-               DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ 
TransPend-
-               LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit 
Latency L0s <512ns, L1 <64us
-                       ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
-               LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
-                       ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
-               LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ 
DLActive- BWMgmt- ABWMgmt-
-               DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, 
OBFF Via message/WAKE#
-               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis+, LTR+, 
OBFF Disabled
-               LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
-                        Transmit Margin: Normal Operating Range, 
EnterModifiedCompliance- ComplianceSOS-
-                        Compliance De-emphasis: -6dB
-               LnkSta2: Current De-emphasis Level: -6dB, 
EqualizationComplete-, EqualizationPhase1-
-                        EqualizationPhase2-, EqualizationPhase3-, 
LinkEqualizationRequest-
-       Capabilities: [100 v2] Advanced Error Reporting
-               UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- 
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
-               UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- 
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
-               UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- 
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
-               CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
-               CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
-               AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
-       Capabilities: [140 v1] Device Serial Number 00-23-b7-fe-ff-4c-e0-00
-       Capabilities: [150 v1] Latency Tolerance Reporting
-               Max snoop latency: 3145728ns
-               Max no snoop latency: 3145728ns
-       Capabilities: [158 v1] L1 PM Substates
-               L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ 
L1_PM_Substates+
-                         PortCommonModeRestoreTime=150us PortTPowerOnTime=150us
-               L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
-                          T_CommonMode=0us LTR1.2_Threshold=0ns
-               L1SubCtl2: T_PwrOn=10us
-       Kernel driver in use: rtl8723be
- 
- # nogui boot, free memory reported at startup:
- total        used        free      shared  buff/cache   available
- 8055940      239824     7335792        3256      480324     7567576
- 2097148           0     2097148
- # after leaving overnight (user used 'free -m')
- 7867        6836         230           3         800         763
- 2047           0        2047
- 
- This will likely need a custom kernel build that enables DEBUG_MEMLEAK,
- see https://www.kernel.org/doc/html/v4.18/dev-tools/kmemleak.html for
- how to make use of it.
+ diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c 
b/drivers/net/wireless/realtek/rtlwifi/base.c
+ index f4122c8fdd97..ef9b502ce576 100644
+ --- a/drivers/net/wireless/realtek/rtlwifi/base.c
+ +++ b/drivers/net/wireless/realtek/rtlwifi/base.c
+ @@ -2289,6 +2289,7 @@ void rtl_c2hcmd_enqueue(struct ieee80211_hw *hw, struct 
sk_buff *skb)
+  
+         if (rtl_c2h_fast_cmd(hw, skb)) {
+                 rtl_c2h_content_parsing(hw, skb);
+ +               kfree_skb(skb);
+                 return;
+         }

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1831751

Title:
  rtlwifi: aggresive memory leak

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1831751/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to