Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp13958305pxu; Mon, 4 Jan 2021 09:00:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJzWztKh6CiHE4jGfKzeydDY7MzLzvs8amVg9PSYyBpsWY9BlYIR6x54VaimcstCVNqFztRe X-Received: by 2002:a05:6402:254c:: with SMTP id l12mr18012373edb.290.1609779634918; Mon, 04 Jan 2021 09:00:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609779634; cv=none; d=google.com; s=arc-20160816; b=kFqIT1vzNVM0gwUCju94V0cuCApc0CNZeeKXQdwmGZ5u7JuIJFwa1c35Yu4C85BI4m xgse+M9KV3xTFprc3/qWkFAWqNwB1TTOvnuZq0/IGrBhInCwDP5KvGjeqG/jnk2QfmAi EIhcc2UoFl9nwbc/j6eeuwpravjV5PIb6EDJ2WerTRcnLbHqItg4lWKJ7jqx2aEycFEb 1qij4yauWx8Iwj3H+fy/maEwaXrFqN4t1fM37zRKdZwoYVrZ03MTnWaPMWVvBZIkIm0z u651DbamAPbNRHCpdVSQIOr13zzwtf26T61tGr3sPiFgfJoKA1NhEBpywVXyVEDBuvvL Mt/g== 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=iU3uBaPx0TWo2kOe2UwaDIGyndMtRgBCkIE63lsKgcA=; b=it8w8iTYCqA8cTCcZqk58bN/GWd5MHQ6q7xkUdMLugzMaez1BY8Y8q0ngdkFOyF+Ko 3eejwHGOftUZpRAxeuv0BJ3MW07J2loHvXGV4S9JHHTpN4MmU2A2Fhq7jK/1DKMSN8LU I/h/mpZIHw5i8k+QdyUT4JVGt0j7MGZIe/druji39Yg7TQDBi9YtOzjLwf0t5PEKFF4u /NislRgSoX/OA5NFEnDaCL+BRsptKqpqeUNSrH8ll9JZAnPjk92gC4WE4+V+cHhztmBL bL3PeY274xRC3C06tzzQcKFr6liPJ9rZWGEONJk9M3Q8PJNbiRR0Y0wy3ZuAJrJEvaWf TdAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wNrpmi4q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f11si29540363eje.349.2021.01.04.09.00.11; Mon, 04 Jan 2021 09:00:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wNrpmi4q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.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: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729601AbhADQIi (ORCPT + 99 others); Mon, 4 Jan 2021 11:08:38 -0500 Received: from mail.kernel.org ([198.145.29.99]:38732 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728637AbhADQBm (ORCPT ); Mon, 4 Jan 2021 11:01:42 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 90B9E2251E; Mon, 4 Jan 2021 16:01:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1609776087; bh=jhm/B5OpPhNWdpC2OjByY/9D+qGhR18HHOvJ1eE8rEI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wNrpmi4qJJs9WJq/2gbyxxhyOrejmtwVsG4Z7cFYwo5H8RDB/PxK+3XK9c63VQF5U Ou1YTmndSdL9VvydZGgNdXdU0cxywJqj1ZhVDuua6cPdHdZCsYBfLNmL3R6rvK1Xxo TEu78Xsh8wzGrea+fEh1cPc72loJrxgCCaZ8kuCY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ilya Leoshkevich , Christian Borntraeger , Mikhail Zaslonko , Heiko Carstens , Vasily Gorbik , Andrew Morton , Linus Torvalds Subject: [PATCH 5.10 16/63] lib/zlib: fix inflating zlib streams on s390 Date: Mon, 4 Jan 2021 16:57:09 +0100 Message-Id: <20210104155709.601396478@linuxfoundation.org> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210104155708.800470590@linuxfoundation.org> References: <20210104155708.800470590@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ilya Leoshkevich commit f0bb29e8c4076444d32df00c8d32e169ceecf283 upstream. Decompressing zlib streams on s390 fails with "incorrect data check" error. Userspace zlib checks inflate_state.flags in order to byteswap checksums only for zlib streams, and s390 hardware inflate code, which was ported from there, tries to match this behavior. At the same time, kernel zlib does not use inflate_state.flags, so it contains essentially random values. For many use cases either zlib stream is zeroed out or checksum is not used, so this problem is masked, but at least SquashFS is still affected. Fix by always passing a checksum to and from the hardware as is, which matches zlib_inflate()'s expectations. Link: https://lkml.kernel.org/r/20201215155551.894884-1-iii@linux.ibm.com Fixes: 126196100063 ("lib/zlib: add s390 hardware support for kernel zlib_inflate") Signed-off-by: Ilya Leoshkevich Tested-by: Christian Borntraeger Acked-by: Mikhail Zaslonko Acked-by: Christian Borntraeger Cc: Heiko Carstens Cc: Vasily Gorbik Cc: Mikhail Zaslonko Cc: [5.6+] Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- lib/zlib_dfltcc/dfltcc_inflate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/lib/zlib_dfltcc/dfltcc_inflate.c +++ b/lib/zlib_dfltcc/dfltcc_inflate.c @@ -125,7 +125,7 @@ dfltcc_inflate_action dfltcc_inflate( param->ho = (state->write - state->whave) & ((1 << HB_BITS) - 1); if (param->hl) param->nt = 0; /* Honor history for the first block */ - param->cv = state->flags ? REVERSE(state->check) : state->check; + param->cv = state->check; /* Inflate */ do { @@ -138,7 +138,7 @@ dfltcc_inflate_action dfltcc_inflate( state->bits = param->sbb; state->whave = param->hl; state->write = (param->ho + param->hl) & ((1 << HB_BITS) - 1); - state->check = state->flags ? REVERSE(param->cv) : param->cv; + state->check = param->cv; if (cc == DFLTCC_CC_OP2_CORRUPT && param->oesc != 0) { /* Report an error if stream is corrupted */ state->mode = BAD;