Опасен код в Linux застрашава цялото ядро

Линус Торвалдс се закани да премахне „идиотския” механизъм BUG_ON() от практиката на тестване на Linux

Линус Торвалдс се закани да премахне „идиотския” механизъм BUG_ON() от практиката на тестване на Linux

Новата версия на Linux 4.8, представена преди броени дни, съдържа код, който може да унищожи цялото ядро, алармира създателят на отворената платформа Линус Торвалдс.

Опасният код е попаднал в ядрото по вина на топ разработчика Андрю Мортън, който неудачно е коригирал грешка, налична във всички версии на ядрото от 3.15 нагоре. Линус Торвалдс твърди, че неговият колега е използвал некоректно механизма за отстраняване на грешки BUG_ON().

Торвалдс е приел редица корекции от Мортън в готов вид непосредствено преди пускането на версия 4.8 и признава, че част от вината за грешката е и негова, тъй като е трябвало да обърне внимание на добавянето на BUG_ON(). По неговите думи, разработките на Мортън се ползват с доверие, но в случая кодът явно не е бил тестван достатъчно задълбочено, преди да го получи.

Създателят на Linux възнамерява да премахне изобщо „идиотския” BUG_ON() от практиката на тестване, като същевременно припомня, че през 2002 г. лично публикува ръководство за използване на този механизъм, в което пояснява и кога не трябва да се прилага.

По думите на Торвалдс, предишната грешка в ядрото, предавана от версия на версия, е била безобидна, в сравнение със сегашната, която може да „убие” цялото Linux ядро.

Разработката на версия Linux 4.8 отне два месеца. В новото ядро са внесени над 13 хиляди промени от 1500 разработчици. Общият размер на обновлението е 41 мегабайта и то касае 11 303 файла.

Коментари по темата: „Опасен код в Linux застрашава цялото ядро”

добавете коментар...

  1. ot

    panic() or
    BUG_ON and
    WARN_ON macros,
    which will abort execution and produce diagnostic messages, a stack trace and a list of modules.

  2. ot

    The corresponding kernel macros are BUG_ON and WARN_ON. The former is for when you want to make the kernel panic and bring the system down (i.e., unrecoverable error). The latter is for when you want to log something to the kernel log (viewable via dmesg).

    As @Michael says, in the kernel, you need to validate anything that comes from userspace and just handle it, whatever it is. BUG_ON and WARN_ON are to catch bugs in your own code or problems with the hardware.

  3. LUD

    Трябва да има някой като Линус, че иначе всеки ще почне да си прави каквото иска. Ще се домъкне някой от Google/MS и ще си добави някоя вратичка в ядрото по “невнимание”….
    Въпроса е кой ще наследи Линус, че да спира доброжелателите.

  4. кико

    Невъзможно е да е истина. Поредния хейтър е този Линус Торвалдс.
    Статията цели да подкопае основите на линух.

  5. Киро

    Ами, то сега не се знае дали не е променяно и на другите версии на ядрото – 4.4.6, 4.4.23, 4.1.33 и т.н., щото за версия 4.8.0 няма лог на промените, а в другите версии има също поправка на BUG_ON от Андрю Мортън.

Коментар