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@

Reply via email to