Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp670692imm; Tue, 5 Jun 2018 02:27:37 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLxRIXFepeOPEo2cC9sVx//uxp8a9On6J8DXtU1bNYp5StoaWzOQy5hWjcb/ht47gTAVpiE X-Received: by 2002:a65:644a:: with SMTP id s10-v6mr20107854pgv.360.1528190857231; Tue, 05 Jun 2018 02:27:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528190857; cv=none; d=google.com; s=arc-20160816; b=usr0yZC9SvGsAOnkWbJscn0OEQuFPksajZwzRZbcP/oos/kq1V1AI8XXAyJi3YRdTs RotjQgdlAw/C1KKpAFXErIjna81jeNWlVkOoNM/R2VFk9G67itzE9qofwWzl6Y04xaSX J0M7UcVSPEg4nM1YYUcNseK/hkV3m79RQJ455grLmAdE+krWtkzNDxEUEDGFFS5b65Id IhZGGpCpOzwuElSMQUYpUePmD7YlmvJK8HAYRWSAOEu8v+QBPTmKNLeL5wmDhMX/EMDN gqLATsP41o4M1M+seHEZQOt55E6GBp1mgh5Bd28f4QOTU1ok4i8EMI6wmj42QyBxbhOT 6Y6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=0AvPnxUwGfp5VU8bdQ/QOL+ptrrpVJypTgvgAmJPlUs=; b=co1roCncgGiVkBiV/MgstBQesuRHCb3nrpYfGNWXmV7RDVV7KxuSFdCrruHXxEsnOG 2epQAsArj9JaGTYs+VCXDxTujJDg38UlXw1mTngRaKuAxu8Njf92kUyhqH1FUJHkGCtn Psa0c2WxUm4dcrmMZQjzvKz/mxuPcHpJ3J5dtWbEJt1f1vSJSWbFxWciRIDZZnMuAt+i wso8LkCgISNQpJy0QZy+mPE9dWRwMNLh3TgFyWIZnDk8H/HwShOv2uHaPy+iQMUlo5lg y7vExfRRga466Uni1Wg8zp/fjyTUtRtkQjiYl9rC+GIe4fsqYEf5HBMUsiw2i45OurWT fHDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=LxG/wuAT; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k8-v6si10656435pgc.182.2018.06.05.02.27.22; Tue, 05 Jun 2018 02:27:37 -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=@gmail.com header.s=20161025 header.b=LxG/wuAT; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751508AbeFEJ04 (ORCPT + 99 others); Tue, 5 Jun 2018 05:26:56 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:45240 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751296AbeFEJ0y (ORCPT ); Tue, 5 Jun 2018 05:26:54 -0400 Received: by mail-qt0-f196.google.com with SMTP id i18-v6so1612645qtp.12 for ; Tue, 05 Jun 2018 02:26:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=0AvPnxUwGfp5VU8bdQ/QOL+ptrrpVJypTgvgAmJPlUs=; b=LxG/wuATDq3Yjc9yeYqpS213IZaaiwn1R7LHdJCbHfQDuJRifijbBxVdMy66kqiOcX M9G2yRGSBstKWBjgFW3pZcOkDsxm8JcBcpOlEd9EsRD+uvEMD3i1FIMNzyTcGesm68jn dUWWHLem1Q+V/yYlU7KkhBUOYJ2EP1IO5PLnct+MDt/johrlm+WUcqs97J72PZtje6+K nKaGD4/Nu4h8GQDKoReQw3WclEfdeIHsZmuIsTFkYq7u5W1/txEu8naRQOX8LHzOqMPA pZieRKnHXd4wgP4PLtTOk93O07zDuvbSGkHa4ehYavN550H/bv5PCi7AsJOnaR6TrAOA Sd0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=0AvPnxUwGfp5VU8bdQ/QOL+ptrrpVJypTgvgAmJPlUs=; b=gHHsmELopao17HuScTRFXUHaMVjld52UEVP029/DrOBKTDN+iMyXPWoNPA/EybxYHx DNJuTQAMG+nkO1Aj0U3bkbXJfw9bJiIRcX4cOOP5kAYDbAnocF03ypKycwhbaa4irlg1 En3uU5AEW6utS0kwE15VAijfq70zxGYPdLWs9sojlmE2KO6bufeVf2Q7KE78wflszPKE LAKU1uPEuiCwdW4ms3BF8nrWoZ5DOufi+NoNEVPGxA8rJTfm3eqFt/4aAK9bKQES1LLg 2yo50ybGZhhbVrwwRjiVxoDy3iOExR6exx8DOvE7pv8LSXPtPVKB2u9ZIpmueOVsSssl hpcQ== X-Gm-Message-State: APt69E0RGfoB2jX5/XCD3v9LOIllLdziG3PlZtSpMMt/W0UEr+AXq1Ch 8uZTxBTqV7v2nOKsX5tvF2lv3OeR6Q== X-Received: by 2002:a0c:bb83:: with SMTP id i3-v6mr18902987qvg.84.1528190813849; Tue, 05 Jun 2018 02:26:53 -0700 (PDT) Received: from localhost.localdomain (c-71-234-172-214.hsd1.vt.comcast.net. [71.234.172.214]) by smtp.gmail.com with ESMTPSA id k2-v6sm26584076qkl.95.2018.06.05.02.26.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Jun 2018 02:26:52 -0700 (PDT) From: Kent Overstreet To: torvalds@linux-foundation.org Cc: Kent Overstreet , axboe@kernel.dk, snitzer@redhat.com, linux-kernel@vger.kernel.org Subject: [PATCH] dm: Use kzalloc for all structs with embedded biosets/mempools Date: Tue, 5 Jun 2018 05:26:33 -0400 Message-Id: <20180605092633.29583-1-kent.overstreet@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org mempool_init()/bioset_init() require that the mempools/biosets be zeroed first; they probably should not _require_ this, but not allocating those structs with kzalloc is a fairly nonsensical thing to do (calling mempool_exit()/bioset_exit() on an uninitialized mempool/bioset is legal and safe, but only works if said memory was zeroed.) Signed-off-by: Kent Overstreet --- Linus, I fucked up majorly on the bioset/mempool conversion - I forgot to check that everything biosets/mempools were being embedded in was actually being zeroed on allocation. Device mapper currently explodes, you'll probably want to apply this patch post haste. I have now done that auditing, for every single conversion - this patch fixes everything I found. There do not seem to be any incorrect ones outside of device mapper... We'll probably want a second patch that either a) changes bioset_init()/mempool_init() to zero the passed in bioset/mempool first, or b) my preference, WARN() or BUG() if they're passed memory that isn't zeroed. drivers/md/dm-bio-prison-v1.c | 2 +- drivers/md/dm-bio-prison-v2.c | 2 +- drivers/md/dm-io.c | 2 +- drivers/md/dm-kcopyd.c | 2 +- drivers/md/dm-region-hash.c | 2 +- drivers/md/dm-snap.c | 2 +- drivers/md/dm-thin.c | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/md/dm-bio-prison-v1.c b/drivers/md/dm-bio-prison-v1.c index 8e33a38083..e794e3662f 100644 --- a/drivers/md/dm-bio-prison-v1.c +++ b/drivers/md/dm-bio-prison-v1.c @@ -33,7 +33,7 @@ static struct kmem_cache *_cell_cache; */ struct dm_bio_prison *dm_bio_prison_create(void) { - struct dm_bio_prison *prison = kmalloc(sizeof(*prison), GFP_KERNEL); + struct dm_bio_prison *prison = kzalloc(sizeof(*prison), GFP_KERNEL); int ret; if (!prison) diff --git a/drivers/md/dm-bio-prison-v2.c b/drivers/md/dm-bio-prison-v2.c index 601b156920..f866bc97b0 100644 --- a/drivers/md/dm-bio-prison-v2.c +++ b/drivers/md/dm-bio-prison-v2.c @@ -35,7 +35,7 @@ static struct kmem_cache *_cell_cache; */ struct dm_bio_prison_v2 *dm_bio_prison_create_v2(struct workqueue_struct *wq) { - struct dm_bio_prison_v2 *prison = kmalloc(sizeof(*prison), GFP_KERNEL); + struct dm_bio_prison_v2 *prison = kzalloc(sizeof(*prison), GFP_KERNEL); int ret; if (!prison) diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c index 53c6ed0eaa..81ffc59d05 100644 --- a/drivers/md/dm-io.c +++ b/drivers/md/dm-io.c @@ -51,7 +51,7 @@ struct dm_io_client *dm_io_client_create(void) unsigned min_ios = dm_get_reserved_bio_based_ios(); int ret; - client = kmalloc(sizeof(*client), GFP_KERNEL); + client = kzalloc(sizeof(*client), GFP_KERNEL); if (!client) return ERR_PTR(-ENOMEM); diff --git a/drivers/md/dm-kcopyd.c b/drivers/md/dm-kcopyd.c index c89a675a2a..ce7efc7434 100644 --- a/drivers/md/dm-kcopyd.c +++ b/drivers/md/dm-kcopyd.c @@ -882,7 +882,7 @@ struct dm_kcopyd_client *dm_kcopyd_client_create(struct dm_kcopyd_throttle *thro int r; struct dm_kcopyd_client *kc; - kc = kmalloc(sizeof(*kc), GFP_KERNEL); + kc = kzalloc(sizeof(*kc), GFP_KERNEL); if (!kc) return ERR_PTR(-ENOMEM); diff --git a/drivers/md/dm-region-hash.c b/drivers/md/dm-region-hash.c index 43149eb493..abf3521b80 100644 --- a/drivers/md/dm-region-hash.c +++ b/drivers/md/dm-region-hash.c @@ -180,7 +180,7 @@ struct dm_region_hash *dm_region_hash_create( ; nr_buckets >>= 1; - rh = kmalloc(sizeof(*rh), GFP_KERNEL); + rh = kzalloc(sizeof(*rh), GFP_KERNEL); if (!rh) { DMERR("unable to allocate region hash memory"); return ERR_PTR(-ENOMEM); diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index b11ddc55f2..f745404da7 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c @@ -1120,7 +1120,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) origin_mode = FMODE_WRITE; } - s = kmalloc(sizeof(*s), GFP_KERNEL); + s = kzalloc(sizeof(*s), GFP_KERNEL); if (!s) { ti->error = "Cannot allocate private snapshot structure"; r = -ENOMEM; diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 6c923824ec..5772756c63 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -2861,7 +2861,7 @@ static struct pool *pool_create(struct mapped_device *pool_md, return (struct pool *)pmd; } - pool = kmalloc(sizeof(*pool), GFP_KERNEL); + pool = kzalloc(sizeof(*pool), GFP_KERNEL); if (!pool) { *error = "Error allocating memory for pool"; err_p = ERR_PTR(-ENOMEM); -- 2.17.1