Commit d3cb703b35 for openssl.org

commit d3cb703b35b11432959836a1864cc4e52d723879
Author: Neil Horman <nhorman@openssl.org>
Date:   Fri May 8 10:13:59 2026 -0400

    Make EVP_SIGNATURE not do ref counting

    Reviewed-by: Bob Beck <beck@openssl.org>
    Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
    MergeDate: Thu Jun 25 21:26:00 2026
    (Merged from https://github.com/openssl/openssl/pull/31143)

diff --git a/crypto/evp/signature.c b/crypto/evp/signature.c
index 3737bc6ba4..15e4116400 100644
--- a/crypto/evp/signature.c
+++ b/crypto/evp/signature.c
@@ -22,12 +22,27 @@

 static void evp_signature_free(void *data)
 {
-    EVP_SIGNATURE_free(data);
+    EVP_SIGNATURE *signature = (EVP_SIGNATURE *)data;
+    int i;
+
+    if (signature == NULL)
+        return;
+    CRYPTO_DOWN_REF(&signature->refcnt, &i);
+    if (i > 0)
+        return;
+    OPENSSL_free(signature->type_name);
+    ossl_provider_free(signature->prov);
+    CRYPTO_FREE_REF(&signature->refcnt);
+    OPENSSL_free(signature);
 }

 static int evp_signature_up_ref(void *data)
 {
-    return EVP_SIGNATURE_up_ref(data);
+    EVP_SIGNATURE *signature = (EVP_SIGNATURE *)data;
+    int ref = 0;
+
+    CRYPTO_UP_REF(&signature->refcnt, &ref);
+    return 1;
 }

 static EVP_SIGNATURE *evp_signature_new(OSSL_PROVIDER *prov)
@@ -454,25 +469,18 @@ err:

 void EVP_SIGNATURE_free(EVP_SIGNATURE *signature)
 {
-    int i;
-
-    if (signature == NULL)
-        return;
-    CRYPTO_DOWN_REF(&signature->refcnt, &i);
-    if (i > 0)
-        return;
-    OPENSSL_free(signature->type_name);
-    ossl_provider_free(signature->prov);
-    CRYPTO_FREE_REF(&signature->refcnt);
-    OPENSSL_free(signature);
+#ifdef OPENSSL_NO_CACHED_FETCH
+    evp_signature_free(signature);
+#endif
 }

 int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature)
 {
-    int ref = 0;
-
-    CRYPTO_UP_REF(&signature->refcnt, &ref);
+#ifdef OPENSSL_NO_CACHED_FETCH
+    return evp_signature_up_ref(signature);
+#else
     return 1;
+#endif
 }

 OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature)