CVSROOT: /cvs Module name: src Changes by: m...@cvs.openbsd.org 2022/07/10 15:26:55
Modified files: sys/net : if.c Log message: if_detach() should wait until concurrent (*if_qstart)() interface start routines finished. Call ifq_barrier(9) just after we unlinked dying interface from the stack. >From this point it is not accessible by if_get(9) and if_unit(9), and all concurrent threads owning interface pointer finished. It also detached from pseudo drivers like bridge(4). We only could have concurrent (*if_qstart)() handlers running, so wait them and then continue destruction. Reported and tested by Hrvoje Popovski. ok bluhm@