Message ID | 20250206072102.29045-12-kanchana.p.sridhar@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5261C02196 for <linux-mm@archiver.kernel.org>; Thu, 6 Feb 2025 07:21:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5E6B3280008; Thu, 6 Feb 2025 02:21:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F9B6280004; Thu, 6 Feb 2025 02:21:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 34A02280008; Thu, 6 Feb 2025 02:21:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1389D280004 for <linux-mm@kvack.org>; Thu, 6 Feb 2025 02:21:16 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C95341A0F3F for <linux-mm@kvack.org>; Thu, 6 Feb 2025 07:21:15 +0000 (UTC) X-FDA: 83088673710.08.BFF9FBB Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by imf07.hostedemail.com (Postfix) with ESMTP id ABC4B40002 for <linux-mm@kvack.org>; Thu, 6 Feb 2025 07:21:13 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="PQcU5Be/"; spf=pass (imf07.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 192.198.163.8 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738826473; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rREwwk16coHUWq++YKmtv6+iXThCUXtHhy5m11W7Y0U=; b=SmkWSTl3RV9x+lQoDLvNpp8PJBCip9/dgDO/f/qlcdZenqpbOolgfCnWSfpZc4K/PrjuMH +AHLetG6hNjw+ZNA3TBgJTbFdNyYUz+X1FoJ/1jU1cGk12g0sfLtofK0DqfoRyXoElD2ZR iq73PAl+e+VKssxgi7b/E1T1F9DYjJU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738826473; a=rsa-sha256; cv=none; b=j77/8HtDLMA/HTyvEkOrnyCjNm91jKgYlGiEJc8hOEjMUOuxsYW0oqotnlkZnkf5CCO7ij I+ZE2dLviAXSqgTjsn8FL6kShEdHVIksLUB1SC6gzqGY49ToMTZIg7Fd7VAzjyZ20jMcr8 oD48cbQIVGbIovAHaZqi8zZNm+17wdk= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="PQcU5Be/"; spf=pass (imf07.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 192.198.163.8 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com; dmarc=pass (policy=none) header.from=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1738826474; x=1770362474; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6c1d9813y0GRE+6bR9SnHZofzGJx7eVHq/LRDvJCxss=; b=PQcU5Be/ksWH0EG3uY89LyXb+S6sSnvF+LPVypNjjYKu7tEV+JCrbe0W NvjC7w7WTb27M+7byjsB6W+xXmc+l/wK040g7whlPJDb4+06aY2dE6p4z L6ONtOTf8jr5TzTIoBLf6z1YT2l0xxDnLiWd1oXvzo1a5JY0qJfaetlMd gvh9TgSjKQn7OdsFIiGH3SaHIk5bm6uEj4ACRMf4qVAJ9tEWahzqEXHvQ dxxfvNK/EYvgIm3SLoElep4q8HvaX6IiJhDy1n68ePABbGgfoP7mk11N3 2uHRvtKa9ke+Q2C2G0KboRGwZvFMw5vE3xrO8XljqCxgoWQUDXxb81RwT w==; X-CSE-ConnectionGUID: GyzbHGXYRn6xbhhcNG2krw== X-CSE-MsgGUID: YjXZiTdZQ3+9NKq6GdK3Qg== X-IronPort-AV: E=McAfee;i="6700,10204,11336"; a="56962690" X-IronPort-AV: E=Sophos;i="6.13,263,1732608000"; d="scan'208";a="56962690" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Feb 2025 23:21:05 -0800 X-CSE-ConnectionGUID: SKYLn851TW6vkdfKb0Rdkw== X-CSE-MsgGUID: 4cehqHtlRLeQcDOBefapEQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,224,1728975600"; d="scan'208";a="112022632" Received: from jf5300-b11a338t.jf.intel.com ([10.242.51.115]) by orviesa008.jf.intel.com with ESMTP; 05 Feb 2025 23:21:05 -0800 From: Kanchana P Sridhar <kanchana.p.sridhar@intel.com> To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, hannes@cmpxchg.org, yosry.ahmed@linux.dev, nphamcs@gmail.com, chengming.zhou@linux.dev, usamaarif642@gmail.com, ryan.roberts@arm.com, 21cnbao@gmail.com, akpm@linux-foundation.org, linux-crypto@vger.kernel.org, herbert@gondor.apana.org.au, davem@davemloft.net, clabbe@baylibre.com, ardb@kernel.org, ebiggers@google.com, surenb@google.com, kristen.c.accardi@intel.com Cc: wajdi.k.feghali@intel.com, vinodh.gopal@intel.com, kanchana.p.sridhar@intel.com Subject: [PATCH v6 11/16] crypto: iaa - Fix for "deflate_generic_tfm" global being accessed without locks. Date: Wed, 5 Feb 2025 23:20:57 -0800 Message-Id: <20250206072102.29045-12-kanchana.p.sridhar@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20250206072102.29045-1-kanchana.p.sridhar@intel.com> References: <20250206072102.29045-1-kanchana.p.sridhar@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: 6h3qjnnsoaz57by1qpbsr8ypajoefqup X-Rspam-User: X-Rspamd-Queue-Id: ABC4B40002 X-Rspamd-Server: rspam03 X-HE-Tag: 1738826473-729684 X-HE-Meta: U2FsdGVkX189rnfbPY/Q6vE67FoJtV632dhDeEWK4pKFdFxjgydw6YanGOskAcDef2KSTCGcpNc6UMWfNvKEw8jir8/UDjHlZ6G5BI32SlbhYm3LPyce2iIDHg3Lb5wJllOhrIbkwIM171MBwP9wfTPg1+8136b7+ojKlQ08HAOXcusP5v+YZ/3oVmirrmC8YIKDNZ51Q1E0nr9ws/24PIMJQEICnpYyPno2p14IxrQHww+TjUc5QD3WPrGC9W8t2i9a53jxYFOwAvB/waDdI4hBmuFCs0/RP4h7PXou9BxBsYIES0lXShRkY8AU3RYeWpkG/xN1QK9vI85D0PRlbzTEFNYi24fk4chcLYAPO0PFJJoi8nANxSIhkohMsqk9cn+LP2qSh0orPkzaisnTNkmyi+ywjQcKb7NhPaatxnnCc229GCTHvmCDH5r4+WtPt5o1mmvOjA5T7gWshl5LOnSh2gnHsS0ESGOIyjbrtLqDWlK9AKYMAn3CN2rk9ruohD6RzRRlXLmLTRfx1NWBBdMEZUY8YyzeE/AUwWT4W80BPu7LHBSDw9MmlcKOhIW/47D503/+H1b9okopTVJEhzGsZyEZxheuYKxdS65S1+JyO+E0+O3HZbqCo5A3+Cy9apVksZj/wiI3oYQMwVpLajFyXZfIALZTsuprb+gxH8CyaJZ7um8MxMgwFWNybyBGiol1A5LBkvbpgapp6gs1he79dfmjAXzM6vqF6UkAbSyEFIS0QDfTcWaN25F7RixDY71vm8Qk6zQRiozOd4W1YeqFu7Yp41r4Oh13BM1grpLB+IYv5xCtjitA+BwF7ewDJRwf/R44UqPgiyZ2EDFafR9tCIQTSMdaJgqGgD9cvG2cWxelGIAkNnYLPNHmri/lva1hycxasgza1ukIL28wbSnR20SEMfG4kCJgVwiHeYZZmt3caHbmJ7FQPb7SCNehmE2A249xmPY8VGgdnEo het/OVrT TXVodeLBAo92jtgMABhY1AD9GgEUq0UzQXIeVxu49fQ93m5dFXr8BdL7JwWYBIzKqBd12zaxTqpbARMA9cbYBn5gMG0h0qV55GgApebY88JL9L3/C0ruz+iJNvF9en9xxsd8qwkuNj0pNcYvwES1+jx7XmafbkC1dZlfjPCa5q1TzQYUYSJ6qIE+OPxaprBEk72PYVYfmihH9zRIOFX5JknH+oiSSf87vT31pl8vcNSKKDtA= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
zswap IAA compress batching
|
expand
|
diff --git a/drivers/crypto/intel/iaa/iaa_crypto_main.c b/drivers/crypto/intel/iaa/iaa_crypto_main.c index 5292d8f7ebd6..6796c783dd16 100644 --- a/drivers/crypto/intel/iaa/iaa_crypto_main.c +++ b/drivers/crypto/intel/iaa/iaa_crypto_main.c @@ -105,6 +105,7 @@ static struct iaa_compression_mode *iaa_compression_modes[IAA_COMP_MODES_MAX]; LIST_HEAD(iaa_devices); DEFINE_MUTEX(iaa_devices_lock); +DEFINE_MUTEX(deflate_generic_tfm_lock); /* If enabled, IAA hw crypto algos are registered, unavailable otherwise */ static bool iaa_crypto_enabled; @@ -1407,6 +1408,9 @@ static int deflate_generic_decompress(struct acomp_req *req) int ret; req->dlen = PAGE_SIZE; + + mutex_lock(&deflate_generic_tfm_lock); + src = kmap_local_page(sg_page(req->src)) + req->src->offset; dst = kmap_local_page(sg_page(req->dst)) + req->dst->offset; @@ -1416,6 +1420,8 @@ static int deflate_generic_decompress(struct acomp_req *req) kunmap_local(src); kunmap_local(dst); + mutex_unlock(&deflate_generic_tfm_lock); + update_total_sw_decomp_calls(); return ret;
The mainline implementation of "deflate_generic_decompress" has a bug in the usage of this global variable: static struct crypto_comp *deflate_generic_tfm; The "deflate_generic_tfm" is allocated at module init time, and freed during module cleanup. Any calls to software decompress, for instance, if descriptor allocation fails or job submission fails, will trigger this bug in the deflate_generic_decompress() procedure. The problem is the unprotected access of "deflate_generic_tfm" in this procedure. While stress testing workloads under high memory pressure, with 1 IAA device and "deflate-iaa" as the compressor, the descriptor allocation times out and the software fallback route is taken. With multiple processes calling: ret = crypto_comp_decompress(deflate_generic_tfm, src, req->slen, dst, &req->dlen); we end up with data corruption, that results in req->dlen being larger than PAGE_SIZE. zswap_decompress() subsequently raises a kernel bug. This bug can manifest under high contention and memory pressure situations with high likelihood. This has been resolved by adding a mutex, which is locked before accessing "deflate_generic_tfm" and unlocked after the crypto_comp call is done. Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@intel.com> --- drivers/crypto/intel/iaa/iaa_crypto_main.c | 6 ++++++ 1 file changed, 6 insertions(+)