aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2017-03-18 21:20:27 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2017-04-06 02:09:23 -0400
commite73a67f7cd471a14bb1351954609e0b0ef5d2187 (patch)
treeb5b8de7536d6ce142390889b2e8dd6f7936dcf55 /fs
parentc1ae3cfa0e89fa1a7ecc4c99031f5e9ae99d9201 (diff)
don't open-code kernel_setsockopt()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r--fs/ocfs2/cluster/tcp.c25
1 files changed, 4 insertions, 21 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index 4348027384f5..58fb1bc2bb32 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -1460,27 +1460,10 @@ static void o2net_rx_until_empty(struct work_struct *work)
1460 1460
1461static int o2net_set_nodelay(struct socket *sock) 1461static int o2net_set_nodelay(struct socket *sock)
1462{ 1462{
1463 int ret, val = 1; 1463 int val = 1;
1464 mm_segment_t oldfs;
1465 1464
1466 oldfs = get_fs(); 1465 return kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY,
1467 set_fs(KERNEL_DS); 1466 (void *)&val, sizeof(val));
1468
1469 /*
1470 * Dear unsuspecting programmer,
1471 *
1472 * Don't use sock_setsockopt() for SOL_TCP. It doesn't check its level
1473 * argument and assumes SOL_SOCKET so, say, your TCP_NODELAY will
1474 * silently turn into SO_DEBUG.
1475 *
1476 * Yours,
1477 * Keeper of hilariously fragile interfaces.
1478 */
1479 ret = sock->ops->setsockopt(sock, SOL_TCP, TCP_NODELAY,
1480 (char __user *)&val, sizeof(val));
1481
1482 set_fs(oldfs);
1483 return ret;
1484} 1467}
1485 1468
1486static int o2net_set_usertimeout(struct socket *sock) 1469static int o2net_set_usertimeout(struct socket *sock)
@@ -1488,7 +1471,7 @@ static int o2net_set_usertimeout(struct socket *sock)
1488 int user_timeout = O2NET_TCP_USER_TIMEOUT; 1471 int user_timeout = O2NET_TCP_USER_TIMEOUT;
1489 1472
1490 return kernel_setsockopt(sock, SOL_TCP, TCP_USER_TIMEOUT, 1473 return kernel_setsockopt(sock, SOL_TCP, TCP_USER_TIMEOUT,
1491 (char *)&user_timeout, sizeof(user_timeout)); 1474 (void *)&user_timeout, sizeof(user_timeout));
1492} 1475}
1493 1476
1494static void o2net_initialize_handshake(void) 1477static void o2net_initialize_handshake(void)