X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fax25%2Fax25_in.c;h=d1be080dcb25c242d9af620470f20bd3cf8de307;hb=ac7c5353b189e10cf5dd27399f64f7b013abffc6;hp=0ddaff0df217d37e58c0e920f0c401e4dde330cb;hpb=c58b8e4a25a1ba347a0e5d21984c97bd296f1691;p=~andy%2Flinux diff --git a/net/ax25/ax25_in.c b/net/ax25/ax25_in.c index 0ddaff0df21..d1be080dcb2 100644 --- a/net/ax25/ax25_in.c +++ b/net/ax25/ax25_in.c @@ -124,7 +124,7 @@ int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb) } skb_pull(skb, 1); /* Remove PID */ - skb_reset_mac_header(skb); + skb->mac_header = skb->network_header; skb_reset_network_header(skb); skb->dev = ax25->ax25_dev->dev; skb->pkt_type = PACKET_HOST; @@ -451,6 +451,11 @@ int ax25_kiss_rcv(struct sk_buff *skb, struct net_device *dev, skb->sk = NULL; /* Initially we don't know who it's for */ skb->destructor = NULL; /* Who initializes this, dammit?! */ + if (dev->nd_net != &init_net) { + kfree_skb(skb); + return 0; + } + if ((*skb->data & 0x0F) != 0) { kfree_skb(skb); /* Not a KISS data frame */ return 0;