]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.arch/s390-02-08-qeth-panic.patch
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-02-08-qeth-panic.patch
diff --git a/src/patches/suse-2.6.27.31/patches.arch/s390-02-08-qeth-panic.patch b/src/patches/suse-2.6.27.31/patches.arch/s390-02-08-qeth-panic.patch
new file mode 100644 (file)
index 0000000..92a2ae8
--- /dev/null
@@ -0,0 +1,43 @@
+From: Gerald Schaefer <geraldsc@de.ibm.com>
+Subject: qeth: avoid skb_under_panic for malformatted inbound data
+References: bnc#434333
+
+Symptom:     kernel dump
+Problem:     malformatted inbound packets due to hardware problems
+Solution:    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>
+
+Acked-by: John Jolly <jjolly@suse.de>
+---
+
+ drivers/s390/net/qeth_l2_main.c |   13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+Index: linux-sles11/drivers/s390/net/qeth_l2_main.c
+===================================================================
+--- linux-sles11.orig/drivers/s390/net/qeth_l2_main.c
++++ linux-sles11/drivers/s390/net/qeth_l2_main.c
+@@ -453,12 +453,15 @@ static void qeth_l2_process_inbound_buff
+                       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");