X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=net%2Fnetrom%2Faf_netrom.c;h=053fa26ff90ab017a66ec1f2067b6174be0e4279;hb=eeeb03745bf9ea352df2373b9cb5fa14e60a2de0;hp=43bbe2c9e49aa48f8b8995e857945f440dc98acd;hpb=a7ec3f5289681e9d63b65db5f56857f998812b4b;p=mv-sheeva.git diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 43bbe2c9e49..053fa26ff90 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -110,7 +110,7 @@ static int nr_device_event(struct notifier_block *this, unsigned long event, voi nr_kill_by_device(dev); nr_rt_device_down(dev); - + return NOTIFY_DONE; } @@ -137,7 +137,7 @@ static struct sock *nr_find_listener(ax25_address *addr) sk_for_each(s, node, &nr_list) if (!ax25cmp(&nr_sk(s)->source_addr, addr) && s->sk_state == TCP_LISTEN) { - bh_lock_sock(s); + bh_lock_sock(s); goto found; } s = NULL; @@ -157,7 +157,7 @@ static struct sock *nr_find_socket(unsigned char index, unsigned char id) spin_lock_bh(&nr_list_lock); sk_for_each(s, node, &nr_list) { struct nr_sock *nr = nr_sk(s); - + if (nr->my_index == index && nr->my_id == id) { bh_lock_sock(s); goto found; @@ -181,10 +181,10 @@ static struct sock *nr_find_peer(unsigned char index, unsigned char id, spin_lock_bh(&nr_list_lock); sk_for_each(s, node, &nr_list) { struct nr_sock *nr = nr_sk(s); - + if (nr->your_index == index && nr->your_id == id && !ax25cmp(&nr->dest_addr, dest)) { - bh_lock_sock(s); + bh_lock_sock(s); goto found; } } @@ -341,17 +341,17 @@ static int nr_getsockopt(struct socket *sock, int level, int optname, struct sock *sk = sock->sk; struct nr_sock *nr = nr_sk(sk); int val = 0; - int len; + int len; if (level != SOL_NETROM) return -ENOPROTOOPT; - + if (get_user(len, optlen)) return -EFAULT; if (len < 0) return -EINVAL; - + switch (optname) { case NETROM_T1: val = nr->t1 / HZ; @@ -537,7 +537,7 @@ static int nr_release(struct socket *sock) break; } - sock->sk = NULL; + sock->sk = NULL; release_sock(sk); sock_put(sk); @@ -644,7 +644,7 @@ static int nr_connect(struct socket *sock, struct sockaddr *uaddr, return -EISCONN; /* No reconnect on a seqpacket socket */ } - sk->sk_state = TCP_CLOSE; + sk->sk_state = TCP_CLOSE; sock->state = SS_UNCONNECTED; if (addr_len != sizeof(struct sockaddr_ax25) && addr_len != sizeof(struct full_sockaddr_ax25)) { @@ -710,7 +710,7 @@ static int nr_connect(struct socket *sock, struct sockaddr *uaddr, release_sock(sk); return -EINPROGRESS; } - + /* * A Connect Ack with Choke or timeout or failed routing will go to * closed. @@ -848,7 +848,7 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr, int nr_rx_frame(struct sk_buff *skb, struct net_device *dev) { struct sock *sk; - struct sock *make; + struct sock *make; struct nr_sock *nr_make; ax25_address *src, *dest, *user; unsigned short circuit_index, circuit_id; @@ -878,7 +878,7 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev) if (frametype == NR_PROTOEXT && circuit_index == NR_PROTO_IP && circuit_id == NR_PROTO_IP) { skb_pull(skb, NR_NETWORK_LEN + NR_TRANSPORT_LEN); - skb->h.raw = skb->data; + skb_reset_transport_header(skb); return nr_rx_ip(skb, dev); } @@ -904,7 +904,7 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev) } if (sk != NULL) { - skb->h.raw = skb->data; + skb_reset_transport_header(skb); if (frametype == NR_CONNACK && skb->len == 22) nr_sk(sk)->bpqext = 1; @@ -1074,6 +1074,7 @@ static int nr_sendmsg(struct kiocb *iocb, struct socket *sock, goto out; skb_reserve(skb, size - len); + skb_reset_transport_header(skb); /* * Push down the NET/ROM header @@ -1094,14 +1095,12 @@ static int nr_sendmsg(struct kiocb *iocb, struct socket *sock, /* * Put the data on the end */ + skb_put(skb, len); - skb->h.raw = skb_put(skb, len); - - asmptr = skb->h.raw; SOCK_DEBUG(sk, "NET/ROM: Appending user data\n"); /* User data follows immediately after the NET/ROM transport header */ - if (memcpy_fromiovec(asmptr, msg->msg_iov, len)) { + if (memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len)) { kfree_skb(skb); err = -EFAULT; goto out; @@ -1149,7 +1148,7 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock, return er; } - skb->h.raw = skb->data; + skb_reset_transport_header(skb); copied = skb->len; if (copied > size) { @@ -1209,6 +1208,12 @@ static int nr_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) release_sock(sk); return ret; + case SIOCGSTAMPNS: + lock_sock(sk); + ret = sock_get_timestampns(sk, argp); + release_sock(sk); + return ret; + case SIOCGIFADDR: case SIOCSIFADDR: case SIOCGIFDSTADDR: @@ -1258,10 +1263,10 @@ static void *nr_info_next(struct seq_file *seq, void *v, loff_t *pos) { ++*pos; - return (v == SEQ_START_TOKEN) ? sk_head(&nr_list) + return (v == SEQ_START_TOKEN) ? sk_head(&nr_list) : sk_next((struct sock *)v); } - + static void nr_info_stop(struct seq_file *seq, void *v) { spin_unlock_bh(&nr_list_lock); @@ -1291,7 +1296,7 @@ static int nr_info_show(struct seq_file *seq, void *v) seq_printf(seq, "%-9s ", ax2asc(buf, &nr->user_addr)); seq_printf(seq, "%-9s ", ax2asc(buf, &nr->dest_addr)); - seq_printf(seq, + seq_printf(seq, "%-9s %-3s %02X/%02X %02X/%02X %2d %3d %3d %3d %3lu/%03lu %2lu/%02lu %3lu/%03lu %3lu/%03lu %2d/%02d %3d %5d %5d %ld\n", ax2asc(buf, &nr->source_addr), devname, @@ -1329,13 +1334,13 @@ static struct seq_operations nr_info_seqops = { .stop = nr_info_stop, .show = nr_info_show, }; - + static int nr_info_open(struct inode *inode, struct file *file) { return seq_open(file, &nr_info_seqops); } - -static struct file_operations nr_info_fops = { + +static const struct file_operations nr_info_fops = { .owner = THIS_MODULE, .open = nr_info_open, .read = seq_read, @@ -1415,7 +1420,7 @@ static int __init nr_proto_init(void) printk(KERN_ERR "NET/ROM: nr_proto_init - unable to allocate device structure\n"); goto fail; } - + dev->base_addr = i; if (register_netdev(dev)) { printk(KERN_ERR "NET/ROM: nr_proto_init - unable to register network device\n"); @@ -1430,7 +1435,7 @@ static int __init nr_proto_init(void) printk(KERN_ERR "NET/ROM: nr_proto_init - unable to register socket family\n"); goto fail; } - + register_netdevice_notifier(&nr_dev_notifier); ax25_register_pid(&nr_pid);