The reason to unmask SError is to catch SError caused by EL3 during handling of lower EL SError. I think having a synchronization barrier(esb) may prevent multiple trapping of SError.
Just to let you know I am actively working on RAS refactoring in TF-A (and fixing bugs). I will add you to those patches.
For fixing this particular issue, I am planning below change, would you please test if it works for you? No need to unmask EAs if we are already handling an EA (unlike other exceptions)
--- a/bl31/aarch64/runtime_exceptions.S
+++ b/bl31/aarch64/runtime_exceptions.S
@@ -402,11 +402,8 @@ end_vector_entry fiq_aarch32
vector_entry serror_aarch32
save_x30
apply_at_speculative_wa
-#if RAS_EXTENSION
+ esb
msr daifclr, #DAIF_ABT_BIT
-#else
- check_and_unmask_ea
-#endif
b handle_lower_el_async_ea