diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index d75c4d7..e4e8e0d 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -1027,16 +1027,31 @@
 	uECC_word_t carry;
 	uECC_word_t *initial_Z = 0;
 	int r = UECC_FAULT_DETECTED;
+	volatile int problem;
 
 	/* Protect against faults modifying curve paremeters in flash */
-	if (uECC_check_curve_integrity() != 0) {
+	problem = -1;
+	problem = uECC_check_curve_integrity();
+	if (problem != 0) {
+		return UECC_FAULT_DETECTED;
+	}
+	mbedtls_platform_enforce_volatile_reads();
+	if (problem != 0) {
 		return UECC_FAULT_DETECTED;
 	}
 
 	/* Protects against invalid curve attacks */
-	if (uECC_valid_point(point) != 0 ) {
+	problem = -1;
+	problem = uECC_valid_point(point);
+	if (problem != 0) {
+		/* invalid input, can happen without fault */
 		return UECC_FAILURE;
 	}
+	mbedtls_platform_enforce_volatile_reads();
+	if (problem != 0) {
+		/* failure on second check means fault, though */
+		return UECC_FAULT_DETECTED;
+	}
 
 	/* Regularize the bitcount for the private key so that attackers cannot use a
 	 * side channel attack to learn the number of leading zeros. */
@@ -1056,13 +1071,27 @@
 
 	/* Protect against fault injections that would make the resulting
 	 * point not lie on the intended curve */
-	if (uECC_valid_point(result) != 0 ) {
+	problem = -1;
+	problem = uECC_valid_point(result);
+	if (problem != 0) {
+		r = UECC_FAULT_DETECTED;
+		goto clear_and_out;
+	}
+	mbedtls_platform_enforce_volatile_reads();
+	if (problem != 0) {
 		r = UECC_FAULT_DETECTED;
 		goto clear_and_out;
 	}
 
 	/* Protect against faults modifying curve paremeters in flash */
-	if (uECC_check_curve_integrity() != 0) {
+	problem = -1;
+	problem = uECC_check_curve_integrity();
+	if (problem != 0) {
+		r = UECC_FAULT_DETECTED;
+		goto clear_and_out;
+	}
+	mbedtls_platform_enforce_volatile_reads();
+	if (problem != 0) {
 		r = UECC_FAULT_DETECTED;
 		goto clear_and_out;
 	}
@@ -1139,6 +1168,7 @@
 	uECC_word_t tmp1[NUM_ECC_WORDS];
 	uECC_word_t tmp2[NUM_ECC_WORDS];
 	wordcount_t num_words = NUM_ECC_WORDS;
+	volatile uECC_word_t diff = -1u;
 
 	/* The point at infinity is invalid. */
 	if (EccPoint_isZero(point)) {
@@ -1155,10 +1185,15 @@
 	x_side_default(tmp2, point); /* tmp2 = x^3 + ax + b */
 
 	/* Make sure that y^2 == x^3 + ax + b */
-	if (uECC_vli_equal(tmp1, tmp2) != 0)
-		return -3;
+	diff = uECC_vli_equal(tmp1, tmp2);
+	if (diff == 0) {
+		mbedtls_platform_enforce_volatile_reads();
+		if (diff == 0) {
+			return 0;
+		}
+	}
 
-	return 0;
+	return -3;
 }
 
 int uECC_valid_public_key(const uint8_t *public_key)
