aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2012-04-06 21:48:59 -0400
committerLen Brown <len.brown@intel.com>2012-04-06 21:48:59 -0400
commiteeaab2d8af2cf1d36d7086f22e9de42d6dd2995c (patch)
tree369b9c91a6d808944f07d2290fec6f9fe2731904 /net/tipc/socket.c
parentee01e663373343c63e0e3d364d09f6155378dbcc (diff)
parentaaef292acf3a78d9c0bb6fb72226077d286b45d7 (diff)
Merge branches 'idle-fix' and 'misc' into release
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index e2f7c5d370ba..29e957f64458 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -126,7 +126,7 @@ static atomic_t tipc_queue_size = ATOMIC_INIT(0);
126 126
127static void advance_rx_queue(struct sock *sk) 127static void advance_rx_queue(struct sock *sk)
128{ 128{
129 buf_discard(__skb_dequeue(&sk->sk_receive_queue)); 129 kfree_skb(__skb_dequeue(&sk->sk_receive_queue));
130 atomic_dec(&tipc_queue_size); 130 atomic_dec(&tipc_queue_size);
131} 131}
132 132
@@ -142,7 +142,7 @@ static void discard_rx_queue(struct sock *sk)
142 142
143 while ((buf = __skb_dequeue(&sk->sk_receive_queue))) { 143 while ((buf = __skb_dequeue(&sk->sk_receive_queue))) {
144 atomic_dec(&tipc_queue_size); 144 atomic_dec(&tipc_queue_size);
145 buf_discard(buf); 145 kfree_skb(buf);
146 } 146 }
147} 147}
148 148
@@ -288,7 +288,7 @@ static int release(struct socket *sock)
288 break; 288 break;
289 atomic_dec(&tipc_queue_size); 289 atomic_dec(&tipc_queue_size);
290 if (TIPC_SKB_CB(buf)->handle != 0) 290 if (TIPC_SKB_CB(buf)->handle != 0)
291 buf_discard(buf); 291 kfree_skb(buf);
292 else { 292 else {
293 if ((sock->state == SS_CONNECTING) || 293 if ((sock->state == SS_CONNECTING) ||
294 (sock->state == SS_CONNECTED)) { 294 (sock->state == SS_CONNECTED)) {
@@ -355,6 +355,9 @@ static int bind(struct socket *sock, struct sockaddr *uaddr, int uaddr_len)
355 else if (addr->addrtype != TIPC_ADDR_NAMESEQ) 355 else if (addr->addrtype != TIPC_ADDR_NAMESEQ)
356 return -EAFNOSUPPORT; 356 return -EAFNOSUPPORT;
357 357
358 if (addr->addr.nameseq.type < TIPC_RESERVED_TYPES)
359 return -EACCES;
360
358 return (addr->scope > 0) ? 361 return (addr->scope > 0) ?
359 tipc_publish(portref, addr->scope, &addr->addr.nameseq) : 362 tipc_publish(portref, addr->scope, &addr->addr.nameseq) :
360 tipc_withdraw(portref, -addr->scope, &addr->addr.nameseq); 363 tipc_withdraw(portref, -addr->scope, &addr->addr.nameseq);
@@ -1612,7 +1615,7 @@ restart:
1612 if (buf) { 1615 if (buf) {
1613 atomic_dec(&tipc_queue_size); 1616 atomic_dec(&tipc_queue_size);
1614 if (TIPC_SKB_CB(buf)->handle != 0) { 1617 if (TIPC_SKB_CB(buf)->handle != 0) {
1615 buf_discard(buf); 1618 kfree_skb(buf);
1616 goto restart; 1619 goto restart;
1617 } 1620 }
1618 tipc_disconnect(tport->ref); 1621 tipc_disconnect(tport->ref);