qeth: avoid skb_under_panic for malformatted inbound data
authorUrsula Braun <ursula.braun@de.ibm.com>
Fri, 24 Oct 2008 09:16:55 +0000 (11:16 +0200)
committerJeff Garzik <jgarzik@redhat.com>
Mon, 27 Oct 2008 18:49:00 +0000 (14:49 -0400)
To make the qeth driver more robust in case of malformatted inbound
packets due to hardware problems, an additional check for
OSN-card-type is added for OSN-type packets.

Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/s390/net/qeth_l2_main.c

index fdf4ffa2e71436f43b96c3b3b2eec49f3b7ff8d9..1b1e80336d2c516deffc59eff87e08b9e03706cf 100644 (file)
@@ -449,12 +449,15 @@ static void qeth_l2_process_inbound_buffer(struct qeth_card *card,
                        netif_rx(skb);
                        break;
                case QETH_HEADER_TYPE_OSN:
-                       skb_push(skb, sizeof(struct qeth_hdr));
-                       skb_copy_to_linear_data(skb, hdr,
+                       if (card->info.type == QETH_CARD_TYPE_OSN) {
+                               skb_push(skb, sizeof(struct qeth_hdr));
+                               skb_copy_to_linear_data(skb, hdr,
                                                sizeof(struct qeth_hdr));
-                       len = skb->len;
-                       card->osn_info.data_cb(skb);
-                       break;
+                               len = skb->len;
+                               card->osn_info.data_cb(skb);
+                               break;
+                       }
+                       /* else unknown */
                default:
                        dev_kfree_skb_any(skb);
                        QETH_DBF_TEXT(TRACE, 3, "inbunkno");