From patchwork Mon Jun 17 13:24:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 167037 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp2863811ilk; Mon, 17 Jun 2019 06:25:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqytRwGBN/zqPPOzCze5GVk3ARNjKe3gVxuWzGiLrDZXvhasBQFGKEryMNJE6IQ7J5cFy/xQ X-Received: by 2002:a17:90a:bb0c:: with SMTP id u12mr26090237pjr.132.1560777910289; Mon, 17 Jun 2019 06:25:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560777910; cv=none; d=google.com; s=arc-20160816; b=SVEI+cBDO6YQaKBKvYWSLodusqDtlpplnZ7LjM+cdi6Ge1y8bx6+T0/+3bH7sJ+5tk 2c3x85I2lyHOgaNd+1ucV3Fx2du0WgAUKXhh7XevsryhbPIH/i6RaiNUUWgm59UmECnh SZfD1HroRo4zuVIYT3akoZG/TlMXhaI0mc5JKz33aADR1Gvy7JSFqVFAHdm7ekyTlzSs ZW2XWzYhhW0gwpZ8ZsKe4lg5oQAoeQY8IOOgCqBjTMk0/Elu1lNqf77wocJ/BVUU47r/ 70jgbvP/O68n4KcHSMedg6zS1pDKEvf2QJ+uDAISNLPF6fTKfTPNtk5Vk0xAPFSY/SLt Gffw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=gaTGRdDB0thDW3Ct1CDs280PA/dC7vaN+4NGn3khl1o=; b=AxGseM1Lb/rrAVef/tgolseu0q3UdWJizsxFdMP5en8r6bU0A+xcl4hqd8cnlxM4WL 3WIxjqNqNFgEatRkEL0Ww5DphSKVfVMItsPtKsL3YnCcPeC+aMjowVsWYjS4pk6Z65da p9PHWDQYqPX8qmE7nCESo3PEF9YQKl0ouDOsnc1Syg9ZIGxRUNLHRXO+LSOExQrskEOS Dkzzc4gQp4zBmac9JOpJvu2q1XwR8V07cUYWyWZVRq7RLW/X+qFRzMBfdvog8bSmO45K gNPlnvYWiPsho39HDpVR5GlyMq06hvt98cKg9TTU4oaP6QaVeBR+lVxg9V9b9aDQLfQd 246Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g13si10416903pgs.161.2019.06.17.06.25.09; Mon, 17 Jun 2019 06:25:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727152AbfFQNZH (ORCPT + 27 others); Mon, 17 Jun 2019 09:25:07 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:49635 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725884AbfFQNZH (ORCPT ); Mon, 17 Jun 2019 09:25:07 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.129]) with ESMTPA (Nemesis) id 1MXXZf-1i81xr1oqd-00YxKf; Mon, 17 Jun 2019 15:24:44 +0200 From: Arnd Bergmann To: Philipp Reisner , Lars Ellenberg , Jens Axboe Cc: Arnd Bergmann , Roland Kammerer , Eric Biggers , Herbert Xu , "Gustavo A. R. Silva" , Kees Cook , drbd-dev@lists.linbit.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] drbd: dynamically allocate shash descriptor Date: Mon, 17 Jun 2019 15:24:13 +0200 Message-Id: <20190617132440.2721536-1-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:yiXEMLOB97u6ow4J7zGkKBjm/BFhumDE+NdcmaYm9WjfiCT/Cmn V/NLe0vmPNWXTdWF+BBYfUAJvJWRlM85gl+YQSPREoTkGVG39VyhcFa9g3lyJluG+07I775 AXtdbkBvHkHTTl1uCy+pvzXhZzO6TmBcczsVNfxvFbO6tNJbIYOMsjyNsSRKdCTx99cap6Z ltLjUJek80sb/m+Ef1nZA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:EWEazgR7ph8=:/k+pVgzJoirHCvy+vku4GX U/pNEc+vgXaititlF5OBFvcboG67NR/1vD51ZrAxITevLt1CauK5gWVjqa+k8OpAS3/cA31QR h6LUzbIe4ZQgWUut73QRxyaownsijzM9ZRSIuh8sg3RXYgXmw5fTp6dUU91c1H/vHL03Bdcia G8j7M/5CuDcz0JSYRZ15tq0d0y63oOlPJKxWZ0XXkGdazN02xx2CgaF817+Dodb8CGKkENs1v 3QMQL4n3tJNuNcb+94Nn1b5Q9FM7WAMS0dJ+CGHf+z4b9Z7wowoAR42sG/w7e7ykf26BMK1zw QWZ9uUWHzrXC+JJQKnWTNE13fkCjEK66aLl8pI7uJVZ3e44fW2Leig/7QnWzmSPoo7yWjbeCJ RLgOD/aBM5KZSM8ICvwgT3+7QzLPNjAEsHZu9itNaw32zC7wvBgqVKycY9gIkX7oQ4QputL6A FHOFtuox0HfQ6aPffkTc5tt6Ktl85//G5nugsQ0tXLdR5G4ogyEGVkVhxRuLi/apfdSC+RHaL IfsVmBzxOFDSduUK6ALIX7DtPYkCjAVaIVrkOWrg6+QU9qaEBYfwkJPUdpjyhPgPRcNOqCyjs S8wo+bJ7Gnv/JenkujJOyd9k3LI4kL2Tlw6KJFnsWWHo2QjF5+uHfMZiSZMUhby2dWlU7xDND RPkdtKAnd+tOxd8kDLeg50Xwxh8xRAS0T4HILVPT4dcjvF6l+WGmceFW6Br7H+PFBw0oPzqoq BB4pvfjgpbOiolEk4nYfpVFLgrGV0LAflSvSwA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Building with clang and KASAN, we get a warning about an overly large stack frame on 32-bit architectures: drivers/block/drbd/drbd_receiver.c:921:31: error: stack frame size of 1280 bytes in function 'conn_connect' [-Werror,-Wframe-larger-than=] We already allocate other data dynamically in this function, so just do the same for the shash descriptor, which makes up most of this memory. Signed-off-by: Arnd Bergmann --- drivers/block/drbd/drbd_receiver.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) -- 2.20.0 diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 90ebfcae0ce6..10fb26e862d7 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -5417,7 +5417,7 @@ static int drbd_do_auth(struct drbd_connection *connection) unsigned int key_len; char secret[SHARED_SECRET_MAX]; /* 64 byte */ unsigned int resp_size; - SHASH_DESC_ON_STACK(desc, connection->cram_hmac_tfm); + struct shash_desc *desc; struct packet_info pi; struct net_conf *nc; int err, rv; @@ -5430,6 +5430,13 @@ static int drbd_do_auth(struct drbd_connection *connection) memcpy(secret, nc->shared_secret, key_len); rcu_read_unlock(); + desc = kmalloc(sizeof(struct shash_desc) + + crypto_shash_descsize(connection->cram_hmac_tfm), + GFP_KERNEL); + if (!desc) { + rv = -1; + goto fail; + } desc->tfm = connection->cram_hmac_tfm; rv = crypto_shash_setkey(connection->cram_hmac_tfm, (u8 *)secret, key_len); @@ -5572,6 +5579,7 @@ static int drbd_do_auth(struct drbd_connection *connection) kfree(response); kfree(right_response); shash_desc_zero(desc); + kfree(desc); return rv; }