1. 26 7月, 2023 1 次提交
  2. 24 5月, 2023 1 次提交
    • C
      net: dsa: Fix possible memory leaks in dsa_loop_init() · eb8d4f0a
      Chen Zhongjin 提交于
      stable inclusion
      from stable-v5.10.154
      commit 37a098fc9b42bd7fce66764866aa514639667b6e
      category: bugfix
      bugzilla: https://gitee.com/openeuler/kernel/issues/I64YCB
      
      Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=37a098fc9b42bd7fce66764866aa514639667b6e
      
      --------------------------------
      
      [ Upstream commit 633efc8b ]
      
      kmemleak reported memory leaks in dsa_loop_init():
      
      kmemleak: 12 new suspected memory leaks
      
      unreferenced object 0xffff8880138ce000 (size 2048):
        comm "modprobe", pid 390, jiffies 4295040478 (age 238.976s)
        backtrace:
          [<000000006a94f1d5>] kmalloc_trace+0x26/0x60
          [<00000000a9c44622>] phy_device_create+0x5d/0x970
          [<00000000d0ee2afc>] get_phy_device+0xf3/0x2b0
          [<00000000dca0c71f>] __fixed_phy_register.part.0+0x92/0x4e0
          [<000000008a834798>] fixed_phy_register+0x84/0xb0
          [<0000000055223fcb>] dsa_loop_init+0xa9/0x116 [dsa_loop]
          ...
      
      There are two reasons for memleak in dsa_loop_init().
      
      First, fixed_phy_register() create and register phy_device:
      
      fixed_phy_register()
        get_phy_device()
          phy_device_create() # freed by phy_device_free()
        phy_device_register() # freed by phy_device_remove()
      
      But fixed_phy_unregister() only calls phy_device_remove().
      So the memory allocated in phy_device_create() is leaked.
      
      Second, when mdio_driver_register() fail in dsa_loop_init(),
      it just returns and there is no cleanup for phydevs.
      
      Fix the problems by catching the error of mdio_driver_register()
      in dsa_loop_init(), then calling both fixed_phy_unregister() and
      phy_device_free() to release phydevs.
      Also add a function for phydevs cleanup to avoid duplacate.
      
      Fixes: 98cd1552 ("net: dsa: Mock-up driver")
      Signed-off-by: NChen Zhongjin <chenzhongjin@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      Signed-off-by: NLipeng Sang <sanglipeng1@jd.com>
      eb8d4f0a
  3. 17 2月, 2023 2 次提交
  4. 21 11月, 2022 4 次提交
  5. 01 11月, 2022 1 次提交
  6. 19 10月, 2022 2 次提交
  7. 29 9月, 2022 1 次提交
  8. 17 8月, 2022 1 次提交
  9. 04 8月, 2022 2 次提交
  10. 19 7月, 2022 1 次提交
  11. 06 7月, 2022 3 次提交
  12. 07 6月, 2022 1 次提交
  13. 23 5月, 2022 2 次提交
  14. 19 5月, 2022 6 次提交
  15. 17 5月, 2022 1 次提交
  16. 06 12月, 2021 1 次提交
  17. 15 11月, 2021 8 次提交
  18. 21 10月, 2021 2 次提交