From patchwork Wed Sep 5 03:52:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Elmously X-Patchwork-Id: 966213 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=canonical.com Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 424qY61S0pz9sCf; Wed, 5 Sep 2018 13:52:58 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1fxOs8-0001DR-CT; Wed, 05 Sep 2018 03:52:52 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1fxOs5-0001B1-8z for kernel-team@lists.ubuntu.com; Wed, 05 Sep 2018 03:52:49 +0000 Received: from mail-io0-f198.google.com ([209.85.223.198]) by youngberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1fxOs4-0001RQ-Sr for kernel-team@lists.ubuntu.com; Wed, 05 Sep 2018 03:52:48 +0000 Received: by mail-io0-f198.google.com with SMTP id w19-v6so5684586ioa.10 for ; Tue, 04 Sep 2018 20:52:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=OkygdUl3YZRbGOSZedoTW0mTYCCREtm3evDHA73vNUo=; b=kgrPL9G2BtInubNt27tY8M2DcKyP+K3fHkqvPcDg9jfDOFnFVnlorT0uNLfEsiCV1J gznEkghOAhjvvxetpyeO0W2QQlVzwkFRKouTxvAdoOuojhjlGi5yB+6HBDPVy+KhmaIc SulHPgNJiPTvJXl/zfGkfQWiKQIx8oXw5Yae8eONCa/3mSS8NYeqh2GSEiP95f711qD9 1rxQRktxbwqojICy1dGcEGYdJWD5qCWEf68bg/FZggP2o+fTuRP7G2p7JkwVIl3Id+jE +bwwA5F9BjyKZYAEpcB/795PIoeja/7Z8/rRoaONB8wwfBx79sOSHjGm2DXBoLGVIHxH lMrQ== X-Gm-Message-State: APzg51CM7P5k5vCEiaNL85aBmzISsU/w3ZHWEj0cSHgxCDQrFp1KInxs PLuOkrCdP7wPi1PvDQ6C6CzJDMAONZNbK0USjgdB1R7EdjvaAliWNH/EgpHulTiDX4aIkgRwXP2 gxZPwUK9wS9KBQcHURvo2Qq2kEVewhUFETUXRuAb9hg== X-Received: by 2002:a24:b60a:: with SMTP id g10-v6mr2372824itf.55.1536119567615; Tue, 04 Sep 2018 20:52:47 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYDPkkeqjYeMJ/6pQTjIWzZGqEh0o5LqedFxUWVxN/5PR3RoeLemIx/qe96Os/E6Wr9IN5H1A== X-Received: by 2002:a24:b60a:: with SMTP id g10-v6mr2372819itf.55.1536119567468; Tue, 04 Sep 2018 20:52:47 -0700 (PDT) Received: from kbuntu.fuzzbuzz.org (23-233-27-24.cpe.pppoe.ca. [23.233.27.24]) by smtp.gmail.com with ESMTPSA id c12-v6sm248689ioq.81.2018.09.04.20.52.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 04 Sep 2018 20:52:46 -0700 (PDT) From: Khalid Elmously To: kernel-team@lists.ubuntu.com Subject: [SRU][Bionic][v2 5/7] s390/lib: use expoline for all bcr instructions Date: Tue, 4 Sep 2018 23:52:05 -0400 Message-Id: <20180905035207.32559-6-khalid.elmously@canonical.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180905035207.32559-1-khalid.elmously@canonical.com> References: <20180905035207.32559-1-khalid.elmously@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Martin Schwidefsky CVE-2017-5715 (Spectre v2 s390x) The memove, memset, memcpy, __memset16, __memset32 and __memset64 function have an additional indirect return branch in form of a "bzr" instruction. These need to use expolines as well. Cc: # v4.17+ Fixes: 97489e0663 ("s390/lib: use expoline for indirect branches") Reviewed-by: Heiko Carstens Signed-off-by: Martin Schwidefsky (cherry-picked from 5eda25b10297684c1f46a14199ec00210f3c346e) Signed-off-by: Khalid Elmously --- arch/s390/lib/mem.S | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/arch/s390/lib/mem.S b/arch/s390/lib/mem.S index 2311f15be9cf..40c4d59c926e 100644 --- a/arch/s390/lib/mem.S +++ b/arch/s390/lib/mem.S @@ -17,7 +17,7 @@ ENTRY(memmove) ltgr %r4,%r4 lgr %r1,%r2 - bzr %r14 + jz .Lmemmove_exit aghi %r4,-1 clgr %r2,%r3 jnh .Lmemmove_forward @@ -36,6 +36,7 @@ ENTRY(memmove) .Lmemmove_forward_remainder: larl %r5,.Lmemmove_mvc ex %r4,0(%r5) +.Lmemmove_exit: BR_EX %r14 .Lmemmove_reverse: ic %r0,0(%r4,%r3) @@ -65,7 +66,7 @@ EXPORT_SYMBOL(memmove) */ ENTRY(memset) ltgr %r4,%r4 - bzr %r14 + jz .Lmemset_exit ltgr %r3,%r3 jnz .Lmemset_fill aghi %r4,-1 @@ -80,6 +81,7 @@ ENTRY(memset) .Lmemset_clear_remainder: larl %r3,.Lmemset_xc ex %r4,0(%r3) +.Lmemset_exit: BR_EX %r14 .Lmemset_fill: cghi %r4,1 @@ -115,7 +117,7 @@ EXPORT_SYMBOL(memset) */ ENTRY(memcpy) ltgr %r4,%r4 - bzr %r14 + jz .Lmemcpy_exit aghi %r4,-1 srlg %r5,%r4,8 ltgr %r5,%r5 @@ -124,6 +126,7 @@ ENTRY(memcpy) .Lmemcpy_remainder: larl %r5,.Lmemcpy_mvc ex %r4,0(%r5) +.Lmemcpy_exit: BR_EX %r14 .Lmemcpy_loop: mvc 0(256,%r1),0(%r3) @@ -145,9 +148,9 @@ EXPORT_SYMBOL(memcpy) .macro __MEMSET bits,bytes,insn ENTRY(__memset\bits) ltgr %r4,%r4 - bzr %r14 + jz .L__memset_exit\bits cghi %r4,\bytes - je .L__memset_exit\bits + je .L__memset_store\bits aghi %r4,-(\bytes+1) srlg %r5,%r4,8 ltgr %r5,%r5 @@ -163,8 +166,9 @@ ENTRY(__memset\bits) larl %r5,.L__memset_mvc\bits ex %r4,0(%r5) BR_EX %r14 -.L__memset_exit\bits: +.L__memset_store\bits: \insn %r3,0(%r2) +.L__memset_exit\bits: BR_EX %r14 .L__memset_mvc\bits: mvc \bytes(1,%r1),0(%r1)