Revert "ARM: tegra: tegratab: dummy change"
[linux-2.6.git] / crypto / algif_skcipher.c
index 1f33480..a1c4f0a 100644 (file)
@@ -432,6 +432,7 @@ static int skcipher_recvmsg(struct kiocb *unused, struct socket *sock,
        long copied = 0;
 
        lock_sock(sk);
+       msg->msg_namelen = 0;
        for (iov = msg->msg_iov, iovlen = msg->msg_iovlen; iovlen > 0;
             iovlen--, iov++) {
                unsigned long seglen = iov->iov_len;
@@ -454,17 +455,17 @@ static int skcipher_recvmsg(struct kiocb *unused, struct socket *sock,
 
                        used = min_t(unsigned long, used, seglen);
 
+                       used = af_alg_make_sg(&ctx->rsgl, from, used, 1);
+                       err = used;
+                       if (err < 0)
+                               goto unlock;
+
                        if (ctx->more || used < ctx->used)
                                used -= used % bs;
 
                        err = -EINVAL;
                        if (!used)
-                               goto unlock;
-
-                       used = af_alg_make_sg(&ctx->rsgl, from, used, 1);
-                       err = used;
-                       if (err < 0)
-                               goto unlock;
+                               goto free;
 
                        ablkcipher_request_set_crypt(&ctx->req, sg,
                                                     ctx->rsgl.sg, used,
@@ -476,6 +477,7 @@ static int skcipher_recvmsg(struct kiocb *unused, struct socket *sock,
                                        crypto_ablkcipher_decrypt(&ctx->req),
                                &ctx->completion);
 
+free:
                        af_alg_free_sg(&ctx->rsgl);
 
                        if (err)