All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Qu Wenruo <wqu@suse.com>,
	Filipe Manana <fdmanana@suse.com>,
	David Sterba <dsterba@suse.com>
Subject: [PATCH 6.12 103/114] btrfs: fix swap file activation failure due to extents that used to be shared
Date: Mon, 30 Dec 2024 16:43:40 +0100	[thread overview]
Message-ID: <20241230154222.085993452@linuxfoundation.org> (raw)
In-Reply-To: <20241230154218.044787220@linuxfoundation.org>

6.12-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Filipe Manana <fdmanana@suse.com>

commit 03018e5d8508254534511d40fb57bc150e6a87f2 upstream.

When activating a swap file, to determine if an extent is shared we use
can_nocow_extent(), which ends up at btrfs_cross_ref_exist(). That helper
is meant to be quick because it's used in the NOCOW write path, when
flushing delalloc and when doing a direct IO write, however it does return
some false positives, meaning it may indicate that an extent is shared
even if it's no longer the case. For the write path this is fine, we just
do a unnecessary COW operation instead of doing a more rigorous check
which would be too heavy (calling btrfs_is_data_extent_shared()).

However when activating a swap file, the false positives simply result
in a failure, which is confusing for users/applications. One particular
case where this happens is when a data extent only has 1 reference but
that reference is not inlined in the extent item located in the extent
tree - this happens when we create more than 33 references for an extent
and then delete those 33 references plus every other non-inline reference
except one. The function check_committed_ref() assumes that if the size
of an extent item doesn't match the size of struct btrfs_extent_item
plus the size of an inline reference (plus an owner reference in case
simple quotas are enabled), then the extent is shared - that is not the
case however, we can have a single reference but it's not inlined - the
reason we do this is to be fast and avoid inspecting non-inline references
which may be located in another leaf of the extent tree, slowing down
write paths.

The following test script reproduces the bug:

   $ cat test.sh
   #!/bin/bash

   DEV=/dev/sdi
   MNT=/mnt/sdi
   NUM_CLONES=50

   umount $DEV &> /dev/null

   run_test()
   {
        local sync_after_add_reflinks=$1
        local sync_after_remove_reflinks=$2

        mkfs.btrfs -f $DEV > /dev/null
        #mkfs.xfs -f $DEV > /dev/null
        mount $DEV $MNT

        touch $MNT/foo
        chmod 0600 $MNT/foo
   	# On btrfs the file must be NOCOW.
        chattr +C $MNT/foo &> /dev/null
        xfs_io -s -c "pwrite -b 1M 0 1M" $MNT/foo
        mkswap $MNT/foo

        for ((i = 1; i <= $NUM_CLONES; i++)); do
            touch $MNT/foo_clone_$i
            chmod 0600 $MNT/foo_clone_$i
            # On btrfs the file must be NOCOW.
            chattr +C $MNT/foo_clone_$i &> /dev/null
            cp --reflink=always $MNT/foo $MNT/foo_clone_$i
        done

        if [ $sync_after_add_reflinks -ne 0 ]; then
            # Flush delayed refs and commit current transaction.
            sync -f $MNT
        fi

        # Remove the original file and all clones except the last.
        rm -f $MNT/foo
        for ((i = 1; i < $NUM_CLONES; i++)); do
            rm -f $MNT/foo_clone_$i
        done

        if [ $sync_after_remove_reflinks -ne 0 ]; then
            # Flush delayed refs and commit current transaction.
            sync -f $MNT
        fi

        # Now use the last clone as a swap file. It should work since
        # its extent are not shared anymore.
        swapon $MNT/foo_clone_${NUM_CLONES}
        swapoff $MNT/foo_clone_${NUM_CLONES}

        umount $MNT
   }

   echo -e "\nTest without sync after creating and removing clones"
   run_test 0 0

   echo -e "\nTest with sync after creating clones"
   run_test 1 0

   echo -e "\nTest with sync after removing clones"
   run_test 0 1

   echo -e "\nTest with sync after creating and removing clones"
   run_test 1 1

Running the test:

   $ ./test.sh
   Test without sync after creating and removing clones
   wrote 1048576/1048576 bytes at offset 0
   1 MiB, 1 ops; 0.0017 sec (556.793 MiB/sec and 556.7929 ops/sec)
   Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
   no label, UUID=a6b9c29e-5ef4-4689-a8ac-bc199c750f02
   swapon: /mnt/sdi/foo_clone_50: swapon failed: Invalid argument
   swapoff: /mnt/sdi/foo_clone_50: swapoff failed: Invalid argument

   Test with sync after creating clones
   wrote 1048576/1048576 bytes at offset 0
   1 MiB, 1 ops; 0.0036 sec (271.739 MiB/sec and 271.7391 ops/sec)
   Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
   no label, UUID=5e9008d6-1f7a-4948-a1b4-3f30aba20a33
   swapon: /mnt/sdi/foo_clone_50: swapon failed: Invalid argument
   swapoff: /mnt/sdi/foo_clone_50: swapoff failed: Invalid argument

   Test with sync after removing clones
   wrote 1048576/1048576 bytes at offset 0
   1 MiB, 1 ops; 0.0103 sec (96.665 MiB/sec and 96.6651 ops/sec)
   Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
   no label, UUID=916c2740-fa9f-4385-9f06-29c3f89e4764

   Test with sync after creating and removing clones
   wrote 1048576/1048576 bytes at offset 0
   1 MiB, 1 ops; 0.0031 sec (314.268 MiB/sec and 314.2678 ops/sec)
   Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
   no label, UUID=06aab1dd-4d90-49c0-bd9f-3a8db4e2f912
   swapon: /mnt/sdi/foo_clone_50: swapon failed: Invalid argument
   swapoff: /mnt/sdi/foo_clone_50: swapoff failed: Invalid argument

Fix this by reworking btrfs_swap_activate() to instead of using extent
maps and checking for shared extents with can_nocow_extent(), iterate
over the inode's file extent items and use the accurate
btrfs_is_data_extent_shared().

CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/btrfs/inode.c |  102 ++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 72 insertions(+), 30 deletions(-)

--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -9782,15 +9782,16 @@ static int btrfs_swap_activate(struct sw
 	struct btrfs_fs_info *fs_info = root->fs_info;
 	struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
 	struct extent_state *cached_state = NULL;
-	struct extent_map *em = NULL;
 	struct btrfs_chunk_map *map = NULL;
 	struct btrfs_device *device = NULL;
 	struct btrfs_swap_info bsi = {
 		.lowest_ppage = (sector_t)-1ULL,
 	};
+	struct btrfs_backref_share_check_ctx *backref_ctx = NULL;
+	struct btrfs_path *path = NULL;
 	int ret = 0;
 	u64 isize;
-	u64 start;
+	u64 prev_extent_end = 0;
 
 	/*
 	 * Acquire the inode's mmap lock to prevent races with memory mapped
@@ -9829,6 +9830,13 @@ static int btrfs_swap_activate(struct sw
 		goto out_unlock_mmap;
 	}
 
+	path = btrfs_alloc_path();
+	backref_ctx = btrfs_alloc_backref_share_check_ctx();
+	if (!path || !backref_ctx) {
+		ret = -ENOMEM;
+		goto out_unlock_mmap;
+	}
+
 	/*
 	 * Balance or device remove/replace/resize can move stuff around from
 	 * under us. The exclop protection makes sure they aren't running/won't
@@ -9887,24 +9895,39 @@ static int btrfs_swap_activate(struct sw
 	isize = ALIGN_DOWN(inode->i_size, fs_info->sectorsize);
 
 	lock_extent(io_tree, 0, isize - 1, &cached_state);
-	start = 0;
-	while (start < isize) {
-		u64 logical_block_start, physical_block_start;
+	while (prev_extent_end < isize) {
+		struct btrfs_key key;
+		struct extent_buffer *leaf;
+		struct btrfs_file_extent_item *ei;
 		struct btrfs_block_group *bg;
-		u64 len = isize - start;
-
-		em = btrfs_get_extent(BTRFS_I(inode), NULL, start, len);
-		if (IS_ERR(em)) {
-			ret = PTR_ERR(em);
-			goto out;
-		}
-
-		if (em->disk_bytenr == EXTENT_MAP_HOLE) {
+		u64 logical_block_start;
+		u64 physical_block_start;
+		u64 extent_gen;
+		u64 disk_bytenr;
+		u64 len;
+
+		key.objectid = btrfs_ino(BTRFS_I(inode));
+		key.type = BTRFS_EXTENT_DATA_KEY;
+		key.offset = prev_extent_end;
+
+		ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
+		if (ret < 0)
+			goto out;
+
+		/*
+		 * If key not found it means we have an implicit hole (NO_HOLES
+		 * is enabled).
+		 */
+		if (ret > 0) {
 			btrfs_warn(fs_info, "swapfile must not have holes");
 			ret = -EINVAL;
 			goto out;
 		}
-		if (em->disk_bytenr == EXTENT_MAP_INLINE) {
+
+		leaf = path->nodes[0];
+		ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);
+
+		if (btrfs_file_extent_type(leaf, ei) == BTRFS_FILE_EXTENT_INLINE) {
 			/*
 			 * It's unlikely we'll ever actually find ourselves
 			 * here, as a file small enough to fit inline won't be
@@ -9916,23 +9939,45 @@ static int btrfs_swap_activate(struct sw
 			ret = -EINVAL;
 			goto out;
 		}
-		if (extent_map_is_compressed(em)) {
+
+		if (btrfs_file_extent_compression(leaf, ei) != BTRFS_COMPRESS_NONE) {
 			btrfs_warn(fs_info, "swapfile must not be compressed");
 			ret = -EINVAL;
 			goto out;
 		}
 
-		logical_block_start = extent_map_block_start(em) + (start - em->start);
-		len = min(len, em->len - (start - em->start));
-		free_extent_map(em);
-		em = NULL;
+		disk_bytenr = btrfs_file_extent_disk_bytenr(leaf, ei);
+		if (disk_bytenr == 0) {
+			btrfs_warn(fs_info, "swapfile must not have holes");
+			ret = -EINVAL;
+			goto out;
+		}
+
+		logical_block_start = disk_bytenr + btrfs_file_extent_offset(leaf, ei);
+		extent_gen = btrfs_file_extent_generation(leaf, ei);
+		prev_extent_end = btrfs_file_extent_end(path);
+
+		if (prev_extent_end > isize)
+			len = isize - key.offset;
+		else
+			len = btrfs_file_extent_num_bytes(leaf, ei);
+
+		backref_ctx->curr_leaf_bytenr = leaf->start;
+
+		/*
+		 * Don't need the path anymore, release to avoid deadlocks when
+		 * calling btrfs_is_data_extent_shared() because when joining a
+		 * transaction it can block waiting for the current one's commit
+		 * which in turn may be trying to lock the same leaf to flush
+		 * delayed items for example.
+		 */
+		btrfs_release_path(path);
 
-		ret = can_nocow_extent(inode, start, &len, NULL, false, true);
+		ret = btrfs_is_data_extent_shared(BTRFS_I(inode), disk_bytenr,
+						  extent_gen, backref_ctx);
 		if (ret < 0) {
 			goto out;
-		} else if (ret) {
-			ret = 0;
-		} else {
+		} else if (ret > 0) {
 			btrfs_warn(fs_info,
 				   "swapfile must not be copy-on-write");
 			ret = -EINVAL;
@@ -9967,7 +10012,6 @@ static int btrfs_swap_activate(struct sw
 
 		physical_block_start = (map->stripes[0].physical +
 					(logical_block_start - map->start));
-		len = min(len, map->chunk_len - (logical_block_start - map->start));
 		btrfs_free_chunk_map(map);
 		map = NULL;
 
@@ -10008,20 +10052,16 @@ static int btrfs_swap_activate(struct sw
 				if (ret)
 					goto out;
 			}
-			bsi.start = start;
+			bsi.start = key.offset;
 			bsi.block_start = physical_block_start;
 			bsi.block_len = len;
 		}
-
-		start += len;
 	}
 
 	if (bsi.block_len)
 		ret = btrfs_add_swap_extent(sis, &bsi);
 
 out:
-	if (!IS_ERR_OR_NULL(em))
-		free_extent_map(em);
 	if (!IS_ERR_OR_NULL(map))
 		btrfs_free_chunk_map(map);
 
@@ -10036,6 +10076,8 @@ out:
 
 out_unlock_mmap:
 	up_write(&BTRFS_I(inode)->i_mmap_lock);
+	btrfs_free_backref_share_ctx(backref_ctx);
+	btrfs_free_path(path);
 	if (ret)
 		return ret;
 



  parent reply	other threads:[~2024-12-30 15:58 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-30 15:41 [PATCH 6.12 000/114] 6.12.8-rc1 review Greg Kroah-Hartman
2024-12-30 15:41 ` [PATCH 6.12 001/114] media: dvb-frontends: dib3000mb: fix uninit-value in dib3000_write_reg Greg Kroah-Hartman
2024-12-30 15:41 ` [PATCH 6.12 002/114] ceph: allocate sparse_ext map only for sparse reads Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 003/114] arm64: dts: broadcom: Fix L2 linesize for Raspberry Pi 5 Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 004/114] bpf: Fix bpf_get_smp_processor_id() on !CONFIG_SMP Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 005/114] fork: avoid inappropriate uprobe access to invalid mm Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 006/114] mm/vmstat: fix a W=1 clang compiler warning Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 007/114] selftests/bpf: Fix compilation error in get_uprobe_offset() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 008/114] smb: client: Deduplicate "select NETFS_SUPPORT" in Kconfig Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 009/114] smb: fix bytes written value in /proc/fs/cifs/Stats Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 010/114] tcp_bpf: Charge receive socket buffer in bpf_tcp_ingress() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 011/114] tcp_bpf: Add sk_rmem_alloc related logic for tcp_bpf ingress redirection Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 012/114] bpf: Check negative offsets in __bpf_skb_min_len() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 013/114] nfsd: Revert "nfsd: release svc_expkey/svc_export with rcu_work" Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 014/114] nfsd: restore callback functionality for NFSv4.0 Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 015/114] mtd: diskonchip: Cast an operand to prevent potential overflow Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 016/114] mtd: rawnand: arasan: Fix double assertion of chip-select Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 017/114] mtd: rawnand: arasan: Fix missing de-registration of NAND Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 018/114] phy: qcom-qmp: Fix register name in RX Lane config of SC8280XP Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 019/114] phy: core: Fix an OF node refcount leakage in _of_phy_get() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 020/114] phy: core: Fix an OF node refcount leakage in of_phy_provider_lookup() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 021/114] phy: core: Fix that API devm_phy_put() fails to release the phy Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 022/114] phy: core: Fix that API devm_of_phy_provider_unregister() fails to unregister the phy provider Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 023/114] phy: core: Fix that API devm_phy_destroy() fails to destroy the phy Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 024/114] phy: usb: Toggle the PHY power during init Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 025/114] phy: rockchip: samsung-hdptx: Set drvdata before enabling runtime PM Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 026/114] phy: rockchip: naneng-combphy: fix phy reset Greg Kroah-Hartman
2025-02-09 13:28   ` Aurelien Jarno
2025-02-11 10:29     ` Greg Kroah-Hartman
2025-02-11 22:18       ` Aurelien Jarno
2024-12-30 15:42 ` [PATCH 6.12 027/114] ALSA: memalloc: prefer dma_mapping_error() over explicit address checking Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 028/114] dmaengine: mv_xor: fix child node refcount handling in early exit Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 029/114] dmaengine: dw: Select only supported masters for ACPI devices Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 030/114] dmaengine: tegra: Return correct DMA status when paused Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 031/114] dmaengine: amd: qdma: Remove using the private get and set dma_ops APIs Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 032/114] dmaengine: fsl-edma: implement the cleanup path of fsl_edma3_attach_pd() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 033/114] dmaengine: apple-admac: Avoid accessing registers in probe Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 034/114] dmaengine: at_xdmac: avoid null_prt_deref in at_xdmac_prep_dma_memset Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 035/114] ASoC: SOF: Intel: hda-dai: Do not release the link DMA on STOP Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 036/114] platform/chrome: cros_ec_lpc: fix product identity for early Framework Laptops Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 037/114] mtd: rawnand: fix double free in atmel_pmecc_create_user() Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 038/114] ASoC: amd: ps: Fix for enabling DMIC on acp63 platform via _DSD entry Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 039/114] ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21QA and 21QB Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 040/114] ASoC: dt-bindings: realtek,rt5645: Fix CPVDD voltage comment Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 041/114] ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21Q6 and 21Q7 Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 042/114] powerpc/pseries/vas: Add close() callback in vas_vm_ops struct Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 043/114] power: supply: bq24190: Fix BQ24296 Vbus regulator support Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 044/114] stddef: make __struct_group() UAPI C++-friendly Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 045/114] tracing/kprobe: Make trace_kprobes module callback called after jump_label update Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 046/114] watchdog: it87_wdt: add PWRGD enable quirk for Qotom QCML04 Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 047/114] watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 048/114] Revert "watchdog: s3c2410_wdt: use exynos_get_pmu_regmap_by_phandle() for PMU regs" Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 049/114] watchdog: mediatek: Add support for MT6735 TOPRGU/WDT Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 050/114] scsi: qla1280: Fix hw revision numbering for ISP1020/1040 Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 051/114] scsi: megaraid_sas: Fix for a potential deadlock Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 052/114] udf: Skip parent dir link count update if corrupted Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 053/114] udf: Verify inode link counts before performing rename Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 054/114] ALSA: ump: Dont open legacy substream for an inactive group Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 055/114] ALSA: ump: Indicate the inactive group in legacy substream names Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 056/114] ALSA: ump: Update legacy substream names upon FB info update Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 057/114] ALSA: hda/conexant: fix Z60MR100 startup pop issue Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 058/114] ALSA: sh: Use standard helper for buffer accesses Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 059/114] smb: server: Fix building with GCC 15 Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 060/114] regmap: Use correct format specifier for logging range errors Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 061/114] LoongArch: Fix reserving screen info memory for above-4G firmware Greg Kroah-Hartman
2024-12-30 15:42 ` [PATCH 6.12 062/114] LoongArch: BPF: Adjust the parameter of emit_jirl() Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 063/114] platform/x86: asus-nb-wmi: Ignore unknown event 0xCF Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 064/114] bpf: Zero index arg error string for dynptr and iter Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 065/114] spi: intel: Add Panther Lake SPI controller support Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 066/114] scsi: mpt3sas: Diag-Reset when Doorbell-In-Use bit is set during driver load time Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 067/114] scsi: mpi3mr: Synchronize access to ioctl data buffer Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 068/114] scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 069/114] scsi: mpi3mr: Start controller indexing from 0 Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 070/114] scsi: mpi3mr: Handling of fault code for insufficient power Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 071/114] scsi: storvsc: Do not flag MAINTENANCE_IN return of SRB_STATUS_DATA_OVERRUN as an error Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 072/114] ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 073/114] spi: omap2-mcspi: Fix the IS_ERR() bug for devm_clk_get_optional_enabled() Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 074/114] drm/dp_mst: Ensure mst_primary pointer is valid in drm_dp_mst_handle_up_req() Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 075/114] virtio-blk: dont keep queue frozen during system suspend Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 076/114] blk-mq: register cpuhp callback after hctx is added to xarray table Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 077/114] wifi: iwlwifi: be less noisy if the NIC is dead in S3 Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 078/114] ublk: detach gendisk from ublk device if add_disk() fails Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 079/114] drm/xe: Take PM ref in delayed snapshot capture worker Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 080/114] drm/xe: Move the coredump registration to the worker thread Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 081/114] objtool: Add bch2_trans_unlocked_error() to bcachefs noreturns Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 082/114] freezer, sched: Report frozen tasks as D instead of R Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 083/114] dmaengine: loongson2-apb: Change GENMASK to GENMASK_ULL Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 084/114] perf/x86/intel/uncore: Add Clearwater Forest support Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 085/114] tracing: Constify string literal data member in struct trace_event_call Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 086/114] tracing: Prevent bad count for tracing_cpumask_write Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 087/114] rtla/timerlat: Fix histogram ALL for zero samples Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 088/114] io_uring/sqpoll: fix sqpoll error handling races Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 089/114] i2c: microchip-core: actually use repeated sends Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 090/114] x86/fred: Clear WFE in missing-ENDBRANCH #CPs Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 091/114] virt: tdx-guest: Just leak decrypted memory on unrecoverable errors Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 092/114] PCI/MSI: Handle lack of irqdomain gracefully Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 093/114] perf/x86/intel: Fix bitmask of OCR and FRONTEND events for LNC Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 094/114] i2c: imx: add imx7d compatible string for applying erratum ERR007805 Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 095/114] i2c: microchip-core: fix "ghost" detections Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 096/114] perf/x86/intel/ds: Add PEBS format 6 Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 097/114] power: supply: cros_charge-control: add mutex for driver data Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 098/114] power: supply: cros_charge-control: allow start_threshold == end_threshold Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 099/114] power: supply: cros_charge-control: hide start threshold on v2 cmd Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 100/114] power: supply: gpio-charger: Fix set charge current limits Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 101/114] btrfs: fix race with memory mapped writes when activating swap file Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 102/114] btrfs: avoid monopolizing a core when activating a " Greg Kroah-Hartman
2025-02-06 11:41   ` Koichiro Den
2025-02-06 14:31     ` Greg Kroah-Hartman
2025-02-06 15:21       ` Koichiro Den
2025-02-06 17:45       ` David Sterba
2025-02-07 17:06         ` Koichiro Den
2024-12-30 15:43 ` Greg Kroah-Hartman [this message]
2024-12-30 15:43 ` [PATCH 6.12 104/114] btrfs: fix transaction atomicity bug when enabling simple quotas Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 105/114] btrfs: sysfs: fix direct super block member reads Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 106/114] btrfs: fix use-after-free when COWing tree bock and tracing is enabled Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 107/114] btrfs: check folio mapping after unlock in put_file_data() Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 108/114] btrfs: check folio mapping after unlock in relocate_one_folio() Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 109/114] Bluetooth: btusb: mediatek: move Bluetooth power off command position Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 110/114] Bluetooth: btusb: mediatek: add callback function in btusb_disconnect Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 111/114] Bluetooth: btusb: mediatek: add intf release flow when usb disconnect Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 112/114] Bluetooth: btusb: mediatek: change the conditions for ISO interface Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 113/114] ALSA: ump: Shut up truncated string warning Greg Kroah-Hartman
2024-12-30 15:43 ` [PATCH 6.12 114/114] ALSA: sh: Fix wrong argument order for copy_from_iter() Greg Kroah-Hartman
2024-12-30 18:10 ` [PATCH 6.12 000/114] 6.12.8-rc1 review Florian Fainelli
2024-12-30 19:29 ` Pavel Machek
2024-12-30 20:58 ` Shuah Khan
2024-12-30 23:57 ` Takeshi Ogasawara
2024-12-31  8:01 ` Muhammad Usama Anjum
2025-01-16 12:09   ` Pavel Machek
2024-12-31  9:00 ` Naresh Kamboju
2024-12-31  9:42 ` Markus Reichelt
2024-12-31 19:10   ` Markus Reichelt
2024-12-31 13:02 ` Harshit Mogalapalli
2024-12-31 22:47 ` Ron Economos
2025-01-01  0:34 ` [PATCH 6.12] " Hardik Garg
2025-01-01 15:33 ` [PATCH 6.12 000/114] " Justin Forbes

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=20241230154222.085993452@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dsterba@suse.com \
    --cc=fdmanana@suse.com \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    --cc=wqu@suse.com \
    /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.