Received: by 2002:a25:5b86:0:0:0:0:0 with SMTP id p128csp1770800ybb; Fri, 29 Mar 2019 10:59:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqyiQB0QgW5bhk+7jtrCrdhti6fI2wXn9jLWg1iSpPaT3cvq+6K2pfbZbo0gbx463IDE/wJp X-Received: by 2002:a63:fc43:: with SMTP id r3mr29284320pgk.44.1553882339921; Fri, 29 Mar 2019 10:58:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553882339; cv=none; d=google.com; s=arc-20160816; b=F9ximamZoNOsHyCDOBzRRURs/zi3rTY4c7HAe99CYTieChecrd8Hi0gEok/3C/aMvv RS58BT3fm/VrQXuycfAsgF6trhW41wXtjUFrfEPuUDo+SuPS1TzLD858ZGfD2C+PlH7a V7plq8WMhJkP/VDDnCkICGwzpLHll0jC675nu62LWHZy8eRBgMQQd3jWSgyN0q4fyXDh qwwlCK4kpR9MAb8aqm31BlVnirb8QxLzZlUCYP54hzeUcvq5TAnprNIY/9YotzM5VgRw ADA8eKQrxztofnbSUdVko4qBgsewIAM4KYPG6bdywBH1Yq0nxDF1FE4o62xsvhUg2ycW M9jQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=y1v+uCgxFSWrPHlA8nDgBEvt4sMWQvF4EIO/pVD58yw=; b=Lbp6PwszloVEqicUWKKOpxPQir1ZHShKU8Wh+8QUtKU9MdKLzdp7j6ep6Ypc4QdF0n wMzrahqgN8QaJayfvXTacK2bBK8tlJGFtF60kRN8AxhHgal4AZDe928aLXkswD4i3ZWM CHUHbzCiHNnzuJpg587EG6Ox4UKcbQllOAPcDy8gXeulpaHkhMbLaXdeaJRBsbgCNZAx 23K89N2bIjLT0gclPfUKw8mwem78KEtfgNRrXrz0GSVCAmH0Cvt9qUFneecWIf3cGI+k gKLqOPOwWwJK5tL/Q07pL6Smrs76noXlZ+SfvEbdHigpDLevxRB/O9xrl8ntoWVSYlnA d5iA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="c/bvpK8P"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h6si2256331pfn.13.2019.03.29.10.58.44; Fri, 29 Mar 2019 10:58:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="c/bvpK8P"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730025AbfC2R5l (ORCPT + 99 others); Fri, 29 Mar 2019 13:57:41 -0400 Received: from mail-io1-f66.google.com ([209.85.166.66]:44867 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729662AbfC2R5l (ORCPT ); Fri, 29 Mar 2019 13:57:41 -0400 Received: by mail-io1-f66.google.com with SMTP id u12so2433127iop.11 for ; Fri, 29 Mar 2019 10:57:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=y1v+uCgxFSWrPHlA8nDgBEvt4sMWQvF4EIO/pVD58yw=; b=c/bvpK8P6hBeKfZVURQ2OhxnVe/RQZH6TP4rxNPzie9GwDFKU7MeGPOnIf6M+5AHtR JXSpiFr3gL4PH7bHsoFl7jpMXWJgFotW/zwfIHIaVhUftRoTK9HbUDNVNwyW/XgvQJ9R 4DrYAx6yNQMPMV7pugW/2BKTmNP1s7epgjY04u6uXTcJKS8pWwFU+0qpcXl1AYxH/4aZ +c5z3Or3YSNz0uGL/gVyNXBDJ6fmxzdSY5XefsRq+Dr/sqAJtIGLlqQnCD2Cq36HN8sK kZCfQn7GG1vSq3gRBIhcZZeWU8aZ8F3QYynjVYhisK3AB6gt5JX7e0/miCvx1kwc/Tob NOVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=y1v+uCgxFSWrPHlA8nDgBEvt4sMWQvF4EIO/pVD58yw=; b=tOR4S8jsUp/N3f7jwaXa1kFH4CYnEtzka2eb12VHmmDcTIXrJbEPD6ZogC4XbaIQoI RLTYeH37vw3eQEfxy+svm8l2mt0IeJAzKpp3ydAFAvX08iA0wcHk7y2Nd0yd5TELgntm 5aLFTetIVxOd7gq72knm3AnLyVHFUiyDi8WwuDbsUPX60/8IubDa7x70sWy8VvkjPbRl MkxiXq5LaF+k5mFgYhMRCSR/BzK6hdVaz0Uyui92cOlVvTSs8yIT46t6RynneKbLTLK+ t+sPfXbNZJHv/lDrqDFIGExFp1PYZlNU3I5tZKSmalVB8ZGW2U73c1JP2AVqkwT8in8d 6xjQ== X-Gm-Message-State: APjAAAVnXSMNJsw5EzyzEqx/MiSq64+7Dtiiup0ZKqPX7qB+ReFueVIB oBi9mNzthlV/zA4jmTa1lYb8/WC6uZjrty0Ismw= X-Received: by 2002:a6b:f813:: with SMTP id o19mr15147750ioh.70.1553881949929; Fri, 29 Mar 2019 10:52:29 -0700 (PDT) MIME-Version: 1.0 References: <20190329171221.GA32456@altlinux.org> <20190329131514.3e4ec93e@gandalf.local.home> In-Reply-To: <20190329131514.3e4ec93e@gandalf.local.home> From: David Abdurachmanov Date: Fri, 29 Mar 2019 18:52:18 +0100 Message-ID: Subject: Re: [PATCH] riscv: fix syscall_get_arguments() and syscall_set_arguments() To: Steven Rostedt Cc: "Dmitry V. Levin" , Will Drewry , Kees Cook , Palmer Dabbelt , linux-kernel@vger.kernel.org, Andy Lutomirski , Ingo Molnar , linux-riscv@lists.infradead.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 29, 2019 at 6:15 PM Steven Rostedt wrote: > > On Fri, 29 Mar 2019 20:12:21 +0300 > "Dmitry V. Levin" wrote: > > > RISC-V syscall arguments are located in orig_a0,a1..a5 fields > > of struct pt_regs. > > > > Due to an off-by-one bug and a bug in pointer arithmetic > > syscall_get_arguments() was reading s3..s7 fields instead of a1..a5. > > Likewise, syscall_set_arguments() was writing s3..s7 fields > > instead of a1..a5. > > Should I add this to my series? And then rebase on top of it? I have alternative version posted in December part of SECCOMP patchset which is based on arm64 implementation. http://lists.infradead.org/pipermail/linux-riscv/2018-December/002450.html I noticed that SECCOMP wasn't working properly if filters were checking syscall arguments, because populated arguments were wrong. Btw, I plan to send v2 of SECCOMP patchset soonish. david > > -- Steve > > > > > Fixes: e2c0cdfba7f69 ("RISC-V: User-facing API") > > Cc: Steven Rostedt > > Cc: Ingo Molnar > > Cc: Kees Cook > > Cc: Andy Lutomirski > > Cc: Will Drewry > > Cc: linux-riscv@lists.infradead.org > > Cc: stable@vger.kernel.org # v4.15+ > > Signed-off-by: Dmitry V. Levin > > --- > > arch/riscv/include/asm/syscall.h | 12 +++++++----- > > 1 file changed, 7 insertions(+), 5 deletions(-) > > > > diff --git a/arch/riscv/include/asm/syscall.h b/arch/riscv/include/asm/syscall.h > > index bba3da6ef157..6ea9e1804233 100644 > > --- a/arch/riscv/include/asm/syscall.h > > +++ b/arch/riscv/include/asm/syscall.h > > @@ -79,10 +79,11 @@ static inline void syscall_get_arguments(struct task_struct *task, > > if (i == 0) { > > args[0] = regs->orig_a0; > > args++; > > - i++; > > n--; > > + } else { > > + i--; > > } > > - memcpy(args, ®s->a1 + i * sizeof(regs->a1), n * sizeof(args[0])); > > + memcpy(args, ®s->a1 + i, n * sizeof(args[0])); > > } > > > > static inline void syscall_set_arguments(struct task_struct *task, > > @@ -94,10 +95,11 @@ static inline void syscall_set_arguments(struct task_struct *task, > > if (i == 0) { > > regs->orig_a0 = args[0]; > > args++; > > - i++; > > n--; > > - } > > - memcpy(®s->a1 + i * sizeof(regs->a1), args, n * sizeof(regs->a0)); > > + } else { > > + i--; > > + } > > + memcpy(®s->a1 + i, args, n * sizeof(regs->a1)); > > } > > > > static inline int syscall_get_arch(void) > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv