freebsd-dev/sys
Hans Petter Selasky e23ae408c0 Decouple Linux files from the belonging character device right after open
in the LinuxKPI. This is done by calling finit() just before returning a magic
value of ENXIO in the "linux_dev_fdopen" function.

The Linux file structure should mimic the BSD file structure as much as
possible. This patch decouples the Linux file structure from the belonging
character device right after the "linux_dev_fdopen" function has returned.
This fixes an issue which allows a Linux file handle to exist after a
character device has been destroyed and removed from the directory index
of /dev. Only when the reference count of the BSD file handle reaches zero,
the Linux file handle is destroyed. This fixes use-after-free issues related
to accessing the Linux file structure after the character device has been
destroyed.

While at it add a missing NULL check for non-present file operation.
Calling a NULL pointer will result in a segmentation fault.

Reviewed by:	kib @
MFC after:	1 week
Sponsored by:	Mellanox Technologies
2018-01-26 10:49:02 +00:00
..
amd64 Add SPDX identifiers to linux_ptrace.c and cfumass.c. 2018-01-24 17:04:01 +00:00
arm Fix return style in RD2. Remove bogus return value from a void function 2018-01-25 18:08:56 +00:00
arm64 Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
bsm sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
cam Minimum changes for ctl to build on architectures with non-matching physical and 2018-01-26 00:58:02 +00:00
cddl MFV r328253: 8835 Speculative prefetch in ZFS not working for misaligned reads 2018-01-22 05:57:14 +00:00
compat Decouple Linux files from the belonging character device right after open 2018-01-26 10:49:02 +00:00
conf Track Ref / DeRef and Hold / Unhold that da is doing to track down 2018-01-25 21:38:30 +00:00
contrib style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
crypto Add ccp(4): experimental driver for AMD Crypto Co-Processor 2018-01-18 22:01:30 +00:00
ddb Implement 'domainset', a cpuset based NUMA policy mechanism. This allows 2018-01-12 22:48:23 +00:00
dev cxgbe(4): Accept old names of a couple of tunables. 2018-01-26 00:45:40 +00:00
dts Add a skeleton Clock Manager for RPi2/3, and use that from pwm 2018-01-22 07:10:30 +00:00
fs nfs: Remove NFSSOCKADDRALLOC, NFSSOCKADDRFREE macros 2018-01-25 22:38:39 +00:00
gdb sys/gdb: further adoption of SPDX licensing ID tags. 2017-11-27 15:16:59 +00:00
geom Refactoring of reading and writing of the UFS/FFS superblock. 2018-01-26 00:58:32 +00:00
gnu Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
i386 Use BSD-2-Clause-FreeBSD license on linux_support.s 2018-01-23 20:35:43 +00:00
isa On further testing on actual machines with this hardware, we should 2017-12-30 08:16:31 +00:00
kern Fix build for architectures where size_t is not unsigned long 2018-01-25 06:37:14 +00:00
kgssapi sys/kgssapi: general adoption of SPDX licensing ID tags. 2017-11-27 15:49:00 +00:00
libkern SPDX: fix wrong license ID tag in libkern. 2017-12-28 01:20:30 +00:00
mips Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
modules Fix LINT build. 2018-01-26 06:21:24 +00:00
net BPF: Switch to 32 bit compatible mode only when thread is 32 bit 2018-01-25 12:13:41 +00:00
net80211 net80211: sanitize input for ieee80211_output() 2017-12-30 00:40:34 +00:00
netgraph Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
netinet style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
netinet6 Do not generate illegal mbuf chains during IP fragment reassembly. Only 2018-01-24 05:09:21 +00:00
netipsec Adopt revision 1.76 and 1.77 from NetBSD: 2018-01-24 19:48:25 +00:00
netpfil When IPv6 packet is handled by O_REJECT opcode, convert ICMP code 2018-01-24 12:40:28 +00:00
netsmb Unsign some values related to allocation. 2018-01-22 02:08:10 +00:00
nfs Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
nfsclient style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
nfsserver sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
nlm Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
ofed sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
opencrypto Split crp_buf into a union. 2018-01-16 19:41:18 +00:00
powerpc PPC: Add place for NULL chars in intrnames 2018-01-26 09:38:40 +00:00
riscv Remove SFBUF_OPTIONAL_DIRECT_MAP and such hacks, replacing them across the 2018-01-19 17:46:31 +00:00
rpc Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
security Do pass removing some write-only variables from the kernel. 2017-12-25 04:48:39 +00:00
sparc64 Remove SFBUF_OPTIONAL_DIRECT_MAP and such hacks, replacing them across the 2018-01-19 17:46:31 +00:00
sys style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
teken sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
tests
tools embed_mfs: correctly test grep return value 2018-01-03 19:22:10 +00:00
ufs Refactoring of reading and writing of the UFS/FFS superblock. 2018-01-26 00:58:32 +00:00
vm Assign map->header values to avoid boundary checks. 2018-01-20 12:19:02 +00:00
x86 Unsign some values related to allocation. 2018-01-22 02:08:10 +00:00
xdr sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
xen sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
Makefile Move sys/boot to stand. Fix all references to new location 2017-11-14 23:02:19 +00:00