Merge remote-tracking branches 'asoc/fix/msm8916', 'asoc/fix/nau8825', 'asoc/fix...
[sfrench/cifs-2.6.git] / crypto / asymmetric_keys / public_key.c
index bc3035ef27a22b3ca593532dedc8020bb2773a2a..de996586762a83c0b3214aaf5fa561bde92f65c0 100644 (file)
@@ -73,7 +73,7 @@ int public_key_verify_signature(const struct public_key *pkey,
        char alg_name_buf[CRYPTO_MAX_ALG_NAME];
        void *output;
        unsigned int outlen;
-       int ret = -ENOMEM;
+       int ret;
 
        pr_devel("==>%s()\n", __func__);
 
@@ -99,6 +99,7 @@ int public_key_verify_signature(const struct public_key *pkey,
        if (IS_ERR(tfm))
                return PTR_ERR(tfm);
 
+       ret = -ENOMEM;
        req = akcipher_request_alloc(tfm, GFP_KERNEL);
        if (!req)
                goto error_free_tfm;
@@ -127,7 +128,7 @@ int public_key_verify_signature(const struct public_key *pkey,
         * signature and returns that to us.
         */
        ret = crypto_wait_req(crypto_akcipher_verify(req), &cwait);
-       if (ret < 0)
+       if (ret)
                goto out_free_output;
 
        /* Do the actual verification step. */
@@ -142,6 +143,8 @@ error_free_req:
 error_free_tfm:
        crypto_free_akcipher(tfm);
        pr_devel("<==%s() = %d\n", __func__, ret);
+       if (WARN_ON_ONCE(ret > 0))
+               ret = -EINVAL;
        return ret;
 }
 EXPORT_SYMBOL_GPL(public_key_verify_signature);