On Mon, Aug 07, 2023 at 11:20:58AM +0100, Szabolcs Nagy wrote:
The 07/31/2023 14:43, Mark Brown wrote:
+SYSCALL_DEFINE3(map_shadow_stack, unsigned long, addr, unsigned long, size, unsigned int, flags) +{
- unsigned long alloc_size;
- unsigned long __user *cap_ptr;
- unsigned long cap_val;
- int ret;
- if (!system_supports_gcs())
return -EOPNOTSUPP;
- if (flags)
return -EINVAL;
- if (addr % 16)
return -EINVAL;
mmap addr must be page aligned (and there is no align req on size).
i'd expect similar api here.
That's not what the manual page or a quick check of the code suggest that mmap() does, they say that the kernel just takes it as a hint and chooses a nearby page boundary, though I didn't test. I'm not sure why I have that alignment check at all TBH, and to the extent it's needed I could just be 8 - this level of code doesn't really care.
- if (size == 16 || size % 16)
return -EINVAL;
why %16 and not %8 ?
I don't think that's needed any more - there was some stuff in an earlier version of the code but no longer.