Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp1964122rwe; Fri, 2 Sep 2022 06:41:34 -0700 (PDT) X-Google-Smtp-Source: AA6agR57wGplpwOYBMgJqqBKUY/z4EgopBQ2UzzJimgPahpTeGIvR4xgmlokDd/X9O/6H3a7A/11 X-Received: by 2002:a63:fc11:0:b0:430:41b4:acf5 with SMTP id j17-20020a63fc11000000b0043041b4acf5mr9994261pgi.408.1662126094543; Fri, 02 Sep 2022 06:41:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662126094; cv=none; d=google.com; s=arc-20160816; b=K5lpXURGThqc1cpKMMaw7RxvuqTQ2BkiSWzJKVIeCT84DqI47L0sGXDwINRh0FGiDt g+exXLM7MLQhJAndmlqnRYo/pJVuUD5+Gm8PcoMRL395aec1IdKk3k5RJyitM6RUptEU W7P2J9Wo2imm30CbN4/f0zj2hVOr4vWr21EEL+BU1UR+2VnInuqkKMIxXVr2lFN5BUeQ RQRfmX79h2np6FhtkOKYi953l8943a6NxxNUM1OiVlndrb+tPUnx19Gxo6RWmT/dR830 LCHHXp99mF9+6+fSV7xkR+oQ63kEi9YrrB0XhEB1D9McexAGjVl0Tnd1KKnL/5q0GIiM Lx3A== 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=InSfO4lfSd6XrHkzsSfjkE5l/0FDp+Q61tG28XdcD0Q=; b=0+AgfCVkaOe65KLBas9d/H8H9N/SEyqz0MSLtwIOY7RgQEpfP58/dymX4WpnILTTNg 0EHfJdptnDl93lWEa7ZUdVgOwCZxwNuJHAUXHmlw4Vsx6IQw2D2yNqOXwjlC2MgYo0Ug IhY3CEiva4Yy5wWL0XPG1LsKyHeMPa8y+p95mG9TPN/MjIoMPoWRL4OpkE2ITLiEqIWu YXwCWZuBiv+fXw3LEj3/CXJrpe6kUXYIZ6z8/RJMttB3PrMF0YUUYHz3fXa5Avw6MChy 7uIJFmxvFxkCcUTAgrVBCLWZLtoiySIwf1eFjfsK6i4DKIDXXKNeH252/n8B8dLq53gt DTpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=xJynxbXe; 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 q8-20020a655248000000b00429a5de1176si2000777pgp.136.2022.09.02.06.41.23; Fri, 02 Sep 2022 06:41:34 -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=xJynxbXe; 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 S237724AbiIBMvw (ORCPT + 99 others); Fri, 2 Sep 2022 08:51:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237467AbiIBMur (ORCPT ); Fri, 2 Sep 2022 08:50:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A7D3DDB46; Fri, 2 Sep 2022 05:36:49 -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 33642B82A99; Fri, 2 Sep 2022 12:27:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86D57C433D6; Fri, 2 Sep 2022 12:27:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1662121646; bh=NajXgsYiuauLyQeZ+zf17PKBvQW9QaVX+z7efwu5PKk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xJynxbXeyQZKlsS1EhRY3bAZNjmCOmkbt34G9OKclbvtYNS6nQEKj4KRVx8Bsv+BA deG/9wo0n6l3/SZWml8FmKSDBnFKTIWuXjoPSCIf6Mxpr9VsTWnYoDXSC6DUn93n4Q /vn5WdFFXf0LFo6LvLrHz8ZXA6u803KZuXKW+GP4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Helge Deller Subject: [PATCH 5.4 02/77] parisc: Fix exception handler for fldw and fstw instructions Date: Fri, 2 Sep 2022 14:18:11 +0200 Message-Id: <20220902121403.669167896@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220902121403.569927325@linuxfoundation.org> References: <20220902121403.569927325@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.1 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,T_SCC_BODY_TEXT_LINE 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: Helge Deller commit 7ae1f5508d9a33fd58ed3059bd2d569961e3b8bd upstream. The exception handler is broken for unaligned memory acceses with fldw and fstw instructions, because it trashes or uses randomly some other floating point register than the one specified in the instruction word on loads and stores. The instruction "fldw 0(addr),%fr22L" (and the other fldw/fstw instructions) encode the target register (%fr22) in the rightmost 5 bits of the instruction word. The 7th rightmost bit of the instruction word defines if the left or right half of %fr22 should be used. While processing unaligned address accesses, the FR3() define is used to extract the offset into the local floating-point register set. But the calculation in FR3() was buggy, so that for example instead of %fr22, register %fr12 [((22 * 2) & 0x1f) = 12] was used. This bug has been since forever in the parisc kernel and I wonder why it wasn't detected earlier. Interestingly I noticed this bug just because the libime debian package failed to build on *native* hardware, while it successfully built in qemu. This patch corrects the bitshift and masking calculation in FR3(). Signed-off-by: Helge Deller Cc: Signed-off-by: Greg Kroah-Hartman --- arch/parisc/kernel/unaligned.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/arch/parisc/kernel/unaligned.c +++ b/arch/parisc/kernel/unaligned.c @@ -107,7 +107,7 @@ #define R1(i) (((i)>>21)&0x1f) #define R2(i) (((i)>>16)&0x1f) #define R3(i) ((i)&0x1f) -#define FR3(i) ((((i)<<1)&0x1f)|(((i)>>6)&1)) +#define FR3(i) ((((i)&0x1f)<<1)|(((i)>>6)&1)) #define IM(i,n) (((i)>>1&((1<<(n-1))-1))|((i)&1?((0-1L)<<(n-1)):0)) #define IM5_2(i) IM((i)>>16,5) #define IM5_3(i) IM((i),5)