[S390]: Fix use of skb after netif_rx

Recently, Wang Chen submitted a patch
(d30f53aeb31d453a5230f526bea592af07944564) to move a call to netif_rx(skb)
after a subsequent reference to skb, because netif_rx may call kfree_skb on
its argument. netif_rx_ni calls netif_rx, so the same problem occurs in
the files below.

I have left the updating of dev->last_rx after the calls to netif_rx_ni
because it seems time dependent, but moved the other field updates before.

This was found using the following semantic match.
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@@
expression skb, e,e1;
@@

(
netif_rx(skb);
|
netif_rx_ni(skb);
)
... when != skb = e
(
skb = e1
|
* skb
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Julia Lawall and committed by David S. Miller 9b3efc01 299f590f

+5 -5
+3 -3
drivers/s390/net/ctcmain.c
··· 478 skb->dev = pskb->dev; 479 skb->protocol = pskb->protocol; 480 pskb->ip_summed = CHECKSUM_UNNECESSARY; 481 - netif_rx_ni(skb); 482 /** 483 - * Successful rx; reset logflags 484 */ 485 ch->logflags = 0; 486 - dev->last_rx = jiffies; 487 privptr->stats.rx_packets++; 488 privptr->stats.rx_bytes += skb->len; 489 if (len > 0) { 490 skb_pull(pskb, header->length); 491 if (skb_tailroom(pskb) < LL_HEADER_LENGTH) {
··· 478 skb->dev = pskb->dev; 479 skb->protocol = pskb->protocol; 480 pskb->ip_summed = CHECKSUM_UNNECESSARY; 481 /** 482 + * reset logflags 483 */ 484 ch->logflags = 0; 485 privptr->stats.rx_packets++; 486 privptr->stats.rx_bytes += skb->len; 487 + netif_rx_ni(skb); 488 + dev->last_rx = jiffies; 489 if (len > 0) { 490 skb_pull(pskb, header->length); 491 if (skb_tailroom(pskb) < LL_HEADER_LENGTH) {
+2 -2
drivers/s390/net/netiucv.c
··· 639 skb->dev = pskb->dev; 640 skb->protocol = pskb->protocol; 641 pskb->ip_summed = CHECKSUM_UNNECESSARY; 642 /* 643 * Since receiving is always initiated from a tasklet (in iucv.c), 644 * we must use netif_rx_ni() instead of netif_rx() 645 */ 646 netif_rx_ni(skb); 647 dev->last_rx = jiffies; 648 - privptr->stats.rx_packets++; 649 - privptr->stats.rx_bytes += skb->len; 650 skb_pull(pskb, header->next); 651 skb_put(pskb, NETIUCV_HDRLEN); 652 }
··· 639 skb->dev = pskb->dev; 640 skb->protocol = pskb->protocol; 641 pskb->ip_summed = CHECKSUM_UNNECESSARY; 642 + privptr->stats.rx_packets++; 643 + privptr->stats.rx_bytes += skb->len; 644 /* 645 * Since receiving is always initiated from a tasklet (in iucv.c), 646 * we must use netif_rx_ni() instead of netif_rx() 647 */ 648 netif_rx_ni(skb); 649 dev->last_rx = jiffies; 650 skb_pull(pskb, header->next); 651 skb_put(pskb, NETIUCV_HDRLEN); 652 }