В ядре Linux устранена следующая уязвимость:
vduse: исправлена гонка в vduse_dev_msg_sync и vduse_dev_read_iter.
В vduse_dev_msg_sync и vduse_dev_read_iter есть один случай гонки:
vduse_dev_read_iter():
блокировка (msg_lock);
dequeue_msg(send_list);
разблокировать (msg_lock);
vduse_dev_msg_sync():
wait_timeout() завершить
блокировка (msg_lock);
проверьте msg->complete — ложь
list_del (сообщение); <- двойной сбой list_del()!
Чтобы исправить эту ситуацию, мы должны убедиться, что vduse_msg находится в send_list или Recv_list.
за пределами критического раздела msg_lock.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: vduse: Fix race in vduse_dev_msg_sync and vduse_dev_read_iter There is one race case in vduse_dev_msg_sync and vduse_dev_read_iter: vduse_dev_read_iter(): lock(msg_lock); dequeue_msg(send_list); unlock(msg_lock); vduse_dev_msg_sync(): wait_timeout() finish lock(msg_lock); check msg->complete is false list_del(msg); <- double list_del() crash! To fix this case, we shall ensure vduse_msg is on send_list or recv_list outside the msg_lock critical section.