The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Опубликованы ядра Linux 4.4.256 и 4.9.256 для тестирования переполнения 8-битового номера версии

06.02.2021 20:42

Грег Кроа-Хартман (Greg Kroah-Hartman) опубликовал выпуски ядра Linux 4.4.256 и 4.9.256, которые сформированы специально для проверки корректности обработки составных частей номера версии, не укладывающихся в однобайтовое значение. Изменения в опубликованных выпусках ограничиваются только увеличением номера версии в Makefile для того, чтобы проверить, не возникнет ли проблем в пространстве пользователя.

Изначально под счётчик номера версии в ядре было выделено 8-битовое значение, что делает вызов макроса KERNEL_VERSION(4, 4, 256) эквивалентным KERNEL_VERSION(4, 5, 0). Значение макроса KERNEL_VERSION, вычисляемого как "(((a) << 16) + ((b) << 8) + (c))", экспортируется в пространство пользователя в форме константы LINUX_VERSION_CODE, которая используется при проверке текущей версии ядра. Для ядра подобное переполнение не вызывает проблем, но значение LINUX_VERSION_CODE проверяется и некоторыми компонентами в пространстве пользователя, такими как GCC и Glibc, что потенциально может привести к непредсказуемым проблемам.

Изначально разработчики ядра планировали перейти на 16-разрядный счётчик вместо 8-разрядного, но это оказалось невозможным так как константа LINUX_VERSION_CODE, вычисляемая с использованием 8-битного значения, экспортируется в пространство пользователя и замена типа приведёт к нарушению ABI. Поэтому решено оставить переполнение и посмотреть, как это отразится на пространстве пользователя. Разработчикам дистрибутивов предлагается сформировать тестовые сборки для проверки появления возможных проблем в пространстве пользователя при полной пересборке.

  1. Главная ссылка к новости (http://kroah.com/log/blog/2021...)
  2. OpenNews: Срок поддержки LTS-ядер Linux 5.4 и 4.19 увеличен до шести лет
  3. OpenNews: Грег Кроа-Хартман перешёл на использование Arch Linux
  4. OpenNews: Предложение по обсуждению вопроса добавления в ядро Linux средств для разработки на языке Rust
  5. OpenNews: В состав ядра Linux 5.8 приняты рекомендации по инклюзивной терминологии
  6. OpenNews: Ядро Linux 5.10 отнесено к категории выпусков с длительным сроком поддержки
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/54544-kernel
Ключевые слова: kernel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (66) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 20:54, 06/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    а просто строку сразу было сделать не судьба? на бедных хомах будут тестить
     
     
  • 2.6, Аноним (6), 21:03, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В макросне в Си и крестах не проверишь строку на больше-меньше.

    Но вообще изначально надо было как-то более разумно использовать эту константу. Например major << 20 | minor << 10 | patch. 1024 хватило бы на патч и минор и 4096 на "будущее" линукса.

     
     
  • 3.8, Аноним (8), 21:26, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > major << 20

    Firefox и Chrome недоумевают над вами.

     
     
  • 4.14, Онаним (?), 22:46, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    "Этот ваш мажор вообще минор какой-то" (с)
     
  • 4.15, SchuHard (ok), 22:46, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Firefox и Chrome своими версиями за 2^7 не перевалили. Здесь же предлагается 2^14 на major, и по 2^10 на minor и patch. Для 32 битного беззнакового целого.
     
     
  • 5.27, Аноним (27), 03:27, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Firefox и Chrome своими версиями за 2^7 не перевалили. Здесь же предлагается
    > 2^14 на major, и по 2^10 на minor и patch. Для
    > 32 битного беззнакового целого.

    4 миллиарда версий линукскернела не хватит всем? :) Блин, надо было uint128 делать.


     
     
  • 6.34, Lex (??), 10:21, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Строку надо делать и не париться с длиной

    Это из разряда измышлений отдельных гениев - в качестве чего же представлять вводимый номер телефона - большое число или всё-таки строка

     
  • 6.50, iChillik (?), 11:36, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Где-то, кто-то, что-то похожее уже говорил..
    Уже было в Симпсонах?
     
  • 3.9, Аноним (-), 21:27, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Строку не проверишь, но число, как в версии - таки можно. У них там для этого макрос есть, внезапно. Проверяет любой compile-time кондишн на трушность и валит билд если не прокатило. С ограничением что условие вычисляемo compile-time, конечно, но версия же и задается compile time.
     
     
  • 4.29, ыы (?), 09:43, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Строку не проверишь, но число, как в версии - таки можно.

    а perl такие конвертации делает автоматически...

     
     
  • 5.62, Александр (??), 01:56, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ожидаем ядро на perl'е. Обзовём pernux
     
  • 4.37, Lex (??), 11:38, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Строку не проверишь, но число, как в версии - таки можно.

    Дык это косяк именно проверялки, что нунешмогла.
    Даже в штуках типа жс на уровне встроенных возможностей если одно из сравниваемых значений - строка, а второе - число, то и строка приводится к числу( т.е "2" > 10 - false ), если оба значения - строки, то сравнение посимвольное( т.е "2" > "10" - true, поскольку первый символ первого значения больше первого символа второго значения )

     
     
  • 5.70, Аноним (-), 03:06, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У макросов есть один офигенный плюс, непонятный вебмакакам Макрос не генерит ко... большой текст свёрнут, показать
     
  • 3.25, Аноньимъ (ok), 03:02, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    О дивный сишный мир.
     
     
  • 4.39, ИмяХ (?), 11:45, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Действительно. Если бы ядро писали на джаваскрипте, то такой проблемы бы не было.
     
     
  • 5.46, Аноньимъ (ok), 22:51, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну и фантазии у вас.

    Я уверен в си можно использовать строки парсить их приводить типы спользовать интежер вместо байта и в принципе проверять математические операции на переполнение.

    Однако видимо для большинства сишников это слишком сложно. Тяп ляп байтовая константа и в продакшен.
    Дивный сишный мир.

     
     
  • 6.63, Александр (??), 01:57, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, и всё это в compile time на макросах...
     
     
  • 7.66, Аноньимъ (ok), 03:10, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Ага, и всё это в compile time на макросах...

    Да, это вообще шиза.

     
     
  • 8.71, Аноним (-), 03:08, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Эта шиза однако ж делает сишников эффективными Там где у вас куча compile time ... текст свёрнут, показать
     
     
  • 9.73, Аноньимъ (ok), 10:20, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Они и остальной код так пишут Эффективные как эффективные менеджеры ... текст свёрнут, показать
     
  • 6.69, Аноним (-), 03:01, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >  Тяп ляп байтовая константа и в продакшен.

    Байтовую константу как-то в цать раз быстрее в рантайме парсить нежели строки. А тяп-ляп в продакш как раз яваскриптеры умеют, с их невменяемыми форматами данных. Которые типа-читаемы, особенно как тот wtf.min.js, где можно поспорить на тему отладки этого или вон того крахдампа, в последнем по крайней мере названия функций читаются, если у меня .dbg версия есть.

     
     
  • 7.74, Аноньимъ (ok), 10:27, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Парсить байтовую константу?

    Понятно что забить на любые проверки и просто *доверять* входным данным легко быстро и просто.

     
  • 2.19, Неа (?), 01:25, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Богомерзкий яваскриптист детектед.
     
     
  • 3.21, Аноним (-), 02:15, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Богомерзкий яваскриптист детектед.

    Напишет такой кернел - и будет чесать репу, почему он только 20% от линуха по скорости выжимает. Так то вебмакачить можно даже на асме.

     
     
  • 4.56, Какаянахренразница (ok), 16:30, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Джаваскрипачу, который выжмет 20% от производительности нативного кода, надо ставить памятник.
     
     
  • 5.64, Александр (??), 01:58, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    asm.js какой-нибудь?
     
     
  • 6.67, Какаянахренразница (ok), 13:01, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > asm.js какой-нибудь?

    Да, Фабрис Беллар безусловно заслужил памятник.

     
  • 5.68, Анонит (?), 02:59, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так он так на сях и асме. Сделает версию строкой и удивится что даже это тормозит. То ли еще будет когда он работу с временем кодить пойдет. Да, таки зырить на часы не всегда быстро даже у нормальных, а у таких...
     

  • 1.2, anonymous (??), 20:55, 06/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Надо быть модными
    Что бы версси были как у хрома
    Жду ядро 519
     
     
  • 2.3, Аноним (1), 20:57, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    жди, а вот меня лично бесит такая версионность, ибо не люблю слово смузи
     
     
  • 3.10, Аноним (8), 21:27, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +8 +/
    less 487 (GNU regular expressions)
    Copyright (C) 1984-2016  Mark Nudelman
     
     
  • 4.11, Аноним (11), 22:18, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Какой-то старевший у вас лесс:

    $ less --version
    less 563 (PCRE regular expressions)
    Copyright (C) 1984-2020  Mark Nudelman

     
     
  • 5.28, КО (?), 05:19, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он просто ленивый, 0.563 версия
     
  • 3.12, Аноним (12), 22:42, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Давно это server стал синонимом смузи?
     
     
  • 4.13, Аноним (12), 22:42, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    *semver
     
     
  • 5.43, Michael Shigorin (ok), 13:20, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А где на http://semver.org можно почитать, что 519 -- это тоже semver?
     
     
  • 6.45, Аноним (12), 18:52, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Chromiun меняет major релиз из-за изменений в API/ABI движков v8 и/или blink. Но ведь в комментарии проще язвить, чем попытаться вникнуть в разработку такого гигантского проекта, как Chromiun.
     
     
  • 7.47, Олег (??), 23:03, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Chromiun меняет major релиз из-за изменений в API/ABI движков v8 и/или blink.

    Дальше что? Это всего лишь его компоненты. Они могут менять в этом случае мажор и должны. Т.к. для их пользователя ситуация меняется кардинально. А браузер менять с хера должен? Что такого с для его пользователя изменилось кардинально?

     
     
  • 8.49, Аноним (12), 10:04, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Версия браузера всегда синхронизована с версией V8 Зачем вообще пользователю см... текст свёрнут, показать
     
  • 2.18, анонн (ok), 00:45, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Надо быть модными
    > Что бы версси были как у хрома
    > Жду ядро 519

    grep _version /usr/include/sys/param.h
    #define __FreeBSD_version 1202505 /* Master, propagated to newvers */


     
  • 2.61, бедный буратино (ok), 01:43, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    не знаю, как у хрома, а у хромиума версии вот такие:

    88.0.4324.146

    лучше бы он был просто 519

     
  • 2.65, Александр (??), 02:28, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У TeX моднее: цифры числа пи
     

  • 1.7, Аноним (-), 21:11, 06/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Надо было 256.256.256 сразу выпускать.
     
     
  • 2.17, Аноним (17), 23:38, 06/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем? Ты не доживёшь.
     
     
  • 3.23, Аноним (-), 02:22, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Зачем? Ты не доживёшь.

    Да так то у меня летающий Делореан есть...



    $ uname -a
    Linux Linux 256.256.256 Linux Linux GNU/Linux



    ...вроде живет по минимуму, но весь софт я не проверял, пардон :)

     
     
  • 4.24, Аноним (24), 02:32, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Верни мне мой альманах!
     
  • 4.31, kusb (?), 09:53, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    AppleLinux/525.13 (like Linuxware/44 like MicroTux/199 like linux 255.255.255.254) Systemd/0.2.149.27 System-unity-environment/137 Chrome-msedge/100k)
     
     
  • 5.72, Аноним (-), 03:15, 12/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > like linux 255.255.255.254

    Т.е. 256 оно все же не потянуло? :)

     

  • 1.16, Аноним (16), 23:14, 06/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо переходить на безверсионный роллинг без удаления старого кода
     
     
  • 2.20, Аноним (20), 01:28, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > без удаления старого кода

    расскажи это потерингам.

     

  • 1.26, Ordu (ok), 03:23, 07/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    8 бит на номер версии будет достаточно всем.
     
     
  • 2.30, ыы (?), 09:45, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >8 бит на номер версии

    Оптимизация на уровне кретинизма...

     
     
  • 3.36, Ordu (ok), 11:27, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >>8 бит на номер версии
    > Оптимизация на уровне кретинизма...

    Угу. ыы не кретин, и таких ошибок проектирования никогда не совершал в своей жизни.

     
     
  • 4.38, Lex (??), 11:44, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    5 байт для номера телефона хватит всем с огромным запасом ящетаю( 9 999 999 99 99 = 0x 17 48 76 E7 FF )
    Оптимизация - великий мастер уровня линуксового ядрописателя
     
  • 4.41, ыы (?), 12:43, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вот и появилось поколение для которых быть не кретином- нечто недостижимое :)
     
     
  • 5.44, Ordu (ok), 13:20, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Вот и появилось поколение для которых быть не кретином- нечто недостижимое :)

    Да, я вижу. Как так случилось, что всё оно собралось на опеннете, мне не ясно.

     

  • 1.32, ыы (?), 09:59, 07/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > константа LINUX_VERSION_CODE ... замена типа приведёт к нарушению ABI.

    Прям #СпасемАБИ ...

     
  • 1.33, Аноним (33), 10:15, 07/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гениальное решение. Сделать заведомо переполнение и потом искать по всем прикладным программам мира и искать в них что же сломалось. Причём могло сломаться что угодно и где угодно.
     
     
  • 2.35, ыы (?), 10:31, 07/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Причем тестирование пройдет не у всех - не все станут исступленно ставить себе эти ядра и гонять на них все....во всех режимах...

     

  • 1.48, PnD (??), 09:39, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чего там тестировать? Примерно любой драйвер "железа" от вендора с такой ∞́нёй не соберётся. Недавно проверял на примере ixgbe от Intel.
    Там в старом кастомном ядре случилось #define UTS_UBUNTU_RELEASE_ABI много_цифер.
    """
    /root/ixgbe-5.9.4/src/kcompat.h:817:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large...
    #error UTS_UBUNTU_RELEASE_ABI is too large...
    """

    Потому что
    """
    #if UTS_UBUNTU_RELEASE_ABI > 255
    #error UTS_UBUNTU_RELEASE_ABI is too large...
    #endif /* UTS_UBUNTU_RELEASE_ABI > 255 */
    """

    …И я тут с Интелом согласен. "Написано в доке что там байт (который 8 бит) — так и будем с ним работать. И даже проверим."

     
     
  • 2.52, Michael Shigorin (ok), 13:04, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А я вот не понял -- Грегу обязательно было буянить в LTS, а не на какой-нить короткоживущей ветке?
     
     
  • 3.53, Онаним (?), 13:52, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У короткоживущих веток такой проблемы нет.
     
  • 3.59, Аноним (59), 21:49, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Причем мог бы и локально, на QEMU потренироваться то. Как маленький он, ей богу. Вот работает - не трогай.
     

  • 1.54, ИмяХ (?), 13:54, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот бы всех умников посадить в машину времени и отправить в 80-е, вот там бы они поняли, что такое ограничение архитектуры и что такое, когда мало памяти. Там бы они научились каждый бит экономить.
     
  • 1.55, Аноним (-), 15:18, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ха-ха. То есть LTS заканчивается на 256 ! Не надо так частить. Вы не в церкви - вас не обманут.
    Может сделают как в pfSense - p1, p2.
    А что будет если Верховный Пингвин узнает, да как разозлится. Ой жесть, им цифирек было жалко, оптимизаторы. Прям как у нас в стране России - наоптимизируют всё вокруг, аж п#$дец трясется.
     
  • 1.57, Аноним (57), 19:54, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    64-битное ядро с 32-битными целыми с 16-битными портами tcp/udp с 8-битным номером версии, я ничего не перепутал?)
     
     
  • 2.58, Аноним (59), 21:47, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Адреса IPv4 тоже 32 бита занимают.
    Звук как правило 16 бит, но есть и 24 бита.
    Вывод на моник 24 бита, LCD больше не тянет. А ЭЛТ мониторы сейчас уже и не найти.
     

  • 1.60, Аноним (59), 21:53, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Таки ви мне не поверите, я всекда так и считал. Первые четире битика - мантиса чельночисленная, вторая таки часть из четырех битиков - степень. И ми имеем в итоге кошерных 1,844674407×10¹⁹ вариантов.
    Линус с тебя 16^16 шакелей.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    A-Real
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру