child1_is_directory, layer_masks_parent2,
                                     layer_masks_child2,
                                     child2_is_directory))) {
-                       allowed_parent1 = scope_to_request(
-                               access_request_parent1, layer_masks_parent1);
-                       allowed_parent2 = scope_to_request(
-                               access_request_parent2, layer_masks_parent2);
-
-                       /* Stops when all accesses are granted. */
-                       if (allowed_parent1 && allowed_parent2)
-                               break;
-
                        /*
                         * Now, downgrades the remaining checks from domain
                         * handled accesses to requested accesses.
                        is_dom_check = false;
                        access_masked_parent1 = access_request_parent1;
                        access_masked_parent2 = access_request_parent2;
+
+                       allowed_parent1 =
+                               allowed_parent1 ||
+                               scope_to_request(access_masked_parent1,
+                                                layer_masks_parent1);
+                       allowed_parent2 =
+                               allowed_parent2 ||
+                               scope_to_request(access_masked_parent2,
+                                                layer_masks_parent2);
+
+                       /* Stops when all accesses are granted. */
+                       if (allowed_parent1 && allowed_parent2)
+                               break;
                }
 
                rule = find_rule(domain, walker_path.dentry);
-               allowed_parent1 = landlock_unmask_layers(
-                       rule, access_masked_parent1, layer_masks_parent1,
-                       ARRAY_SIZE(*layer_masks_parent1));
-               allowed_parent2 = landlock_unmask_layers(
-                       rule, access_masked_parent2, layer_masks_parent2,
-                       ARRAY_SIZE(*layer_masks_parent2));
+               allowed_parent1 = allowed_parent1 ||
+                                 landlock_unmask_layers(
+                                         rule, access_masked_parent1,
+                                         layer_masks_parent1,
+                                         ARRAY_SIZE(*layer_masks_parent1));
+               allowed_parent2 = allowed_parent2 ||
+                                 landlock_unmask_layers(
+                                         rule, access_masked_parent2,
+                                         layer_masks_parent2,
+                                         ARRAY_SIZE(*layer_masks_parent2));
 
                /* Stops when a rule from each layer grants access. */
                if (allowed_parent1 && allowed_parent2)
                         * access to internal filesystems (e.g. nsfs, which is
                         * reachable through /proc/<pid>/ns/<namespace>).
                         */
-                       allowed_parent1 = allowed_parent2 =
-                               !!(walker_path.mnt->mnt_flags & MNT_INTERNAL);
+                       if (walker_path.mnt->mnt_flags & MNT_INTERNAL) {
+                               allowed_parent1 = true;
+                               allowed_parent2 = true;
+                       }
                        break;
                }
                parent_dentry = dget_parent(walker_path.dentry);