CVSROOT:        /cvs
Module name:    src
Changes by:     s...@cvs.openbsd.org    2018/01/13 08:10:02

Modified files:
        sys/arch/sparc64/dev: vldcp.c 

Log message:
In vldcp(8) fix a race between vldcpread() and vldcp_rx_intr() which
was overlooked by my previous fix.

Keep SPL at TTY in vldcpread() while manipulating the rx queue head.
Otherwise we could end up in a situation where:
1: vldcpread() reads rx_head
2: vldcpread() calls splx()
3: vldcp_rx_intr() fires, finds rx link is down, and sets rx_head = rx_tail
4: vlcdpread() resumes and sets rx_head to the value it read in step 1
-> same interrupt storm problem as described in my previous commit

ok kettenis@ mpi@

Reply via email to