Как не устаёт повторять создатель Linux, соль этой операционной системы скрыта в её ядре. Linux Kernel или, как его называют бывалые пользователи, просто Ядро, это тридцатимегабайтный файл, содержащий исходные тексты десятков драйверов и компонент, которые жизненно необходимы для работы вашей операционной системы. С того самого момента, как осенью 1991-го на свет родилась первая версия линуксового ядра, вот уже почти полтора десятка лет оно претерпевает непрерывную эволюцию. Тысячи хакеров со всего света ежедневно корректируют ядерный код, исправляя ошибки и добавляя новые функции. Руководит работами по сей день лично Линус Торвальдс, который и даёт финальную отмашку на выпуск каждой новой версии - примерно раз в два месяца.
Если на вашем компьютере установлена и работает Linux, значит вы используете и линуксовое ядро, наверняка не самой последней версии. Для чего и стоит ли вообще обновлять Ядро? Спору нет, большинство новых прикладных программ успешно будут работать и с Ядрами старых версий. Однако, новые ядра - это всегда новые системные функции, более производительная и "мягкая" работа системы, исправленные ошибки. Овчинка, несомненно, стоит выделки: апгрейд Ядра хотя бы раз в год поможет вашему компьютеру раскрыть новые сильные стороны.
Fix SMP ordering hole in fcntl_setlk() (CVE-2008-1669)
Commit 0b2bac2f1ea0d33a3621b27ca68b9ae760fca2e9 upstream.
Ffcntl_setlk()/close() race prevention has a subtle hole - we need to
make sure that if we *do* have an fcntl/close race on SMP box, the
access to descriptor table and inode->i_flock won't get reordered.
As it is, we get STORE inode->i_flock, LOAD descriptor table entry vs.
STORE descriptor table entry, LOAD inode->i_flock with not a single
lock in common on both sides. We do have BKL around the first STORE,
but check in locks_remove_posix() is outside of BKL and for a good
reason - we don't want BKL on common path of close(2).
Solution is to hold ->file_lock around fcheck() in there; that orders
us wrt removal from descriptor table that preceded locks_remove_posix()
on close path and we either come first (in which case eviction will be
handled by the close side) or we'll see the effect of close and do
eviction ourselves. Note that even though it's read-only access,
we do need ->file_lock here - rcu_read_lock() won't be enough to
order the things.
http://kernel.org/