CVE-2022-49926 in Linux
الملخص
بحسب VulDB • 18/05/2026
في نواة لينكس، تم حل الثغرة التالية:
net: dsa: إصلاح التسريبات المحتملة للذاكرة في دالة dsa_loop_init()
أبلغ kmemleak عن تسريبات للذاكرة في دالة dsa_loop_init():
kmemleak: 12 تسربًا محتملاً جديدًا للذاكرة
كائن غير مرجع إليه 0xffff8880138ce000 (الحجم 2048): comm "modprobe"، pid 390، jiffies 4295040478 (العمر 238.976 ثانية) تتبع المكدس (backtrace): [] kmalloc_trace+0x26/0x60
[] phy_device_create+0x5d/0x970
[] get_phy_device+0xf3/0x2b0
[] __fixed_phy_register.part.0+0x92/0x4e0
[] fixed_phy_register+0x84/0xb0
[] dsa_loop_init+0xa9/0x116 [dsa_loop]
...
هناك سببان لتسرب الذاكرة في دالة dsa_loop_init().
أولاً، تقوم دالة fixed_phy_register() بإنشاء وتسجيل كائن phy_device:
fixed_phy_register() get_phy_device() phy_device_create() # يُفرغ بواسطة phy_device_free() phy_device_register() # يُفرغ بواسطة phy_device_remove()
ولكن دالة fixed_phy_unregister() تستدعي فقط phy_device_remove(). لذا، فإن الذاكرة المخصصة في phy_device_create() تتسرب.
ثانياً، عندما تفشل دالة mdio_driver_register() في دالة dsa_loop_init()، فإنها تعود ببساطة ولا يوجد تنظيف (cleanup) لكائنات phydevs.
تم إصلاح هذه المشاكل عن طريق اعتراض خطأ دالة mdio_driver_register() في دالة dsa_loop_init()، ثم استدعاء كل من fixed_phy_unregister() و phy_device_free() لإطلاق كائنات phydevs. كما تمت إضافة دالة لتنظيف كائنات phydevs لتجنب التكرار.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.