Description
In the Linux kernel, the following vulnerability has been resolved: wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg() syzbot is reporting uninit value at ath9k_htc_rx_msg() [1], for ioctl(USB_RAW_IOCTL_EP_WRITE) can call ath9k_hif_usb_rx_stream() with pkt_len = 0 but ath9k_hif_usb_rx_stream() uses __dev_alloc_skb(pkt_len + 32, GFP_ATOMIC) based on an assumption that pkt_len is valid. As a result, ath9k_hif_usb_rx_stream() allocates skb with uninitialized memory and ath9k_htc_rx_msg() is reading from uninitialized memory. Since bytes accessed by ath9k_htc_rx_msg() is not known until ath9k_htc_rx_msg() is called, it would be difficult to check minimal valid pkt_len at "if (pkt_len > 2 * MAX_RX_BUF_SIZE) {" line in ath9k_hif_usb_rx_stream(). We have two choices. One is to workaround by adding __GFP_ZERO so that ath9k_htc_rx_msg() sees 0 if pkt_len is invalid. The other is to let ath9k_htc_rx_msg() validate pkt_len before accessing. This patch chose the latter. Note that I'm not sure threshold condition is correct, for I can't find details on possible packet length used by this protocol.
Product status
fb9987d0f748c983bb795a86f47522313f701a08 (git) before f3d2a3b7e290d0bdbddfcee5a6c3d922e2b7e02a
fb9987d0f748c983bb795a86f47522313f701a08 (git) before 84242f15f911f34aec9b22f99d1e9bff19723dbe
fb9987d0f748c983bb795a86f47522313f701a08 (git) before 2c485f4f2a64258acc5228e78ffb828c68d9e770
fb9987d0f748c983bb795a86f47522313f701a08 (git) before 9661724f6206bd606ecf13acada676a9975d230b
fb9987d0f748c983bb795a86f47522313f701a08 (git) before b1b4144508adfc585e43856b31baaf9008a3beb4
fb9987d0f748c983bb795a86f47522313f701a08 (git) before 0d2649b288b7b9484e3d4380c0d6c4720a17e473
fb9987d0f748c983bb795a86f47522313f701a08 (git) before 4891a50f5ed8bfcb8f2a4b816b0676f398687783
fb9987d0f748c983bb795a86f47522313f701a08 (git) before b383e8abed41cc6ff1a3b34de75df9397fa4878c
2.6.35
Any version before 2.6.35
4.14.296 (semver)
4.19.262 (semver)
5.4.220 (semver)
5.10.150 (semver)
5.15.75 (semver)
5.19.17 (semver)
6.0.3 (semver)
6.1 (original_commit_for_fix)
References
git.kernel.org/...c/f3d2a3b7e290d0bdbddfcee5a6c3d922e2b7e02a
git.kernel.org/...c/84242f15f911f34aec9b22f99d1e9bff19723dbe
git.kernel.org/...c/2c485f4f2a64258acc5228e78ffb828c68d9e770
git.kernel.org/...c/9661724f6206bd606ecf13acada676a9975d230b
git.kernel.org/...c/b1b4144508adfc585e43856b31baaf9008a3beb4
git.kernel.org/...c/0d2649b288b7b9484e3d4380c0d6c4720a17e473
git.kernel.org/...c/4891a50f5ed8bfcb8f2a4b816b0676f398687783
git.kernel.org/...c/b383e8abed41cc6ff1a3b34de75df9397fa4878c