• Reinette Chatre's avatar
    iwlwifi: fix potential rx buffer loss · de0bd508
    Reinette Chatre authored
    RX handling maintains a few lists that keep track of the RX buffers.
    Buffers move from one list to the other as they are used, replenished, and
    again made available for usage. In one such instance, when a buffer is used
    it enters the "rx_used" list. When buffers are replenished an skb is
    attached to the buffer and it is moved to the "rx_free" list. The problem
    here is that the buffer is first removed from the "rx_used" list _before_ the
    skb is allocated. Thus, if the skb allocation fails this buffer remains
    removed from the "rx_used" list and is thus lost for future usage.
    
    Fix this by first allocating the skb before trying to attach it to a list.
    We add an additional check to not do this unnecessarily.
    Reported-by: default avatarRick Farrington <rickdic@hotmail.com>
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    de0bd508
iwl-rx.c 33.6 KB