Overlayfs in the Linux kernel and shiftfs, a non-upstream patch to the Linux kernel included in the Ubuntu 5.0 and 5.3 kernel series, both replace vma->vm_file in their mmap handlers. On error the original value is not restored, and the reference is put for the file to which vm_file points. On upstream kernels this is not an issue, as no callers dereference vm_file following after call_mmap() returns an error. However, the aufs patchs change mmap_region() to replace the fput() using a local variable with vma_fput(), which will fput() vm_file, leading to a refcount underflow.
3.11.0-12.195.13.0-19.195.15.0-100.1105.15.0-101.1115.15.0-102.1125.15.0-105.1155.15.0-106.1165.15.0-107.1175.15.0-112.1225.15.0-113.1235.15.0-116.126+67 more5.3.0-18.195.3.0-24.265.4.0-9.126.11.0-8.86.12.0-12.126.12.0-15.156.12.0-16.166.14.0-10.106.14.0-11.116.14.0-13.136.14.0-15.156.14.0-22.226.14.0-23.23+1 more4.2.0-16.194.2.0-17.214.2.0-19.234.3.0-1.104.3.0-2.114.3.0-5.164.3.0-6.174.3.0-7.184.4.0-2.166.5.0-9.96.6.0-14.146.8.0-11.116.8.0-20.206.8.0-22.226.8.0-28.286.8.0-31.316.8.0-35.356.8.0-36.366.8.0-38.38+21 more4.13.0-16.196.5.0-1008.86.6.0-1001.16.8.0-1001.16.8.0-1006.66.8.0-1008.86.8.0-1009.96.8.0-1010.106.8.0-1011.126.8.0-1012.136.8.0-1013.14+17 more4.4.0-1002.24.4.0-1001.10Exploitability
AV:LAC:LPR:HUI:NScope
S:UImpact
C:HI:HA:HCVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H