X-Git-Url: https://git.stricted.de/?a=blobdiff_plain;f=crypto%2Faf_alg.c;fp=crypto%2Faf_alg.c;h=1aaa555fab56b6e6fa127fe546e14d7fa69b4a40;hb=1f2493fcd87bd810c608aa7976388157852eadb2;hp=0ca108f3c84084278c026173302cccfdce0a487f;hpb=d6692b5c5d7a2178bfa17b9e1dff205aaaa51342;p=GitHub%2Fmt8127%2Fandroid_kernel_alcatel_ttab.git diff --git a/crypto/af_alg.c b/crypto/af_alg.c index 0ca108f3c840..1aaa555fab56 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;