From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Baokun Li <libaokun1@huawei.com>, Jan Kara <jack@suse.cz>,
Theodore Ts'o <tytso@mit.edu>, Sasha Levin <sashal@kernel.org>,
adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org
Subject: [PATCH AUTOSEL 6.6 02/38] ext4: avoid allocating blocks from corrupted group in ext4_mb_try_best_found()
Date: Wed, 7 Feb 2024 16:22:48 -0500 [thread overview]
Message-ID: <20240207212337.2351-2-sashal@kernel.org> (raw)
In-Reply-To: <20240207212337.2351-1-sashal@kernel.org>
From: Baokun Li <libaokun1@huawei.com>
[ Upstream commit 4530b3660d396a646aad91a787b6ab37cf604b53 ]
Determine if the group block bitmap is corrupted before using ac_b_ex in
ext4_mb_try_best_found() to avoid allocating blocks from a group with a
corrupted block bitmap in the following concurrency and making the
situation worse.
ext4_mb_regular_allocator
ext4_lock_group(sb, group)
ext4_mb_good_group
// check if the group bbitmap is corrupted
ext4_mb_complex_scan_group
// Scan group gets ac_b_ex but doesn't use it
ext4_unlock_group(sb, group)
ext4_mark_group_bitmap_corrupted(group)
// The block bitmap was corrupted during
// the group unlock gap.
ext4_mb_try_best_found
ext4_lock_group(ac->ac_sb, group)
ext4_mb_use_best_found
mb_mark_used
// Allocating blocks in block bitmap corrupted group
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20240104142040.2835097-7-libaokun1@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/ext4/mballoc.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index f74a8f144a66..58d562c16164 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2281,6 +2281,9 @@ void ext4_mb_try_best_found(struct ext4_allocation_context *ac,
return;
ext4_lock_group(ac->ac_sb, group);
+ if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)))
+ goto out;
+
max = mb_find_extent(e4b, ex.fe_start, ex.fe_len, &ex);
if (max > 0) {
@@ -2288,6 +2291,7 @@ void ext4_mb_try_best_found(struct ext4_allocation_context *ac,
ext4_mb_use_best_found(ac, e4b);
}
+out:
ext4_unlock_group(ac->ac_sb, group);
ext4_mb_unload_buddy(e4b);
}
--
2.43.0
next prev parent reply other threads:[~2024-02-07 21:23 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-07 21:22 [PATCH AUTOSEL 6.6 01/38] ext4: avoid dividing by 0 in mb_update_avg_fragment_size() when block bitmap corrupt Sasha Levin
2024-02-07 21:22 ` Sasha Levin [this message]
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 03/38] ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 04/38] Input: goodix - accept ACPI resources with gpio_count == 3 && gpio_int_idx == 0 Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 05/38] dmaengine: ti: edma: Add some null pointer checks to the edma_probe Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 06/38] ASoC: amd: acp: Add check for cpu dai link initialization Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 07/38] ASoC: codecs: wcd934x: drop unneeded regulator include Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 08/38] regulator: pwm-regulator: Add validity checks in continuous .get_voltage Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 09/38] HID: logitech-hidpp: add support for Logitech G Pro X Superlight 2 Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 10/38] ALSA: hda: Replace numeric device IDs with constant values Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 11/38] ALSA: hda: Increase default bdl_pos_adj for Apollo Lake Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 12/38] HID: nvidia-shield: Add missing null pointer checks to LED initialization Sasha Levin
2024-02-07 21:22 ` [PATCH AUTOSEL 6.6 13/38] nvmet-tcp: fix nvme tcp ida memory leak Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 14/38] usb: ucsi_acpi: Quirk to ack a connector change ack cmd Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 15/38] ALSA: usb-audio: Check presence of valid altsetting control Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 16/38] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 Sasha Levin
2024-02-07 21:23 ` Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 17/38] regulator (max5970): Fix IRQ handler Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 18/38] spi: sh-msiof: avoid integer overflow in constants Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 19/38] Input: xpad - add Lenovo Legion Go controllers Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 20/38] misc: open-dice: Fix spurious lockdep warning Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 21/38] netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 22/38] drm/amdkfd: Use correct drm device for cgroup permission check Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 23/38] drm/amd/display: increased min_dcfclk_mhz and min_fclk_mhz Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 24/38] cifs: make sure that channel scaling is done only once Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 25/38] ASoC: wm_adsp: Don't overwrite fwf_name with the default Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 26/38] ALSA: usb-audio: Ignore clock selector errors for single connection Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 27/38] nvme-fc: do not wait in vain when unloading module Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 28/38] nvmet-fcloop: swap the list_add_tail arguments Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 29/38] nvmet-fc: release reference on target port Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 30/38] nvmet-fc: defer cleanup using RCU properly Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 31/38] nvmet-fc: hold reference on hostport match Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 32/38] nvmet-fc: abort command when there is no binding Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 33/38] nvmet-fc: avoid deadlock on delete association path Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 34/38] nvmet-fc: take ref count on tgtport before delete assoc Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 35/38] cifs: do not search for channel if server is terminating Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 36/38] smb: client: increase number of PDUs allowed in a compound request Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 37/38] ext4: correct the hole length returned by ext4_map_blocks() Sasha Levin
2024-02-07 21:23 ` [PATCH AUTOSEL 6.6 38/38] Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240207212337.2351-2-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=adilger.kernel@dilger.ca \
--cc=jack@suse.cz \
--cc=libaokun1@huawei.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.