CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2020/01/08 09:45:28
Modified files:
sys/kern : kern_descrip.c kern_event.c
Log message:
Skip fdplock when freeing a file descriptor table. The lock is not
necessary because other threads cannot access the data structure.
This fixes the following lock order issue:
witness: lock order reversal:
1st 0xfffffd81d821d248 fdlock (&newfdp->fd_fd.fd_lock)
2nd 0xffff800000fe45b8 primlk (&prime_fpriv->lock)
lock order "&prime_fpriv->lock"(rwlock) -> "&newfdp->fd_fd.fd_lock"(rwlock)
first seen at:
#0 witness_checkorder+0x449
#1 rw_enter_write+0x43
#2 dma_buf_fd+0x8c
#3 drm_gem_prime_handle_to_fd+0xed
#4 drmioctl+0xdc
#5 VOP_IOCTL+0x55
#6 vn_ioctl+0x64
#7 sys_ioctl+0x2f6
#8 syscall+0x389
#9 Xsyscall+0x128
lock order "&newfdp->fd_fd.fd_lock"(rwlock) -> "&prime_fpriv->lock"(rwlock)
first seen at:
#0 witness_checkorder+0x449
#1 rw_enter_write+0x43
#2 drm_gem_object_release_handle+0x5e
#3 idr_for_each+0xee
#4 drm_gem_release+0x1f
#5 drmclose+0x144
#6 spec_close+0x213
#7 VOP_CLOSE+0x49
#8 vn_closefile+0x9b
#9 fdrop+0x8b
#10 closef+0xaf
#11 fdfree+0xd4
#12 exit1+0x1cf
#13 sys_exit+0x16
#14 syscall+0x389
#15 Xsyscall+0x128
OK mpi@