Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp1046049iob; Fri, 13 May 2022 20:57:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyh98J2REsEghuDffdaGKAjjSfH75WpNupxiYfTGaSfG4Y4QuHJzL+luxY5gCfZ39z8sDpK X-Received: by 2002:a05:600c:3647:b0:393:fb6b:e778 with SMTP id y7-20020a05600c364700b00393fb6be778mr17465997wmq.71.1652500642884; Fri, 13 May 2022 20:57:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652500642; cv=none; d=google.com; s=arc-20160816; b=bFqnfzsrBmKt7vU+Y8lEvBCRdxmdDj7X4CwYq/8+zfZ1WM0whHSFti7ZPwEWML2yPW XlrM6wFsmabNnXaqC8yXQKy4mQGzPOxfrZfe+u6+bKHz7O1aoGHEA8F7vQhSj7FTVmD3 0LKgebDOozIDPZivQUFmJSZVAspZeBPvXv5Iet1XbzZxhCThkNliRA5Li/aZWtJ4JHAi tf6WZ/Q7Ns4ySvqJy6B43j1BX1/gIVYW2q07sxH7IsjsAj1C7D0a+yGSbFd9aPcGU/Ew Ym7D/URLsgUS7v6qHoAwIfSeO35saOfEAzS3t4tIM39h7CUYerH7M08FklPV9mlTwEIr F9rA== 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=yE3uPRQNxYJqL/DjD59dC83qZh4Nn0b4zX/3QLmf76I=; b=vVSZavnFHze7+Jy26oLdoXH0eWS8bAhhqK69NMPuYbfgmmSKu8sKqFHQTdslq1gImb SfSREuSv+0RLnchv3Xd2Xk/7OyGHDHISVZgV4YxeWSInnzChQnFwD3yi6a8blBDfuNzZ bvXmnnyL3SeCWVAphMco9OHCYstSLwF8Mbw7ZIbFe+IVUIzbdlFC0rKrkeiN/ga3CWRK LF2IDl7JtePxNxwnzz1QtqZp+sr6X7ESuHkgnV0z4V1EFbzrdTqtJLJBMHPKpQtu5h0a OyxhpAWJJmlUamH23oCxCtm5pAD2Evv1vhERGhH3wUlEqLV1GXEDwlT4BKKqcpHFUMLI hpcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Bcw2ePGt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id j9-20020a5d4649000000b00203e9019492si3352833wrs.534.2022.05.13.20.57.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 May 2022 20:57:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Bcw2ePGt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id C163944711F; Fri, 13 May 2022 17:29:17 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1381284AbiEMOeW (ORCPT + 99 others); Fri, 13 May 2022 10:34:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46478 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1381365AbiEMObU (ORCPT ); Fri, 13 May 2022 10:31:20 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED8531A29DE; Fri, 13 May 2022 07:28:57 -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 dfw.source.kernel.org (Postfix) with ESMTPS id 7A664621AF; Fri, 13 May 2022 14:28:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E740C34117; Fri, 13 May 2022 14:28:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652452136; bh=ucZsfcLRt1vtS/CGzKQjww9jd+U9CFY4u/T5ofBcl1k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Bcw2ePGtLsw5/eb9LCNGwNmVvVsEFgbejIdR/rTrdJZQSkqqK87ATyZOGNOcgcCO1 JJBEcEJHBwLrex0Gulh4ZXSRygPzZBvIR2zWm8oqrGJGgn6EmNnkS+mIsgZ2g+bVnD BfCp1DLSDUERf159OpGEBJ7914GduNfviNylUfDc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Peter Zijlstra (Intel)" , Sasha Levin Subject: [PATCH 5.15 11/21] objtool: Fix SLS validation for kcov tail-call replacement Date: Fri, 13 May 2022 16:23:53 +0200 Message-Id: <20220513142230.205917847@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220513142229.874949670@linuxfoundation.org> References: <20220513142229.874949670@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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: Peter Zijlstra [ Upstream commit 7a53f408902d913cd541b4f8ad7dbcd4961f5b82 ] Since not all compilers have a function attribute to disable KCOV instrumentation, objtool can rewrite KCOV instrumentation in noinstr functions as per commit: f56dae88a81f ("objtool: Handle __sanitize_cov*() tail calls") However, this has subtle interaction with the SLS validation from commit: 1cc1e4c8aab4 ("objtool: Add straight-line-speculation validation") In that when a tail-call instrucion is replaced with a RET an additional INT3 instruction is also written, but is not represented in the decoded instruction stream. This then leads to false positive missing INT3 objtool warnings in noinstr code. Instead of adding additional struct instruction objects, mark the RET instruction with retpoline_safe to suppress the warning (since we know there really is an INT3). Fixes: 1cc1e4c8aab4 ("objtool: Add straight-line-speculation validation") Signed-off-by: Peter Zijlstra (Intel) Link: https://lkml.kernel.org/r/20220323230712.GA8939@worktop.programming.kicks-ass.net Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- tools/objtool/check.c | 10 ++++++++++ 1 file changed, 10 insertions(+) --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -871,6 +871,16 @@ static void add_call_dest(struct objtool : arch_nop_insn(insn->len)); insn->type = sibling ? INSN_RETURN : INSN_NOP; + + if (sibling) { + /* + * We've replaced the tail-call JMP insn by two new + * insn: RET; INT3, except we only have a single struct + * insn here. Mark it retpoline_safe to avoid the SLS + * warning, instead of adding another insn. + */ + insn->retpoline_safe = true; + } } if (mcount && !strcmp(insn->call_dest->name, "__fentry__")) {