lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 29 Apr 2023 21:17:02 +0200
From:   Vasily Gorbik <gor@...ux.ibm.com>
To:     Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     Heiko Carstens <hca@...ux.ibm.com>,
        Alexander Gordeev <agordeev@...ux.ibm.com>,
        Mark Rutland <mark.rutland@....com>,
        Kees Cook <keescook@...omium.org>,
        linux-kernel@...r.kernel.org, linux-s390@...r.kernel.org
Subject: [GIT PULL] s390 patches for the 6.4 merge window

Hello Linus,

please pull s390 changes for 6.4. There is a stackleak common code change
which allow specifying architecture-specific stackleak poison function
to enable faster implementation. This change has been acked-by Mark Rutland.
https://lore.kernel.org/all/ZDZz8QvPdpGJqMd6@FVFF77S0Q05N/

There are a few small merge conflicts, notably with driver-core and tip
trees. Both have already been pulled, and here are the manual conflict
resolutions:

diff --cc arch/s390/kernel/setup.c
index 4259b6c50516,0903fe356634..fe10da1a271e
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@@ -385,18 -381,13 +381,13 @@@ void stack_free(unsigned long stack
  #endif
  }
  
- int __init arch_early_irq_init(void)
 -void __init arch_call_rest_init(void)
++void __init __noreturn arch_call_rest_init(void)
  {
- 	unsigned long stack;
- 
- 	stack = __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER);
- 	if (!stack)
- 		panic("Couldn't allocate async stack");
- 	S390_lowcore.async_stack = stack + STACK_INIT_OFFSET;
- 	return 0;
+ 	smp_reinit_ipl_cpu();
+ 	rest_init();
  }
  
- void __init __noreturn arch_call_rest_init(void)
+ static unsigned long __init stack_alloc_early(void)
  {
  	unsigned long stack;
  
diff --cc arch/s390/kernel/topology.c
index 72af753d1bba,e5d6a1c25d13..9fd19530c9a5
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@@ -637,33 -637,14 +637,23 @@@ static struct ctl_table topology_ctl_ta
  	{ },
  };
  
- static struct ctl_table topology_dir_table[] = {
- 	{
- 		.procname	= "s390",
- 		.maxlen		= 0,
- 		.mode		= 0555,
- 		.child		= topology_ctl_table,
- 	},
- 	{ },
- };
- 
  static int __init topology_init(void)
  {
 +	struct device *dev_root;
 +	int rc = 0;
 +
  	timer_setup(&topology_timer, topology_timer_fn, TIMER_DEFERRABLE);
  	if (MACHINE_HAS_TOPOLOGY)
  		set_topology_timer();
  	else
  		topology_update_polarization_simple();
- 	register_sysctl_table(topology_dir_table);
+ 	register_sysctl("s390", topology_ctl_table);
 -	return device_create_file(cpu_subsys.dev_root, &dev_attr_dispatching);
 +
 +	dev_root = bus_get_dev_root(&cpu_subsys);
 +	if (dev_root) {
 +		rc = device_create_file(dev_root, &dev_attr_dispatching);
 +		put_device(dev_root);
 +	}
 +	return rc;
  }
  device_initcall(topology_init);
--

Also, a fixup is required for the drivers/s390/crypto/ap_bus.c:

diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index 85bb0de15e76..8d6b9a52bf3c 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -1570,7 +1570,7 @@ static ssize_t bindings_show(const struct bus_type *bus, char *buf)
 
 static BUS_ATTR_RO(bindings);
 
-static ssize_t features_show(struct bus_type *bus, char *buf)
+static ssize_t features_show(const struct bus_type *bus, char *buf)
 {
        int n = 0;
 
--
Besides that auto-merging does well.

Thank you,
Vasily

The following changes since commit eeac8ede17557680855031c6f305ece2378af326:

  Linux 6.3-rc2 (2023-03-12 16:36:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git tags/s390-6.4-1

for you to fetch changes up to 2a405f6bb3a5b2baaa74dfc5aaa0e1b99145bd1b:

  s390/stackleak: provide fast __stackleak_poison() implementation (2023-04-20 11:36:35 +0200)

----------------------------------------------------------------
s390 updates for the 6.4 merge window

- Add support for stackleak feature. Also allow specifying
  architecture-specific stackleak poison function to enable faster
  implementation. On s390, the mvc-based implementation helps decrease
  typical overhead from a factor of 3 to just 25%

- Convert all assembler files to use SYM* style macros, deprecating the
  ENTRY() macro and other annotations. Select ARCH_USE_SYM_ANNOTATIONS

- Improve KASLR to also randomize module and special amode31 code
  base load addresses

- Rework decompressor memory tracking to support memory holes and improve
  error handling

- Add support for protected virtualization AP binding

- Add support for set_direct_map() calls

- Implement set_memory_rox() and noexec module_alloc()

- Remove obsolete overriding of mem*() functions for KASAN

- Rework kexec/kdump to avoid using nodat_stack to call purgatory

- Convert the rest of the s390 code to use flexible-array member instead
  of a zero-length array

- Clean up uaccess inline asm

- Enable ARCH_HAS_MEMBARRIER_SYNC_CORE

- Convert to using CONFIG_FUNCTION_ALIGNMENT and enable
  DEBUG_FORCE_FUNCTION_ALIGN_64B

- Resolve last_break in userspace fault reports

- Simplify one-level sysctl registration

- Clean up branch prediction handling

- Rework CPU counter facility to retrieve available counter sets just
  once

- Other various small fixes and improvements all over the code

----------------------------------------------------------------
Al Viro (1):
      s390: trim ancient junk from copy_thread()

Alexander Gordeev (5):
      s390/kexec: turn DAT mode off immediately before purgatory
      s390/kdump: cleanup do_start_kdump() prototype and usage
      s390/kdump: fix virtual vs physical address confusion
      s390/kdump: rework invocation of DAT-off code
      s390/kdump: remove nodat stack restriction for calling nodat functions

Gustavo A. R. Silva (2):
      s390/diag: replace zero-length array with flexible-array member
      s390/fcx: replace zero-length array with flexible-array member

Harald Freudenberger (15):
      s390/zcrypt: make psmid unsigned long instead of long long
      s390/zcrypt: rework length information for dqap
      s390/zcrypt: replace scnprintf with sysfs_emit
      s390/ap: exploit new B bit from QCI config info
      s390/ap: introduce new AP bus sysfs attribute features
      s390/ap: make tapq gr2 response a struct
      s390/ap: filter ap card functions, new queue functions attribute
      s390/ap: provide F bit parameter for ap_rapq() and ap_zapq()
      s390/ap: new low level inline functions ap_bapq() and ap_aapq()
      s390/ap: introduce low frequency polling possibility
      s390/ap: implement SE AP bind, unbind and associate
      s390/ap: add ap status asynch error support
      s390/zcrypt: remove unused ancient padding code
      s390/zcrypt: simplify prep of CCA key token
      s390/zcrypt: rework arrays with length zero occurrences

Heiko Carstens (66):
      s390: update defconfigs
      s390/bp: add missing BPENTER to program check handler
      s390/bp: remove TIF_ISOLATE_BP
      s390/bp: remove s390_isolate_bp_guest()
      s390/bp: remove __bpon()
      s390/setup: always inline gen_lpswe()
      Merge branch 'decompressor-memory-tracking' into features
      s390: make use of CONFIG_FUNCTION_ALIGNMENT
      s390/ftrace: move hotpatch trampolines to mcount.S
      s390/expoline: use __ALIGN instead of open coded .align
      s390/vdso: use __ALIGN instead of open coded .align
      s390: enable DEBUG_FORCE_FUNCTION_ALIGN_64B
      s390/mm: make use of atomic_fetch_xor()
      s390: enable ARCH_HAS_MEMBARRIER_SYNC_CORE
      s390/uaccess: add missing earlyclobber annotations to __clear_user()
      s390/uaccess: use symbolic names for inline assembly operands
      s390/uaccess: remove unused label in inline assemblies
      s390/uaccess: rename/sort labels in inline assemblies
      s390/uaccess: sort EX_TABLE list for inline assemblies
      s390/uaccess: rename tmp1 and tmp2 variables
      s390/uaccess: get rid of not needed local variable
      s390/uaccess: remove extra blank line
      s390/dumpstack: simplify in stack logic code
      s390/stack: use STACK_INIT_OFFSET where possible
      s390/stack: set lowcore kernel stack pointer early
      s390: use init_thread_union aka initial stack for the first process
      s390/stacktrace: remove call_on_stack_noreturn()
      s390: remove arch_early_irq_init()
      s390: move on_thread_stack() to processor.h
      s390: enable HAVE_ARCH_STACKLEAK
      s390/checksum: always use cksm instruction
      s390/checksum: remove not needed uaccess.h include
      s390/kaslr: provide kaslr_enabled() function
      s390/kaslr: randomize module base load address
      s390/mm: implement set_memory_rox()
      s390/mm: implement set_memory_rwnx()
      s390/mm: use set_memory_*() helpers instead of open coding
      s390/ftrace: do not assume module_alloc() returns executable memory
      s390/module: create module allocations without exec permissions
      s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT
      s390/mm: fix direct map accounting
      s390/debug: replace zero-length array with flexible-array member
      s390/sclp: replace zero-length array with flexible-array member
      s390/cio: replace zero-length array with flexible-array member
      s390/kasan: remove override of mem*() functions
      s390/lib: use SYM* macros instead of ENTRY(), etc.
      s390/amode31: use SYM* macros instead of ENTRY(), etc.
      s390/crypto,chacha: use SYM* macros instead of ENTRY(), etc.
      s390/crc32be: use SYM* macros instead of ENTRY(), etc.
      s390/crc32le: use SYM* macros instead of ENTRY(), etc.
      s390/mcount: use SYM* macros instead of ENTRY(), etc.
      s390/earlypgm: use SYM* macros instead of ENTRY(), etc.
      s390/head64: use SYM* macros instead of ENTRY(), etc.
      s390/reipl: use SYM* macros instead of ENTRY(), etc.
      s390/kprobes: use SYM* macros instead of ENTRY(), etc.
      s390/purgatory: use SYM* macros instead of ENTRY(), etc.
      s390/entry: use SYM* macros instead of ENTRY(), etc.
      s390/relocate_kernel: use SYM* macros instead of ENTRY(), etc.
      s390/relocate_kernel: adjust indentation
      s390/mm: use BIT macro to generate SET_MEMORY bit masks
      s390/mm: enable ARCH_HAS_SET_DIRECT_MAP
      s390: wire up memfd_secret system call
      s390/mm: use VM_FLUSH_RESET_PERMS in module_alloc()
      s390: select ARCH_USE_SYM_ANNOTATIONS
      stackleak: allow to specify arch specific stackleak poison function
      s390/stackleak: provide fast __stackleak_poison() implementation

Ilya Leoshkevich (1):
      s390/dumpstack: resolve userspace last_break

Lizhe (1):
      s390/vfio-ap: remove redundant driver match function

Luis Chamberlain (6):
      s390: simplify one-level sysctl registration for topology_ctl_table
      s390: simplify one-level syctl registration for s390dbf_table
      s390: simplify one-level sysctl registration for appldata_table
      s390: simplify one level sysctl registration for cmm_table
      s390: simplify one-level sysctl registration for page_table_sysctl
      s390: simplify dynamic sysctl registration for appldata_register_ops

Marc Hartmayer (1):
      s390/boot: improve install.sh script

Nico Boehr (1):
      s390/ipl: fix physical-virtual confusion for diag308

Niklas Schnelle (4):
      PCI: s390: Fix use-after-free of PCI resources with per-function hotplug
      s390/pci: only add specific device in zpci_bus_scan_device()
      s390/pci: remove redundant pci_bus_add_devices() on new bus
      s390/pci: clean up left over special treatment for function zero

Sven Schnelle (1):
      s390/ipl: add missing intersection check to ipl_report handling

Thomas Richter (7):
      s390/cpum_sf: remove flag PERF_CPUM_SF_FULL_BLOCKS
      s390/cpum_cf: log bad return code of function cfset_all_copy
      s390/cpum_cf: remove unnecessary copy_from_user call
      s390/cpum_cf: simplify pr_err() statement in cpumf_pmu_enable/disable
      s390/cpum_cf: introduce static CPU counter facility information
      s390/cpum_cf: provide counter number to validate_ctr_version()
      s390/cpum_cf: remove function validate_ctr_auth() by inline code

Vasily Gorbik (12):
      s390/boot: remove non-functioning image bootable check
      s390/boot: rename mem_detect to physmem_info
      s390/boot: rework decompressor reserved tracking
      s390/mm,pageattr: allow KASAN shadow memory
      s390/kasan: move shadow mapping to decompressor
      Merge branch 'uaccess-inline-asm-cleanup' into features
      s390/entry: rely on long-displacement facility
      s390: make extables read-only
      s390/boot: do not change default_lma
      s390/boot: pin amode31 default lma
      s390/kaslr: generalize and improve random base distribution
      s390/kaslr: randomize amode31 base address

Yu Zhe (1):
      s390/zcrypt: remove unnecessary (void *) conversions

 .../sched/membarrier-sync-core/arch-support.txt    |   4 +-
 arch/s390/Kconfig                                  |  10 +-
 arch/s390/appldata/appldata_base.c                 |  32 +-
 arch/s390/boot/Makefile                            |   2 +-
 arch/s390/boot/boot.h                              |  42 ++-
 arch/s390/boot/install.sh                          |   8 +-
 arch/s390/boot/ipl_parm.c                          |   6 +-
 arch/s390/boot/ipl_report.c                        | 100 ++---
 arch/s390/boot/kaslr.c                             | 171 +++++----
 arch/s390/boot/mem_detect.c                        | 191 ----------
 arch/s390/boot/pgm_check_info.c                    |   7 +-
 arch/s390/boot/physmem_info.c                      | 328 +++++++++++++++++
 arch/s390/boot/startup.c                           | 129 ++++---
 arch/s390/boot/vmem.c                              | 284 +++++++++++---
 arch/s390/boot/vmlinux.lds.S                       |   2 +
 arch/s390/configs/debug_defconfig                  |  13 +-
 arch/s390/configs/defconfig                        |  12 +-
 arch/s390/configs/zfcpdump_defconfig               |   2 +-
 arch/s390/crypto/chacha-s390.S                     |  47 +--
 arch/s390/crypto/crc32be-vx.S                      |  17 +-
 arch/s390/crypto/crc32le-vx.S                      |  30 +-
 arch/s390/include/asm/ap.h                         | 152 ++++++--
 arch/s390/include/asm/checksum.h                   |  10 +-
 arch/s390/include/asm/diag.h                       |   2 +-
 arch/s390/include/asm/entry-common.h               |   5 -
 arch/s390/include/asm/fcx.h                        |   2 +-
 arch/s390/include/asm/kasan.h                      |  31 +-
 arch/s390/include/asm/linkage.h                    |   2 +-
 arch/s390/include/asm/mem_detect.h                 | 117 ------
 arch/s390/include/asm/nospec-insn.h                |   3 +-
 arch/s390/include/asm/perf_event.h                 |   2 -
 arch/s390/include/asm/pgtable.h                    |   2 +-
 arch/s390/include/asm/physmem_info.h               | 171 +++++++++
 arch/s390/include/asm/processor.h                  |  46 ++-
 arch/s390/include/asm/set_memory.h                 |  36 +-
 arch/s390/include/asm/setup.h                      |  20 +-
 arch/s390/include/asm/stacktrace.h                 |  52 ++-
 arch/s390/include/asm/string.h                     |  15 +-
 arch/s390/include/asm/thread_info.h                |  10 +-
 arch/s390/kernel/debug.c                           |  14 +-
 arch/s390/kernel/dumpstack.c                       |  46 ++-
 arch/s390/kernel/early.c                           |  23 +-
 arch/s390/kernel/earlypgm.S                        |   4 +-
 arch/s390/kernel/entry.S                           | 152 ++++----
 arch/s390/kernel/ftrace.c                          |  22 +-
 arch/s390/kernel/head64.S                          |  14 +-
 arch/s390/kernel/ipl.c                             |   7 +-
 arch/s390/kernel/kprobes.c                         |   2 +-
 arch/s390/kernel/kprobes_insn_page.S               |   4 +-
 arch/s390/kernel/machine_kexec.c                   |  56 ++-
 arch/s390/kernel/mcount.S                          |  26 +-
 arch/s390/kernel/module.c                          |  29 +-
 arch/s390/kernel/perf_cpum_cf.c                    | 206 +++++------
 arch/s390/kernel/perf_cpum_sf.c                    |  14 +-
 arch/s390/kernel/process.c                         |  10 +-
 arch/s390/kernel/processor.c                       |  18 -
 arch/s390/kernel/reipl.S                           |  10 +-
 arch/s390/kernel/relocate_kernel.S                 |  96 +++--
 arch/s390/kernel/setup.c                           | 152 +++-----
 arch/s390/kernel/smp.c                             |  11 +-
 arch/s390/kernel/syscalls/syscall.tbl              |   2 +-
 arch/s390/kernel/text_amode31.S                    |  75 ++--
 arch/s390/kernel/topology.c                        |  12 +-
 arch/s390/kernel/vdso32/vdso_user_wrapper.S        |   3 +-
 arch/s390/kernel/vdso64/vdso_user_wrapper.S        |   5 +-
 arch/s390/kernel/vmlinux.lds.S                     |  10 +-
 arch/s390/lib/mem.S                                |  28 +-
 arch/s390/lib/uaccess.c                            | 137 +++----
 arch/s390/mm/Makefile                              |   3 -
 arch/s390/mm/cmm.c                                 |  12 +-
 arch/s390/mm/init.c                                |   5 +-
 arch/s390/mm/kasan_init.c                          | 301 ---------------
 arch/s390/mm/pageattr.c                            |  94 ++++-
 arch/s390/mm/pgalloc.c                             |  20 +-
 arch/s390/mm/vmem.c                                |  35 +-
 arch/s390/pci/pci.c                                |  39 +-
 arch/s390/pci/pci_bus.c                            |  23 +-
 arch/s390/pci/pci_bus.h                            |   3 +-
 arch/s390/purgatory/head.S                         |  62 +---
 arch/s390/purgatory/kexec-purgatory.S              |  14 +-
 drivers/pci/bus.c                                  |  21 ++
 drivers/s390/char/sclp.h                           |   2 +-
 drivers/s390/char/sclp_cmd.c                       |   2 +-
 drivers/s390/char/sclp_early_core.c                |   8 +-
 drivers/s390/cio/chsc.c                            |   2 +-
 drivers/s390/cio/chsc.h                            |   2 +-
 drivers/s390/crypto/ap_bus.c                       | 254 +++++++------
 drivers/s390/crypto/ap_bus.h                       |  70 ++--
 drivers/s390/crypto/ap_card.c                      |  23 +-
 drivers/s390/crypto/ap_queue.c                     | 410 +++++++++++++++++----
 drivers/s390/crypto/vfio_ap_drv.c                  |   6 -
 drivers/s390/crypto/vfio_ap_ops.c                  |  16 +-
 drivers/s390/crypto/zcrypt_api.c                   |  60 +--
 drivers/s390/crypto/zcrypt_card.c                  |   6 +-
 drivers/s390/crypto/zcrypt_cca_key.h               |  37 +-
 drivers/s390/crypto/zcrypt_ccamisc.c               |  74 ++--
 drivers/s390/crypto/zcrypt_cex2c.c                 |  66 ++--
 drivers/s390/crypto/zcrypt_cex4.c                  | 141 ++++---
 drivers/s390/crypto/zcrypt_ep11misc.c              |   2 +-
 drivers/s390/crypto/zcrypt_msgtype50.c             |  15 +-
 drivers/s390/crypto/zcrypt_msgtype6.c              | 139 +++----
 drivers/s390/crypto/zcrypt_queue.c                 |   4 +-
 include/linux/pci.h                                |   1 +
 kernel/stackleak.c                                 |  17 +-
 lib/Kconfig.debug                                  |   2 +-
 105 files changed, 2831 insertions(+), 2463 deletions(-)
 delete mode 100644 arch/s390/boot/mem_detect.c
 create mode 100644 arch/s390/boot/physmem_info.c
 delete mode 100644 arch/s390/include/asm/mem_detect.h
 create mode 100644 arch/s390/include/asm/physmem_info.h
 delete mode 100644 arch/s390/mm/kasan_init.c

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ