aboutsummaryrefslogtreecommitdiffstats
path: root/net/smc
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2018-08-09 14:52:36 -0400
committerDavid S. Miller <davem@davemloft.net>2018-08-09 14:52:36 -0400
commita736e074680745faa5dc6be8dd3c58ad4850aab9 (patch)
tree620e6d20cfce3806399fbefa8d911cc848463f9b /net/smc
parent192e91d244e376b32d90ffbf78c87a0fb35a4040 (diff)
parent112cbae26d18e75098d95cc234cfa5059de8d479 (diff)
Merge ra.kernel.org:/pub/scm/linux/kernel/git/davem/net
Overlapping changes in RXRPC, changing to ktime_get_seconds() whilst adding some tracepoints. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc')
-rw-r--r--net/smc/af_smc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index 0fc94f296e54..2d8a1e15e4f9 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -1305,6 +1305,8 @@ static void smc_tcp_listen_work(struct work_struct *work)
1305 sock_hold(lsk); /* sock_put in smc_listen_work */ 1305 sock_hold(lsk); /* sock_put in smc_listen_work */
1306 INIT_WORK(&new_smc->smc_listen_work, smc_listen_work); 1306 INIT_WORK(&new_smc->smc_listen_work, smc_listen_work);
1307 smc_copy_sock_settings_to_smc(new_smc); 1307 smc_copy_sock_settings_to_smc(new_smc);
1308 new_smc->sk.sk_sndbuf = lsmc->sk.sk_sndbuf;
1309 new_smc->sk.sk_rcvbuf = lsmc->sk.sk_rcvbuf;
1308 sock_hold(&new_smc->sk); /* sock_put in passive closing */ 1310 sock_hold(&new_smc->sk); /* sock_put in passive closing */
1309 if (!schedule_work(&new_smc->smc_listen_work)) 1311 if (!schedule_work(&new_smc->smc_listen_work))
1310 sock_put(&new_smc->sk); 1312 sock_put(&new_smc->sk);
@@ -1581,8 +1583,7 @@ static int smc_shutdown(struct socket *sock, int how)
1581 lock_sock(sk); 1583 lock_sock(sk);
1582 1584
1583 rc = -ENOTCONN; 1585 rc = -ENOTCONN;
1584 if ((sk->sk_state != SMC_LISTEN) && 1586 if ((sk->sk_state != SMC_ACTIVE) &&
1585 (sk->sk_state != SMC_ACTIVE) &&
1586 (sk->sk_state != SMC_PEERCLOSEWAIT1) && 1587 (sk->sk_state != SMC_PEERCLOSEWAIT1) &&
1587 (sk->sk_state != SMC_PEERCLOSEWAIT2) && 1588 (sk->sk_state != SMC_PEERCLOSEWAIT2) &&
1588 (sk->sk_state != SMC_APPCLOSEWAIT1) && 1589 (sk->sk_state != SMC_APPCLOSEWAIT1) &&
@@ -1706,12 +1707,16 @@ static int smc_ioctl(struct socket *sock, unsigned int cmd,
1706 1707
1707 smc = smc_sk(sock->sk); 1708 smc = smc_sk(sock->sk);
1708 conn = &smc->conn; 1709 conn = &smc->conn;
1710 lock_sock(&smc->sk);
1709 if (smc->use_fallback) { 1711 if (smc->use_fallback) {
1710 if (!smc->clcsock) 1712 if (!smc->clcsock) {
1713 release_sock(&smc->sk);
1711 return -EBADF; 1714 return -EBADF;
1712 return smc->clcsock->ops->ioctl(smc->clcsock, cmd, arg); 1715 }
1716 answ = smc->clcsock->ops->ioctl(smc->clcsock, cmd, arg);
1717 release_sock(&smc->sk);
1718 return answ;
1713 } 1719 }
1714 lock_sock(&smc->sk);
1715 switch (cmd) { 1720 switch (cmd) {
1716 case SIOCINQ: /* same as FIONREAD */ 1721 case SIOCINQ: /* same as FIONREAD */
1717 if (smc->sk.sk_state == SMC_LISTEN) { 1722 if (smc->sk.sk_state == SMC_LISTEN) {