Since commit 
f677fcb9aeb6 ("s390/qeth: ensure linear access to packet headers"),
the CQ-specific skbs are allocated with a slightly bigger linear part
than necessary. Shrink it down to the maximum that's needed by
qeth_extract_skb().
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 
 
 /* large receive scatter gather copy break */
 #define QETH_RX_SG_CB (PAGE_SIZE >> 1)
-#define QETH_RX_PULL_LEN 256
 
 struct qeth_hdr_layer3 {
        __u8  id;
 
 
        if ((card->options.cq == QETH_CQ_ENABLED) && (!buf->rx_skb)) {
                buf->rx_skb = netdev_alloc_skb(card->dev,
-                                              QETH_RX_PULL_LEN + ETH_HLEN);
+                                              ETH_HLEN +
+                                              sizeof(struct ipv6hdr));
                if (!buf->rx_skb)
                        return 1;
        }
 
        if (use_rx_sg) {
                /* QETH_CQ_ENABLED only: */
-               if (qethbuffer->rx_skb) {
+               if (qethbuffer->rx_skb &&
+                   skb_tailroom(qethbuffer->rx_skb) >= linear_len + headroom) {
                        skb = qethbuffer->rx_skb;
                        qethbuffer->rx_skb = NULL;
                        goto use_skb;