<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/s390, branch linux-5.18.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.18.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.18.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2022-08-17T12:42:35Z</updated>
<entry>
<title>Revert "s390/smp: enforce lowcore protection on CPU restart"</title>
<updated>2022-08-17T12:42:35Z</updated>
<author>
<name>Alexander Gordeev</name>
</author>
<published>2022-08-06T07:29:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=89bd3e66dda10191558937e3ef40368ed56d3cf7'/>
<id>urn:sha1:89bd3e66dda10191558937e3ef40368ed56d3cf7</id>
<content type='text'>
commit 953503751a426413ea8aee2299ae3ee971b70d9b upstream.

This reverts commit 6f5c672d17f583b081e283927f5040f726c54598.

This breaks normal crash dump when CPU0 is offline.

Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>s390/unwind: fix fgraph return address recovery</title>
<updated>2022-08-17T12:42:28Z</updated>
<author>
<name>Sumanth Korikkar</name>
</author>
<published>2022-07-26T16:57:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0cacf09ed64143e57b8a0c683dc0248b87e26b7f'/>
<id>urn:sha1:0cacf09ed64143e57b8a0c683dc0248b87e26b7f</id>
<content type='text'>
[ Upstream commit ded466e1806686794b403ebf031133bbaca76bb2 ]

When HAVE_FUNCTION_GRAPH_RET_ADDR_PTR is defined, the return
address to the fgraph caller is recovered by tagging it along with the
stack pointer of ftrace stack. This makes the stack unwinding more
reliable.

When the fgraph return address is modified to return_to_handler,
ftrace_graph_ret_addr tries to restore it to the original
value using tagged stack pointer.

Fix this by passing tagged sp to ftrace_graph_ret_addr.

Fixes: d81675b60d09 ("s390/unwind: recover kretprobe modified return address in stacktrace")
Cc: &lt;stable@vger.kernel.org&gt; # 5.18
Reviewed-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
Signed-off-by: Sumanth Korikkar &lt;sumanthk@linux.ibm.com&gt;
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>kexec, KEYS, s390: Make use of built-in and secondary keyring for signature verification</title>
<updated>2022-08-17T12:42:23Z</updated>
<author>
<name>Michal Suchanek</name>
</author>
<published>2022-07-14T13:40:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cdfceb371d2488d9d9b15073a14939d32ed99736'/>
<id>urn:sha1:cdfceb371d2488d9d9b15073a14939d32ed99736</id>
<content type='text'>
[ Upstream commit 0828c4a39be57768b8788e8cbd0d84683ea757e5 ]

commit e23a8020ce4e ("s390/kexec_file: Signature verification prototype")
adds support for KEXEC_SIG verification with keys from platform keyring
but the built-in keys and secondary keyring are not used.

Add support for the built-in keys and secondary keyring as x86 does.

Fixes: e23a8020ce4e ("s390/kexec_file: Signature verification prototype")
Cc: stable@vger.kernel.org
Cc: Philipp Rudo &lt;prudo@linux.ibm.com&gt;
Cc: kexec@lists.infradead.org
Cc: keyrings@vger.kernel.org
Cc: linux-security-module@vger.kernel.org
Signed-off-by: Michal Suchanek &lt;msuchanek@suse.de&gt;
Reviewed-by: "Lee, Chun-Yi" &lt;jlee@suse.com&gt;
Acked-by: Baoquan He &lt;bhe@redhat.com&gt;
Signed-off-by: Coiby Xu &lt;coxu@redhat.com&gt;
Acked-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Mimi Zohar &lt;zohar@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>kexec_file: drop weak attribute from functions</title>
<updated>2022-08-17T12:42:23Z</updated>
<author>
<name>Naveen N. Rao</name>
</author>
<published>2022-07-01T07:34:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=90341045b5095d136b6ea5809687d3506bb7b84a'/>
<id>urn:sha1:90341045b5095d136b6ea5809687d3506bb7b84a</id>
<content type='text'>
[ Upstream commit 65d9a9a60fd71be964effb2e94747a6acb6e7015 ]

As requested
(http://lkml.kernel.org/r/87ee0q7b92.fsf@email.froward.int.ebiederm.org),
this series converts weak functions in kexec to use the #ifdef approach.

Quoting the 3e35142ef99fe ("kexec_file: drop weak attribute from
arch_kexec_apply_relocations[_add]") changelog:

: Since commit d1bcae833b32f1 ("ELF: Don't generate unused section symbols")
: [1], binutils (v2.36+) started dropping section symbols that it thought
: were unused.  This isn't an issue in general, but with kexec_file.c, gcc
: is placing kexec_arch_apply_relocations[_add] into a separate
: .text.unlikely section and the section symbol ".text.unlikely" is being
: dropped.  Due to this, recordmcount is unable to find a non-weak symbol in
: .text.unlikely to generate a relocation record against.

This patch (of 2);

Drop __weak attribute from functions in kexec_file.c:
- arch_kexec_kernel_image_probe()
- arch_kimage_file_post_load_cleanup()
- arch_kexec_kernel_image_load()
- arch_kexec_locate_mem_hole()
- arch_kexec_kernel_verify_sig()

arch_kexec_kernel_image_load() calls into kexec_image_load_default(), so
drop the static attribute for the latter.

arch_kexec_kernel_verify_sig() is not overridden by any architecture, so
drop the __weak attribute.

Link: https://lkml.kernel.org/r/cover.1656659357.git.naveen.n.rao@linux.vnet.ibm.com
Link: https://lkml.kernel.org/r/2cd7ca1fe4d6bb6ca38e3283c717878388ed6788.1656659357.git.naveen.n.rao@linux.vnet.ibm.com
Signed-off-by: Naveen N. Rao &lt;naveen.n.rao@linux.vnet.ibm.com&gt;
Suggested-by: Eric Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Mimi Zohar &lt;zohar@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>s390/smp: enforce lowcore protection on CPU restart</title>
<updated>2022-08-17T12:42:12Z</updated>
<author>
<name>Alexander Gordeev</name>
</author>
<published>2022-07-20T05:24:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ac4633dab0dc5bfb0c53d52fca4f7207e0433641'/>
<id>urn:sha1:ac4633dab0dc5bfb0c53d52fca4f7207e0433641</id>
<content type='text'>
[ Upstream commit 6f5c672d17f583b081e283927f5040f726c54598 ]

As result of commit 915fea04f932 ("s390/smp: enable DAT before
CPU restart callback is called") the low-address protection bit
gets mistakenly unset in control register 0 save area of the
absolute zero memory. That area is used when manual PSW restart
happened to hit an offline CPU. In this case the low-address
protection for that CPU will be dropped.

Reviewed-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Fixes: 915fea04f932 ("s390/smp: enable DAT before CPU restart callback is called")
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>s390/crash: fix incorrect number of bytes to copy to user space</title>
<updated>2022-08-17T12:42:08Z</updated>
<author>
<name>Alexander Gordeev</name>
</author>
<published>2022-07-15T10:59:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f7b4d4720838020725f06c6b45d69f23bb646d13'/>
<id>urn:sha1:f7b4d4720838020725f06c6b45d69f23bb646d13</id>
<content type='text'>
[ Upstream commit f6749da17a34eb08c9665f072ce7c812ff68aad2 ]

The number of bytes in a chunk is correctly calculated, but instead
the total number of bytes is passed to copy_to_user_real() function.

Reported-by: Matthew Wilcox &lt;willy@infradead.org&gt;
Fixes: df9694c7975f ("s390/dump: streamline oldmem copy functions")
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: s390: pv: leak the topmost page table when destroy fails</title>
<updated>2022-08-17T12:41:47Z</updated>
<author>
<name>Claudio Imbrenda</name>
</author>
<published>2022-06-28T13:56:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b5477f53e1d4de6191f50748a027251b14952eeb'/>
<id>urn:sha1:b5477f53e1d4de6191f50748a027251b14952eeb</id>
<content type='text'>
[ Upstream commit faa2f72cb3569256480c5540d242c84e99965160 ]

Each secure guest must have a unique ASCE (address space control
element); we must avoid that new guests use the same page for their
ASCE, to avoid errors.

Since the ASCE mostly consists of the address of the topmost page table
(plus some flags), we must not return that memory to the pool unless
the ASCE is no longer in use.

Only a successful Destroy Secure Configuration UVC will make the ASCE
reusable again.

If the Destroy Configuration UVC fails, the ASCE cannot be reused for a
secure guest (either for the ASCE or for other memory areas). To avoid
a collision, it must not be used again. This is a permanent error and
the page becomes in practice unusable, so we set it aside and leak it.
On failure we already leak other memory that belongs to the ultravisor
(i.e. the variable and base storage for a guest) and not leaking the
topmost page table was an oversight.

This error (and thus the leakage) should not happen unless the hardware
is broken or KVM has some unknown serious bug.

Signed-off-by: Claudio Imbrenda &lt;imbrenda@linux.ibm.com&gt;
Fixes: 29b40f105ec8d55 ("KVM: s390: protvirt: Add initial vm and cpu lifecycle handling")
Reviewed-by: Janosch Frank &lt;frankja@linux.ibm.com&gt;
Link: https://lore.kernel.org/r/20220628135619.32410-2-imbrenda@linux.ibm.com
Message-Id: &lt;20220628135619.32410-2-imbrenda@linux.ibm.com&gt;
Signed-off-by: Janosch Frank &lt;frankja@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: s390: pv: don't present the ecall interrupt twice</title>
<updated>2022-08-17T12:40:05Z</updated>
<author>
<name>Nico Boehr</name>
</author>
<published>2022-07-18T13:04:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ad9fa7c8aa98c64090a61e9fbdff451e84681b77'/>
<id>urn:sha1:ad9fa7c8aa98c64090a61e9fbdff451e84681b77</id>
<content type='text'>
commit c3f0e5fd2d33d80c5a5a8b5e5d2bab2841709cc8 upstream.

When the SIGP interpretation facility is present and a VCPU sends an
ecall to another VCPU in enabled wait, the sending VCPU receives a 56
intercept (partial execution), so KVM can wake up the receiving CPU.
Note that the SIGP interpretation facility will take care of the
interrupt delivery and KVM's only job is to wake the receiving VCPU.

For PV, the sending VCPU will receive a 108 intercept (pv notify) and
should continue like in the non-PV case, i.e. wake the receiving VCPU.

For PV and non-PV guests the interrupt delivery will occur through the
SIGP interpretation facility on SIE entry when SIE finds the X bit in
the status field set.

However, in handle_pv_notification(), there was no special handling for
SIGP, which leads to interrupt injection being requested by KVM for the
next SIE entry. This results in the interrupt being delivered twice:
once by the SIGP interpretation facility and once by KVM through the
IICTL.

Add the necessary special handling in handle_pv_notification(), similar
to handle_partial_execution(), which simply wakes the receiving VCPU and
leave interrupt delivery to the SIGP interpretation facility.

In contrast to external calls, emergency calls are not interpreted but
also cause a 108 intercept, which is why we still need to call
handle_instruction() for SIGP orders other than ecall.

Since kvm_s390_handle_sigp_pei() is now called for all SIGP orders which
cause a 108 intercept - even if they are actually handled by
handle_instruction() - move the tracepoint in kvm_s390_handle_sigp_pei()
to avoid possibly confusing trace messages.

Signed-off-by: Nico Boehr &lt;nrb@linux.ibm.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 5.7
Fixes: da24a0cc58ed ("KVM: s390: protvirt: Instruction emulation")
Reviewed-by: Claudio Imbrenda &lt;imbrenda@linux.ibm.com&gt;
Reviewed-by: Janosch Frank &lt;frankja@linux.ibm.com&gt;
Reviewed-by: Christian Borntraeger &lt;borntraeger@linux.ibm.com&gt;
Link: https://lore.kernel.org/r/20220718130434.73302-1-nrb@linux.ibm.com
Message-Id: &lt;20220718130434.73302-1-nrb@linux.ibm.com&gt;
Signed-off-by: Claudio Imbrenda &lt;imbrenda@linux.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>s390/archrandom: prevent CPACF trng invocations in interrupt context</title>
<updated>2022-08-03T10:05:18Z</updated>
<author>
<name>Harald Freudenberger</name>
</author>
<published>2022-07-13T13:17:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7560d827d414df209d368c12b69ec4b38915269f'/>
<id>urn:sha1:7560d827d414df209d368c12b69ec4b38915269f</id>
<content type='text'>
commit 918e75f77af7d2e049bb70469ec0a2c12782d96a upstream.

This patch slightly reworks the s390 arch_get_random_seed_{int,long}
implementation: Make sure the CPACF trng instruction is never
called in any interrupt context. This is done by adding an
additional condition in_task().

Justification:

There are some constrains to satisfy for the invocation of the
arch_get_random_seed_{int,long}() functions:
- They should provide good random data during kernel initialization.
- They should not be called in interrupt context as the TRNG
  instruction is relatively heavy weight and may for example
  make some network loads cause to timeout and buck.

However, it was not clear what kind of interrupt context is exactly
encountered during kernel init or network traffic eventually calling
arch_get_random_seed_long().

After some days of investigations it is clear that the s390
start_kernel function is not running in any interrupt context and
so the trng is called:

Jul 11 18:33:39 t35lp54 kernel:  [&lt;00000001064e90ca&gt;] arch_get_random_seed_long.part.0+0x32/0x70
Jul 11 18:33:39 t35lp54 kernel:  [&lt;000000010715f246&gt;] random_init+0xf6/0x238
Jul 11 18:33:39 t35lp54 kernel:  [&lt;000000010712545c&gt;] start_kernel+0x4a4/0x628
Jul 11 18:33:39 t35lp54 kernel:  [&lt;000000010590402a&gt;] startup_continue+0x2a/0x40

The condition in_task() is true and the CPACF trng provides random data
during kernel startup.

The network traffic however, is more difficult. A typical call stack
looks like this:

Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b5600fc&gt;] extract_entropy.constprop.0+0x23c/0x240
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b560136&gt;] crng_reseed+0x36/0xd8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b5604b8&gt;] crng_make_state+0x78/0x340
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b5607e0&gt;] _get_random_bytes+0x60/0xf8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b56108a&gt;] get_random_u32+0xda/0x248
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008aefe7a8&gt;] kfence_guarded_alloc+0x48/0x4b8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008aeff35e&gt;] __kfence_alloc+0x18e/0x1b8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008aef7f10&gt;] __kmalloc_node_track_caller+0x368/0x4d8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b611eac&gt;] kmalloc_reserve+0x44/0xa0
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b611f98&gt;] __alloc_skb+0x90/0x178
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b6120dc&gt;] __napi_alloc_skb+0x5c/0x118
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b8f06b4&gt;] qeth_extract_skb+0x13c/0x680
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b8f6526&gt;] qeth_poll+0x256/0x3f8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b63d76e&gt;] __napi_poll.constprop.0+0x46/0x2f8
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b63dbec&gt;] net_rx_action+0x1cc/0x408
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b937302&gt;] __do_softirq+0x132/0x6b0
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008abf46ce&gt;] __irq_exit_rcu+0x13e/0x170
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008abf531a&gt;] irq_exit_rcu+0x22/0x50
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b922506&gt;] do_io_irq+0xe6/0x198
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b935826&gt;] io_int_handler+0xd6/0x110
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b9358a6&gt;] psw_idle_exit+0x0/0xa
Jul 06 17:37:07 t35lp54 kernel: ([&lt;000000008ab9c59a&gt;] arch_cpu_idle+0x52/0xe0)
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b933cfe&gt;] default_idle_call+0x6e/0xd0
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008ac59f4e&gt;] do_idle+0xf6/0x1b0
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008ac5a28e&gt;] cpu_startup_entry+0x36/0x40
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008abb0d90&gt;] smp_start_secondary+0x148/0x158
Jul 06 17:37:07 t35lp54 kernel:  [&lt;000000008b935b9e&gt;] restart_int_handler+0x6e/0x90

which confirms that the call is in softirq context. So in_task() covers exactly
the cases where we want to have CPACF trng called: not in nmi, not in hard irq,
not in soft irq but in normal task context and during kernel init.

Signed-off-by: Harald Freudenberger &lt;freude@linux.ibm.com&gt;
Acked-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
Reviewed-by: Juergen Christ &lt;jchrist@linux.ibm.com&gt;
Link: https://lore.kernel.org/r/20220713131721.257907-1-freude@linux.ibm.com
Fixes: e4f74400308c ("s390/archrandom: simplify back to earlier design and initialize earlier")
[agordeev@linux.ibm.com changed desc, added Fixes and Link, removed -stable]
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>s390/nospec: build expoline.o for modules_prepare target</title>
<updated>2022-07-22T08:21:45Z</updated>
<author>
<name>Vasily Gorbik</name>
</author>
<published>2022-06-27T12:50:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e40c724237218671af114d710175abbf9c91361f'/>
<id>urn:sha1:e40c724237218671af114d710175abbf9c91361f</id>
<content type='text'>
[ Upstream commit c4e789572557aa147b13bf7fe09cc99663ed0cf5 ]

When CONFIG_EXPOLINE_EXTERN is used expoline thunks are generated
from arch/s390/lib/expoline.S and postlinked into every module.
This is also true for external modules. Add expoline.o build to
the modules_prepare target.

Fixes: 1d2ad084800e ("s390/nospec: add an option to use thunk-extern")
Reported-by: Joe Lawrence &lt;joe.lawrence@redhat.com&gt;
Tested-by: Sumanth Korikkar &lt;sumanthk@linux.ibm.com&gt;
Acked-by: Sumanth Korikkar &lt;sumanthk@linux.ibm.com&gt;
Tested-by: C. Erastus Toe &lt;ctoe@redhat.com&gt;
Tested-by: Joe Lawrence &lt;joe.lawrence@redhat.com&gt;
Link: https://lore.kernel.org/r/patch-1.thread-d13b6c.git-a2387a74dc49.your-ad-here.call-01656331067-ext-4899@work.hours
Signed-off-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
</feed>
