Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3727926pxb; Mon, 24 Jan 2022 16:30:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJwrZLyTqTWt5wllmpcS8+htGjhBfDPUDZtwLWUAB28w2MWM6tDoAwnaHiEObgEJAjP5ru7B X-Received: by 2002:a17:902:9046:b0:149:6fd4:4928 with SMTP id w6-20020a170902904600b001496fd44928mr16638294plz.135.1643070601473; Mon, 24 Jan 2022 16:30:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643070601; cv=none; d=google.com; s=arc-20160816; b=AeLyKxdu5+C0vWMGnIlnTvSyQIu0flGPEY+SeYBrFB78QYLganWUXHQmyy3D2NXVZB 2qJv5je+LGw0Qq8m9tRlPdKdrqoIHuuoAY9HHQsKJ7wE0Emj0nDXMcItavl55VP5P/8U DTJk7RKZhTkU15Mxh+yhEcfokao11AruhXSaboWJdjJxJb/2IjVEpw2Aq8oOwbl1+6Nq kqjhM7hv4tTYWcU/xkLT8l3Iqo9eh87/od6J96tgi27QK2RVtZKaAlkCs6olO1NIlEVx QYRtA+gyrEr0RhMUrudHnMqAOkpaAMgN/Ztds+OyHyZtx1jgtyAb/65JQbll55fO+i4h Yuyw== 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=+gVmjfHK2hrkba4elg51/yNABU3l0tSUytLSuQs3g50=; b=sn83PevopbJcqwnDitO/Ua7msKFgbA6TfrtA1D0+3gVKlLidz794BFJKfVFC8Qijl3 V/+9uv7GMZkbngayHm7VZNfDMvr6d3ZoMWaqbCzgaJ8NvDLLnoeGmPFgMtzwOia5A8g9 gZu/pBfqRZvKvPNavf7rsS9d7Z005gE0m47xgkNNjRFqbh5dNTaQEX8mQsziEd+8rxmG pSILmGv6DAEQmFgD4F17uFDuAiwZFfp3TxSxuFkIS0fHuUL7MT7Cw87oGMjWwmPkhu9m CFWUuHy4slGVpvKZJv5B3FMNVBbFUZE9T0A1puIQQfFODbjRDLmYeDA8voSbwHskKULK hYAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=VMrIBqjl; 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 i1si12625851pfb.52.2022.01.24.16.29.48; Mon, 24 Jan 2022 16:30:01 -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=VMrIBqjl; 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 S2375178AbiAYATc (ORCPT + 99 others); Mon, 24 Jan 2022 19:19:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2359410AbiAXXeV (ORCPT ); Mon, 24 Jan 2022 18:34:21 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83F99C075D21; Mon, 24 Jan 2022 13:36:31 -0800 (PST) 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 14BB3614DD; Mon, 24 Jan 2022 21:36:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5F1DC340E4; Mon, 24 Jan 2022 21:36:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643060190; bh=8FTpx20CPyOOXFtNwPoa4MCozejgitLRpKaNV6dHwN8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VMrIBqjlt3uEmfRj14uqMHbdHycYDucZ/sG3ArIIgFpKthXHC9+SlYykH4sDS3Avi 5iUtOvF3QYECLLiS6zDPGx0+R8JdnykcYORMRc0i7NBrThEpaEXzYAhFpoZBkmnQQh 0uPW1BCK/X13wKQFrvMYJV90NRcQFN+/ZUel6BxA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marek Vasut , Alexandre Torgue , Fabien Dessenne , Herbert Xu , Lionel Debieve , Nicolas Toromanoff , linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, Nicolas Toromanoff Subject: [PATCH 5.16 0837/1039] crypto: stm32/crc32 - Fix kernel BUG triggered in probe() Date: Mon, 24 Jan 2022 19:43:46 +0100 Message-Id: <20220124184153.426827249@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184125.121143506@linuxfoundation.org> References: <20220124184125.121143506@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: Marek Vasut commit 29009604ad4e3ef784fd9b9fef6f23610ddf633d upstream. The include/linux/crypto.h struct crypto_alg field cra_driver_name description states "Unique name of the transformation provider. " ... " this contains the name of the chip or provider and the name of the transformation algorithm." In case of the stm32-crc driver, field cra_driver_name is identical for all registered transformation providers and set to the name of the driver itself, which is incorrect. This patch fixes it by assigning a unique cra_driver_name to each registered transformation provider. The kernel crash is triggered when the driver calls crypto_register_shashes() which calls crypto_register_shash(), which calls crypto_register_alg(), which calls __crypto_register_alg(), which returns -EEXIST, which is propagated back through this call chain. Upon -EEXIST from crypto_register_shash(), the crypto_register_shashes() starts unregistering the providers back, and calls crypto_unregister_shash(), which calls crypto_unregister_alg(), and this is where the BUG() triggers due to incorrect cra_refcnt. Fixes: b51dbe90912a ("crypto: stm32 - Support for STM32 CRC32 crypto module") Signed-off-by: Marek Vasut Cc: # 4.12+ Cc: Alexandre Torgue Cc: Fabien Dessenne Cc: Herbert Xu Cc: Lionel Debieve Cc: Nicolas Toromanoff Cc: linux-arm-kernel@lists.infradead.org Cc: linux-stm32@st-md-mailman.stormreply.com To: linux-crypto@vger.kernel.org Acked-by: Nicolas Toromanoff Signed-off-by: Herbert Xu Signed-off-by: Greg Kroah-Hartman --- drivers/crypto/stm32/stm32-crc32.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/drivers/crypto/stm32/stm32-crc32.c +++ b/drivers/crypto/stm32/stm32-crc32.c @@ -279,7 +279,7 @@ static struct shash_alg algs[] = { .digestsize = CHKSUM_DIGEST_SIZE, .base = { .cra_name = "crc32", - .cra_driver_name = DRIVER_NAME, + .cra_driver_name = "stm32-crc32-crc32", .cra_priority = 200, .cra_flags = CRYPTO_ALG_OPTIONAL_KEY, .cra_blocksize = CHKSUM_BLOCK_SIZE, @@ -301,7 +301,7 @@ static struct shash_alg algs[] = { .digestsize = CHKSUM_DIGEST_SIZE, .base = { .cra_name = "crc32c", - .cra_driver_name = DRIVER_NAME, + .cra_driver_name = "stm32-crc32-crc32c", .cra_priority = 200, .cra_flags = CRYPTO_ALG_OPTIONAL_KEY, .cra_blocksize = CHKSUM_BLOCK_SIZE,