]> git.ipfire.org Git - thirdparty/linux.git/commit
kernel/fork: Initialize mm's PASID
authorFenghua Yu <fenghua.yu@intel.com>
Mon, 7 Feb 2022 23:02:47 +0000 (15:02 -0800)
committerBorislav Petkov <bp@suse.de>
Mon, 14 Feb 2022 18:51:47 +0000 (19:51 +0100)
commita6cbd44093ef305b02ad5f80ed54abf0148a696c
treea45fd78b4519c5ceb593e751da6e459bd237a693
parent7a5fbc9bcba5325a45297a4ba00091f39a63a1ed
kernel/fork: Initialize mm's PASID

A new mm doesn't have a PASID yet when it's created. Initialize
the mm's PASID on fork() or for init_mm to INVALID_IOASID (-1).

INIT_PASID (0) is reserved for kernel legacy DMA PASID. It cannot be
allocated to a user process. Initializing the process's PASID to 0 may
cause confusion that's why the process uses the reserved kernel legacy
DMA PASID. Initializing the PASID to INVALID_IOASID (-1) explicitly
tells the process doesn't have a valid PASID yet.

Even though the only user of mm_pasid_init() is in fork.c, define it in
<linux/sched/mm.h> as the first of three mm/pasid life cycle functions
(init/set/drop) to keep these all together.

Suggested-by: Dave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20220207230254.3342514-5-fenghua.yu@intel.com
include/linux/sched/mm.h
kernel/fork.c
mm/init-mm.c