l2tp: don't register sessions in l2tp_session_create()
[pandora-kernel.git] / net / rds / send.c
index e2d63c5..31c9fa4 100644 (file)
@@ -935,7 +935,6 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
        /* Mirror Linux UDP mirror of BSD error message compatibility */
        /* XXX: Perhaps MSG_MORE someday */
        if (msg->msg_flags & ~(MSG_DONTWAIT | MSG_CMSG_COMPAT)) {
-               printk(KERN_INFO "msg_flags 0x%08X\n", msg->msg_flags);
                ret = -EOPNOTSUPP;
                goto out;
        }
@@ -956,11 +955,13 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
                release_sock(sk);
        }
 
-       /* racing with another thread binding seems ok here */
+       lock_sock(sk);
        if (daddr == 0 || rs->rs_bound_addr == 0) {
+               release_sock(sk);
                ret = -ENOTCONN; /* XXX not a great errno */
                goto out;
        }
+       release_sock(sk);
 
        /* size of rm including all sgs */
        ret = rds_rm_size(msg, payload_len);
@@ -1123,7 +1124,7 @@ rds_send_pong(struct rds_connection *conn, __be16 dport)
        rds_stats_inc(s_send_pong);
 
        if (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags))
-               rds_send_xmit(conn);
+               queue_delayed_work(rds_wq, &conn->c_send_w, 0);
 
        rds_message_put(rm);
        return 0;