From nobody Thu Apr 9 13:33:10 2026 Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 27289283FD6 for ; Sun, 8 Mar 2026 23:42:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773013328; cv=none; b=Ykg2lQO87AaQwY2YZ4UbEfksPxUaX1bP7MFK3fka+Ltw4FtwM2p80QOxDrnds3PLmzCmQRgieeOYLRFFpDLhwLd9LBys3MqmhCKAM/u5TF1iZsAdj1sguDiuZkAN92WV/aLigdjIf+SOEXgB+Jq2/6tJfq9H2r2WNznY85suFTg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773013328; c=relaxed/simple; bh=wHJAniRbTXFA/kXgLdxBYZpgK05gUiJhfuJo+0HgIZU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G0SeR7I9GCWhDjyNQJ/KDn7u1xOwaWq4zcZRbSUszQ0sd2hFk4smyYnNyOBWfIX4Ewv2a7q/tPjbsNbnKapU8DZBQCH2eJseqaXBSpfAahO+w/N4ty8SMze2PJJc4RX6UfbZSy+0MRjzgGtq/e0aWeiJcmi3gIvNrn7jgbNYq5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=KnDVH+Ay; arc=none smtp.client-ip=209.85.222.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="KnDVH+Ay" Received: by mail-qk1-f174.google.com with SMTP id af79cd13be357-8cd7c372929so120265385a.0 for ; Sun, 08 Mar 2026 16:42:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1773013325; x=1773618125; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qlkFR3V+9+r85GbTD5lGukkDRcDlJZS4UesWjQfxFuo=; b=KnDVH+AyQAAPjrwdxjnIggzekCMrI3PeqShFioi2psBOlyYcrcHEke8iriji1Ht3NL uyd+prQa27kpuhw2m8NDWcfUHYl8u+POhJDkwz3xETJ+n/KpIpGqmynAKf2+sfwvXmOA im+MqpdoHXa6ydBa76k9I4rN1sThnu/39VjM5dPcL/ueg7504PoMX8985M+C/7GX40mP Sl79JAYGtz+hYozR6J+b7i6BRMJcwAVLQtz/bJ6ibJ8DB2j+D6p7ht8mFY/o3rxpQDOp hVg+m60wmHza+5bAM5p/K2myob7i3HgXe2MCFTDIqy/WbDEK79M8TDOtiiLHvzWXLEIt hDLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773013325; x=1773618125; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qlkFR3V+9+r85GbTD5lGukkDRcDlJZS4UesWjQfxFuo=; b=qFJjTSGouYV3irtZILSrgenbWqUmsj+5NSb1ssR28mgoqV7qk81dFBBrB6J2d7YBe+ b370M2S890aGc8eb0YPpFbnoTh1Gnw4vY2VTrCht6ifREDHzFi9unt1+uii9ngLjWi5E 0xYlXxIdMl1c1Rr08sASE/fsKDqjsHnkS6nm6nj2e0rcMk2Hpi9qUblJ3ZhX9TyMnJPG CoxR1rI8jFW29AmJF5gNB29zw//UAZDPVaoEn06HXxvNV807mmszk2SgIy2XzKFHqeL1 K5fIi1CpfCu3sOvn+yLzWfm7z8HnyYRfHwJtCSDhIPtg2U13cCZi1YCG8Lh561VvwbMP LkSQ== X-Forwarded-Encrypted: i=1; AJvYcCUwnOay81nnKfPpbdtc61xhWFDwblWHXAX+gY3PaJNwkdopEpquH+ICjTA6IvskXleknHm8qu1zOCR3PCE=@vger.kernel.org X-Gm-Message-State: AOJu0YyvXZGEbQaS3wMnyX5RwRlD/B7FHlWevVRKfNz4Fp4uiboZsw2S YvIm2Up7dVz1CXO+B22SpKK7z5M6uRqelj45aaQA8ns7r2dnE9iZX8/wt5av7vNpXcM= X-Gm-Gg: ATEYQzz6xCp7ykTs7CNPjkvFdeiISNWhUh0p9IWVb51w41JZrsa9CJnTzLXNcUxxvms Ae4E84uKVFILfSv8iejQ6h2CbNlGOeIc3i+bir6FnFz7aMpb5W2vlro08PlF0W/S8dSq7iu3Q3p xSf4gDmbeamlG1aW6KaKNoF6HEm88lt05BLGpuJdlNMtK8rxNm1EGlc3baEl59l5EPU6Dkmodsh wbUmELmvZ3t8w8ugq0wxs+g3qvjSDSVwAD3k0SdMytslW59dsa9zBpJsh4+ORWpcrvmqcPSensN KqHyiWAjZ69ENy34BZIYmkLeayGRcd9sr+fZnZ/cqRO8L6xcAlPsgDHBoRrzfaklNdfwIvzOMUo oe6H003MOMDzasbmaV9W7+ft1wMhDpMMP6FEULX7SXNcd/BMK7v9l8kPADisNMyHl336CJHd64/ FHQUpNgT1HU3DjIy8dDX/mvaf+aGfWd9QMfbqA2dDX+8JjjEY84J+vfZzk0BXPHyMZBHgJ9wScZ q76Fybny8bFzW4= X-Received: by 2002:a05:620a:1921:b0:8c7:10a0:167d with SMTP id af79cd13be357-8cd6d4418f5mr1162364485a.39.1773013324993; Sun, 08 Mar 2026 16:42:04 -0700 (PDT) Received: from gourry-fedora-PF4VCD3F.lan (pool-96-255-20-138.washdc.ftas.verizon.net. [96.255.20.138]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8cd81aa2eefsm211312385a.42.2026.03.08.16.42.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Mar 2026 16:42:04 -0700 (PDT) From: Gregory Price To: song@kernel.org, yukuai@fnnas.com, linan122@huawei.com Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, syzbot+924649752adf0d3ac9dd@syzkaller.appspotmail.com, akpm@linux-foundation.org Subject: [PATCH] md/raid0: use kvzalloc/kvfree for strip_zone and devlist allocations Date: Sun, 8 Mar 2026 19:42:02 -0400 Message-ID: <20260308234202.3118119-1-gourry@gourry.net> X-Mailer: git-send-email 2.53.0 In-Reply-To: <69adaba8.a00a0220.b130.0005.GAE@google.com> References: <69adaba8.a00a0220.b130.0005.GAE@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" syzbot reported a WARNING at mm/page_alloc.c:__alloc_frozen_pages_noprof() triggered by create_strip_zones() in the RAID0 driver. When raid_disks is large, the allocation size exceeds MAX_PAGE_ORDER (4MB on x86), causing WARN_ON_ONCE_GFP(order > MAX_PAGE_ORDER). Convert the strip_zone and devlist allocations from kzalloc/kzalloc_objs to kvzalloc/kvzalloc_objs, which first attempts a contiguous allocation with __GFP_NOWARN and then falls back to vmalloc for large sizes. Convert the corresponding kfree calls to kvfree. Both arrays are pure metadata lookup tables (arrays of pointers and zone descriptors) accessed only via indexing, so they do not require physically contiguous memory. Reported-by: syzbot+924649752adf0d3ac9dd@syzkaller.appspotmail.com Signed-off-by: Gregory Price Reported-by should be followed by Closes tag, applied tom md-7.1 with follo= wing tag: Reviewed-by: Li Nan Reviewed-by: Yu Kuai --- drivers/md/raid0.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index ef0045db409f..5e38a51e349a 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -143,13 +143,13 @@ static int create_strip_zones(struct mddev *mddev, st= ruct r0conf **private_conf) } =20 err =3D -ENOMEM; - conf->strip_zone =3D kzalloc_objs(struct strip_zone, conf->nr_strip_zones= ); + conf->strip_zone =3D kvzalloc_objs(struct strip_zone, conf->nr_strip_zone= s); if (!conf->strip_zone) goto abort; - conf->devlist =3D kzalloc(array3_size(sizeof(struct md_rdev *), - conf->nr_strip_zones, - mddev->raid_disks), - GFP_KERNEL); + conf->devlist =3D kvzalloc(array3_size(sizeof(struct md_rdev *), + conf->nr_strip_zones, + mddev->raid_disks), + GFP_KERNEL); if (!conf->devlist) goto abort; =20 @@ -291,8 +291,8 @@ static int create_strip_zones(struct mddev *mddev, stru= ct r0conf **private_conf) =20 return 0; abort: - kfree(conf->strip_zone); - kfree(conf->devlist); + kvfree(conf->strip_zone); + kvfree(conf->devlist); kfree(conf); *private_conf =3D ERR_PTR(err); return err; @@ -373,8 +373,8 @@ static void raid0_free(struct mddev *mddev, void *priv) { struct r0conf *conf =3D priv; =20 - kfree(conf->strip_zone); - kfree(conf->devlist); + kvfree(conf->strip_zone); + kvfree(conf->devlist); kfree(conf); } =20 --=20 2.53.0