diff --git a/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md
index f93d0a7e7b0c9b5af8179d6c41ef55926b611d72..92adae5cdcccbc715799c49021460fb47549fa77 100644
--- a/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md
+++ b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.md
@@ -124,9 +124,6 @@ En terme des fonctionnalités mises à disposition des applications utilisateur,
 
 Description                                            Nom fonction            Arguments
 ------------------------------------------------------ ----------------------- -------------------------
-Affiche une chaîne de caractères ; appelle la fonction `syscall_term_puts`     arg1: chaîne à afficher
-`term_puts` du noyau
-\phantom{x}
 Récupère une touche pressée au clavier ; appelle la    `syscall_keyb_get_key`  arg1: touche lue
 fonction `keyb_get_key` du noyau                                               (argument de sortie,
                                                                                de type `int *`)
@@ -228,7 +225,7 @@ Le but ici est de déterminer à quel point les appels système impactent donc l
 
 Ensuite, il suffit de mesurer le temps écoulé pour chaque scénario.
 
-A vous d'inventer un scénario qui fait sens, puis implémentez une application qui réalise exactement ceci en utilisant les fonctions `setpixel_syscall` et `setpixel`. Ses fonctions permettent d'afficher un pixel à l'écran, avec, et sans réaliser d'appel système. Trouvez également un moyen de mesurer les performances de chaque version.
+A vous d'inventer un scénario qui fait sens, puis implémentez une application qui réalise exactement ceci en faisant appel à de nombreux appels système et sans en appeler. Trouvez également un moyen de mesurer les performances de chaque version.
 
 Pensez à compiler votre code en activant les optimisations du compilateur avec `make clean && make run DEBUG=0` afin d'obtenir des résultats plus représentatifs de conditions réelles.
 
diff --git a/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.pdf b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f2e01f87dd95c905549928d5768abb3b348217d6
Binary files /dev/null and b/labs/lab4-tasks_syscalls/lab4-tasks_syscalls.pdf differ
diff --git a/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c b/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c
index 775265ad4096236c107953098c99f6659a0fe65c..23457fc49d18bf87c631097f9bcd88da47361da1 100644
--- a/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c
+++ b/labs/lab4-tasks_syscalls/skeleton/yoctos/kernel/mem/paging.c
@@ -8,7 +8,7 @@
 // Returns the number of frames allocated (including frames used to store page tables).
 
 uint_t paging_alloc(PDE_t *pagedir, PTE_t *page_tables[PAGETABLES_IN_PD], uint32_t virt_addr, uint32_t size, enum privilege_t privilege) {
-    if (virt_addr % PAGE_SIZE || phys_addr % PAGE_SIZE) {
+    if (virt_addr % PAGE_SIZE) {
         // Virtual address must be aligned to PAGE_SIZE!
         halt();
     }
diff --git a/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s b/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s
index 033e93e58baa7093e4dd700d7c52784483366c68..a6f60ab646b4c619bf8f415f70df402b69ebdc94 100644
--- a/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s
+++ b/labs/lab4-tasks_syscalls/skeleton/yoctos/user/entrypoint_asm.s
@@ -2,6 +2,6 @@ extern main
 
 section .entrypoint
     call  main
-    jmp   exit
+    iret
 
 section .text
diff --git a/labs/lab4-tasks_syscalls/validation/yoctos.iso b/labs/lab4-tasks_syscalls/validation/yoctos.iso
new file mode 100644
index 0000000000000000000000000000000000000000..1cc9cd1e416d32e77c0da166e61a76ab97848953
Binary files /dev/null and b/labs/lab4-tasks_syscalls/validation/yoctos.iso differ