
لینوس توروالدز (Linus Torvalds) شاخه کد (Code Branch) خود را در هسته لینوکس (Linux Kernel) ادغام کرد؛ شاخهای که توابع تاریخی و ناامن __get_user() و __put_user() را حذف میکند. این توابع نسخههای سریعتر اما کمایمنتر get_user() و put_user() هستند و بررسیهای ایمنی کمتری انجام میدهند.
این توابع چه کاری انجام میدادند؟
تابع __get_user() / get_user() برای کپی یک متغیر ساده از فضای کاربر (User-Space) به فضای هسته (Kernel-Space) استفاده میشود و __put_user() / put_user() برای نوشتن یک متغیر از فضای هسته به فضای کاربر به کار میرود. نسخههای حذفشده فاقد بررسی اعتبارسنجی اشارهگر (Pointer Validation) بودند و همین موضوع آنها را ناامن میکرد.
دلیل حذف از زبان توروالدز
توروالدز در ادغام گیت (Git Merge) نوشت: «این کار مدتهاست که باید انجام میشد: توابع __get_user() و __put_user() کاملاً تاریخی هستند و دیگر هرگز گزینه درست برای استفاده نیستند.» به گفته او، این توابع در صورت استفاده نادرست نهتنها کندتر از جایگزین درست هستند، بلکه به دلیل عدم بررسی محدوده آدرس کاربر (User Address Range) ناامن نیز محسوب میشوند.
جزئیات تغییر در هسته لینوکس
- توابع از تمام کدهای عمومی هسته لینوکس (Generic Linux Kernel Code) حذف شدند.
- حذف کامل رابط (Interface) برای معماریهای x86 و x86_64 تکمیل شد.
- در برخی پورتهای دیگر معماریهای پردازنده (CPU Architecture Ports) بقایایی باقی مانده است؛ به دلیل موارد غیرساده یا مانند ARM64 که توابع آن از قبل به get_user() و put_user() نگاشت شدهاند.
نقش هوش مصنوعی در این تغییر
در این حذف، نشانههایی از فعالیت هوش مصنوعی دیده میشود. توروالدز در فهرست پستی (Mailing List) گفت که از Claude به عنوان نوعی اسکریپت پیشرفته Coccinelle استفاده کرده است؛ ابزاری برای تحلیل ایستا (Static Analysis) و تبدیل منبع به منبع (Source-to-Source Transformations).
او پیشتر نیز از هوش مصنوعی برای رمزگشایی باگها و بهبود کارایی با Claude Code بهره برده بود. با این حال، حذف __get_user() و __put_user() بخشی از روند مدرنسازی رابطهای دسترسی کاربر (User Access Interfaces) در هسته لینوکس است.