In the Linux kernel, the following vulnerability has been resolved:
drm/meson: reorder driver deinit sequence to fix use-after-free bug
Unloading the driver triggers the following KASAN warning:
[ +0.006275] ============================================================= [ +0.000029] BUG: KASAN: use-after-free in _listdelentryvalid+0xe0/0x1a0 [ +0.000026] Read of size 8 at addr ffff000020c395e0 by task rmmod/2695
[ +0.000019] CPU: 5 PID: 2695 Comm: rmmod Tainted: G C O 5.19.0-rc6-lrmbkasan+ #1 [ +0.000013] Hardware name: Hardkernel ODROID-N2Plus (DT) [ +0.000008] Call trace: [ +0.000007] dumpbacktrace+0x1ec/0x280 [ +0.000013] showstack+0x24/0x80 [ +0.000008] dumpstacklvl+0x98/0xd4 [ +0.000011] printaddressdescription.constprop.0+0x80/0x520 [ +0.000011] printreport+0x128/0x260 [ +0.000007] kasanreport+0xb8/0xfc [ +0.000008] _asanreportload8noabort+0x3c/0x50 [ +0.000010] _listdelentryvalid+0xe0/0x1a0 [ +0.000009] drmatomicprivateobjfini+0x30/0x200 [drm] [ +0.000172] drmbridgedetach+0x94/0x260 [drm] [ +0.000145] drmencodercleanup+0xa4/0x290 [drm] [ +0.000144] drmmodeconfigcleanup+0x118/0x740 [drm] [ +0.000143] drmmodeconfiginitrelease+0x1c/0x2c [drm] [ +0.000144] drmmanagedrelease+0x170/0x414 [drm] [ +0.000142] drmdevput.part.0+0xc0/0x124 [drm] [ +0.000143] drmdevput+0x20/0x30 [drm] [ +0.000142] mesondrvunbind+0x1d8/0x2ac [mesondrm] [ +0.000028] takedownaggregatedevice+0xb0/0x160 [ +0.000016] componentdel+0x18c/0x360 [ +0.000009] mesondwhdmiremove+0x28/0x40 [mesondwhdmi] [ +0.000015] platformremove+0x64/0xb0 [ +0.000009] deviceremove+0xb8/0x154 [ +0.000009] devicereleasedriverinternal+0x398/0x5b0 [ +0.000009] driverdetach+0xac/0x1b0 [ +0.000009] busremovedriver+0x158/0x29c [ +0.000009] driverunregister+0x70/0xb0 [ +0.000008] platformdriverunregister+0x20/0x2c [ +0.000008] mesondwhdmiplatformdriverexit+0x1c/0x30 [mesondwhdmi] [ +0.000012] _dosysdeletemodule+0x288/0x400 [ +0.000011] _arm64sysdeletemodule+0x5c/0x80 [ +0.000009] invokesyscall+0x74/0x260 [ +0.000009] el0svccommon.constprop.0+0xcc/0x260 [ +0.000009] doel0svc+0x50/0x70 [ +0.000007] el0svc+0x68/0x1a0 [ +0.000012] el0t64synchandler+0x11c/0x150 [ +0.000008] el0t64sync+0x18c/0x190
[ +0.000018] Allocated by task 0: [ +0.000007] (stack is not available)
[ +0.000011] Freed by task 2695: [ +0.000008] kasansavestack+0x2c/0x5c [ +0.000011] kasansettrack+0x2c/0x40 [ +0.000008] kasansetfreeinfo+0x28/0x50 [ +0.000009] __kasanslabfree+0x128/0x1d4 [ +0.000008] _kasanslabfree+0x18/0x24 [ +0.000007] slabfreefreelisthook+0x108/0x230 [ +0.000011] kfree+0x110/0x35c [ +0.000008] releasenodes+0xf0/0x16c [ +0.000009] devresreleasegroup+0x180/0x270 [ +0.000008] componentunbind+0x128/0x1e0 [ +0.000010] componentunbindall+0x1b8/0x264 [ +0.000009] mesondrvunbind+0x1a0/0x2ac [mesondrm] [ +0.000025] takedownaggregatedevice+0xb0/0x160 [ +0.000009] componentdel+0x18c/0x360 [ +0.000009] mesondwhdmiremove+0x28/0x40 [mesondwhdmi] [ +0.000012] platformremove+0x64/0xb0 [ +0.000008] deviceremove+0xb8/0x154 [ +0.000009] devicereleasedriverinternal+0x398/0x5b0 [ +0.000009] driverdetach+0xac/0x1b0 [ +0.000009] busremovedriver+0x158/0x29c [ +0.000008] driverunregister+0x70/0xb0 [ +0.000008] platformdriverunregister+0x20/0x2c [ +0.000008] mesondwhdmiplatformdriverexit+0x1c/0x30 [mesondwhdmi] [ +0.000011] _dosysdeletemodule+0x288/0x400 [ +0.000010] _arm64sysdeletemodule+0x5c/0x80 [ +0.000008] invokesyscall+0x74/0x260 [ +0.000008] el0svccommon.constprop.0+0xcc/0x260 [ +0.000008] doel0svc+0x50/0x70 [ +0.000007] el0svc+0x68/0x1a0 [ +0.000009] el0t64synchandler+0x11c/0x150 [ +0.000009] el0t64sync+0x18c/0x190
[ +0.000014] The buggy address belongs to the object at ffff000020c39000 ---truncated---
[
{
"id": "CVE-2022-50378-06a3a466",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d76ff04a72f90767455059c8239b06042cd0ed23",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "meson_drv_unbind",
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"length": 549.0,
"function_hash": "321468565846713095121932932226829732433"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50378-7b0b294d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@31c519981eb141c7ec39bfd5be25d35f02edb868",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"171088211076030903996097820836888644867",
"122582886765607020453257631736040429610",
"53053085517846334025645457069285625259",
"295995019347736464020894120422580439483",
"214153455224344062379273031936891447603",
"289826888342648100952585081422566032819"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50378-9562b7af",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9190d287f7a6b02b50b510045b0edf448ed68e88",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"171088211076030903996097820836888644867",
"122582886765607020453257631736040429610",
"53053085517846334025645457069285625259",
"295995019347736464020894120422580439483",
"214153455224344062379273031936891447603",
"289826888342648100952585081422566032819"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50378-a7f585ff",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d33348513c36337f91f1991da23f41514d4de39",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "meson_drv_unbind",
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"length": 549.0,
"function_hash": "321468565846713095121932932226829732433"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50378-c3ca7904",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d76ff04a72f90767455059c8239b06042cd0ed23",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"171088211076030903996097820836888644867",
"122582886765607020453257631736040429610",
"53053085517846334025645457069285625259",
"295995019347736464020894120422580439483",
"214153455224344062379273031936891447603",
"289826888342648100952585081422566032819"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50378-cf524e9b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d33348513c36337f91f1991da23f41514d4de39",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"171088211076030903996097820836888644867",
"122582886765607020453257631736040429610",
"53053085517846334025645457069285625259",
"295995019347736464020894120422580439483",
"214153455224344062379273031936891447603",
"289826888342648100952585081422566032819"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50378-dfcf163e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9190d287f7a6b02b50b510045b0edf448ed68e88",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "meson_drv_unbind",
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"length": 549.0,
"function_hash": "321468565846713095121932932226829732433"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50378-f0e0e539",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@31c519981eb141c7ec39bfd5be25d35f02edb868",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "meson_drv_unbind",
"file": "drivers/gpu/drm/meson/meson_drv.c"
},
"digest": {
"length": 549.0,
"function_hash": "321468565846713095121932932226829732433"
},
"signature_type": "Function"
}
]