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@