• [PATCH v2 1/1] s390/signal: fix endless loop in do_signal

    From Sumanth Korikkar@21:1/5 to All on Wed Feb 15 15:40:01 2023
    XPost: linux.debian.ports.s390

    No upstream commit exists: the problem addressed here is that
    'commit 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")'
    was backported to 5.10. This commit is broken, but nobody noticed
    upstream, since shortly after s390 converted to generic entry with
    'commit 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")', which implicitly fixed the problem outlined below.

    Thread flag is set to TIF_NOTIFY_SIGNAL for io_uring work. The io work
    user or syscall calls do_signal when either one of the TIF_SIGPENDING or TIF_NOTIFY_SIGNAL flag is set. However, do_signal does consider only TIF_SIGPENDING signal and ignores TIF_NOTIFY_SIGNAL condition. This
    means get_signal is never invoked for TIF_NOTIFY_SIGNAL and hence the
    flag is not cleared, which results in an endless do_signal loop.

    Reference: 'commit 788d0824269b ("io_uring: import 5.15-stable io_uring")' Fixes: 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")
    Cc: stable@vger.kernel.org # 5.10.162
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Acked-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
    ---
    arch/s390/kernel/signal.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
    index b27b6c1f058d..9e900a8977bd 100644
    --- a/arch/s390/kernel/signal.c
    +++ b/arch/s390/kernel/signal.c
    @@ -472,7 +472,7 @@ void do_signal(struct pt_regs *regs)
    current->thread.system_call =
    test_pt_regs_flag(regs, PIF_SYSCALL) ? regs->int_code : 0;

    - if (test_thread_flag(TIF_SIGPENDING) && get_signal(&ksig)) {
    + if (get_signal(&ksig)) {
    /* Whee! Actually deliver the signal. */
    if (current->thread.system_call) {
    regs->int_code = current->thread.system_call;
    --
    2.37.2

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Greg KH@21:1/5 to Sumanth Korikkar on Fri Feb 17 15:40:01 2023
    XPost: linux.debian.ports.s390

    On Wed, Feb 15, 2023 at 03:13:24PM +0100, Sumanth Korikkar wrote:
    No upstream commit exists: the problem addressed here is that
    'commit 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")'
    was backported to 5.10. This commit is broken, but nobody noticed
    upstream, since shortly after s390 converted to generic entry with
    'commit 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")', which implicitly fixed the problem outlined below.

    Thread flag is set to TIF_NOTIFY_SIGNAL for io_uring work. The io work
    user or syscall calls do_signal when either one of the TIF_SIGPENDING or TIF_NOTIFY_SIGNAL flag is set. However, do_signal does consider only TIF_SIGPENDING signal and ignores TIF_NOTIFY_SIGNAL condition. This
    means get_signal is never invoked for TIF_NOTIFY_SIGNAL and hence the
    flag is not cleared, which results in an endless do_signal loop.

    Reference: 'commit 788d0824269b ("io_uring: import 5.15-stable io_uring")' Fixes: 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")
    Cc: stable@vger.kernel.org # 5.10.162
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Acked-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
    ---
    arch/s390/kernel/signal.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    Now queued up, thanks.

    greg k-h

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From gregkh@linuxfoundation.org@21:1/5 to All on Fri Feb 17 15:40:01 2023
    XPost: linux.debian.ports.s390

    This is a note to let you know that I've just added the patch titled

    [PATCH v2 1/1] s390/signal: fix endless loop in do_signal

    to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

    The filename of the patch is:
    s390-signal-fix-endless-loop-in-do_signal.patch
    and it can be found in the queue-5.10 subdirectory.

    If you, or anyone else, feels it should not be added to the stable tree,
    please let <stable@vger.kernel.org> know about it.


    From sumanthk@linux.ibm.com Fri Feb 17 15:04:16 2023
    From: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Date: Wed, 15 Feb 2023 15:13:24 +0100
    Subject: [PATCH v2 1/1] s390/signal: fix endless loop in do_signal
    To: stable@vger.kernel.org, gregkh@linuxfoundation.org, debian-s390@lists.debian.org, debian-kernel@lists.debian.org
    Cc: svens@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, sumanthk@linux.ibm.com, Ulrich.Weigand@de.ibm.com, dipak.zope1@ibm.com
    Message-ID: <20230215141324.1239245-1-sumanthk@linux.ibm.com>

    From: Sumanth Korikkar <sumanthk@linux.ibm.com>

    No upstream commit exists: the problem addressed here is that 'commit 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")' was backported
    to 5.10. This commit is broken, but nobody noticed upstream, since
    shortly after s390 converted to generic entry with 'commit 56e62a737028
    ("s390: convert to generic entry")', which implicitly fixed the problem outlined below.

    Thread flag is set to TIF_NOTIFY_SIGNAL for io_uring work. The io work
    user or syscall calls do_signal when either one of the TIF_SIGPENDING or TIF_NOTIFY_SIGNAL flag is set. However, do_signal does consider only TIF_SIGPENDING signal and ignores TIF_NOTIFY_SIGNAL condition. This
    means get_signal is never invoked for TIF_NOTIFY_SIGNAL and hence the
    flag is not cleared, which results in an endless do_signal loop.

    Reference: 'commit 788d0824269b ("io_uring: import 5.15-stable io_uring")' Fixes: 75309018a24d ("s390: add support for TIF_NOTIFY_SIGNAL")
    Cc: stable@vger.kernel.org # 5.10.162
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Acked-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/s390/kernel/signal.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/s390/kernel/signal.c
    +++ b/arch/s390/kernel/signal.c
    @@ -472,7 +472,7 @@ void do_signal(struct pt_regs *regs)
    current->thread.system_call =
    test_pt_regs_flag(regs, PIF_SYSCALL) ? regs->int_code : 0;

    - if (test_thread_flag(TIF_SIGPENDING) && get_signal(&ksig)) {
    + if (get_signal(&ksig)) {
    /* Whee! Actually deliver the signal. */
    if (current->thread.system_call) {
    regs->int_code = current->thread.system_call;


    Patches currently in stable-queue which might be from sumanthk@linux.ibm.com are

    queue-5.10/s390-signal-fix-endless-loop-in-do_signal.patch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)