mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
s390/qeth: try harder to get packets from RX buffer
Current code bails out when two subsequent buffer elements hold insufficient data to contain a qeth_hdr packet descriptor. This seems reasonable, but it would be legal for quirky hardware to leave a few elements empty and then present packets in a subsequent element. These packets would currently be dropped. So make sure to check all buffer elements, until we hit the LAST_ENTRY indication. Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8d68af6af6
commit
864c17c3d8
@ -5214,13 +5214,11 @@ struct sk_buff *qeth_core_get_next_skb(struct qeth_card *card,
|
||||
int use_rx_sg = 0;
|
||||
|
||||
/* qeth_hdr must not cross element boundaries */
|
||||
if (element->length < offset + sizeof(struct qeth_hdr)) {
|
||||
while (element->length < offset + sizeof(struct qeth_hdr)) {
|
||||
if (qeth_is_last_sbale(element))
|
||||
return NULL;
|
||||
element++;
|
||||
offset = 0;
|
||||
if (element->length < sizeof(struct qeth_hdr))
|
||||
return NULL;
|
||||
}
|
||||
*hdr = element->addr + offset;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user