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 X-Spam-Level: X-Spam-Status: No, score=-6.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1B47C468BC for ; Fri, 7 Jun 2019 15:49:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 70FDB214C6 for ; Fri, 7 Jun 2019 15:49:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559922556; bh=i0rXYPA+kVCel0/TEtRCT7TCNOUBC00D8dg5+vPFZVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=o70mMBRUBPPaWJ4GC010sB9ZasGp82aVAHHiyDSJq6D80lpZGGG+98LRFrHWpF8Id PHLEbuuwT/E7Gm/6j2kWDOyODj6sN3WOV6Q74+dF4QcOEkOx/UHgmAapIUCpkWV6db FHpGnLabmNdw0+A3GQYK/BHB4lj88k8X7DbDPKUQ= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731918AbfFGPtP (ORCPT ); Fri, 7 Jun 2019 11:49:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:34840 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730322AbfFGPtI (ORCPT ); Fri, 7 Jun 2019 11:49:08 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3D93D20840; Fri, 7 Jun 2019 15:49:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559922547; bh=i0rXYPA+kVCel0/TEtRCT7TCNOUBC00D8dg5+vPFZVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Yg/GydUXPV57Zl30K3rhHzJBSimE4qeCQOieDE8R8hKXeBND0vrYvl9li8d8sCWsR WpJ3DiscoYmetB3mJKOIaI0N/HIH/Wg0OifJmwGebROiayfGjUl9K/4F81/QxmLFLH OssJJMi16vF8TggUR3nd2/ihEvH82KOjMroOoVQY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dave Martin , James Morse , Will Deacon , "Eric W. Biederman" Subject: [PATCH 5.1 52/85] signal/arm64: Use force_sig not force_sig_fault for SIGKILL Date: Fri, 7 Jun 2019 17:39:37 +0200 Message-Id: <20190607153855.329078761@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190607153849.101321647@linuxfoundation.org> References: <20190607153849.101321647@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Eric W. Biederman commit d76cac67db40c172791ce07948367b96a758e45b upstream. I don't think this is userspace visible but SIGKILL does not have any si_codes that use the fault member of the siginfo union. Correct this the simple way and call force_sig instead of force_sig_fault when the signal is SIGKILL. The two know places where synchronous SIGKILL are generated are do_bad_area and fpsimd_save. The call paths to force_sig_fault are: do_bad_area arm64_force_sig_fault force_sig_fault force_signal_inject arm64_notify_die arm64_force_sig_fault force_sig_fault Which means correcting this in arm64_force_sig_fault is enough to ensure the arm64 code is not misusing the generic code, which could lead to maintenance problems later. Cc: stable@vger.kernel.org Cc: Dave Martin Cc: James Morse Cc: Will Deacon Fixes: af40ff687bc9 ("arm64: signal: Ensure si_code is valid for all fault signals") Signed-off-by: "Eric W. Biederman" Signed-off-by: Will Deacon Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/traps.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -256,7 +256,10 @@ void arm64_force_sig_fault(int signo, in const char *str) { arm64_show_signal(signo, str); - force_sig_fault(signo, code, addr, current); + if (signo == SIGKILL) + force_sig(SIGKILL, current); + else + force_sig_fault(signo, code, addr, current); } void arm64_force_sig_mceerr(int code, void __user *addr, short lsb,