Merge 4.14.86 into android-4.14-p
[GitHub/moto-9609/android_kernel_motorola_exynos9610.git] / crypto / lrw.c
index a8bfae4451bfcbfd26e25bbb39280818dcc139d4..886f91f2426c6483bc37482d42b7fa9da44cb2bb 100644 (file)
@@ -139,7 +139,12 @@ static inline int get_index128(be128 *block)
                return x + ffz(val);
        }
 
-       return x;
+       /*
+        * If we get here, then x == 128 and we are incrementing the counter
+        * from all ones to all zeros. This means we must return index 127, i.e.
+        * the one corresponding to key2*{ 1,...,1 }.
+        */
+       return 127;
 }
 
 static int post_crypt(struct skcipher_request *req)
@@ -313,7 +318,7 @@ static void exit_crypt(struct skcipher_request *req)
        rctx->left = 0;
 
        if (rctx->ext)
-               kfree(rctx->ext);
+               kzfree(rctx->ext);
 }
 
 static int do_encrypt(struct skcipher_request *req, int err)
@@ -610,8 +615,10 @@ static int create(struct crypto_template *tmpl, struct rtattr **tb)
                ecb_name[len - 1] = 0;
 
                if (snprintf(inst->alg.base.cra_name, CRYPTO_MAX_ALG_NAME,
-                            "lrw(%s)", ecb_name) >= CRYPTO_MAX_ALG_NAME)
-                       return -ENAMETOOLONG;
+                            "lrw(%s)", ecb_name) >= CRYPTO_MAX_ALG_NAME) {
+                       err = -ENAMETOOLONG;
+                       goto err_drop_spawn;
+               }
        }
 
        inst->alg.base.cra_flags = alg->base.cra_flags & CRYPTO_ALG_ASYNC;