lkml.org 
[lkml]   [2022]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCHv3 6/8] x86/mm: Provide ARCH_GET_UNTAG_MASK and ARCH_ENABLE_TAGGED_ADDR
Date
On Fri, 2022-06-10 at 17:35 +0300, Kirill A. Shutemov wrote:
> +static int prctl_enable_tagged_addr(unsigned long nr_bits)
> +{
> + struct mm_struct *mm = current->mm;
> +
> + /* Already enabled? */
> + if (mm->context.lam_cr3_mask)
> + return -EBUSY;
> +
> + /* LAM has to be enabled before spawning threads */
> + if (get_nr_threads(current) > 1)
> + return -EBUSY;

Does this work for vfork()? I guess the idea is that locking is not
needed below because there is only one thread with the MM, but with
vfork() another task could operate on the MM, call fork(), etc. I'm not
sure...

> +
> + if (!nr_bits) {
> + return -EINVAL;
> + } else if (nr_bits <= 6) {
> + mm->context.lam_cr3_mask = X86_CR3_LAM_U57;
> + mm->context.untag_mask = ~GENMASK(62, 57);
> + } else {
> + return -EINVAL;
> + }
> +
> + /* Update CR3 to get LAM active */
> + switch_mm(current->mm, current->mm, current);
> + return 0;
> +}
\
 
 \ /
  Last update: 2022-06-10 18:17    [W:0.318 / U:0.188 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site