Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1436079/?format=api
{ "id": 1436079, "url": "http://patchwork.ozlabs.org/api/patches/1436079/?format=api", "web_url": "http://patchwork.ozlabs.org/project/sparclinux/patch/20210204162341.4218-1-andreas@gaisler.com/", "project": { "id": 10, "url": "http://patchwork.ozlabs.org/api/projects/10/?format=api", "name": "Linux SPARC Development ", "link_name": "sparclinux", "list_id": "sparclinux.vger.kernel.org", "list_email": "sparclinux@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20210204162341.4218-1-andreas@gaisler.com>", "list_archive_url": null, "date": "2021-02-04T16:23:41", "name": "sparc32: Preserve clone syscall flags argument for restarts due to signals", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "1edd5ade6d74bf12d60466e596dac60a4f103555", "submitter": { "id": 16746, "url": "http://patchwork.ozlabs.org/api/people/16746/?format=api", "name": "Andreas Larsson", "email": "andreas@gaisler.com" }, "delegate": { "id": 34, "url": "http://patchwork.ozlabs.org/api/users/34/?format=api", "username": "davem", "first_name": "David", "last_name": "Miller", "email": "davem@davemloft.net" }, "mbox": "http://patchwork.ozlabs.org/project/sparclinux/patch/20210204162341.4218-1-andreas@gaisler.com/mbox/", "series": [ { "id": 228001, "url": "http://patchwork.ozlabs.org/api/series/228001/?format=api", "web_url": "http://patchwork.ozlabs.org/project/sparclinux/list/?series=228001", "date": "2021-02-04T16:23:41", "name": "sparc32: Preserve clone syscall flags argument for restarts due to signals", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/228001/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1436079/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1436079/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<sparclinux-owner@vger.kernel.org>", "X-Original-To": "patchwork-incoming@ozlabs.org", "Delivered-To": "patchwork-incoming@ozlabs.org", "Authentication-Results": "ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=sparclinux-owner@vger.kernel.org; receiver=<UNKNOWN>)", "Received": [ "from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4DWkRB3rj4z9sXV\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 5 Feb 2021 03:24:54 +1100 (AEDT)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n id S237000AbhBDQYg (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n Thu, 4 Feb 2021 11:24:36 -0500", "from bin-mail-out-06.binero.net ([195.74.38.229]:37496 \"EHLO\n bin-mail-out-06.binero.net\" rhost-flags-OK-OK-OK-OK)\n by vger.kernel.org with ESMTP id S237885AbhBDQY3 (ORCPT\n <rfc822;sparclinux@vger.kernel.org>); Thu, 4 Feb 2021 11:24:29 -0500", "from andreas.got.gaisler.com (h-98-128-223-123.na.cust.bahnhof.se\n [98.128.223.123])\n by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n id 58f64f36-6705-11eb-a076-005056917f90;\n Thu, 04 Feb 2021 17:23:46 +0100 (CET)" ], "X-Halon-ID": "58f64f36-6705-11eb-a076-005056917f90", "Authorized-sender": "andreas@gaisler.com", "From": "Andreas Larsson <andreas@gaisler.com>", "To": "David Miller <davem@davemloft.net>, sparclinux@vger.kernel.org", "Cc": "Sam Ravnborg <sam@ravnborg.org>, linux-kernel@vger.kernel.org,\n software@gaisler.com", "Subject": "[PATCH] sparc32: Preserve clone syscall flags argument for restarts\n due to signals", "Date": "Thu, 4 Feb 2021 17:23:41 +0100", "Message-Id": "<20210204162341.4218-1-andreas@gaisler.com>", "X-Mailer": "git-send-email 2.17.1", "Precedence": "bulk", "List-ID": "<sparclinux.vger.kernel.org>", "X-Mailing-List": "sparclinux@vger.kernel.org" }, "content": "This fixes a bug where a clone syscall that is restarted due to a\npending signal is restarted with garbage in the register %o0 that holds\nthe clone flags.\n\nThis keep the original %i0 of a syscall (as seen from the trap handler)\nin %l6 rather than %l5. This is done because for clone (and also qfork)\n%l5 is used as a temporary variable in the same register window. Before\nthis, that temporary value would be the value that was then incorrectly\nused as the orig_i0 argument to do_notify_resume.\n\nIn order to preserve %l6, the temporary usage of %l6 in ret_sys_call is\nchanged to use %l5 instead and the setting %l6 to 0 or 1 was removed.\nThe use of that 0 or 1 value in %l6 was removed in commit\n28e6103665301ce60634e8a77f0b657c6cc099de.\n\nSigned-off-by: Andreas Larsson <andreas@gaisler.com>\n---\n arch/sparc/kernel/entry.S | 8 +++-----\n arch/sparc/kernel/rtrap_32.S | 2 +-\n 2 files changed, 4 insertions(+), 6 deletions(-)", "diff": "diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S\nindex d58940280f8d..a269ad2fe6df 100644\n--- a/arch/sparc/kernel/entry.S\n+++ b/arch/sparc/kernel/entry.S\n@@ -994,7 +994,7 @@ do_syscall:\n \tandcc\t%l5, _TIF_SYSCALL_TRACE, %g0\n \tmov\t%i4, %o4\n \tbne\tlinux_syscall_trace\n-\t mov\t%i0, %l5\n+\t mov\t%i0, %l6\n 2:\n \tcall\t%l7\n \t mov\t%i5, %o5\n@@ -1003,16 +1003,15 @@ do_syscall:\n \tst\t%o0, [%sp + STACKFRAME_SZ + PT_I0]\n \n ret_sys_call:\n-\tld\t[%curptr + TI_FLAGS], %l6\n+\tld\t[%curptr + TI_FLAGS], %l5\n \tcmp\t%o0, -ERESTART_RESTARTBLOCK\n \tld\t[%sp + STACKFRAME_SZ + PT_PSR], %g3\n \tset\tPSR_C, %g2\n \tbgeu\t1f\n-\t andcc\t%l6, _TIF_SYSCALL_TRACE, %g0\n+\t andcc\t%l5, _TIF_SYSCALL_TRACE, %g0\n \n \t/* System call success, clear Carry condition code. */\n \tandn\t%g3, %g2, %g3\n-\tclr\t%l6\n \tst\t%g3, [%sp + STACKFRAME_SZ + PT_PSR]\t\n \tbne\tlinux_syscall_trace2\n \t ld\t[%sp + STACKFRAME_SZ + PT_NPC], %l1 /* pc = npc */\n@@ -1027,7 +1026,6 @@ ret_sys_call:\n \tsub\t%g0, %o0, %o0\n \tor\t%g3, %g2, %g3\n \tst\t%o0, [%sp + STACKFRAME_SZ + PT_I0]\n-\tmov\t1, %l6\n \tst\t%g3, [%sp + STACKFRAME_SZ + PT_PSR]\n \tbne\tlinux_syscall_trace2\n \t ld\t[%sp + STACKFRAME_SZ + PT_NPC], %l1 /* pc = npc */\ndiff --git a/arch/sparc/kernel/rtrap_32.S b/arch/sparc/kernel/rtrap_32.S\nindex dca8ed810046..8931fe266346 100644\n--- a/arch/sparc/kernel/rtrap_32.S\n+++ b/arch/sparc/kernel/rtrap_32.S\n@@ -75,7 +75,7 @@ signal_p:\n \t ld\t[%sp + STACKFRAME_SZ + PT_PSR], %t_psr\n \n \tmov\t%g2, %o2\n-\tmov\t%l5, %o1\n+\tmov\t%l6, %o1\n \tcall\tdo_notify_resume\n \t add\t%sp, STACKFRAME_SZ, %o0\t! pt_regs ptr\n \n", "prefixes": [] }