freebsd-skq/sys/compat
kib 855498f671 Fix linux_destroy_dev() behaviour when there are still files open from
the destroying cdev.

Currently linux_destroy_dev() waits for the reference count on the
linux cdev to drain, and each open file hold the reference.
Practically it means that linux_destroy_dev() is blocked until all
userspace processes that have the cdev open, exit.  FreeBSD devfs does
not have such problem, because device refcount only prevents freeing
of the cdev memory, and separate 'active methods' counter blocks
destroy_dev() until all threads leave the cdevsw methods.  After that,
attempts to enter cdevsw methods are refused with an error.

Implement somewhat similar mechanism for LinuxKPI cdevs.  Demote cdev
refcount to only mean a hold on the linux cdev memory.  Add sirefs
count to track both number of threads inside the cdev methods, and for
single-bit indicator that cdev is being destroyed.  In the later case,
the call is redirected to the dummy cdev.

Reviewed by:	markj
Discussed with:	hselasky
Tested by:	zeising
MFC after:	1 week
Sponsored by:	Mellanox Technologies
Differential revision:	https://reviews.freebsd.org/D18606
2018-12-30 15:46:45 +00:00
..
cloudabi Implement O_BENEATH and AT_BENEATH. 2018-10-25 22:16:34 +00:00
cloudabi32 Add helper functions to copy strings into struct image_args. 2018-11-29 21:00:56 +00:00
cloudabi64 Add helper functions to copy strings into struct image_args. 2018-11-29 21:00:56 +00:00
freebsd32 const poison the new pointer of __sysctl. 2018-12-18 12:44:38 +00:00
ia32 Remove iBCS2, part2: general kernel 2018-12-19 21:57:58 +00:00
linprocfs Fix output of linprocfs stat entry 2018-06-22 00:02:05 +00:00
linsysfs Create PCI_MATCH and pci_match_device 2018-07-07 15:25:11 +00:00
linux Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
linuxkpi/common Fix linux_destroy_dev() behaviour when there are still files open from 2018-12-30 15:46:45 +00:00
ndis Eliminate kmem_alloc_contig()'s unused arena parameter. 2018-08-20 15:57:27 +00:00
netbsd sys/compat: further adoption of SPDX licensing ID tags. 2017-11-27 15:13:23 +00:00
x86bios x86bios: use M_NOWAIT with mallocs 2018-09-13 07:04:00 +00:00