Re: [PATCH 2/6] arm64/vdso: Zap vvar pages when switching to a time namespace
From: Andrei Vagin <hidden>
Date: 2020-06-25 08:25:46
Also in:
lkml
On Wed, Jun 24, 2020 at 05:18:01PM +0200, Christian Brauner wrote:
On Wed, Jun 24, 2020 at 01:33:17AM -0700, Andrei Vagin wrote:quoted
The order of vvar pages depends on whether a task belongs to the root time namespace or not. In the root time namespace, a task doesn't have a per-namespace page. In a non-root namespace, the VVAR page which contains the system-wide VDSO data is replaced with a namespace specific page that contains clock offsets. Whenever a task changes its namespace, the VVAR page tables are cleared and then they will be re-faulted with a corresponding layout. A task can switch its time namespace only if its ->mm isn't shared with another task. Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Reviewed-by: Dmitry Safonov <redacted> Signed-off-by: Andrei Vagin <redacted> --- arch/arm64/kernel/vdso.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index 7c4620451fa5..bdf492a17dff 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c@@ -124,6 +124,37 @@ static int __vdso_init(enum vdso_abi abi) return 0; } +#ifdef CONFIG_TIME_NS +/* + * The vvar mapping contains data for a specific time namespace, so when a task + * changes namespace we must unmap its vvar data for the old namespace. + * Subsequent faults will map in data for the new namespace. + * + * For more details see timens_setup_vdso_data(). + */ +int vdso_join_timens(struct task_struct *task, struct time_namespace *ns) +{ + struct mm_struct *mm = task->mm; + struct vm_area_struct *vma; + + mmap_read_lock(mm);Perfect, thanks! I'll adapt my patches so that my change and this change don't conflict and can go in together. Once they're landed we can simply turn int vdso_join_timens() into void vdso_join_timens() everywhere.
Yep. Let's do it this way. Thanks!
Reviewed-by: Christian Brauner <redacted> Thanks! Christian
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel