1. 22 6月, 2021 39 次提交
  2. 19 6月, 2021 1 次提交
    • Í
      rtl8xxxu: avoid parsing short RX packet · adf6a0f8
      Íñigo Huguet 提交于
      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: NÍñigo Huguet <ihuguet@redhat.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20210511071926.8951-1-ihuguet@redhat.com
      adf6a0f8