Hi,

On 15/06/17(Thu) 06:18, Rivo Nurges wrote:
> >Synopsis:      netlock locking against myself
> >Environment:
>         System      : OpenBSD 6.1
>         Details     : OpenBSD 6.1-current (GENERIC) #4: Mon Jun 12 12:53:00 
> MDT 2017
>                          
> dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC
> 
>         Architecture: OpenBSD.amd64
>         Machine     : amd64
> >Description:
> 2 identical machines have crashed with excatly the same traceback:
> current:

Thanks for the report, diff below should fix the problem.  Could you
confirm?

> 0xffff800021370d20:
> https://www.openbsd.org/ddb.html describes the minimum info required in bug
> reports.  Insufficient info makes it difficult to find and fix bugs.
> ddb> trace
> db_enter(ffffffff81808f7e,ffff800021370818,ffffffff81797348,10,ffff8000213707f8
> ,282) at db_enter+0x9
> panic(ffffffff81797348,ffffff007e513a00,ffffffff81966fd0,ffffffff81797400,ffff8
> 000ffffe904,2) at panic+0x102
> _rw_enter(ffffffff81966fd0,1,0,0,ffffffff819c4040,ffffffff8165c570) at 
> _rw_ente
> r+0x1e0
> solock(ffffff0056c61350,4,ffff800021370a00,ffff800021370a00,ffffffff812a3381,ff
> ff8000213709e8) at solock+0x31
> soidle(ffffff0056c61350,4,ffffffff8165c570,ffffff0056c61350,651bd208e90047,4) 
> a
> t soidle+0x1c
> timeout_run(ffffff00581e2cc0,ffffff00568cd5b8,ffffffff819c4058,0,ffffff007b336a
> c8,80) at timeout_run+0x47
> softclock(0,4,ffff800000062b00,ffff800000062b00,619850,ffff8000ffffe900) at 
> sof
> tclock+0x146
> softintr_dispatch(0,ffffffff8109033f,0,ffffffff811c6b9c,0,0) at 
> softintr_dispat
> ch+0x7f
> Xsoftclock() at Xsoftclock+0x1f


Index: kern/uipc_socket.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_socket.c,v
retrieving revision 1.186
diff -u -p -r1.186 uipc_socket.c
--- kern/uipc_socket.c  31 May 2017 08:55:10 -0000      1.186
+++ kern/uipc_socket.c  19 Jun 2017 08:22:19 -0000
@@ -1157,7 +1157,7 @@ sosplice(struct socket *so, int fd, off_
                so->so_idletv = *tv;
        else
                timerclear(&so->so_idletv);
-       timeout_set(&so->so_idleto, soidle, so);
+       timeout_set_proc(&so->so_idleto, soidle, so);
        task_set(&so->so_splicetask, sotask, so);
 
        /*

Reply via email to