یک آسیبپذیری امنیتی در هسته لینوکس (Linux kernel) شناسایی و برطرف شده است که مربوط به زیرسیستم GFS2 و فرآیند مقداردهی اولیه سهمیهها (Quota Initialization) است.
جزئیات فنی مشکل
در تابع gfs2_quota_init()، سیستم برای بررسی شناسههای تکراری quota_change، همزمان از qd_lock و bucket bitlock استفاده میکرد. در این مسیر، تابع gfs2_qd_search_bucket() فراخوانی میشد که از طریق lockref_get_not_dead() یک ارجاع lockref ایجاد میکرد.
تأثیر بر محیطهای PREEMPT_RT
در محیطهای PREEMPT_RT (نسخه Real-Time هسته لینوکس)، این عملیات ممکن است منجر به وضعیت Sleep شود. از آنجایی که فراخوانی توابعی که باعث خواب (Sleep) سیستم میشوند در حالی که bucket bitlock فعال است، مجاز نیست، این مسئله منجر به بروز خطای "sleeping function called from invalid context" میگردید.
راهکار اصلاحی
برای رفع این مشکل، توسعهدهندگان از یک روش جستجوی Bucket بدون ارجاع (no-ref bucket lookup) در این مسیر استفاده کردهاند تا از تداخل در مدیریت قفلها و کرشهای احتمالی سیستم جلوگیری شود.