Fix error handling in psa_driver_wrapper_xxx_hash_get_num_ops

Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 1faf1dd..8e339ea 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -3470,7 +3470,9 @@
                                                    signature_length);
 
     /* Update ops count with work done. */
-    operation->num_ops = psa_driver_wrapper_sign_hash_get_num_ops(operation);
+    if (status == PSA_SUCCESS) {
+        status = psa_driver_wrapper_sign_hash_get_num_ops(operation, &operation->num_ops);
+    }
 
 exit:
 
@@ -3601,8 +3603,9 @@
     status = psa_driver_wrapper_verify_hash_complete(operation);
 
     /* Update ops count with work done. */
-    operation->num_ops = psa_driver_wrapper_verify_hash_get_num_ops(
-        operation);
+    if (status == PSA_SUCCESS) {
+        status = psa_driver_wrapper_verify_hash_get_num_ops(operation, &operation->num_ops);
+    }
 
 exit:
 
diff --git a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
index 3d116b3..4032d0e 100644
--- a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
+++ b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
@@ -472,17 +472,19 @@
     }
 }
 
-static inline uint32_t psa_driver_wrapper_sign_hash_get_num_ops(
-    psa_sign_hash_interruptible_operation_t *operation )
+static inline int psa_driver_wrapper_sign_hash_get_num_ops(
+    psa_sign_hash_interruptible_operation_t *operation, uint32_t *num_ops )
 {
     switch( operation->id )
     {
         /* If uninitialised, return 0, as no work can have been done. */
         case 0:
-            return 0;
+            *num_ops = 0;
+            return PSA_SUCCESS;
 
         case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
-            return(mbedtls_psa_sign_hash_get_num_ops(&operation->ctx.mbedtls_ctx));
+            *num_ops = mbedtls_psa_sign_hash_get_num_ops(&operation->ctx.mbedtls_ctx);
+            return PSA_SUCCESS;
 
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
 #if defined(PSA_CRYPTO_DRIVER_TEST)
@@ -495,17 +497,19 @@
     return( PSA_ERROR_INVALID_ARGUMENT );
 }
 
-static inline uint32_t psa_driver_wrapper_verify_hash_get_num_ops(
-    psa_verify_hash_interruptible_operation_t *operation )
+static inline int psa_driver_wrapper_verify_hash_get_num_ops(
+    psa_verify_hash_interruptible_operation_t *operation, uint32_t *num_ops )
 {
     switch( operation->id )
     {
         /* If uninitialised, return 0, as no work can have been done. */
         case 0:
-            return 0;
+            *num_ops = 0;
+            return PSA_SUCCESS;
 
         case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
-            return (mbedtls_psa_verify_hash_get_num_ops(&operation->ctx.mbedtls_ctx));
+            *num_ops = mbedtls_psa_verify_hash_get_num_ops(&operation->ctx.mbedtls_ctx);
+            return PSA_SUCCESS;
 
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
 #if defined(PSA_CRYPTO_DRIVER_TEST)
@@ -516,7 +520,7 @@
 
     }
 
-    return( PSA_ERROR_INVALID_ARGUMENT );
+    return ( PSA_ERROR_INVALID_ARGUMENT );
 }
 
 static inline psa_status_t psa_driver_wrapper_sign_hash_start(