Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2468713imm; Mon, 28 May 2018 08:39:29 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpcuqQSvlX5Y2TxzRqsUt+T8cNCPJMqbnMeJ/7tNUKQ036yE//3s1glfp6eTZh8ysibWJBc X-Received: by 2002:a65:6645:: with SMTP id z5-v6mr11100793pgv.43.1527521969308; Mon, 28 May 2018 08:39:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527521969; cv=none; d=google.com; s=arc-20160816; b=NFmTTtk9/YMITpjDAmI/FthH+oI7TBXDCwBWG/gQ0QVvOBKXcSA1vdpfIzKRLz/94A ML6ivU1W165tcEY23NbRk/rYDa9T8B1kve/PhOhUYdbGE9FgVbVFwjPbaobRztTvfbfF onWN49Wsrc62q1L7ABDDcXE0nxXQWTvJoYqWHhcOOb/pMaB8n82ODcX8ESfow9ZZOYxM 9vxrF2bPdqLDK12Wetwq1VMTnTdn0sPam/X5s5p9e2crmWhccCrin769BCuMxC1KI7yS txK4wU15uK1Hq230MFVhe8u3V+n5YZDwhmnQ4JCvYl3PCHS29dEwl8f9GvXzw9dV+oNa Om0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=KKP7mr4+uyn25INAH5XEN75Lz3u+xrfSvrEHF5RJiZ0=; b=RMM8CEpUnr4fDkYGAJ5u9AFnw37z01cmqFrwzWOtcoQvTrZRdjPd2CX1HsTdOkbgnM DDVXgVCOr4F9B9JENHlTg49A10gSRinV9S+Yc5pMiMnCtUP6fhpuoMjQXCLU3F5nRrO3 T3LTQOZhhuG2VaymphasZcSXDFjUR7nFR+/T9M3d/rHPuaZ2SDQu98rqLq8dKjQ+KXMK qc8nm1vShKLmHH/rNnnSkXyoggyPbK5IR6NF8Bj7giSslh7qNBzZ44WJiUniQpN5K1hW sCgKW4+oikjtQqPcmRcO6r+slGiL191ALvQFZ6HVw42XCVpVd5kmA+JbdrgflzFeEPAL CNlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JFamz6+q; 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 g9-v6si29850335plt.232.2018.05.28.08.39.14; Mon, 28 May 2018 08:39:29 -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; dkim=pass header.i=@kernel.org header.s=default header.b=JFamz6+q; 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 S968846AbeE1Pil (ORCPT + 99 others); Mon, 28 May 2018 11:38:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:38292 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968528AbeE1KSM (ORCPT ); Mon, 28 May 2018 06:18:12 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9D4EB206B7; Mon, 28 May 2018 10:18:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527502692; bh=Q+VO0nRRQN/SEte/fa8LlugDO5vR/WNfBvBFpGwjcLo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JFamz6+q9bNpwqKbX0aWpWbiE8vSESNEGBHY8wh9SqbcrWDyF/lcSb/Seh81ZKEbF YS3QS0vukJy2VkCE0rSC9A39VvCbYGwbmqVqvh8F/xpKfwK5/MD/7zrtdTSGkzKVme hBU/aq8EOYW9LIO83iYoX1C/04X8g9ev6lbwFKPw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Arnd Bergmann , Shaohua Li , Sasha Levin Subject: [PATCH 4.4 095/268] md: raid5: avoid string overflow warning Date: Mon, 28 May 2018 12:01:09 +0200 Message-Id: <20180528100212.954282587@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100202.045206534@linuxfoundation.org> References: <20180528100202.045206534@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Arnd Bergmann [ Upstream commit 53b8d89ddbdbb0e4625a46d2cdbb6f106c52f801 ] gcc warns about a possible overflow of the kmem_cache string, when adding four characters to a string of the same length: drivers/md/raid5.c: In function 'setup_conf': drivers/md/raid5.c:2207:34: error: '-alt' directive writing 4 bytes into a region of size between 1 and 32 [-Werror=format-overflow=] sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]); ^~~~ drivers/md/raid5.c:2207:2: note: 'sprintf' output between 5 and 36 bytes into a destination of size 32 sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If I'm counting correctly, we need 11 characters for the fixed part of the string and 18 characters for a 64-bit pointer (when no gendisk is used), so that leaves three characters for conf->level, which should always be sufficient. This makes the code use snprintf() with the correct length, to make the code more robust against changes, and to get the compiler to shut up. In commit f4be6b43f1ac ("md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk") from 2010, Neil said that the pointer could be removed "shortly" once devices without gendisk are disallowed. I have no idea if that happened, but if it did, that should probably be changed as well. Signed-off-by: Arnd Bergmann Signed-off-by: Shaohua Li Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/md/raid5.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -2028,15 +2028,16 @@ static int grow_one_stripe(struct r5conf static int grow_stripes(struct r5conf *conf, int num) { struct kmem_cache *sc; + size_t namelen = sizeof(conf->cache_name[0]); int devs = max(conf->raid_disks, conf->previous_raid_disks); if (conf->mddev->gendisk) - sprintf(conf->cache_name[0], + snprintf(conf->cache_name[0], namelen, "raid%d-%s", conf->level, mdname(conf->mddev)); else - sprintf(conf->cache_name[0], + snprintf(conf->cache_name[0], namelen, "raid%d-%p", conf->level, conf->mddev); - sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]); + snprintf(conf->cache_name[1], namelen, "%.27s-alt", conf->cache_name[0]); conf->active_name = 0; sc = kmem_cache_create(conf->cache_name[conf->active_name],