Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
что может устранить race conditionА нет больше никакого race condition. Мы просто не удаляем последний буфер, в который может идти запись, только стираем накопленные там данные.
struct tty_buffer *thead;
if (tty->buf.head == NULL)
return;
if (tty->buf.head == NULL)
return;
while(tty->buf.head != tty->buf.tail) {
thead = tty->buf.head;
tty->buf.head = thead->next;
tty_buffer_free(tty, thead);
}
while(buf->head != buf->tail) {
...
}
WARN_ON(buf->head != buf->tail);
Хорошо латать дыры первым попавшимся методом или плохо? Мне кажется что плохо, сам процесс внесения изменений в ядро выглядит, как какая-то гонка, кто успел тот и внес изменения, а последствия, потом разберемся. Мне кажется, что таких исправлений в ядро попадает слишком много, что еще больше запутывает и так не простой код.
Как избежать разыменования нулевого указателя, на примере одного исправления в ядре Linux