Skip to content

mm, x86/vdso: Special IO mapping improvements

Andy Lutomirski lkml 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest7 patches 2 repliesIn review
  2. v26 patches 2 repliesSuperseded
  3. v16 patches 4 repliesSuperseded

Changes in v3 from the cover letter

- Added patch 1, which is needed in -tip to fix the build
- Fixed -EBUSY handling in vvar's .fault.

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/7x86/vsdo: Fix build on PARAVIRT_CLOCK=y, KVM_GUEST=narch/x86/include/asm/pvclock.h+1 -11 reply
2/7mm: Add a vm_special_mapping .fault methodinclude/linux/mm_types.h mm/mmap.c+28 -70 replies
3/7mm: Add vm_insert_pfn_protinclude/linux/mm.h mm/memory.c+25 -20 replies
4/7x86/vdso: Track each mm's loaded vdso image as well as its basearch/x86/entry/vdso/vma.c arch/x86/include/asm/mmu.h+3 -10 replies
5/7x86,vdso: Use .fault for the vdso text mappingarch/x86/entry/vdso/vdso2c.h arch/x86/entry/vdso/vma.c arch/x86/include/asm/vdso.h+19 -170 replies
6/7x86,vdso: Use .fault instead of remap_pfn_range for the vvar mappingarch/x86/entry/vdso/vma.c+57 -400 replies
7/7x86/vdso: Disallow vvar access to vclock IO for never-used vclocksarch/x86/entry/vdso/vma.c arch/x86/entry/vsyscall/vsyscall_gtod.c arch/x86/include/asm/clocksource.h +1 more+21 -70 replies

Reviews trailers per patch

1 of 7 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchAndrew MortonKees CookBorislav Petkov
SeriesR-b
1/7T-b
2/7
3/7A-b
4/7
5/7
6/7
7/7

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v3 thread

Cover letter [PATCH v3 0/7] mm, x86/vdso: Special IO mapping improvements

This applies on top of the earlier vdso pvclock series I sent out. Once that lands in -tip, this will apply to -tip.

This series cleans up the hack that is our vvar mapping. We currently initialize the vvar mapping as a special mapping vma backed by nothing whatsoever and then we abuse remap_pfn_range to populate it.

This cheats the mm core, probably breaks under various evil madvise workloads, and prevents handling faults in more interesting ways.

To clean it up, this series:

- Adds a special mapping .fault operation
- Adds a vm_insert_pfn_prot helper
- Uses the new .fault infrastructure in x86's vdso and vvar mappings
- Hardens the HPET mapping, mitigating an HW attack surface that bothers me

Changes from v2:
- Added patch 1, which is needed in -tip to fix the build
- Fixed -EBUSY handling in vvar's .fault.

Changes from v1:
- Lots of changelog clarification requested by akpm
- Minor tweaks to style and comments in the first two patches

Andy Lutomirski (7):
x86/vsdo: Fix build on PARAVIRT_CLOCK=y, KVM_GUEST=n
mm: Add a vm_special_mapping .fault method
mm: Add vm_insert_pfn_prot
x86/vdso: Track each mm's loaded vdso image as well as its base x86,vdso: Use .fault for the vdso text mapping
x86,vdso: Use .fault instead of remap_pfn_range for the vvar mapping x86/vdso: Disallow vvar access to vclock IO for never-used vclocks

 arch/x86/entry/vdso/vdso2c.h            |   7 --
 arch/x86/entry/vdso/vma.c               | 124 ++++++++++++++++++++------------
 arch/x86/entry/vsyscall/vsyscall_gtod.c |   9 ++-
 arch/x86/include/asm/clocksource.h      |   9 +--
 arch/x86/include/asm/mmu.h              |   3 +-
 arch/x86/include/asm/pvclock.h          |   2 +-
 arch/x86/include/asm/vdso.h             |   3 -
 arch/x86/include/asm/vgtod.h            |   6 ++
 include/linux/mm.h                      |   2 +
 include/linux/mm_types.h                |  22 +++++-
 mm/memory.c                             |  25 ++++++-
 mm/mmap.c                               |  13 ++--
 12 files changed, 152 insertions(+), 73 deletions(-)
Signature · 1 line
2.5.0