aboutsummaryrefslogtreecommitdiff
path: root/crypto/af_alg.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/af_alg.c')
-rw-r--r--crypto/af_alg.c35
1 files changed, 3 insertions, 32 deletions
diff --git a/crypto/af_alg.c b/crypto/af_alg.c
index 1971f3ccb09a..eeb2fb239934 100644
--- a/crypto/af_alg.c
+++ b/crypto/af_alg.c
@@ -125,23 +125,6 @@ int af_alg_release(struct socket *sock)
}
EXPORT_SYMBOL_GPL(af_alg_release);
-void af_alg_release_parent(struct sock *sk)
-{
- struct alg_sock *ask = alg_sk(sk);
- bool last;
-
- sk = ask->parent;
- ask = alg_sk(sk);
-
- lock_sock(sk);
- last = !--ask->refcnt;
- release_sock(sk);
-
- if (last)
- sock_put(sk);
-}
-EXPORT_SYMBOL_GPL(af_alg_release_parent);
-
static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
{
struct sock *sk = sock->sk;
@@ -149,7 +132,6 @@ static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
struct sockaddr_alg *sa = (void *)uaddr;
const struct af_alg_type *type;
void *private;
- int err;
if (sock->state == SS_CONNECTED)
return -EINVAL;
@@ -175,22 +157,16 @@ static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
return PTR_ERR(private);
}
- err = -EBUSY;
lock_sock(sk);
- if (ask->refcnt)
- goto unlock;
swap(ask->type, type);
swap(ask->private, private);
- err = 0;
-
-unlock:
release_sock(sk);
alg_do_release(type, private);
- return err;
+ return 0;
}
static int alg_setkey(struct sock *sk, char __user *ukey,
@@ -223,15 +199,11 @@ static int alg_setsockopt(struct socket *sock, int level, int optname,
struct sock *sk = sock->sk;
struct alg_sock *ask = alg_sk(sk);
const struct af_alg_type *type;
- int err = -EBUSY;
+ int err = -ENOPROTOOPT;
lock_sock(sk);
- if (ask->refcnt)
- goto unlock;
-
type = ask->type;
- err = -ENOPROTOOPT;
if (level != SOL_ALG || !type)
goto unlock;
@@ -280,8 +252,7 @@ int af_alg_accept(struct sock *sk, struct socket *newsock)
sk2->sk_family = PF_ALG;
- if (!ask->refcnt++)
- sock_hold(sk);
+ sock_hold(sk);
alg_sk(sk2)->parent = sk;
alg_sk(sk2)->type = type;