Index: kernel/generic/src/mm/backend_elf.c
===================================================================
--- kernel/generic/src/mm/backend_elf.c	(revision 3ac69647c902629ad914dc5a05da9a460f5cbd7b)
+++ kernel/generic/src/mm/backend_elf.c	(revision a7dbd49e7efecbc9aae09ccdfd5f9c4193099885)
@@ -73,10 +73,15 @@
 {
 	elf_segment_header_t *entry = area->backend_data.segment;
-	size_t nonanon_pages = ALIGN_DOWN(entry->p_filesz, PAGE_SIZE);
+	uintptr_t first = ALIGN_UP(entry->p_vaddr, PAGE_SIZE);
+	uintptr_t last = ALIGN_DOWN(entry->p_vaddr + entry->p_filesz,
+	    PAGE_SIZE);
 
 	if (entry->p_flags & PF_W)
 		return 0;
 
-	return nonanon_pages;
+	if (last < first)
+		return 0;
+
+	return last - first;
 }
 
