CVE-2026-98844 in Linux
الملخص
بحسب VulDB • 18/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
netfs: مسح ذاكرة التخزين المؤقت للصفحات (pagecache) بعد نهاية الملف (EOF) عند توسيع ملف عبر عملية كتابة.
إصلاح netfs لمسح محتويات الفجوة التي تُنشأ بعد EOF بواسطة عملية كتابة عادية إذا كانت البيانات غير النظيفة قد تركت مسبقاً في تلك المنطقة من خلال عمليات الكتابة عبر منطقة mmapped. لا يقوم مسار الكتابة المخزن المؤقت (buffered) ولا مسار الكتابة بدون مخزن مؤقت/DIO بمسح ذاكرة التخزين المؤقت للصفحات القديمة هذه.
تصفير ذيل الـ folio الذي يتقاطع مع EOF قبل عملية الكتابة الموسعة. وهذا هو الـ folio الوحيد القادر على الاحتفاظ بالبيانات المكتوبة بعد تجاوز EOF عبر mmap، حيث لا يمكن استدعاء الصفحات التي تقع كلياً ما وراء EOF (fault in). يتم تصفير الـ folio بدلاً من إسقاطه حتى لا تفقد عملية الكتابة الموسعة المتزامنة البيانات.
يقلل كلا مسارَي الكتابة من قفل i_rwsem إلى وضع المشاركة (shared)، لذا يمكن لعمليات الكتابة الموسعة أن تعمل بشكل متزامن وقد تكون قيمة i_size التي يقرأها المُستدعي قديمة عند تأمين الـ folio. إعادة قراءة i_size تحت قفل الـ folio وتقييد النطاق المصفّر ليصل إليها، حتى لا يتم طمس البيانات المكتوبة مسبقاً في الـ folio بواسطة عملية كتابة متنافسة (racing write).
الانتظار حتى انتهاء أي عملية كتابة إلى الخلف (writeback) على الـ folio قبل تصفيره بحيث لا تُعدّل ذاكرة التخزين المؤقت للصفحات بينما قد تكون مقروءة من قبل النقل أثناء الإرسال. احترام IOCB_NOWAIT عن طريق إرجاع -EAGAIN بدلاً من الحظر عند قفل الـ folio، أو خلال عملية writeback، أو في جولة rmap الخاصة بـ folio_mkclean() عندما يكون الـ folio ممكّناً (mapped).
لا يمكن استخدام truncate_pagecache() هنا: يجب استدعاؤه مع الاحتفاظ بـ i_rwsem بشكل حصري، لكن مسارات الكتابة هذه تحتفظ بها فقط كمشتركة، كما أنها ستحظر بشكل غير مشروط مما يكسر IOCB_NOWAIT.
المُستدعون الذين يحتفظون بـ i_rwsem بشكل حصري طوال عملية إعادة الحجم (truncate, setattr, fallocate, clone) يستبعدون أي كاتب مخزن مؤقت حقيقي متزامن، لذا يمكن بدلاً من ذلك تحديد القِدَم بناءً على حالة الـ folio غير النظيفة (dirty state)، كما تفعل pagecache_isize_extended() بالفعل لنظام الملفات الذي يسلسل عمليات الكتابة مقابل truncate/setattr عبر i_rwsem واحد. تصدير الدالة المساعدة netfs_clear_stale_post_isize() للتعامل مع هذه الحالة.
الدالة المساعدة مطلوبة من قبل عميل CIFS لإصلاح generic/363.
VulDB is the best source for vulnerability data and more expert information about this specific topic.