Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp775796rwb; Mon, 26 Sep 2022 05:50:50 -0700 (PDT) X-Google-Smtp-Source: AMsMyM70XGUYWOEz0TdKjqYevUtWpfrf0G2IRLl9YPMX3Xji7Xq7XZBOjLzElg8epxgW4KmPKHFe X-Received: by 2002:a17:90b:3847:b0:203:1ef6:ce1 with SMTP id nl7-20020a17090b384700b002031ef60ce1mr24755302pjb.113.1664196650062; Mon, 26 Sep 2022 05:50:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664196650; cv=none; d=google.com; s=arc-20160816; b=IgZ3i0ZIu50RpOuazfxAMX4vj5xxUwc092mfDGMHvxnfP9Mn7YChZ6WwgPo6G8wzXv B48OaclxJmoYlzdVQjGDTK2WoUnE7s4VYwiMrw8K9XP5AF6KrZu2OPi9b6Afh7WdZwNf mxka9WIxyZ+r2/MxuiuwyUgZewQn7y8hJTjySAuW847D+wguSb8Cq+Aty3vF8jgvVXLg qYHhQNzpDRkTZPZBrWSVmX3HueH6ABpvyXr0lju0/qJPXp7LIXxA5XnbAfs5S3XH6Kkb N5fGMeIqhc4PwNKtAYaPh1F4m+T6JGSMSYR50Zo1khvO2dNJ0JEZ/o9yPJ1pD4nxjeWL ibPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=W2XXdGdGtnLc5zckWhmPAe6eS+JFldti4GuR49KxsFE=; b=k5VbEA/h64hsK9jFdbt0dJhH7Ir61JbIGzELIqvUVKAVjXVXK9Wi5qV3MXNxBva2dF DHZB8dAVHAjBU/yopntKeE5nQT9v6beCrLLZTXKEH0kmROIJ23aVK+h4jFUfVN2ppw8b tXVQnisd+ujvxoUlyulXSYd9VtzgV5vnFvUd66bk/Uk4VS3s3NGOvxgSfQHifGyNpZ5j 6y81IR0ivhfGRsoIwE5qRZ9UxYM4G2Ko3sB707rlU54ngnhIQ8wGZ4suIOurKxmKGrV+ pldKb6hcfDRXDRQ7gdfXtvsYlxnP6N/l7Bz642oC6XgRrbxcjM0ngqBqE8JdeT8I2unM hmaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Jr8Ix8qg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r124-20020a632b82000000b0043c700ff7f6si8770150pgr.721.2022.09.26.05.50.38; Mon, 26 Sep 2022 05:50:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Jr8Ix8qg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235283AbiIZLOZ (ORCPT + 99 others); Mon, 26 Sep 2022 07:14:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237371AbiIZLNN (ORCPT ); Mon, 26 Sep 2022 07:13:13 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21F7461D5C; Mon, 26 Sep 2022 03:36:00 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 7E7E4B802C7; Mon, 26 Sep 2022 10:36:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1D43C433B5; Mon, 26 Sep 2022 10:35:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1664188559; bh=zRrMrRABLsN3WrZIDEo2465rJQHnOyEX8cPMpJTlbZg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Jr8Ix8qgPaKZN1PyAkxirZMRGGrFRWR+7MGcAECPoGOCTEQIUXhQ1wLOuW4Q2b0/x v3uCGLZWjJm193HAv27w8hMr//Oood/e0+rtWfB6hcOngw/kVCXL7hoWHrDQBYiEFo FmNV+28i2XZc2egySxUZdDMaQjZhrAuyfC6kdc8M= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro , Palmer Dabbelt Subject: [PATCH 5.15 046/148] riscv: fix a nasty sigreturn bug... Date: Mon, 26 Sep 2022 12:11:20 +0200 Message-Id: <20220926100757.736026480@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220926100756.074519146@linuxfoundation.org> References: <20220926100756.074519146@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Al Viro commit 762df359aa5849e010ef04c3ed79d57588ce17d9 upstream. riscv has an equivalent of arm bug fixed by 653d48b22166 ("arm: fix really nasty sigreturn bug"); if signal gets caught by an interrupt that hits when we have the right value in a0 (-513), *and* another signal gets delivered upon sigreturn() (e.g. included into the blocked mask for the first signal and posted while the handler had been running), the syscall restart logics will see regs->cause equal to EXC_SYSCALL (we are in a syscall, after all) and a0 already restored to its original value (-513, which happens to be -ERESTARTNOINTR) and assume that we need to apply the usual syscall restart logics. Signed-off-by: Al Viro Fixes: e2c0cdfba7f6 ("RISC-V: User-facing API") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/YxJEiSq%2FCGaL6Gm9@ZenIV/ Signed-off-by: Palmer Dabbelt Signed-off-by: Greg Kroah-Hartman --- arch/riscv/kernel/signal.c | 2 ++ 1 file changed, 2 insertions(+) --- a/arch/riscv/kernel/signal.c +++ b/arch/riscv/kernel/signal.c @@ -121,6 +121,8 @@ SYSCALL_DEFINE0(rt_sigreturn) if (restore_altstack(&frame->uc.uc_stack)) goto badframe; + regs->cause = -1UL; + return regs->a0; badframe: