From 01648ed66cc498fe1977835406511f0453533faa Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Mon, 12 Sep 2005 14:21:48 -0700 Subject: [PATCH] --- yaml --- r: 8699 b: refs/heads/master c: 3f2aadd041a7a3e732d182c3770b3fa95a2300b2 h: refs/heads/master i: 8697: 079352ab8279d1d1fe5bccaea4c2584ffda41f38 8695: 2d95e9a44ef0fa6ab793154c1ca6d0152c22b68a v: v3 --- [refs] | 2 +- trunk/net/netrom/nr_dev.c | 44 +++++++++++++-------------------------- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/[refs] b/[refs] index 55126f578262..04eb19573188 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6f74998e5c3b4610e6eba06babf16547369c512a +refs/heads/master: 3f2aadd041a7a3e732d182c3770b3fa95a2300b2 diff --git a/trunk/net/netrom/nr_dev.c b/trunk/net/netrom/nr_dev.c index 263da4c26494..431a25384421 100644 --- a/trunk/net/netrom/nr_dev.c +++ b/trunk/net/netrom/nr_dev.c @@ -71,15 +71,10 @@ int nr_rx_ip(struct sk_buff *skb, struct net_device *dev) static int nr_rebuild_header(struct sk_buff *skb) { - struct net_device *dev = skb->dev; - struct net_device_stats *stats = netdev_priv(dev); - struct sk_buff *skbn; unsigned char *bp = skb->data; - int len; - if (arp_find(bp + 7, skb)) { + if (arp_find(bp + 7, skb)) return 1; - } bp[6] &= ~AX25_CBIT; bp[6] &= ~AX25_EBIT; @@ -90,27 +85,7 @@ static int nr_rebuild_header(struct sk_buff *skb) bp[6] |= AX25_EBIT; bp[6] |= AX25_SSSID_SPARE; - if ((skbn = skb_clone(skb, GFP_ATOMIC)) == NULL) { - kfree_skb(skb); - return 1; - } - - if (skb->sk != NULL) - skb_set_owner_w(skbn, skb->sk); - - kfree_skb(skb); - - len = skbn->len; - - if (!nr_route_frame(skbn, NULL)) { - kfree_skb(skbn); - stats->tx_errors++; - } - - stats->tx_packets++; - stats->tx_bytes += len; - - return 1; + return 0; } #else @@ -186,8 +161,19 @@ static int nr_close(struct net_device *dev) static int nr_xmit(struct sk_buff *skb, struct net_device *dev) { struct net_device_stats *stats = netdev_priv(dev); - dev_kfree_skb(skb); - stats->tx_errors++; + unsigned int len; + + len = skb->len; + + if (!nr_route_frame(skb, NULL)) { + kfree_skb(skb); + stats->tx_errors++; + return 0; + } + + stats->tx_packets++; + stats->tx_bytes += len; + return 0; }