Description
In the Linux kernel, the following vulnerability has been resolved: kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). syzkaller found a memory leak in kcm_sendmsg(), and commit c821a88bd720 ("kcm: Fix memory leak in error path of kcm_sendmsg()") suppressed it by updating kcm_tx_msg(head)->last_skb if partial data is copied so that the following sendmsg() will resume from the skb. However, we cannot know how many bytes were copied when we get the error. Thus, we could mess up the MSG_MORE queue. When kcm_sendmsg() fails for SOCK_DGRAM, we should purge the queue as we do so for UDP by udp_flush_pending_frames(). Even without this change, when the error occurred, the following sendmsg() resumed from a wrong skb and the queue was messed up. However, we have yet to get such a report, and only syzkaller stumbled on it. So, this can be changed safely. Note this does not change SOCK_SEQPACKET behaviour.
Product status
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before 21b467735b0888a8daa048f83d3b9b50fdab71ce
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before d4b8f380b0a041ee6a84fdac14127d8fe1dcad7b
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before 1ce8362b4ac6b8e65fd04a22ea37ec776ee1ec5b
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before 2e18493c421428a936946c452461b8e979088f17
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before 55d2e7c1ab8eaa7b62575b8a4194132795d1f9fc
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before e5b28ce127a690f3acc49a6a342e6c9442c9edd6
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before 992b2ac783aad360b98ed9d4686e86176a20f6f1
ab7ac4eb9832e32a09f4e8042705484d2fb0aad3 (git) before a22730b1b4bf437c6bbfdeff5feddf54be4aeada
4.6
Any version before 4.6
4.14.326 (semver)
4.19.295 (semver)
5.4.257 (semver)
5.10.195 (semver)
5.15.132 (semver)
6.1.54 (semver)
6.5.4 (semver)
6.6 (original_commit_for_fix)
References
git.kernel.org/...c/21b467735b0888a8daa048f83d3b9b50fdab71ce
git.kernel.org/...c/d4b8f380b0a041ee6a84fdac14127d8fe1dcad7b
git.kernel.org/...c/1ce8362b4ac6b8e65fd04a22ea37ec776ee1ec5b
git.kernel.org/...c/2e18493c421428a936946c452461b8e979088f17
git.kernel.org/...c/55d2e7c1ab8eaa7b62575b8a4194132795d1f9fc
git.kernel.org/...c/e5b28ce127a690f3acc49a6a342e6c9442c9edd6
git.kernel.org/...c/992b2ac783aad360b98ed9d4686e86176a20f6f1
git.kernel.org/...c/a22730b1b4bf437c6bbfdeff5feddf54be4aeada