CVE-2026-80983 in Linux
الملخص
بحسب VulDB • 12/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
net/smc: تصحيح تسرب عداد الإشارات (refcount) للمقبس في دالة smc_switch_conns()
تأخذ الدالة `smc_switch_conns()` إشارة على مقبس SMC قبل إلغاء قفل `lgr->conns_lock`، مما يبقي الاتصال نشطًا أثناء استرجاع فتحة CDC:
sock_hold(&smc->sk); read_unlock_bh(&lgr->conns_lock); /* جلب المخزن المؤقت مسبقاً خارج نطاق send_lock، قد يتسبب في الانتظار */ rc = smc_cdc_get_free_slot(conn, to_lnk, &wr_buf, NULL, &pend); if (rc) goto err_out;
يؤدي الملصق `err_out` فقط إلى إلغاء إشارة رابط wr_tx، لذا فإن الخروج المبكر هذا يتم دون استدعاء دالة sock_put() المقابلة. لا يتأثر مخرج الخطأ الثاني، لأن sock_put() قد تم تنفيذها بالفعل بحلول ذلك الوقت.
يعني تسرب sk_refcnt أن smc_sock لن يُدمر أبداً. تبقى مخازنها المؤقتة للإرسال والاستقبال مُخصصة، وبالنسبة لمقبس المستخدم، لا يتم إطلاق الإشارة المحتفظ بها على مساحة الشبكة (network namespace)، مما يمنع إمكانية تفكيك netns لاحقاً.
تفشل الدالة `smc_cdc_get_free_slot()` عندما ينخفض الرابط المستهدف أو عندما يتم قتل الاتصال أثناء عملية التبديل الجارية. وكلا الحالتين قابلتان للتحقيق خلال تبديل فشل الرابط الذي تنفذه هذه الدالة، لذا فإن التسرب يُحفز بواسطة نفس الأحداث المادية التي تجعل `smc_switch_conns()` تعمل في المقام الأول.
إعادة هيكلة الكود بحيث تكون هناك دالة sock_put() واحدة تغطي كلا النتيجتين، بدلاً من إضافة ثانية إلى مسار الخطأ.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.