From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2046AD10C03 for ; Sat, 26 Oct 2024 20:21:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date: In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: References:List-Owner; bh=MntiY6Uj0vr8MPNQMuCWekfXTJziqMcDkBZr0VV0AWo=; b=4Xw AAaYpkIs8olBd7eA4NUCcRM2YO0Ft94a0hDaw6Pf2z2UGuHJ3oPm3c4zfsQTpgc8KMFkCtqiWhfdP LeIOsvT0130eImnToGSINM+zUTvd9xtp3cOfITzHGblUvxcpqo1xv4o6km8rGD9jRieHfEq2NCA2k oUdkr8RDA0Yigc3S3nK65Qq13R1IEJC+vaI1vtVmhMqt86ZW4Ex5UbnXvaMzGwZ8ivHR35WRTaUr1 fLz2boNbSA++nw9QN+maB6jtH722VB38gunSs3WtxmemjDYNWTUHsAfMX3w4xZ4JQ14quUezk+3QY ypTOvIVkcEFNJKsp8OpKsN6MgKr4i/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t4nHl-00000007BDc-0ni1; Sat, 26 Oct 2024 20:21:21 +0000 Received: from galois.linutronix.de ([2a0a:51c0:0:12e:550::1]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t4nHb-00000007BCR-1tVc for linux-riscv@lists.infradead.org; Sat, 26 Oct 2024 20:21:19 +0000 From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1729974068; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to; bh=UVBjNciPaT9E3/C35g4TcCJ4q9NvcZt7yT82yg5lifo=; b=yuTgQOiVrC6YqmdaazV/76roMK9/6pPIX11AwxpNcefs6yBRJrT40Kz/ph35Fs/0rlDXfS HLx+afW3lXBxobzfZrLsT/D1wZZ7UPBL5GYzAIAaT2Fx8GLPs3W4Lq+wbnCgMX1dN7OPRF bJxeArvFOkcagJXOOI5XsPdIQ24hE4kgbzRNprnMUCJmG8TyylfgZSN7tlrk3ffDLE/ziT DccGekjNYS5xeqlHz2mN+PZ5YhjhJsBOLwN0mb1B7hgtjNRfrD+tD4yaVYLe1XFzL8rgcO TNWzgNSRAnv6HqiCLHXzO9uvKlIH6eQVj9cvqY7H139nEFCnP4k9my6BLdbpJg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1729974068; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to; bh=UVBjNciPaT9E3/C35g4TcCJ4q9NvcZt7yT82yg5lifo=; b=Sa6ZCPHIASFMTbZNN3AyFVpS+Y/Kgi9RYHbv8Afr5k+F8gwTtD6/kb8Ju/Yds4Py8n8Lmt qdf1h93fBB9ukSCA== To: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Celeste Liu , Celeste Liu via B4 Relay , Paul Walmsley , Palmer Dabbelt , Albert Ou , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= Cc: Palmer Dabbelt , Alexandre Ghiti , "Dmitry V. Levin" , Andrea Bolognani , Felix Yan , Ruizhe Pan , Shiqi Zhang , Guo Ren , Yao Zi , Han Gao , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] riscv/entry: get correct syscall number from syscall_get_nr() In-Reply-To: <87ldycjluq.fsf@all.your.base.are.belong.to.us> Date: Sat, 26 Oct 2024 22:21:07 +0200 Message-ID: <87ldya4nv0.ffs@tglx> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241026_132111_826303_7F033A17 X-CRM114-Status: GOOD ( 31.51 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCBPY3QgMjUgMjAyNCBhdCAwNzozMCwgQmrDtnJuIFTDtnBlbCB3cm90ZToKPiBUaG9t YXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4gd3JpdGVzOgo+PiBJdCdzIGNvbXBsZXRl bHkgdW5jbGVhciB0byBtZSB3aGF0IHRoZSBhY3R1YWwgcHJvYmxlbSBpcy4gVGhlIGZsb3cgaG93 Cj4+IHRoaXMgd29ya3Mgb24gYWxsIGFyY2hpdGVjdHVyZXMgaXM6Cj4+Cj4+ICAgICAgICByZWdz LT5vcmlnX2EwICA9IHJlZ3MtPmEwCj4+ICAgICAgICByZWdzLT5hMCA9IC1FTk9TWVM7Cj4+Cj4+ ICAgICAgICBuciA9IHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGUoLi4uLik7Cj4+Cj4+ICAg ICAgICBpZiAobnIgPj0gMCkKPj4gICAgICAgICAgIHJlZ3MtPmEwID0gbnIgPCBNQVhfU1lTQ0FM TCA/IHN5c2NhbGwobnIpIDogLUVOT1NZUzsKPj4gICAgICAgICAgICAgICAgICAgICAgCj4+IElm IHN5c2NhbGxfdHJhY2VfZW50ZXIoKSByZXR1cm5zIC0xIHRvIHNraXAgdGhlIHN5c2NhbGwsIHRo ZW4gcmVncy0+YTAKPj4gaXMgdW5tb2RpZmllZCwgdW5sZXNzIG9uZSBvZiB0aGUgbWFnaWMgb3Bl cmF0aW9ucyBtb2RpZmllZCBpdC4KPj4KPj4gSWYgc3lzY2FsbF90cmFjZV9lbnRlcigpIHdhcyBu b3QgYWN0aXZlIChubyB0cmFjZXIsIG5vIHNlY2NvbXAgLi4uKSB0aGVuCj4+IHJlZ3MtPmEwIGFs cmVhZHkgY29udGFpbnMgLUVOT1NZUy4KPj4KPj4gU28gd2hhdCdzIHRoZSBleGFjdCBwcm9ibGVt Pwo+Cj4gSXQncyBhIG1peCBvZiBjYWxsaW5nIGNvbnZlbnRpb24sIGFuZCBVQVBJOgo+ICAgKiBS SVNDLVYgdXNlcyBhMCBmb3IgYXJnMCAqYW5kKiByZXR1cm4gdmFsdWUgKGxpa2UgYXJtNjQpLgo+ ICAgKiBSSVNDLVYgZG9lcyBub3QgZXhwb3NlIG9yaWdfYTAgdG8gdXNlcmxhbmQsIGFuZCBjYW5u b3QgZWFzaWx5IHN0YXJ0Cj4gICAgIGRvaW5nIHRoYXQgdy9vIGJyZWFraW5nIFVBUEkuCj4KPiBO b3csIHdoZW4gc2V0dGluZyBhMCB0byAtRU5PU1lTLCBpdCdzIGNsb2JiZXJpbmcgYXJnMCwgYW5k IHRoZSBwdHJhY2VyCj4gd2lsbCBoYXZlIGFuIGluY29ycmVjdCBhcmcwICgtRU5PU1lTKS4KCk9o IEkgc2VlLiBJIHdhcyBsb29raW5nIGF0IGl0IGZyb20gdGhlIHg4NiBQT1YuLi4gCgpMb29raW5n IGRlZXBlciBpbnRvIHRoaXMsIHRoaXMgaXMgYWxsIGNvbXBsZXRlbHkgaW5jb25zaXN0ZW50IGFj cm9zcwphcmNoaXRlY3R1cmVzLiBBbGwgb2YgdGhlbSBjb3BpZWQgZWl0aGVyIGZyb20geDg2IG9y IGZyb20gc29tZSBvdGhlcgpjbG9zZSBlbm91Z2ggZXhpc3RpbmcgY29weSBhbmQgY2hhbmdlZCBz dHVmZiBvbiB0b3AuCgpTbyB3ZSBoYXZlIHR3byBkaWZmZXJlbnQgc2NlbmFyaW9zIEFGQUlDVCAo SSBkaWQgbm90IGxvb2sgcmVhbGx5CmRlZXBseSk6CgogICAxKSBUaGUgcmVnaXN0ZXIgd2hpY2gg aG9sZHMgdGhlIHN5c2NhbGwgbnVtYmVyIGlzIHVzZWQgZm9yIHRoZQogICAgICByZXR1cm4gdmFs dWUKCiAgIDIpIEFuIGFyZ3VtZW50IHJlZ2lzdGVyIGlzIHVzZWQgZm9yIHRoZSByZXR1cm4gdmFs dWUKCiMxIGlzIHRoZSBlYXN5IGNhc2UgYW5kIGp1c3QgIndvcmtzIgoKICAgYmVjYXVzZSBvcmln XyRSRUcgaG9sZHMgdGhlIG9yaWdpbmFsIHN5c2NhbGwgbnVtYmVyIGFuZCBldmVyeXRoaW5nCiAg IGZhbGxzIGludG8gcGxhY2UuCgojMiBuZWVkcyBzb21lIHRob3VnaHQsIGJ1dCB3ZSBhcmUgbm90 IGdvaW5nIHRvIGFkZCB0aGlzOgoKPgkgaWYgKHdvcmsgJiBTWVNDQUxMX1dPUktfRU5URVIpCj4J CSBzeXNjYWxsID0gc3lzY2FsbF90cmFjZV9lbnRlcihyZWdzLCBzeXNjYWxsLCB3b3JrKTsKPiAr CWVsc2UgaWYgKHN5c2NhbGwgPT0gLTFMKQo+ICsJCXN5c2NhbGxfc2V0X3JldHVybl92YWx1ZShj dXJyZW50LCByZWdzLCAtRU5PU1lTLCAwKTsKPgoKaW50byB0aGUgc3lzY2FsbCBwYXRoIGp1c3Qg dG8gbWFrZSAjMiB3b3JrLiBUaGF0J3MgaG90cGF0aCBhbmQgYWZmZWN0cwphbGwgb3RoZXIgYXJj aGl0ZWN0dXJlcyB0b28uCgpTbyB0aGUgcHJvYmxlbSBmb3IgdGhlICMyIGNhc2UgaXMgdGhhdCB0 aGVyZSBpcyBubyBkaXN0aW5jdGlvbiBiZXR3ZWVuIGEKdXNlciBzcGFjZSBpc3N1ZWQgc3lzY2Fs bChAbnIgPSAtMSkgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgKC0xKSBvZgp2YXJpb3VzIGZ1bmN0 aW9ucyBpbnZvbHZlZCBpbiB0aGUgc3lzY2FsbCAndHJhY2VyJyBwcm9jZXNzaW5nLgoKU28gd2hh dCB0aGUgaXNzdWUgd2l0aCBDZWxlc3RlJ3MgY2hhbmdlIGlzOgoKCXJlcyA9IHN5c2NhbGxfZW50 ZXJfZnJvbV91c2VyX21vZGUocmVncywgc3lzY2FsbCk7CglzeXNjYWxsID0gc3lzY2FsbF9nZXRf bnIoY3VycmVudCwgcmVncyk7CgoJYWRkX3JhbmRvbV9rc3RhY2tfb2Zmc2V0KCk7CgoJaWYgKHN5 c2NhbGwgPCAwIHx8IHN5c2NhbGwgPj0gTlJfc3lzY2FsbHMpCiAgICAgICAgCXJlZ3MtPmEwID0g LUVOT1NZUzsKCkFzIHRoZSB0cmFjZXIgY2FuIGludmFsaWRhdGUgdGhlIHN5c2NhbGwgbnVtYmVy IGFsb25nIHdpdGggcmVncy0+YTAsCnRoaXMgb3ZlcndyaXRlcyB0aGUgZXJyb3IgY29kZSBzZXQg YnkgdGhlIHRyYWNlci4gWW91ciBzb2x1dGlvbiBoYXMgYQpzaW1pbGFyIHByb2JsZW0uCgpUaGVy ZSBpcyBhbm90aGVyIGlzc3VlIHZzLiByZWdzLT5hMC4gQXNzdW1lIGEgcHRyYWNlciBtb2RpZmll ZCByZWdzLT5hMAooYXJnMCkgYW5kIGxldHMgdGhlIHRhc2sgY29udGludWUgKG5vIGZhdGFsIHNp Z25hbCBwZW5kaW5nKS4KClRoZW4gdGhlIGZvbGxvd2luZyBzZWNjb21wKCkgaW52b2NhdGlvbiB3 aWxsIGdldCByZWdzLT5vcmlnX2EwIGZyb20Kc3lzY2FsbF9nZXRfYXJndW1lbnRzKCksIHdoaWNo IGlzIG5vdCB3aGF0IHRoZSBwdHJhY2VyIHNldCwgcmlnaHQ/CgpMZXQgbWUgbG9vayBhdCB5b3Vy IGZhaWx1cmUgYW5hbHlzaXMgZnJvbSB5b3VyIGZpcnN0IHJlcGx5OgoKPiAgMS4gc3RyYWNlICJ0 cmFjaW5nIjogUmVxdWlyZXMgdGhhdCByZWdzLT5hMCBpcyBub3QgdGFtcGVyZWQgd2l0aCBwcmlv cgo+ICAgICBwdHJhY2Ugbm90aWZpY2F0aW9uCj4gCj4gICAgIEUuZy46Cj4gICAgIHwgIyAuL3N0 cmFjZSAvCj4gICAgIHwgZXhlY3ZlKCIvIiwgWyIvIl0sIDB4N2ZmZmZhYWMzODkwIC8qIDIxIHZh cnMgKi8pID0gLTEgRUFDQ0VTIChQZXJtaXNzaW9uIGRlbmllZCkKPiAgICAgfCAuL3N0cmFjZTog ZXhlYzogUGVybWlzc2lvbiBkZW5pZWQKPiAgICAgfCArKysgZXhpdGVkIHdpdGggMSArKysKPiAg ICAgfCAjIC4vZGlzYWJsZV9wdHJhY2VfZ2V0X3N5c2NhbGxfaW5mbyAuL3N0cmFjZSAvCj4gICAg IHwgZXhlY3ZlKDB4ZmZmZmZmZmZmZmZmZmZkYSwgWyIvIl0sIDB4N2ZmZmQ4OTNjZTEwIC8qIDIx IHZhcnMgKi8pID0gLTEgRUFDQ0VTIChQZXJtaXNzaW9uIGRlbmllZCkKPiAgICAgfCAuL3N0cmFj ZTogZXhlYzogUGVybWlzc2lvbiBkZW5pZWQKPiAgICAgfCArKysgZXhpdGVkIHdpdGggMSArKysK PiAKPiAgICAgSW4gdGhlIHNlY29uZCBjYXNlLCBhcmcwIGlzIHByZW1hdHVyZWx5IHNldCB0byAt RU5PU1lTCj4gICAgICgweGZmZmZmZmZmZmZmZmZmZGEpLgoKVGhhdCdzIGV4cGVjdGVkIGlmIHB0 cmFjZV9nZXRfc3lzY2FsbF9pbmZvKCkgaXMgbm90IHVzZWQuIFBsYWluIGR1bXBpbmcKcmVnaXN0 ZXJzIHdpbGwgZ2l2ZSB5b3UgdGhlIGN1cnJlbnQgdmFsdWUgb24gYWxsIGFyY2hpdGVjdHVyZXMu CnB0cmFjZV9nZXRfc3lzY2FsbF9pbmZvKCkgZXhpc3QgZXhhY3RseSBmb3IgdGhhdCByZWFzb24u Cgo+ICAyLiBzdHJhY2UgInN5c2NhbGwgdGFtcGVyaW5nIjogUmVxdWlyZXMgdGhhdCBFTk9TWVMg aXMgcmV0dXJuZWQgZm9yCj4gICAgIHN5c2NhbGwoLTEpLCBhbmQgbm90IHNraXBwZWQgdy9vIGEg cHJvcGVyIHJldHVybiB2YWx1ZS4KPiAKPiAgICAgRS5nLjoKPiAgICAgfCAuL3N0cmFjZSAtYTAg LWV3cml0ZSAtZWluamVjdD13cml0ZTplcnJvcj1lbm9zcGMgZWNobyBoZWxsb2plY3Q9d3JpdGU6 ZXJyb3I9ZW5vc3BjIGVjaG8gaGVsbG8gICAKPiAKPiAgICAgSGVyZSwgc3RyYWNlIGV4cGVjdHMg dGhhdCBpbmplY3RpbmcgLTEsIHdvdWxkIHJlc3VsdCBpbiBhIEVOT1NZUy4KCk5vLiBJdCBleHBl Y3RzIEVOT1NQQyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGxpbmUuIG1hbiBzdHJhY2U6CgogICAg ICAgSWYgOmVycm9yPWVycm5vIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGEgZmF1bHQgaXMgaW5qZWN0 ZWQgaW50byBhCiAgICAgICBzeXNjYWxsIGludm9jYXRpb246IHRoZSBzeXNjYWxsIG51bWJlciBp cyByZXBsYWNlZCBieSAtMSB3aGljaAogICAgICAgY29ycmVzcG9uZHMgdG8gYW4gaW52YWxpZCBz eXNjYWxsICh1bmxlc3MgYSBzeXNjYWxsIGlzIHNwZWNpZmllZAogICAgICAgd2l0aCA6c3lzY2Fs bD0gb3B0aW9uKSwgYW5kIHRoZSBlcnJvciBjb2RlIGlzIHNwZWNpZmllZCB1c2luZyBhCiAgICAg ICBzeW1ib2xpYyBlcnJubyB2YWx1ZSBsaWtlIEVOT1NZUyBvciBhIG51bWVyaWMgdmFsdWUgd2l0 aGluCiAgICAgICAxLi40MDk1IHJhbmdlLgoKU2ltaWxhciBmb3IgLWVpbmplY3Q6cmV0dmFsPSRO CgpTbyB5b3UgY2Fubm90IG92ZXJ3cml0ZSBhMCB3aXRoIEVOT1NZUyBpZiB0aGUgc3lzY2FsbCBu ZWVkcyB0byBiZQpza2lwcGVkLgoKPiAgMy4gc2VjY29tcCBmaWx0ZXJpbmc6IFJlcXVpcmVzIHRo YXQgdGhlIGEwIGlzIG5vdCB0YW1wZXJlZCB0bwoKTm8uIHNlY2NvbXAgdXNlcyBzeXNjYWxsX2dl dF9hcmd1bWVudHMoKSB3aGljaCBzZXRzIGEwIHRvIG9yaWdfYTAgZm9yCmluc3BlY3Rpb24uIEFz IEkgc2FpZCBiZWZvcmUgdGhhdCBmYWlscyB3aGVuIHRoZSBwdHJhY2VyIGNoYW5nZWQKYXJndW1l bnQgMCBiZWZvcmUgdGhlIHNlY2NvbXAgaW52b2NhdGlvbi4gc2VjY29tcCB3aWxsIHNlZSB0aGUg b3JpZ2luYWwKYXJndW1lbnQgYW5kIHdhdmVzIGl0IHRocm91Z2guCgpMb29raW5nIGF0IENlbGVz dGUncyBhbmFseXNpcyBhZ2FpbjoKCj4gV2UgY2FuJ3Qga25vdyB3aGV0aGVyIHN5c2NhbGxfbnIg aXMgLTEgd2hlbiB3ZSBnZXQgLTEKPiBmcm9tIHN5c2NhbGxfZW50ZXJfZnJvbV91c2VyX21vZGUo KS4gQW5kIHRoZSBvbGQgc3lzY2FsbCB2YXJpYWJsZSBpcwo+IHVudXNhYmxlIGJlY2F1c2Ugc3lz Y2FsbF9lbnRlcl9mcm9tX3VzZXJfbW9kZSgpIG1heSBjaGFuZ2UgYTcgcmVnaXN0ZXIuCgpZb3Ug b2J2aW91c2x5IGNhbiBzYXZlIHRoZSB1c2VyIHNwYWNlIHN1cHBsaWVkIHZhbHVlIGF3YXkKaW4g ZG9fdHJhcF9lY2FsbF91KCkgYnkgc2ltcGx5IGRvaW5nCgogICAgICAgbG9uZyBvcmlnX25yID0g cmVncy0+YTc7CgpObz8gQnV0IEknbSBub3Qgc3VyZSB0aGF0IGl0IHNvbHZlcyBhbGwgcHJvYmxl bXMuIEl0IGNhbm5vdCBzb2x2ZSB0aGUKcHRyYWNlL3NlY2NvbXAgaW50ZXJhY3Rpb24uCgpUaGUg cmVzdCBvZiB0aGUgY2hhbmdlbG9nIGlzIHNpbXBseSBib2d1cy4gSnVzdCBiZWNhdXNlIHJpc2N2 IG1hZGUgYQptaXN0YWtlIHdpdGggdGhlIFVBQkkgZGVzaWduIGRvZXMgbm90IG1lYW4gdGhhdCBp dCdzIHVzZWxlc3MgZm9yCmV2ZXJ5b25lIGVsc2UuCgpBbmQgbm8sIEknbSBub3QgZ29pbmcgdG8g Y2hhbmdlIHg4NiBmb3IgdGhhdCBqdXN0IHRvIGhhdmUgYSBwb2ludGxlc3MKbG9hZCBpbiB0aGUg c3lzY2FsbCBob3RwYXRoLCB3aGVuIHRoZSBub3JtYWwgb3BlcmF0aW9uIGp1c3Qga2VlcHMgdGhl CnN5c2NhbGwgbnVtYmVyIGluIHRoZSBzYW1lIHJlZ2lzdGVyLgoKVGhlIHJlYWwgcHJvYmxlbSBp cyB0aGF0IG9yaWdfYTAgaXMgbm90IGV4cG9zZWQgaW4gdGhlIHVzZXIgdmlldyBvZiB0aGUKcmVn aXN0ZXJzLiBDaGFuZ2luZyB0aGF0IHN0cnVjdCBicmVha3MgdGhlIGV4aXN0aW5nIGFwcGxpY2F0 aW9ucwpvYnZpb3VzbHkuCgpCdXQgeW91IGNhbiBleHBvc2UgaXQgd2l0aG91dCBjaGFuZ2luZyB0 aGUgc3RydWN0IGJ5IGV4cG9zaW5nIGEgcmVnc2V0CmZvciBvcmlnX2EwIHdoaWNoIGFsbG93cyB5 b3UgdG8gcmVhZCBhbmQgd3JpdGUgaXQgc2ltaWxhciB0byB3aGF0IEFSTTY0CmRvZXMgZm9yIHRo ZSBzeXNjYWxsIG51bWJlci4KClRoYXQgb2YgY291cnNlIHJlcXVpcmVzIHVwZGF0ZWQgdXNlciBz cGFjZSwgYnV0IGV4aXN0aW5nIHVzZXIgc3BhY2Ugd2lsbApjb250aW51ZSB0byB3b3JrIHdpdGgg dGhlIGN1cnJlbnQgbGltaXRhdGlvbnMuCgpUaGFua3MsCgogICAgICAgIHRnbHgKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxp bmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F315DF9CF; Sat, 26 Oct 2024 20:21:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729974078; cv=none; b=QOVKCa7DWhq726SAH/SHh4PWmMql5uUtS7p8zrnjgYmIxbkv3/sTiQISyAesYKgfjVfdxWxkz5LeIAwrLDSO/kksQKZ6U5cd0Ev8wXUynIedXbua3+RQpAJ7+ST3Ee6+0YkKhdXyDuywNk6v3DG41Zj1jcFDbp+mKyouX/Agd0Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729974078; c=relaxed/simple; bh=4RO+I45ZMTd84+0w9a/hMQQ8nCEPZF58XMe7CBLRXWA=; h=From:To:Cc:Subject:In-Reply-To:Date:Message-ID:MIME-Version: Content-Type; b=NwDYiZ0Dk82WkQ0AszRWVkBnci0hCLchOy+29PAGI53YylT9aZYqeOtK/S7VsUrLkz8UOnV9A3NgHyQqmByjw+E6uLYCUA/6ZgZLUZR1srDeVvmvORdSIqfxXfSDxI9sjNggwfXzQ9hWmYQSHP8U68il/MRe3SSoIsYo24T9U+4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=yuTgQOiV; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Sa6ZCPHI; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="yuTgQOiV"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Sa6ZCPHI" From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1729974068; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to; bh=UVBjNciPaT9E3/C35g4TcCJ4q9NvcZt7yT82yg5lifo=; b=yuTgQOiVrC6YqmdaazV/76roMK9/6pPIX11AwxpNcefs6yBRJrT40Kz/ph35Fs/0rlDXfS HLx+afW3lXBxobzfZrLsT/D1wZZ7UPBL5GYzAIAaT2Fx8GLPs3W4Lq+wbnCgMX1dN7OPRF bJxeArvFOkcagJXOOI5XsPdIQ24hE4kgbzRNprnMUCJmG8TyylfgZSN7tlrk3ffDLE/ziT DccGekjNYS5xeqlHz2mN+PZ5YhjhJsBOLwN0mb1B7hgtjNRfrD+tD4yaVYLe1XFzL8rgcO TNWzgNSRAnv6HqiCLHXzO9uvKlIH6eQVj9cvqY7H139nEFCnP4k9my6BLdbpJg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1729974068; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to; bh=UVBjNciPaT9E3/C35g4TcCJ4q9NvcZt7yT82yg5lifo=; b=Sa6ZCPHIASFMTbZNN3AyFVpS+Y/Kgi9RYHbv8Afr5k+F8gwTtD6/kb8Ju/Yds4Py8n8Lmt qdf1h93fBB9ukSCA== To: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Celeste Liu , Celeste Liu via B4 Relay , Paul Walmsley , Palmer Dabbelt , Albert Ou , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= Cc: Palmer Dabbelt , Alexandre Ghiti , "Dmitry V. Levin" , Andrea Bolognani , Felix Yan , Ruizhe Pan , Shiqi Zhang , Guo Ren , Yao Zi , Han Gao , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] riscv/entry: get correct syscall number from syscall_get_nr() In-Reply-To: <87ldycjluq.fsf@all.your.base.are.belong.to.us> Date: Sat, 26 Oct 2024 22:21:07 +0200 Message-ID: <87ldya4nv0.ffs@tglx> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Fri, Oct 25 2024 at 07:30, Bj=C3=B6rn T=C3=B6pel wrote: > Thomas Gleixner writes: >> It's completely unclear to me what the actual problem is. The flow how >> this works on all architectures is: >> >> regs->orig_a0 =3D regs->a0 >> regs->a0 =3D -ENOSYS; >> >> nr =3D syscall_enter_from_user_mode(....); >> >> if (nr >=3D 0) >> regs->a0 =3D nr < MAX_SYSCALL ? syscall(nr) : -ENOSYS; >>=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 >> If syscall_trace_enter() returns -1 to skip the syscall, then regs->a0 >> is unmodified, unless one of the magic operations modified it. >> >> If syscall_trace_enter() was not active (no tracer, no seccomp ...) then >> regs->a0 already contains -ENOSYS. >> >> So what's the exact problem? > > It's a mix of calling convention, and UAPI: > * RISC-V uses a0 for arg0 *and* return value (like arm64). > * RISC-V does not expose orig_a0 to userland, and cannot easily start > doing that w/o breaking UAPI. > > Now, when setting a0 to -ENOSYS, it's clobbering arg0, and the ptracer > will have an incorrect arg0 (-ENOSYS). Oh I see. I was looking at it from the x86 POV...=20 Looking deeper into this, this is all completely inconsistent across architectures. All of them copied either from x86 or from some other close enough existing copy and changed stuff on top. So we have two different scenarios AFAICT (I did not look really deeply): 1) The register which holds the syscall number is used for the return value 2) An argument register is used for the return value #1 is the easy case and just "works" because orig_$REG holds the original syscall number and everything falls into place. #2 needs some thought, but we are not going to add this: > if (work & SYSCALL_WORK_ENTER) > syscall =3D syscall_trace_enter(regs, syscall, work); > + else if (syscall =3D=3D -1L) > + syscall_set_return_value(current, regs, -ENOSYS, 0); > into the syscall path just to make #2 work. That's hotpath and affects all other architectures too. So the problem for the #2 case is that there is no distinction between a user space issued syscall(@nr =3D -1) and the return value of (-1) of various functions involved in the syscall 'tracer' processing. So what the issue with Celeste's change is: res =3D syscall_enter_from_user_mode(regs, syscall); syscall =3D syscall_get_nr(current, regs); add_random_kstack_offset(); if (syscall < 0 || syscall >=3D NR_syscalls) regs->a0 =3D -ENOSYS; As the tracer can invalidate the syscall number along with regs->a0, this overwrites the error code set by the tracer. Your solution has a similar problem. There is another issue vs. regs->a0. Assume a ptracer modified regs->a0 (arg0) and lets the task continue (no fatal signal pending). Then the following seccomp() invocation will get regs->orig_a0 from syscall_get_arguments(), which is not what the ptracer set, right? Let me look at your failure analysis from your first reply: > 1. strace "tracing": Requires that regs->a0 is not tampered with prior > ptrace notification >=20 > E.g.: > | # ./strace / > | execve("/", ["/"], 0x7ffffaac3890 /* 21 vars */) =3D -1 EACCES (Per= mission denied) > | ./strace: exec: Permission denied > | +++ exited with 1 +++ > | # ./disable_ptrace_get_syscall_info ./strace / > | execve(0xffffffffffffffda, ["/"], 0x7fffd893ce10 /* 21 vars */) =3D= -1 EACCES (Permission denied) > | ./strace: exec: Permission denied > | +++ exited with 1 +++ >=20 > In the second case, arg0 is prematurely set to -ENOSYS > (0xffffffffffffffda). That's expected if ptrace_get_syscall_info() is not used. Plain dumping registers will give you the current value on all architectures. ptrace_get_syscall_info() exist exactly for that reason. > 2. strace "syscall tampering": Requires that ENOSYS is returned for > syscall(-1), and not skipped w/o a proper return value. >=20 > E.g.: > | ./strace -a0 -ewrite -einject=3Dwrite:error=3Denospc echo helloject= =3Dwrite:error=3Denospc echo hello=20=20=20 >=20 > Here, strace expects that injecting -1, would result in a ENOSYS. No. It expects ENOSPC with the above command line. man strace: If :error=3Derrno option is specified, a fault is injected into a syscall invocation: the syscall number is replaced by -1 which corresponds to an invalid syscall (unless a syscall is specified with :syscall=3D option), and the error code is specified using a symbolic errno value like ENOSYS or a numeric value within 1..4095 range. Similar for -einject:retval=3D$N So you cannot overwrite a0 with ENOSYS if the syscall needs to be skipped. > 3. seccomp filtering: Requires that the a0 is not tampered to No. seccomp uses syscall_get_arguments() which sets a0 to orig_a0 for inspection. As I said before that fails when the ptracer changed argument 0 before the seccomp invocation. seccomp will see the original argument and waves it through. Looking at Celeste's analysis again: > We can't know whether syscall_nr is -1 when we get -1 > from syscall_enter_from_user_mode(). And the old syscall variable is > unusable because syscall_enter_from_user_mode() may change a7 register. You obviously can save the user space supplied value away in do_trap_ecall_u() by simply doing long orig_nr =3D regs->a7; No? But I'm not sure that it solves all problems. It cannot solve the ptrace/seccomp interaction. The rest of the changelog is simply bogus. Just because riscv made a mistake with the UABI design does not mean that it's useless for everyone else. And no, I'm not going to change x86 for that just to have a pointless load in the syscall hotpath, when the normal operation just keeps the syscall number in the same register. The real problem is that orig_a0 is not exposed in the user view of the registers. Changing that struct breaks the existing applications obviously. But you can expose it without changing the struct by exposing a regset for orig_a0 which allows you to read and write it similar to what ARM64 does for the syscall number. That of course requires updated user space, but existing user space will continue to work with the current limitations. Thanks, tglx