aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/smc/af_smc.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index 0ee7721afbe5..e7de5f282722 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -1522,12 +1522,16 @@ static int smc_ioctl(struct socket *sock, unsigned int cmd,
1522 1522
1523 smc = smc_sk(sock->sk); 1523 smc = smc_sk(sock->sk);
1524 conn = &smc->conn; 1524 conn = &smc->conn;
1525 lock_sock(&smc->sk);
1525 if (smc->use_fallback) { 1526 if (smc->use_fallback) {
1526 if (!smc->clcsock) 1527 if (!smc->clcsock) {
1528 release_sock(&smc->sk);
1527 return -EBADF; 1529 return -EBADF;
1528 return smc->clcsock->ops->ioctl(smc->clcsock, cmd, arg); 1530 }
1531 answ = smc->clcsock->ops->ioctl(smc->clcsock, cmd, arg);
1532 release_sock(&smc->sk);
1533 return answ;
1529 } 1534 }
1530 lock_sock(&smc->sk);
1531 switch (cmd) { 1535 switch (cmd) {
1532 case SIOCINQ: /* same as FIONREAD */ 1536 case SIOCINQ: /* same as FIONREAD */
1533 if (smc->sk.sk_state == SMC_LISTEN) { 1537 if (smc->sk.sk_state == SMC_LISTEN) {