diff --git a/crypto/bio/bio.c b/crypto/bio/bio.c
index 5456bd8..7b4e37c 100644
--- a/crypto/bio/bio.c
+++ b/crypto/bio/bio.c
@@ -714,7 +714,7 @@
                                     CRYPTO_EX_unused *unused,
                                     CRYPTO_EX_dup *dup_unused,
                                     CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class, argl, argp, free_func);
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
 }
 
 int BIO_set_ex_data(BIO *bio, int idx, void *data) {
diff --git a/crypto/dsa/dsa.c b/crypto/dsa/dsa.c
index 37685d5..c42b333 100644
--- a/crypto/dsa/dsa.c
+++ b/crypto/dsa/dsa.c
@@ -934,7 +934,7 @@
 
 int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
                          CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class, argl, argp, free_func);
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
 }
 
 int DSA_set_ex_data(DSA *dsa, int idx, void *arg) {
diff --git a/crypto/ex_data.c b/crypto/ex_data.c
index 8a88106..17de45e 100644
--- a/crypto/ex_data.c
+++ b/crypto/ex_data.c
@@ -132,8 +132,8 @@
   CRYPTO_EX_DATA_FUNCS *next;
 };
 
-int CRYPTO_get_ex_new_index(CRYPTO_EX_DATA_CLASS *ex_data_class, long argl,
-                            void *argp, CRYPTO_EX_free *free_func) {
+int CRYPTO_get_ex_new_index_ex(CRYPTO_EX_DATA_CLASS *ex_data_class, long argl,
+                               void *argp, CRYPTO_EX_free *free_func) {
   CRYPTO_EX_DATA_FUNCS *funcs = OPENSSL_malloc(sizeof(CRYPTO_EX_DATA_FUNCS));
   if (funcs == NULL) {
     return -1;
@@ -214,7 +214,7 @@
   }
 
   uint32_t num_funcs = CRYPTO_atomic_load_u32(&ex_data_class->num_funcs);
-  // |CRYPTO_get_ex_new_index| will not allocate indices beyond |INT_MAX|.
+  // |CRYPTO_get_ex_new_index_ex| will not allocate indices beyond |INT_MAX|.
   assert(num_funcs <= (size_t)(INT_MAX - ex_data_class->num_reserved));
 
   // Defer dereferencing |ex_data_class->funcs| and |funcs->next|. It must come
diff --git a/crypto/fipsmodule/ec/ec_key.c b/crypto/fipsmodule/ec/ec_key.c
index 834cc78..7b7d396 100644
--- a/crypto/fipsmodule/ec/ec_key.c
+++ b/crypto/fipsmodule/ec/ec_key.c
@@ -534,7 +534,7 @@
 int EC_KEY_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
                             CRYPTO_EX_dup *dup_unused,
                             CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(g_ec_ex_data_class_bss_get(), argl, argp,
+  return CRYPTO_get_ex_new_index_ex(g_ec_ex_data_class_bss_get(), argl, argp,
                                  free_func);
 }
 
diff --git a/crypto/fipsmodule/rsa/rsa.c b/crypto/fipsmodule/rsa/rsa.c
index b80bda9..1a9f050 100644
--- a/crypto/fipsmodule/rsa/rsa.c
+++ b/crypto/fipsmodule/rsa/rsa.c
@@ -439,7 +439,7 @@
 
 int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
                          CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(g_rsa_ex_data_class_bss_get(), argl, argp,
+  return CRYPTO_get_ex_new_index_ex(g_rsa_ex_data_class_bss_get(), argl, argp,
                                  free_func);
 }
 
diff --git a/crypto/internal.h b/crypto/internal.h
index 8e7fc86..7d65b5c 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -905,12 +905,12 @@
 #define CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA \
     {CRYPTO_MUTEX_INIT, NULL, NULL, 0, 1}
 
-// CRYPTO_get_ex_new_index allocates a new index for |ex_data_class|. Each class
-// of object should provide a wrapper function that uses the correct
+// CRYPTO_get_ex_new_index_ex allocates a new index for |ex_data_class|. Each
+// class of object should provide a wrapper function that uses the correct
 // |CRYPTO_EX_DATA_CLASS|. It returns the new index on success and -1 on error.
-OPENSSL_EXPORT int CRYPTO_get_ex_new_index(CRYPTO_EX_DATA_CLASS *ex_data_class,
-                                           long argl, void *argp,
-                                           CRYPTO_EX_free *free_func);
+OPENSSL_EXPORT int CRYPTO_get_ex_new_index_ex(
+    CRYPTO_EX_DATA_CLASS *ex_data_class, long argl, void *argp,
+    CRYPTO_EX_free *free_func);
 
 // CRYPTO_set_ex_data sets an extra data pointer on a given object. Each class
 // of object should provide a wrapper function.
diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c
index 4576247..0ca8c82 100644
--- a/crypto/x509/x509_vfy.c
+++ b/crypto/x509/x509_vfy.c
@@ -1409,7 +1409,7 @@
                                     CRYPTO_EX_unused *unused,
                                     CRYPTO_EX_dup *dup_unused,
                                     CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class, argl, argp, free_func);
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
 }
 
 int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data) {
diff --git a/crypto/x509/x_x509.c b/crypto/x509/x_x509.c
index 3434352..9f66ee2 100644
--- a/crypto/x509/x_x509.c
+++ b/crypto/x509/x_x509.c
@@ -380,7 +380,7 @@
 int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
                           CRYPTO_EX_dup *dup_unused,
                           CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class, argl, argp, free_func);
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
 }
 
 int X509_set_ex_data(X509 *r, int idx, void *arg) {
diff --git a/include/openssl/base.h b/include/openssl/base.h
index 9b72e99..70f9f52 100644
--- a/include/openssl/base.h
+++ b/include/openssl/base.h
@@ -109,7 +109,7 @@
 // A consumer may use this symbol in the preprocessor to temporarily build
 // against multiple revisions of BoringSSL at the same time. It is not
 // recommended to do so for longer than is necessary.
-#define BORINGSSL_API_VERSION 30
+#define BORINGSSL_API_VERSION 31
 
 #if defined(BORINGSSL_SHARED_LIBRARY)
 
diff --git a/include/openssl/ex_data.h b/include/openssl/ex_data.h
index 2680055..7fb46b0 100644
--- a/include/openssl/ex_data.h
+++ b/include/openssl/ex_data.h
@@ -179,7 +179,7 @@
 // |parent|. As |parent| will shortly be destroyed, callers must not perform
 // operations that would increment its reference count, pass ownership, or
 // assume the object outlives the function call. The arguments |argl| and |argp|
-// contain opaque values that were given to |CRYPTO_get_ex_new_index|.
+// contain opaque values that were given to |CRYPTO_get_ex_new_index_ex|.
 //
 // This callback may be called with a NULL value for |ptr| if |parent| has no
 // value set for this index. However, the callbacks may also be skipped entirely
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index 3f767a4..3531624 100644
--- a/ssl/ssl_lib.cc
+++ b/ssl/ssl_lib.cc
@@ -2673,7 +2673,8 @@
 
 int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
                          CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class_ssl, argl, argp, free_func);
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class_ssl, argl, argp,
+                                    free_func);
 }
 
 int SSL_set_ex_data(SSL *ssl, int idx, void *data) {
@@ -2687,7 +2688,7 @@
 int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
                              CRYPTO_EX_dup *dup_unused,
                              CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class_ssl_ctx, argl, argp,
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class_ssl_ctx, argl, argp,
                                  free_func);
 }
 
diff --git a/ssl/ssl_session.cc b/ssl/ssl_session.cc
index 7f9b99f..e64243e 100644
--- a/ssl/ssl_session.cc
+++ b/ssl/ssl_session.cc
@@ -1203,7 +1203,7 @@
                                  CRYPTO_EX_unused *unused,
                                  CRYPTO_EX_dup *dup_unused,
                                  CRYPTO_EX_free *free_func) {
-  return CRYPTO_get_ex_new_index(&g_ex_data_class, argl, argp, free_func);
+  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class, argl, argp, free_func);
 }
 
 int SSL_SESSION_set_ex_data(SSL_SESSION *session, int idx, void *arg) {
