kcm: fix strp_init() order and cleanup
In the Linux kernel, the following vulnerability has been resolved: kcm: fix strp_init() order and cleanup strp_init() is called just a few lines above this csk->sk_user_data check, it also initializes strp->work etc., therefore, it is unnecessary to call strp_done() to cancel the freshly initialized work. And if sk_user_data is already used by KCM, psock->strp should not be touched, particularly strp->work state, so we need to move strp_init() after the csk->sk_user_data check. This also makes a lockdep warning reported by syzbot go away.
02 / AFFECTED SOFTWARE
Affected packages
906 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: kcm: fix strp_init() order and cleanup strp_init() is called just a few lines above this csk->sk_user_data check, it also initializes strp->work etc., therefore, it is unnecessary to call strp_done() to cancel the freshly initialized work. And if sk_user_data is already used by KCM, psock->strp should not be touched, particularly strp->work state, so we need to move strp_init() after the csk->sk_user_data check. This also makes a lockdep warning reported by syzbot go away.
05 / REFERENCES
Further evidence
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
- https://git.kernel.org/stable/c/0946ff31d1a8778787bf6708beb20f38715267cc
- https://git.kernel.org/stable/c/1b6666964ca1de93a7bf06e122bcf3616dbd33a9
- https://git.kernel.org/stable/c/473f394953216614087f4179e55cdf0cf616a13b
- https://git.kernel.org/stable/c/55fb8c3baa8071c5d533a9ad48624e44e2a04ef5
- https://git.kernel.org/stable/c/8fc29ff3910f3af08a7c40a75d436b5720efe2bf
- https://git.kernel.org/stable/c/a8a0c321319ad64a5427d6172cd9c23b4d6ca1e8
- https://git.kernel.org/stable/c/f865976baa85915c7672f351b74d5974b93215f6
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49957.json
- https://nvd.nist.gov/vuln/detail/CVE-2022-49957