aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/tipc/bearer.c3
-rw-r--r--net/tipc/core.c33
-rw-r--r--net/tipc/link.c16
-rw-r--r--net/tipc/socket.c36
4 files changed, 56 insertions, 32 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index 040f3ed32ec8..e9136f0abe60 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -251,7 +251,8 @@ static int bearer_name_validate(const char *name,
251 /* ensure all component parts of bearer name are present */ 251 /* ensure all component parts of bearer name are present */
252 252
253 media_name = name_copy; 253 media_name = name_copy;
254 if ((if_name = strchr(media_name, ':')) == NULL) 254 if_name = strchr(media_name, ':');
255 if (if_name == NULL)
255 return 0; 256 return 0;
256 *(if_name++) = 0; 257 *(if_name++) = 0;
257 media_len = if_name - media_name; 258 media_len = if_name - media_name;
diff --git a/net/tipc/core.c b/net/tipc/core.c
index 60b85ec6d106..e071579e0850 100644
--- a/net/tipc/core.c
+++ b/net/tipc/core.c
@@ -115,10 +115,11 @@ int tipc_core_start_net(unsigned long addr)
115{ 115{
116 int res; 116 int res;
117 117
118 if ((res = tipc_net_start(addr)) || 118 res = tipc_net_start(addr);
119 (res = tipc_eth_media_start())) { 119 if (!res)
120 res = tipc_eth_media_start();
121 if (res)
120 tipc_core_stop_net(); 122 tipc_core_stop_net();
121 }
122 return res; 123 return res;
123} 124}
124 125
@@ -157,15 +158,22 @@ static int tipc_core_start(void)
157 get_random_bytes(&tipc_random, sizeof(tipc_random)); 158 get_random_bytes(&tipc_random, sizeof(tipc_random));
158 tipc_mode = TIPC_NODE_MODE; 159 tipc_mode = TIPC_NODE_MODE;
159 160
160 if ((res = tipc_handler_start()) || 161 res = tipc_handler_start();
161 (res = tipc_ref_table_init(tipc_max_ports, tipc_random)) || 162 if (!res)
162 (res = tipc_nametbl_init()) || 163 res = tipc_ref_table_init(tipc_max_ports, tipc_random);
163 (res = tipc_k_signal((Handler)tipc_subscr_start, 0)) || 164 if (!res)
164 (res = tipc_k_signal((Handler)tipc_cfg_init, 0)) || 165 res = tipc_nametbl_init();
165 (res = tipc_netlink_start()) || 166 if (!res)
166 (res = tipc_socket_init())) { 167 res = tipc_k_signal((Handler)tipc_subscr_start, 0);
168 if (!res)
169 res = tipc_k_signal((Handler)tipc_cfg_init, 0);
170 if (!res)
171 res = tipc_netlink_start();
172 if (!res)
173 res = tipc_socket_init();
174 if (res)
167 tipc_core_stop(); 175 tipc_core_stop();
168 } 176
169 return res; 177 return res;
170} 178}
171 179
@@ -188,7 +196,8 @@ static int __init tipc_init(void)
188 tipc_max_nodes = CONFIG_TIPC_NODES; 196 tipc_max_nodes = CONFIG_TIPC_NODES;
189 tipc_net_id = 4711; 197 tipc_net_id = 4711;
190 198
191 if ((res = tipc_core_start())) 199 res = tipc_core_start();
200 if (res)
192 err("Unable to start in single node mode\n"); 201 err("Unable to start in single node mode\n");
193 else 202 else
194 info("Started in single node mode\n"); 203 info("Started in single node mode\n");
diff --git a/net/tipc/link.c b/net/tipc/link.c
index ef203a1581cd..de9d49108d41 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -187,14 +187,17 @@ static int link_name_validate(const char *name, struct link_name *name_parts)
187 /* ensure all component parts of link name are present */ 187 /* ensure all component parts of link name are present */
188 188
189 addr_local = name_copy; 189 addr_local = name_copy;
190 if ((if_local = strchr(addr_local, ':')) == NULL) 190 if_local = strchr(addr_local, ':');
191 if (if_local == NULL)
191 return 0; 192 return 0;
192 *(if_local++) = 0; 193 *(if_local++) = 0;
193 if ((addr_peer = strchr(if_local, '-')) == NULL) 194 addr_peer = strchr(if_local, '-');
195 if (addr_peer == NULL)
194 return 0; 196 return 0;
195 *(addr_peer++) = 0; 197 *(addr_peer++) = 0;
196 if_local_len = addr_peer - if_local; 198 if_local_len = addr_peer - if_local;
197 if ((if_peer = strchr(addr_peer, ':')) == NULL) 199 if_peer = strchr(addr_peer, ':');
200 if (if_peer == NULL)
198 return 0; 201 return 0;
199 *(if_peer++) = 0; 202 *(if_peer++) = 0;
200 if_peer_len = strlen(if_peer) + 1; 203 if_peer_len = strlen(if_peer) + 1;
@@ -2044,8 +2047,8 @@ static void link_recv_proto_msg(struct link *l_ptr, struct sk_buff *buf)
2044 2047
2045 strcpy((strrchr(l_ptr->name, ':') + 1), (char *)msg_data(msg)); 2048 strcpy((strrchr(l_ptr->name, ':') + 1), (char *)msg_data(msg));
2046 2049
2047 if ((msg_tol = msg_link_tolerance(msg)) && 2050 msg_tol = msg_link_tolerance(msg);
2048 (msg_tol > l_ptr->tolerance)) 2051 if (msg_tol > l_ptr->tolerance)
2049 link_set_supervision_props(l_ptr, msg_tol); 2052 link_set_supervision_props(l_ptr, msg_tol);
2050 2053
2051 if (msg_linkprio(msg) > l_ptr->priority) 2054 if (msg_linkprio(msg) > l_ptr->priority)
@@ -2074,7 +2077,8 @@ static void link_recv_proto_msg(struct link *l_ptr, struct sk_buff *buf)
2074 break; 2077 break;
2075 case STATE_MSG: 2078 case STATE_MSG:
2076 2079
2077 if ((msg_tol = msg_link_tolerance(msg))) 2080 msg_tol = msg_link_tolerance(msg);
2081 if (msg_tol)
2078 link_set_supervision_props(l_ptr, msg_tol); 2082 link_set_supervision_props(l_ptr, msg_tol);
2079 2083
2080 if (msg_linkprio(msg) && 2084 if (msg_linkprio(msg) &&
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index e9fc5df79eb0..0895dec2967c 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -563,7 +563,8 @@ static int send_msg(struct kiocb *iocb, struct socket *sock,
563 563
564 do { 564 do {
565 if (dest->addrtype == TIPC_ADDR_NAME) { 565 if (dest->addrtype == TIPC_ADDR_NAME) {
566 if ((res = dest_name_check(dest, m))) 566 res = dest_name_check(dest, m);
567 if (res)
567 break; 568 break;
568 res = tipc_send2name(tport->ref, 569 res = tipc_send2name(tport->ref,
569 &dest->addr.name.name, 570 &dest->addr.name.name,
@@ -580,7 +581,8 @@ static int send_msg(struct kiocb *iocb, struct socket *sock,
580 res = -EOPNOTSUPP; 581 res = -EOPNOTSUPP;
581 break; 582 break;
582 } 583 }
583 if ((res = dest_name_check(dest, m))) 584 res = dest_name_check(dest, m);
585 if (res)
584 break; 586 break;
585 res = tipc_multicast(tport->ref, 587 res = tipc_multicast(tport->ref,
586 &dest->addr.nameseq, 588 &dest->addr.nameseq,
@@ -750,7 +752,8 @@ static int send_stream(struct kiocb *iocb, struct socket *sock,
750 bytes_to_send = curr_left; 752 bytes_to_send = curr_left;
751 my_iov.iov_base = curr_start; 753 my_iov.iov_base = curr_start;
752 my_iov.iov_len = bytes_to_send; 754 my_iov.iov_len = bytes_to_send;
753 if ((res = send_packet(NULL, sock, &my_msg, 0)) < 0) { 755 res = send_packet(NULL, sock, &my_msg, 0);
756 if (res < 0) {
754 if (bytes_sent) 757 if (bytes_sent)
755 res = bytes_sent; 758 res = bytes_sent;
756 goto exit; 759 goto exit;
@@ -845,12 +848,15 @@ static int anc_data_recv(struct msghdr *m, struct tipc_msg *msg,
845 if (unlikely(err)) { 848 if (unlikely(err)) {
846 anc_data[0] = err; 849 anc_data[0] = err;
847 anc_data[1] = msg_data_sz(msg); 850 anc_data[1] = msg_data_sz(msg);
848 if ((res = put_cmsg(m, SOL_TIPC, TIPC_ERRINFO, 8, anc_data))) 851 res = put_cmsg(m, SOL_TIPC, TIPC_ERRINFO, 8, anc_data);
849 return res; 852 if (res)
850 if (anc_data[1] &&
851 (res = put_cmsg(m, SOL_TIPC, TIPC_RETDATA, anc_data[1],
852 msg_data(msg))))
853 return res; 853 return res;
854 if (anc_data[1]) {
855 res = put_cmsg(m, SOL_TIPC, TIPC_RETDATA, anc_data[1],
856 msg_data(msg));
857 if (res)
858 return res;
859 }
854 } 860 }
855 861
856 /* Optionally capture message destination object */ 862 /* Optionally capture message destination object */
@@ -878,9 +884,11 @@ static int anc_data_recv(struct msghdr *m, struct tipc_msg *msg,
878 default: 884 default:
879 has_name = 0; 885 has_name = 0;
880 } 886 }
881 if (has_name && 887 if (has_name) {
882 (res = put_cmsg(m, SOL_TIPC, TIPC_DESTNAME, 12, anc_data))) 888 res = put_cmsg(m, SOL_TIPC, TIPC_DESTNAME, 12, anc_data);
883 return res; 889 if (res)
890 return res;
891 }
884 892
885 return 0; 893 return 0;
886} 894}
@@ -1664,7 +1672,8 @@ static int setsockopt(struct socket *sock,
1664 return -ENOPROTOOPT; 1672 return -ENOPROTOOPT;
1665 if (ol < sizeof(value)) 1673 if (ol < sizeof(value))
1666 return -EINVAL; 1674 return -EINVAL;
1667 if ((res = get_user(value, (u32 __user *)ov))) 1675 res = get_user(value, (u32 __user *)ov);
1676 if (res)
1668 return res; 1677 return res;
1669 1678
1670 lock_sock(sk); 1679 lock_sock(sk);
@@ -1722,7 +1731,8 @@ static int getsockopt(struct socket *sock,
1722 return put_user(0, ol); 1731 return put_user(0, ol);
1723 if (lvl != SOL_TIPC) 1732 if (lvl != SOL_TIPC)
1724 return -ENOPROTOOPT; 1733 return -ENOPROTOOPT;
1725 if ((res = get_user(len, ol))) 1734 res = get_user(len, ol);
1735 if (res)
1726 return res; 1736 return res;
1727 1737
1728 lock_sock(sk); 1738 lock_sock(sk);