projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq
[powerpc.git]
/
net
/
ax25
/
ax25_in.c
diff --git
a/net/ax25/ax25_in.c
b/net/ax25/ax25_in.c
index
e9d9429
..
3b7d172
100644
(file)
--- a/
net/ax25/ax25_in.c
+++ b/
net/ax25/ax25_in.c
@@
-14,7
+14,6
@@
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/kernel.h>
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/kernel.h>
-#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
#include <linux/sockios.h>
#include <linux/timer.h>
#include <linux/string.h>
#include <linux/sockios.h>
@@
-62,12
+61,14
@@
static int ax25_rx_fragment(ax25_cb *ax25, struct sk_buff *skb)
skb_reserve(skbn, AX25_MAX_HEADER_LEN);
skbn->dev = ax25->ax25_dev->dev;
skb_reserve(skbn, AX25_MAX_HEADER_LEN);
skbn->dev = ax25->ax25_dev->dev;
- skb
n->h.raw = skbn->data
;
- skb
n->nh.raw = skbn->data
;
+ skb
_reset_network_header(skbn)
;
+ skb
_reset_transport_header(skbn)
;
/* Copy data from the fragments */
while ((skbo = skb_dequeue(&ax25->frag_queue)) != NULL) {
/* Copy data from the fragments */
while ((skbo = skb_dequeue(&ax25->frag_queue)) != NULL) {
- memcpy(skb_put(skbn, skbo->len), skbo->data, skbo->len);
+ skb_copy_from_linear_data(skbo,
+ skb_put(skbn, skbo->len),
+ skbo->len);
kfree_skb(skbo);
}
kfree_skb(skbo);
}
@@
-123,8
+124,8
@@
int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb)
}
skb_pull(skb, 1); /* Remove PID */
}
skb_pull(skb, 1); /* Remove PID */
- skb
->mac.raw = skb->nh.raw
;
- skb
->nh.raw = skb->data
;
+ skb
_reset_mac_header(skb)
;
+ skb
_reset_network_header(skb)
;
skb->dev = ax25->ax25_dev->dev;
skb->pkt_type = PACKET_HOST;
skb->protocol = htons(ETH_P_IP);
skb->dev = ax25->ax25_dev->dev;
skb->pkt_type = PACKET_HOST;
skb->protocol = htons(ETH_P_IP);
@@
-197,7
+198,7
@@
static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
* Process the AX.25/LAPB frame.
*/
* Process the AX.25/LAPB frame.
*/
- skb
->h.raw = skb->data
;
+ skb
_reset_transport_header(skb)
;
if ((ax25_dev = ax25_dev_ax25dev(dev)) == NULL) {
kfree_skb(skb);
if ((ax25_dev = ax25_dev_ax25dev(dev)) == NULL) {
kfree_skb(skb);
@@
-234,7
+235,7
@@
static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
/* UI frame - bypass LAPB processing */
if ((*skb->data & ~0x10) == AX25_UI && dp.lastrepeat + 1 == dp.ndigi) {
/* UI frame - bypass LAPB processing */
if ((*skb->data & ~0x10) == AX25_UI && dp.lastrepeat + 1 == dp.ndigi) {
- skb
->h.raw = skb->data + 2;
/* skip control and pid */
+ skb
_set_transport_header(skb, 2);
/* skip control and pid */
ax25_send_to_raw(&dest, skb, skb->data[1]);
ax25_send_to_raw(&dest, skb, skb->data[1]);
@@
-247,8
+248,8
@@
static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
switch (skb->data[1]) {
case AX25_P_IP:
skb_pull(skb,2); /* drop PID/CTRL */
switch (skb->data[1]) {
case AX25_P_IP:
skb_pull(skb,2); /* drop PID/CTRL */
- skb
->h.raw = skb->data
;
- skb
->nh.raw = skb->data
;
+ skb
_reset_transport_header(skb)
;
+ skb
_reset_network_header(skb)
;
skb->dev = dev;
skb->pkt_type = PACKET_HOST;
skb->protocol = htons(ETH_P_IP);
skb->dev = dev;
skb->pkt_type = PACKET_HOST;
skb->protocol = htons(ETH_P_IP);
@@
-257,8
+258,8
@@
static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
case AX25_P_ARP:
skb_pull(skb,2);
case AX25_P_ARP:
skb_pull(skb,2);
- skb
->h.raw = skb->data
;
- skb
->nh.raw = skb->data
;
+ skb
_reset_transport_header(skb)
;
+ skb
_reset_network_header(skb)
;
skb->dev = dev;
skb->pkt_type = PACKET_HOST;
skb->protocol = htons(ETH_P_ARP);
skb->dev = dev;
skb->pkt_type = PACKET_HOST;
skb->protocol = htons(ETH_P_ARP);
@@
-450,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?! */
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;
if ((*skb->data & 0x0F) != 0) {
kfree_skb(skb); /* Not a KISS data frame */
return 0;