diff options
Diffstat (limited to 'net/rose')
| -rw-r--r-- | net/rose/af_rose.c | 31 | ||||
| -rw-r--r-- | net/rose/rose_dev.c | 2 | 
2 files changed, 14 insertions, 19 deletions
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index e98fcfbe600..8451c8cdc9d 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c @@ -1012,7 +1012,7 @@ int rose_rx_call_request(struct sk_buff *skb, struct net_device *dev, struct ros  	make_rose->source_call   = facilities.source_call;  	make_rose->source_ndigis = facilities.source_ndigis;  	for (n = 0 ; n < facilities.source_ndigis ; n++) -		make_rose->source_digis[n]= facilities.source_digis[n]; +		make_rose->source_digis[n] = facilities.source_digis[n];  	make_rose->neighbour     = neigh;  	make_rose->device        = dev;  	make_rose->facilities    = facilities; @@ -1041,7 +1041,7 @@ int rose_rx_call_request(struct sk_buff *skb, struct net_device *dev, struct ros  	rose_start_heartbeat(make);  	if (!sock_flag(sk, SOCK_DEAD)) -		sk->sk_data_ready(sk, skb->len); +		sk->sk_data_ready(sk);  	return 1;  } @@ -1051,7 +1051,7 @@ static int rose_sendmsg(struct kiocb *iocb, struct socket *sock,  {  	struct sock *sk = sock->sk;  	struct rose_sock *rose = rose_sk(sk); -	struct sockaddr_rose *usrose = (struct sockaddr_rose *)msg->msg_name; +	DECLARE_SOCKADDR(struct sockaddr_rose *, usrose, msg->msg_name);  	int err;  	struct full_sockaddr_rose srose;  	struct sk_buff *skb; @@ -1216,7 +1216,6 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,  {  	struct sock *sk = sock->sk;  	struct rose_sock *rose = rose_sk(sk); -	struct sockaddr_rose *srose = (struct sockaddr_rose *)msg->msg_name;  	size_t copied;  	unsigned char *asmptr;  	struct sk_buff *skb; @@ -1252,24 +1251,20 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,  	skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); -	if (srose != NULL) { -		memset(srose, 0, msg->msg_namelen); +	if (msg->msg_name) { +		struct sockaddr_rose *srose; +		DECLARE_SOCKADDR(struct full_sockaddr_rose *, full_srose, +				 msg->msg_name); + +		memset(msg->msg_name, 0, sizeof(struct full_sockaddr_rose)); +		srose = msg->msg_name;  		srose->srose_family = AF_ROSE;  		srose->srose_addr   = rose->dest_addr;  		srose->srose_call   = rose->dest_call;  		srose->srose_ndigis = rose->dest_ndigis; -		if (msg->msg_namelen >= sizeof(struct full_sockaddr_rose)) { -			struct full_sockaddr_rose *full_srose = (struct full_sockaddr_rose *)msg->msg_name; -			for (n = 0 ; n < rose->dest_ndigis ; n++) -				full_srose->srose_digis[n] = rose->dest_digis[n]; -			msg->msg_namelen = sizeof(struct full_sockaddr_rose); -		} else { -			if (rose->dest_ndigis >= 1) { -				srose->srose_ndigis = 1; -				srose->srose_digi = rose->dest_digis[0]; -			} -			msg->msg_namelen = sizeof(struct sockaddr_rose); -		} +		for (n = 0 ; n < rose->dest_ndigis ; n++) +			full_srose->srose_digis[n] = rose->dest_digis[n]; +		msg->msg_namelen = sizeof(struct full_sockaddr_rose);  	}  	skb_free_datagram(sk, skb); diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c index 28dbdb911b8..50005888be5 100644 --- a/net/rose/rose_dev.c +++ b/net/rose/rose_dev.c @@ -146,7 +146,7 @@ static netdev_tx_t rose_xmit(struct sk_buff *skb, struct net_device *dev)  static const struct header_ops rose_header_ops = {  	.create	= rose_header, -	.rebuild= rose_rebuild_header, +	.rebuild = rose_rebuild_header,  };  static const struct net_device_ops rose_netdev_ops = {  | 
