In the Linux kernel, the following vulnerability has been resolved:
dax: make sure inodes are flushed before destroy cache
A bug can be triggered by following command
$ modprobe ndpmem && modprobe -r ndpmem
[ 10.060014] BUG daxcache (Not tainted): Objects remaining in daxcache on _kmemcacheshutdown() [ 10.060938] Slab 0x0000000085b729ac objects=9 used=1 fp=0x000000004f5ae469 flags=0x200000000010200(slab|head|node) [ 10.062433] Call Trace: [ 10.062673] dumpstacklvl+0x34/0x44 [ 10.062865] slaberr+0x90/0xd0 [ 10.063619] _kmemcacheshutdown+0x13b/0x2f0 [ 10.063848] kmemcachedestroy+0x4a/0x110 [ 10.064058] _x64sysdelete_module+0x265/0x300
This is caused by daxfsexit() not flushing inodes before destroy cache. To fix this issue, call rcu_barrier() before destroy cache.
[
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2951eaa9398415ac054b7bd80b8163b6838ead4",
"deprecated": false,
"id": "CVE-2022-49220-00847b10",
"target": {
"file": "drivers/dax/super.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"74044586533424463863695172282784805223",
"141321457061384213618071311905665784780",
"239271491418264047009806483469060048006",
"160659473578292841084025870641880068944"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f2a1e0eb70c2d954176c07d75d28742bde30e9f3",
"deprecated": false,
"id": "CVE-2022-49220-03e68cd6",
"target": {
"function": "dax_fs_exit",
"file": "drivers/dax/super.c"
},
"digest": {
"function_hash": "203188599456699957055975862082910578690",
"length": 83.0
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b786abe7c67c6ef71410c8e23292b3091d616ad1",
"deprecated": false,
"id": "CVE-2022-49220-088d783f",
"target": {
"file": "drivers/dax/super.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"74044586533424463863695172282784805223",
"141321457061384213618071311905665784780",
"239271491418264047009806483469060048006",
"160659473578292841084025870641880068944"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@770d42fff12d8595adda9025a0b92091f543e775",
"deprecated": false,
"id": "CVE-2022-49220-1f5db0f6",
"target": {
"file": "drivers/dax/super.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"74044586533424463863695172282784805223",
"141321457061384213618071311905665784780",
"239271491418264047009806483469060048006",
"160659473578292841084025870641880068944"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ec376f5c11c88c0215d173599db8449cd4196759",
"deprecated": false,
"id": "CVE-2022-49220-3dce79a2",
"target": {
"function": "dax_fs_exit",
"file": "drivers/dax/super.c"
},
"digest": {
"function_hash": "203188599456699957055975862082910578690",
"length": 83.0
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@770d42fff12d8595adda9025a0b92091f543e775",
"deprecated": false,
"id": "CVE-2022-49220-5915cabd",
"target": {
"function": "dax_fs_exit",
"file": "drivers/dax/super.c"
},
"digest": {
"function_hash": "203188599456699957055975862082910578690",
"length": 83.0
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ec376f5c11c88c0215d173599db8449cd4196759",
"deprecated": false,
"id": "CVE-2022-49220-7edba053",
"target": {
"file": "drivers/dax/super.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"74044586533424463863695172282784805223",
"141321457061384213618071311905665784780",
"239271491418264047009806483469060048006",
"160659473578292841084025870641880068944"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a7e8de822e0b1979f08767c751f6c8a9c1d4ad86",
"deprecated": false,
"id": "CVE-2022-49220-9265de46",
"target": {
"function": "dax_fs_exit",
"file": "drivers/dax/super.c"
},
"digest": {
"function_hash": "203188599456699957055975862082910578690",
"length": 83.0
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a7e8de822e0b1979f08767c751f6c8a9c1d4ad86",
"deprecated": false,
"id": "CVE-2022-49220-9d92583f",
"target": {
"file": "drivers/dax/super.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"74044586533424463863695172282784805223",
"141321457061384213618071311905665784780",
"239271491418264047009806483469060048006",
"160659473578292841084025870641880068944"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b786abe7c67c6ef71410c8e23292b3091d616ad1",
"deprecated": false,
"id": "CVE-2022-49220-a533578b",
"target": {
"function": "dax_fs_exit",
"file": "drivers/dax/super.c"
},
"digest": {
"function_hash": "203188599456699957055975862082910578690",
"length": 83.0
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f2a1e0eb70c2d954176c07d75d28742bde30e9f3",
"deprecated": false,
"id": "CVE-2022-49220-aba5496a",
"target": {
"file": "drivers/dax/super.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"74044586533424463863695172282784805223",
"141321457061384213618071311905665784780",
"239271491418264047009806483469060048006",
"160659473578292841084025870641880068944"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2951eaa9398415ac054b7bd80b8163b6838ead4",
"deprecated": false,
"id": "CVE-2022-49220-f059f67d",
"target": {
"function": "dax_fs_exit",
"file": "drivers/dax/super.c"
},
"digest": {
"function_hash": "203188599456699957055975862082910578690",
"length": 83.0
},
"signature_type": "Function"
}
]