fix(memory share): multiple borrower with NWd VM

The validity checks from the condition `plat_ffa_is_memory_send_valid`
didn't allow for a memory lend/share operation with multiple borrowers,
in case one of the borrowers is from the NWd.

Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: I56b753c97085bd99f40659635a3dab6d83e45b70
diff --git a/src/api.c b/src/api.c
index f2118d4..5221f87 100644
--- a/src/api.c
+++ b/src/api.c
@@ -3518,8 +3518,11 @@
 	for (uint32_t i = 0U; i < memory_region->receiver_count; i++) {
 		struct ffa_memory_access *receiver =
 			ffa_memory_region_get_receiver(memory_region, i);
+		ffa_id_t receiver_id;
+
 		assert(receiver != NULL);
-		ffa_id_t receiver_id = receiver->receiver_permissions.receiver;
+
+		receiver_id = receiver->receiver_permissions.receiver;
 
 		to = vm_find(receiver_id);
 
@@ -3530,7 +3533,9 @@
 			goto out;
 		}
 
-		if (!plat_ffa_is_memory_send_valid(receiver_id, share_func)) {
+		if (!plat_ffa_is_memory_send_valid(
+			    receiver_id, from->id, share_func,
+			    memory_region->receiver_count > 1)) {
 			ret = ffa_error(FFA_DENIED);
 			goto out;
 		}