summaryrefslogtreecommitdiff
path: root/drivers/acpi/sbshc.c
diff options
context:
space:
mode:
authorÍñigo Huguet <ihuguet@redhat.com>2021-05-11 09:19:27 +0200
committerKalle Valo <kvalo@codeaurora.org>2021-06-19 12:06:09 +0300
commitadf6a0f8c0a656df3d29403f314bf3e0dbb2dd77 (patch)
tree6227b31ef87c334be12ae84ed1100cf861d6e5fb /drivers/acpi/sbshc.c
parentc240b044edefa3c3af4014a4030e017dd95b59a1 (diff)
rtl8xxxu: avoid parsing short RX packet
One USB data buffer can contain multiple received network packets. If that's the case, they're processed this way: 1. Original buffer is cloned 2. Original buffer is trimmed to contain only the first network packet 3. This first network packet is passed to network stack 4. Cloned buffer is trimmed to eliminate the first network packet 5. Repeat with the cloned buffer until there are no more network packets inside However, if the space remaining in original buffer after the first network packet is not enough to contain at least another network packet descriptor, it is not cloned. The loop parsing this packets ended if remaining space == 0. But if the remaining space was > 0 but < packet descriptor size, another iteration of the loop was done, processing again the previous packet because cloning didn't happen. Moreover, the ownership of this packet had been passed to network stack in the previous iteration. This patch ensures that no extra iteration is done if the remaining size is not enough for one packet, and also avoid the first iteration for the same reason. Probably this doesn't happen in practice, but can happen theoretically. Signed-off-by: Íñigo Huguet <ihuguet@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20210511071926.8951-1-ihuguet@redhat.com
Diffstat (limited to 'drivers/acpi/sbshc.c')
0 files changed, 0 insertions, 0 deletions