In the Linux kernel, the following vulnerability has been resolved:
serial: max3100: Lock port->lock when calling uarthandlects_change()
uarthandlects_change() has to be called with port lock taken, Since we run it in a separate work, the lock may not be taken at the time of running. Make sure that it's taken by explicitly doing that. Without it we got a splat:
WARNING: CPU: 0 PID: 10 at drivers/tty/serial/serialcore.c:3491 uarthandlectschange+0xa6/0xb0 ... Workqueue: max3100-0 max3100work [max3100] RIP: 0010:uarthandlectschange+0xa6/0xb0 ... max3100handlerx+0xc5/0x110 [max3100] max3100work+0x12a/0x340 [max3100]
[ { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@865b30c8661924ee9145f442bf32cea549faa869", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "289714590835509039787602402787196345700", "308889770673865194426708849204794299682", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-62697ac0", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@93df2fba6c7dfa9a2f08546ea9a5ca4728758458", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "289714590835509039787602402787196345700", "308889770673865194426708849204794299682", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-6b0ffdcd", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@78dbda51bb4241b88a52d71620f06231a341f9ba", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "295946886155107787917355982206036992956", "97759027340405307398379290382885130401", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-6c67778d", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@77ab53371a2066fdf9b895246505f5ef5a4b5d47", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "289714590835509039787602402787196345700", "308889770673865194426708849204794299682", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-6c7cdf76", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cc121e3722a0a2c8f716ef991e5425b180a5fb94", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "295946886155107787917355982206036992956", "97759027340405307398379290382885130401", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-8fcd71b0", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8296bb9e5925b6634259c5d4daee88f0cc0884ec", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "295946886155107787917355982206036992956", "97759027340405307398379290382885130401", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-96829ff3", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ea9b35372b58ac2931bfc1d5bc25e839d1221e30", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "295946886155107787917355982206036992956", "97759027340405307398379290382885130401", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-b7e37c98", "signature_type": "Line", "signature_version": "v1" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@44b38924135d2093e2ec1812969464845dd66dc9", "deprecated": false, "digest": { "line_hashes": [ "72693391296788612189918053442320024496", "308131528069518597221547504542717429154", "295946886155107787917355982206036992956", "97759027340405307398379290382885130401", "38320440871848635922171129580049924516", "229811785549635325656657932403766276410", "208406333488909071986312047707945582379" ], "threshold": 0.9 }, "target": { "file": "drivers/tty/serial/max3100.c" }, "id": "CVE-2024-38634-bde779bf", "signature_type": "Line", "signature_version": "v1" } ]