После выхода Linux 3.8-rc1 стали поступать жалобы пользователей о зависании PulseAudio при использовании нового тестового выпуска ядра. Проблема стала появляться из-за использования в ioctl uvc_* кода ошибки "-ENOENT", вместо "-EINVAL". Mauro Carvalho Chehab, мэйнтейнер подсистемы V4L2, указал на то, что проблема скорее всего является следствием ошибки в PulseAudio, так как программа не поддерживает обработку кодов ошибок, отличных от "-EINVAL". Mauro также упомянул, что непонятно зачем звуковой сервер пытается использовать V4L2 функции uvc_ctrl (USB video device), которые предназначены для иных целей (управление видеоустройством, таким как web-камера). Поэтому, по мнению Mauro, данную проблему следует решать в PulseAudio и она не является регрессивным изменением в ядре.

В ответ на подобные заявления, Линус Торвальдс в достаточно грубой форме устроил мэйнтейнеру показательную "порку", подчеркнув, что главным правилом разработки ядра является недопустимость нарушения работы компонентов на стороне пользователя. Линус упомянул, что ему отдельно поступила жалоба на нарушение работы мультимедийных компонентов KDE при использовании ядра 3.8-rc1 и он страшно недоволен тем, что патч с решением проблемы был отправлен сторонним разработчиком и он сам был вынужден внести его в ядро, в то время как ответственный за проблемный код мэйнтейнер пустился в дискуссии о том, что это не проблема ядра.

По словам Линуса, если какое-то изменение в ядре приводит к нарушению работы пользовательских приложений, то это сразу следует воспринимать как ошибку в ядре. По поводу изменения кода возврата Линус указал на то, что ошибка в коде ядра налицо, так как код ENOENT неприменим в ioctl для управления уже открытыми файлами, он ассоциируется только с манипуляцией с путями и всегда означал отсутствие искомого файла или директории.

Источник: http://www.opennet.ru/opennews/art.shtml?num=35719