]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/ocfs2/cluster/tcp.c
Merge branches 'uaccess.alpha', 'uaccess.arc', 'uaccess.arm', 'uaccess.arm64', 'uacce...
[karo-tx-linux.git] / fs / ocfs2 / cluster / tcp.c
index 4348027384f5edf06a66dd417214b9bbd3dd05cd..5b51c31c892d54e36c74de081fddb0375a26acf5 100644 (file)
@@ -1460,27 +1460,10 @@ static void o2net_rx_until_empty(struct work_struct *work)
 
 static int o2net_set_nodelay(struct socket *sock)
 {
-       int ret, val = 1;
-       mm_segment_t oldfs;
+       int val = 1;
 
-       oldfs = get_fs();
-       set_fs(KERNEL_DS);
-
-       /*
-        * Dear unsuspecting programmer,
-        *
-        * Don't use sock_setsockopt() for SOL_TCP.  It doesn't check its level
-        * argument and assumes SOL_SOCKET so, say, your TCP_NODELAY will
-        * silently turn into SO_DEBUG.
-        *
-        * Yours,
-        * Keeper of hilariously fragile interfaces.
-        */
-       ret = sock->ops->setsockopt(sock, SOL_TCP, TCP_NODELAY,
-                                   (char __user *)&val, sizeof(val));
-
-       set_fs(oldfs);
-       return ret;
+       return kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY,
+                                   (void *)&val, sizeof(val));
 }
 
 static int o2net_set_usertimeout(struct socket *sock)
@@ -1488,7 +1471,7 @@ static int o2net_set_usertimeout(struct socket *sock)
        int user_timeout = O2NET_TCP_USER_TIMEOUT;
 
        return kernel_setsockopt(sock, SOL_TCP, TCP_USER_TIMEOUT,
-                               (char *)&user_timeout, sizeof(user_timeout));
+                               (void *)&user_timeout, sizeof(user_timeout));
 }
 
 static void o2net_initialize_handshake(void)
@@ -1863,7 +1846,7 @@ static int o2net_accept_one(struct socket *sock, int *more)
 
        new_sock->type = sock->type;
        new_sock->ops = sock->ops;
-       ret = sock->ops->accept(sock, new_sock, O_NONBLOCK);
+       ret = sock->ops->accept(sock, new_sock, O_NONBLOCK, false);
        if (ret < 0)
                goto out;