summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorgraysky2023-09-13 15:56:40 -0400
committergraysky2023-09-13 15:56:40 -0400
commit63c15bdd4743f83cf22faa4bf1c8fb9a08c58164 (patch)
tree73fc587657f4dab8344019bfac61a4e4afae9e55
parent69067cb12b5f5693bb97255338489801fc619d05 (diff)
downloadaur-63c15bdd4743f83cf22faa4bf1c8fb9a08c58164.tar.gz
Update to 6.5.3-1
-rw-r--r--.SRCINFO32
-rw-r--r--0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch8
-rw-r--r--0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch4
-rw-r--r--0003-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch (renamed from 0004-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch)4
-rw-r--r--0003-tpm-Enable-hwrng-only-for-Pluton-on-AMD-CPUs.patch78
-rw-r--r--0004-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch (renamed from 0005-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch)4
-rw-r--r--0005-btrfs-wait-on-uncached-block-groups-on-every-allocat.patch255
-rw-r--r--0006-btrfs-set-last-dir-index-to-the-current-last-index-w.patch86
-rw-r--r--0007-btrfs-refresh-dir-last-index-during-a-rewinddir-3-ca.patch102
-rw-r--r--0008-btrfs-fix-race-between-reading-a-directory-and-addin.patch143
-rw-r--r--PKGBUILD28
-rw-r--r--config11
12 files changed, 636 insertions, 119 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 7bd7dd0fed90..841d12868874 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,5 +1,5 @@
pkgbase = linux-ck
- pkgver = 6.5.2
+ pkgver = 6.5.3
pkgrel = 1
url = https://wiki.archlinux.org/index.php/Linux-ck
arch = x86_64
@@ -15,28 +15,34 @@ pkgbase = linux-ck
makedepends = tar
makedepends = xz
options = !strip
- source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.5.2.tar.xz
- source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.5.2.tar.sign
+ source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.5.3.tar.xz
+ source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.5.3.tar.sign
source = config
source = more-uarches-20221217.tar.gz::https://github.com/graysky2/kernel_compiler_patch/archive/20221217.tar.gz
source = ck-hrtimer-6ef0e9ff5db0ed380f98cc8c7436ca9c44ea32c9.tar.gz::https://github.com/graysky2/linux-patches/archive/6ef0e9ff5db0ed380f98cc8c7436ca9c44ea32c9.tar.gz
source = 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
source = 0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
- source = 0003-tpm-Enable-hwrng-only-for-Pluton-on-AMD-CPUs.patch
- source = 0004-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
- source = 0005-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
+ source = 0003-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
+ source = 0004-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
+ source = 0005-btrfs-wait-on-uncached-block-groups-on-every-allocat.patch
+ source = 0006-btrfs-set-last-dir-index-to-the-current-last-index-w.patch
+ source = 0007-btrfs-refresh-dir-last-index-during-a-rewinddir-3-ca.patch
+ source = 0008-btrfs-fix-race-between-reading-a-directory-and-addin.patch
validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886
validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E
- sha256sums = 2027e14057d568ad3ddc100dadf4c8853a49b031270478a61d88f6011572650f
+ sha256sums = 4cac13f7b17bd8dcf9032ad68f9123ab5313d698c9f59416043165150763eb4f
sha256sums = SKIP
- sha256sums = b36c2945633d49b5f85600b58989a58f5ac61e31ca2c02f2046ce15b1462ea4b
+ sha256sums = 46451dbc3305d4c2e726a2f1943bddf697c5bb6815d93e5baed80bca82e53fdc
sha256sums = f1d586e111932890ad5e0df15d092fb9b3f87bae4ea17812aae9b0ec98fe2db0
sha256sums = a86a59d089ddd4f31565ff6a27ba74f4697ffa0ab0f57dc839e1da6ab83d77a4
- sha256sums = 806801da9c5c251a9087a562bb1c203324c484cab60080f62452212e3e02eb77
- sha256sums = 8c0d18bf189b0dcbe319a850bfa21dba8baab091251ec01ef52019478bc3a82a
- sha256sums = 92292c9743f496c064c33046bad21670732762e6261227b8ceecb8be874723b8
- sha256sums = cd70f794589c5481ec542d508fd23ca35fe42df5bfdbe3454a8443fae191e5eb
- sha256sums = f9f00f18529c7f15cc476dbe0344636a3e76537476fffe9c37fea16a157e17ce
+ sha256sums = ef5f18993d8705818934cb6c0ec0bc26371360698e008d536ec1fa7499d8a919
+ sha256sums = c8f800f080fc93c805fd4c3888f1249b2700fe37f5de93984f5f0caaac97b36f
+ sha256sums = 781fd295ca439c2632f1a453239bb58b1cb30df3b84154ce70109678a1b0df53
+ sha256sums = 302df4d170c81f722879bc624f4d4aee3da1a65c59b2ed873a0e91f0feb2fc5a
+ sha256sums = 2abf9a149f215bcdb2e76344e67a2f1c5c46e9962953dd073ed7090e85d988c5
+ sha256sums = fd1c1c1dfbc741a03e2e91cb97cc0d4403a0722451dfae06d26faf66c0d3b6e8
+ sha256sums = 053d903bfe7979be075d3ece4a4f03034af7a9e994c78c381648a13aa0d07b00
+ sha256sums = 4862ae2813434b949c500a6fef982a9132623e88dc6634ce802b388d166a61fc
pkgname = linux-ck
pkgdesc = The Linux kernel and modules with ck's hrtimer patches
diff --git a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
index 396884e58166..ccc53c6c0a74 100644
--- a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
+++ b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
@@ -1,7 +1,7 @@
-From e1fcd2107a9f8d938e51f5315cbc43c5e8a8c0b4 Mon Sep 17 00:00:00 2001
+From 92b8cd4f582347e53163d544db15d20f563d1c17 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Mon, 16 Sep 2019 04:53:20 +0200
-Subject: [PATCH 1/6] ZEN: Add sysctl and CONFIG to disallow unprivileged
+Subject: [PATCH 1/9] ZEN: Add sysctl and CONFIG to disallow unprivileged
CLONE_NEWUSER
Our default behavior continues to match the vanilla kernel.
@@ -36,10 +36,10 @@ index 45f09bec02c4..87b20e2ee274 100644
{
return &init_user_ns;
diff --git a/init/Kconfig b/init/Kconfig
-index f7f65af4ee12..c2ecb3bb3392 100644
+index 5e7d4885d1bf..13ad93775237 100644
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1225,6 +1225,22 @@ config USER_NS
+@@ -1226,6 +1226,22 @@ config USER_NS
If unsure, say N.
diff --git a/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch b/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
index 9e0206d174b6..3af2107c4bea 100644
--- a/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
+++ b/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
@@ -1,7 +1,7 @@
-From ece3d148f997af3c3673903e61861af5201e4ae8 Mon Sep 17 00:00:00 2001
+From 5e9d8dd3971972048485610161c2556a7608849e Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Thu, 19 May 2022 14:40:07 +0200
-Subject: [PATCH 2/6] drivers/firmware: skip simpledrm if nvidia-drm.modeset=1
+Subject: [PATCH 2/9] drivers/firmware: skip simpledrm if nvidia-drm.modeset=1
is set
The Nvidia proprietary driver has some bugs that leads to issues if used
diff --git a/0004-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch b/0003-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
index 6847084dff8c..339409c9385c 100644
--- a/0004-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
+++ b/0003-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
@@ -1,7 +1,7 @@
-From 84d43edcf274c9786f6f719d5cb74a2c4a1449e1 Mon Sep 17 00:00:00 2001
+From 37d1bd4999f06c7c4b3094cb74b7614c552ecc1d Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
Date: Thu, 24 Aug 2023 01:28:17 +0200
-Subject: [PATCH 4/6] sphinx: kfigure.py: Convert outdir to str before using
+Subject: [PATCH 3/9] sphinx: kfigure.py: Convert outdir to str before using
len
Sphinx 7.2 replaced several uses of str with pathlib Paths, causing the
diff --git a/0003-tpm-Enable-hwrng-only-for-Pluton-on-AMD-CPUs.patch b/0003-tpm-Enable-hwrng-only-for-Pluton-on-AMD-CPUs.patch
deleted file mode 100644
index f0f4778116ae..000000000000
--- a/0003-tpm-Enable-hwrng-only-for-Pluton-on-AMD-CPUs.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 0408e39a978a498fc692f2e579d80afe4ed5c97e Mon Sep 17 00:00:00 2001
-From: Jarkko Sakkinen <jarkko@kernel.org>
-Date: Wed, 23 Aug 2023 02:15:10 +0300
-Subject: [PATCH 3/6] tpm: Enable hwrng only for Pluton on AMD CPUs
-
-The vendor check introduced by commit 554b841d4703 ("tpm: Disable RNG for
-all AMD fTPMs") doesn't work properly on a number of Intel fTPMs. On the
-reported systems the TPM doesn't reply at bootup and returns back the
-command code. This makes the TPM fail probe.
-
-Since only Microsoft Pluton is the only known combination of AMD CPU and
-fTPM from other vendor, disable hwrng otherwise. In order to make sysadmin
-aware of this, print also info message to the klog.
-
-Cc: stable@vger.kernel.org
-Fixes: 554b841d4703 ("tpm: Disable RNG for all AMD fTPMs")
-Reported-by: Todd Brandt <todd.e.brandt@intel.com>
-Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217804
-Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
-Cherry-picked-for: https://bugs.archlinux.org/task/79366
----
- drivers/char/tpm/tpm_crb.c | 33 ++++++++-------------------------
- 1 file changed, 8 insertions(+), 25 deletions(-)
-
-diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
-index 9eb1a1859012..a5dbebb1acfc 100644
---- a/drivers/char/tpm/tpm_crb.c
-+++ b/drivers/char/tpm/tpm_crb.c
-@@ -463,28 +463,6 @@ static bool crb_req_canceled(struct tpm_chip *chip, u8 status)
- return (cancel & CRB_CANCEL_INVOKE) == CRB_CANCEL_INVOKE;
- }
-
--static int crb_check_flags(struct tpm_chip *chip)
--{
-- u32 val;
-- int ret;
--
-- ret = crb_request_locality(chip, 0);
-- if (ret)
-- return ret;
--
-- ret = tpm2_get_tpm_pt(chip, TPM2_PT_MANUFACTURER, &val, NULL);
-- if (ret)
-- goto release;
--
-- if (val == 0x414D4400U /* AMD */)
-- chip->flags |= TPM_CHIP_FLAG_HWRNG_DISABLED;
--
--release:
-- crb_relinquish_locality(chip, 0);
--
-- return ret;
--}
--
- static const struct tpm_class_ops tpm_crb = {
- .flags = TPM_OPS_AUTO_STARTUP,
- .status = crb_status,
-@@ -826,9 +804,14 @@ static int crb_acpi_add(struct acpi_device *device)
- if (rc)
- goto out;
-
-- rc = crb_check_flags(chip);
-- if (rc)
-- goto out;
-+#ifdef CONFIG_X86
-+ /* A quirk for https://www.amd.com/en/support/kb/faq/pa-410 */
-+ if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
-+ priv->sm != ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON) {
-+ dev_info(dev, "Disabling hwrng\n");
-+ chip->flags |= TPM_CHIP_FLAG_HWRNG_DISABLED;
-+ }
-+#endif /* CONFIG_X86 */
-
- rc = tpm_chip_register(chip);
-
---
-2.42.0
-
diff --git a/0005-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch b/0004-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
index eacd1c660918..3ce836d378ad 100644
--- a/0005-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
+++ b/0004-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
@@ -1,7 +1,7 @@
-From 4df5bd76b68674cc51777ffff0835dea0effb89b Mon Sep 17 00:00:00 2001
+From eb39b2a95930f53bd2cb4fbda0e1372609dff976 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Tue, 5 Sep 2023 11:16:16 -0400
-Subject: [PATCH 5/6] ASoC: Intel: soc-acpi: fix Dell SKU 0B34
+Subject: [PATCH 4/9] ASoC: Intel: soc-acpi: fix Dell SKU 0B34
The rule for the SoundWire tables is that the platforms with more
devices need to be added first. We broke that rule with the Dell SKU
diff --git a/0005-btrfs-wait-on-uncached-block-groups-on-every-allocat.patch b/0005-btrfs-wait-on-uncached-block-groups-on-every-allocat.patch
new file mode 100644
index 000000000000..f5e043f9fd2a
--- /dev/null
+++ b/0005-btrfs-wait-on-uncached-block-groups-on-every-allocat.patch
@@ -0,0 +1,255 @@
+From 8da079307d115705e243d226591dcb4388cef7e2 Mon Sep 17 00:00:00 2001
+From: Josef Bacik <josef@toxicpanda.com>
+Date: Mon, 31 Jul 2023 16:28:43 -0400
+Subject: [PATCH 5/9] btrfs: wait on uncached block groups on every allocation
+ loop
+
+My initial fix for the generic/475 hangs was related to metadata, but
+our CI testing uncovered another case where we hang for similar reasons.
+We again have a task with a plug that is holding an outstanding request
+that is keeping the dm device from finishing it's suspend, and that task
+is stuck in the allocator.
+
+This time it is stuck trying to allocate data, but we do not have a
+block group that matches the size class. The larger loop in the
+allocator looks like this (simplified of course)
+
+ find_free_extent
+ for_each_block_group {
+ ffe_ctl->cached == btrfs_block_group_cache_done(bg)
+ if (!ffe_ctl->cached)
+ ffe_ctl->have_caching_bg = true;
+ do_allocation()
+ btrfs_wait_block_group_cache_progress();
+ }
+
+ if (loop == LOOP_CACHING_WAIT && ffe_ctl->have_caching_bg)
+ go search again;
+
+In my earlier fix we were trying to allocate from the block group, but
+we weren't waiting for the progress because we were only waiting for the
+free space to be >= the amount of free space we wanted. My fix made it
+so we waited for forward progress to be made as well, so we would be
+sure to wait.
+
+This time however we did not have a block group that matched our size
+class, so what was happening was this
+
+ find_free_extent
+ for_each_block_group {
+ ffe_ctl->cached == btrfs_block_group_cache_done(bg)
+ if (!ffe_ctl->cached)
+ ffe_ctl->have_caching_bg = true;
+ if (size_class_doesn't_match())
+ goto loop;
+ do_allocation()
+ btrfs_wait_block_group_cache_progress();
+ loop:
+ release_block_group(block_group);
+ }
+
+ if (loop == LOOP_CACHING_WAIT && ffe_ctl->have_caching_bg)
+ go search again;
+
+The size_class_doesn't_match() part was true, so we'd just skip this
+block group and never wait for caching, and then because we found a
+caching block group we'd just go back and do the loop again. We never
+sleep and thus never flush the plug and we have the same deadlock.
+
+Fix the logic for waiting on the block group caching to instead do it
+unconditionally when we goto loop. This takes the logic out of the
+allocation step, so now the loop looks more like this
+
+ find_free_extent
+ for_each_block_group {
+ ffe_ctl->cached == btrfs_block_group_cache_done(bg)
+ if (!ffe_ctl->cached)
+ ffe_ctl->have_caching_bg = true;
+ if (size_class_doesn't_match())
+ goto loop;
+ do_allocation()
+ btrfs_wait_block_group_cache_progress();
+ loop:
+ if (loop > LOOP_CACHING_NOWAIT && !ffe_ctl->retry_uncached &&
+ !ffe_ctl->cached) {
+ ffe_ctl->retry_uncached = true;
+ btrfs_wait_block_group_cache_progress();
+ }
+
+ release_block_group(block_group);
+ }
+
+ if (loop == LOOP_CACHING_WAIT && ffe_ctl->have_caching_bg)
+ go search again;
+
+This simplifies the logic a lot, and makes sure that if we're hitting
+uncached block groups we're always waiting on them at some point.
+
+I ran this through 100 iterations of generic/475, as this particular
+case was harder to hit than the previous one.
+
+Signed-off-by: Josef Bacik <josef@toxicpanda.com>
+Signed-off-by: David Sterba <dsterba@suse.com>
+---
+ fs/btrfs/extent-tree.c | 61 +++++++++++++-----------------------------
+ fs/btrfs/extent-tree.h | 13 +++------
+ 2 files changed, 22 insertions(+), 52 deletions(-)
+
+diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
+index f396a9afa403..6096bd98e6c7 100644
+--- a/fs/btrfs/extent-tree.c
++++ b/fs/btrfs/extent-tree.c
+@@ -3427,7 +3427,6 @@ btrfs_release_block_group(struct btrfs_block_group *cache,
+ * Helper function for find_free_extent().
+ *
+ * Return -ENOENT to inform caller that we need fallback to unclustered mode.
+- * Return -EAGAIN to inform caller that we need to re-search this block group
+ * Return >0 to inform caller that we find nothing
+ * Return 0 means we have found a location and set ffe_ctl->found_offset.
+ */
+@@ -3508,14 +3507,6 @@ static int find_free_extent_clustered(struct btrfs_block_group *bg,
+ trace_btrfs_reserve_extent_cluster(bg, ffe_ctl);
+ return 0;
+ }
+- } else if (!ffe_ctl->cached && ffe_ctl->loop > LOOP_CACHING_NOWAIT &&
+- !ffe_ctl->retry_clustered) {
+- spin_unlock(&last_ptr->refill_lock);
+-
+- ffe_ctl->retry_clustered = true;
+- btrfs_wait_block_group_cache_progress(bg, ffe_ctl->num_bytes +
+- ffe_ctl->empty_cluster + ffe_ctl->empty_size);
+- return -EAGAIN;
+ }
+ /*
+ * At this point we either didn't find a cluster or we weren't able to
+@@ -3530,7 +3521,6 @@ static int find_free_extent_clustered(struct btrfs_block_group *bg,
+ /*
+ * Return >0 to inform caller that we find nothing
+ * Return 0 when we found an free extent and set ffe_ctrl->found_offset
+- * Return -EAGAIN to inform caller that we need to re-search this block group
+ */
+ static int find_free_extent_unclustered(struct btrfs_block_group *bg,
+ struct find_free_extent_ctl *ffe_ctl)
+@@ -3568,25 +3558,8 @@ static int find_free_extent_unclustered(struct btrfs_block_group *bg,
+ offset = btrfs_find_space_for_alloc(bg, ffe_ctl->search_start,
+ ffe_ctl->num_bytes, ffe_ctl->empty_size,
+ &ffe_ctl->max_extent_size);
+-
+- /*
+- * If we didn't find a chunk, and we haven't failed on this block group
+- * before, and this block group is in the middle of caching and we are
+- * ok with waiting, then go ahead and wait for progress to be made, and
+- * set @retry_unclustered to true.
+- *
+- * If @retry_unclustered is true then we've already waited on this
+- * block group once and should move on to the next block group.
+- */
+- if (!offset && !ffe_ctl->retry_unclustered && !ffe_ctl->cached &&
+- ffe_ctl->loop > LOOP_CACHING_NOWAIT) {
+- btrfs_wait_block_group_cache_progress(bg, ffe_ctl->num_bytes +
+- ffe_ctl->empty_size);
+- ffe_ctl->retry_unclustered = true;
+- return -EAGAIN;
+- } else if (!offset) {
++ if (!offset)
+ return 1;
+- }
+ ffe_ctl->found_offset = offset;
+ return 0;
+ }
+@@ -3600,7 +3573,7 @@ static int do_allocation_clustered(struct btrfs_block_group *block_group,
+ /* We want to try and use the cluster allocator, so lets look there */
+ if (ffe_ctl->last_ptr && ffe_ctl->use_cluster) {
+ ret = find_free_extent_clustered(block_group, ffe_ctl, bg_ret);
+- if (ret >= 0 || ret == -EAGAIN)
++ if (ret >= 0)
+ return ret;
+ /* ret == -ENOENT case falls through */
+ }
+@@ -3816,8 +3789,7 @@ static void release_block_group(struct btrfs_block_group *block_group,
+ {
+ switch (ffe_ctl->policy) {
+ case BTRFS_EXTENT_ALLOC_CLUSTERED:
+- ffe_ctl->retry_clustered = false;
+- ffe_ctl->retry_unclustered = false;
++ ffe_ctl->retry_uncached = false;
+ break;
+ case BTRFS_EXTENT_ALLOC_ZONED:
+ /* Nothing to do */
+@@ -4168,9 +4140,7 @@ static noinline int find_free_extent(struct btrfs_root *root,
+ ffe_ctl->orig_have_caching_bg = false;
+ ffe_ctl->index = btrfs_bg_flags_to_raid_index(ffe_ctl->flags);
+ ffe_ctl->loop = 0;
+- /* For clustered allocation */
+- ffe_ctl->retry_clustered = false;
+- ffe_ctl->retry_unclustered = false;
++ ffe_ctl->retry_uncached = false;
+ ffe_ctl->cached = 0;
+ ffe_ctl->max_extent_size = 0;
+ ffe_ctl->total_free_space = 0;
+@@ -4321,16 +4291,12 @@ static noinline int find_free_extent(struct btrfs_root *root,
+
+ bg_ret = NULL;
+ ret = do_allocation(block_group, ffe_ctl, &bg_ret);
+- if (ret == 0) {
+- if (bg_ret && bg_ret != block_group) {
+- btrfs_release_block_group(block_group,
+- ffe_ctl->delalloc);
+- block_group = bg_ret;
+- }
+- } else if (ret == -EAGAIN) {
+- goto have_block_group;
+- } else if (ret > 0) {
++ if (ret > 0)
+ goto loop;
++
++ if (bg_ret && bg_ret != block_group) {
++ btrfs_release_block_group(block_group, ffe_ctl->delalloc);
++ block_group = bg_ret;
+ }
+
+ /* Checks */
+@@ -4371,6 +4337,15 @@ static noinline int find_free_extent(struct btrfs_root *root,
+ btrfs_release_block_group(block_group, ffe_ctl->delalloc);
+ break;
+ loop:
++ if (!ffe_ctl->cached && ffe_ctl->loop > LOOP_CACHING_NOWAIT &&
++ !ffe_ctl->retry_uncached) {
++ ffe_ctl->retry_uncached = true;
++ btrfs_wait_block_group_cache_progress(block_group,
++ ffe_ctl->num_bytes +
++ ffe_ctl->empty_cluster +
++ ffe_ctl->empty_size);
++ goto have_block_group;
++ }
+ release_block_group(block_group, ffe_ctl, ffe_ctl->delalloc);
+ cond_resched();
+ }
+diff --git a/fs/btrfs/extent-tree.h b/fs/btrfs/extent-tree.h
+index 429d5c570061..6bfba2f22fdd 100644
+--- a/fs/btrfs/extent-tree.h
++++ b/fs/btrfs/extent-tree.h
+@@ -48,16 +48,11 @@ struct find_free_extent_ctl {
+ int loop;
+
+ /*
+- * Whether we're refilling a cluster, if true we need to re-search
+- * current block group but don't try to refill the cluster again.
++ * Set to true if we're retrying the allocation on this block group
++ * after waiting for caching progress, this is so that we retry only
++ * once before moving on to another block group.
+ */
+- bool retry_clustered;
+-
+- /*
+- * Whether we're updating free space cache, if true we need to re-search
+- * current block group but don't try updating free space cache again.
+- */
+- bool retry_unclustered;
++ bool retry_uncached;
+
+ /* If current block group is cached */
+ int cached;
+--
+2.42.0
+
diff --git a/0006-btrfs-set-last-dir-index-to-the-current-last-index-w.patch b/0006-btrfs-set-last-dir-index-to-the-current-last-index-w.patch
new file mode 100644
index 000000000000..4cb05fc8da74
--- /dev/null
+++ b/0006-btrfs-set-last-dir-index-to-the-current-last-index-w.patch
@@ -0,0 +1,86 @@
+From c8026dde1f99ec4f682765aaac7993a964184a15 Mon Sep 17 00:00:00 2001
+From: Filipe Manana <fdmanana@suse.com>
+Date: Sat, 9 Sep 2023 11:34:40 +0100
+Subject: [PATCH 6/9] btrfs: set last dir index to the current last index when
+ opening dir
+
+When opening a directory for reading it, we set the last index where we
+stop iteration to the value in struct btrfs_inode::index_cnt. That value
+does not match the index of the most recently added directory entry but
+it's instead the index number that will be assigned the next directory
+entry.
+
+This means that if after the call to opendir(3) new directory entries are
+added, a readdir(3) call will return the first new directory entry. This
+is fine because POSIX says the following [1]:
+
+ "If a file is removed from or added to the directory after the most
+ recent call to opendir() or rewinddir(), whether a subsequent call to
+ readdir() returns an entry for that file is unspecified."
+
+For example for the test script from commit 9b378f6ad48c ("btrfs: fix
+infinite directory reads"), where we have 2000 files in a directory, ext4
+doesn't return any new directory entry after opendir(3), while xfs returns
+the first 13 new directory entries added after the opendir(3) call.
+
+If we move to a shorter example with an empty directory when opendir(3) is
+called, and 2 files added to the directory after the opendir(3) call, then
+readdir(3) on btrfs will return the first file, ext4 and xfs return the 2
+files (but in a different order). A test program for this, reported by
+Ian Johnson, is the following:
+
+ #include <dirent.h>
+ #include <stdio.h>
+
+ int main(void) {
+ DIR *dir = opendir("test");
+
+ FILE *file;
+ file = fopen("test/1", "w");
+ fwrite("1", 1, 1, file);
+ fclose(file);
+
+ file = fopen("test/2", "w");
+ fwrite("2", 1, 1, file);
+ fclose(file);
+
+ struct dirent *entry;
+ while ((entry = readdir(dir))) {
+ printf("%s\n", entry->d_name);
+ }
+ closedir(dir);
+ return 0;
+ }
+
+To make this less odd, change the behaviour to never return new entries
+that were added after the opendir(3) call. This is done by setting the
+last_index field of the struct btrfs_file_private attached to the
+directory's file handle with a value matching btrfs_inode::index_cnt
+minus 1, since that value always matches the index of the next new
+directory entry and not the index of the most recently added entry.
+
+[1] https://pubs.opengroup.org/onlinepubs/007904875/functions/readdir_r.html
+
+Link: https://lore.kernel.org/linux-btrfs/YR1P0S.NGASEG570GJ8@ianjohnson.dev/
+Signed-off-by: Filipe Manana <fdmanana@suse.com>
+---
+ fs/btrfs/inode.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
+index aa090b0b5d29..e3a52438f4f1 100644
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -5935,7 +5935,8 @@ static int btrfs_get_dir_last_index(struct btrfs_inode *dir, u64 *index)
+ }
+ }
+
+- *index = dir->index_cnt;
++ /* index_cnt is the index number of next new entry, so decrement it. */
++ *index = dir->index_cnt - 1;
+
+ return 0;
+ }
+--
+2.42.0
+
diff --git a/0007-btrfs-refresh-dir-last-index-during-a-rewinddir-3-ca.patch b/0007-btrfs-refresh-dir-last-index-during-a-rewinddir-3-ca.patch
new file mode 100644
index 000000000000..f6f338563317
--- /dev/null
+++ b/0007-btrfs-refresh-dir-last-index-during-a-rewinddir-3-ca.patch
@@ -0,0 +1,102 @@
+From f2e0f18c8bd9c6d61575a2311d488e21831e1163 Mon Sep 17 00:00:00 2001
+From: Filipe Manana <fdmanana@suse.com>
+Date: Sat, 9 Sep 2023 12:12:14 +0100
+Subject: [PATCH 7/9] btrfs: refresh dir last index during a rewinddir(3) call
+
+When opening a directory we find what's the index of its last entry and
+then store it in the directory's file handle private data (struct
+btrfs_file_private::last_index), so that in the case new directory entries
+are added to a directory after an opendir(3) call we don't end up in an
+infinite loop (see commit 9b378f6ad48c ("btrfs: fix infinite directory
+reads")) when calling readdir(3).
+
+However once rewinddir(3) is called, POSIX states [1] that any new
+directory entries added after the previous opendir(3) call, must be
+returned by subsequent calls to readdir(3):
+
+ "The rewinddir() function shall reset the position of the directory
+ stream to which dirp refers to the beginning of the directory.
+ It shall also cause the directory stream to refer to the current
+ state of the corresponding directory, as a call to opendir() would
+ have done."
+
+We currently don't refresh the last_index field of the struct
+btrfs_file_private associated to the directory, so after a rewinddir(3)
+we are not returning any new entries added after the opendir(3) call.
+
+Fix this by finding the current last index of the directory when llseek
+is called agains the directory.
+
+This can be reproduced by the following C program provided by Ian Johnson:
+
+ #include <dirent.h>
+ #include <stdio.h>
+
+ int main(void) {
+ DIR *dir = opendir("test");
+
+ FILE *file;
+ file = fopen("test/1", "w");
+ fwrite("1", 1, 1, file);
+ fclose(file);
+
+ file = fopen("test/2", "w");
+ fwrite("2", 1, 1, file);
+ fclose(file);
+
+ rewinddir(dir);
+
+ struct dirent *entry;
+ while ((entry = readdir(dir))) {
+ printf("%s\n", entry->d_name);
+ }
+ closedir(dir);
+ return 0;
+ }
+
+[1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/rewinddir.html
+
+Reported-by: Ian Johnson <ian@ianjohnson.dev>
+Link: https://lore.kernel.org/linux-btrfs/YR1P0S.NGASEG570GJ8@ianjohnson.dev/
+Fixes: 9b378f6ad48c ("btrfs: fix infinite directory reads")
+Signed-off-by: Filipe Manana <fdmanana@suse.com>
+---
+ fs/btrfs/inode.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
+index e3a52438f4f1..a50cbcafca03 100644
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -5973,6 +5973,19 @@ static int btrfs_opendir(struct inode *inode, struct file *file)
+ return 0;
+ }
+
++static loff_t btrfs_dir_llseek(struct file *file, loff_t offset, int whence)
++{
++ struct btrfs_file_private *private = file->private_data;
++ int ret;
++
++ ret = btrfs_get_dir_last_index(BTRFS_I(file_inode(file)),
++ &private->last_index);
++ if (ret)
++ return ret;
++
++ return generic_file_llseek(file, offset, whence);
++}
++
+ struct dir_entry {
+ u64 ino;
+ u64 offset;
+@@ -11053,7 +11066,7 @@ static const struct inode_operations btrfs_dir_inode_operations = {
+ };
+
+ static const struct file_operations btrfs_dir_file_operations = {
+- .llseek = generic_file_llseek,
++ .llseek = btrfs_dir_llseek,
+ .read = generic_read_dir,
+ .iterate_shared = btrfs_real_readdir,
+ .open = btrfs_opendir,
+--
+2.42.0
+
diff --git a/0008-btrfs-fix-race-between-reading-a-directory-and-addin.patch b/0008-btrfs-fix-race-between-reading-a-directory-and-addin.patch
new file mode 100644
index 000000000000..b16eef0f2ad4
--- /dev/null
+++ b/0008-btrfs-fix-race-between-reading-a-directory-and-addin.patch
@@ -0,0 +1,143 @@
+From 5c640491ba9cea8c0a01144db26b2c8892506717 Mon Sep 17 00:00:00 2001
+From: Filipe Manana <fdmanana@suse.com>
+Date: Tue, 12 Sep 2023 11:45:39 +0100
+Subject: [PATCH 8/9] btrfs: fix race between reading a directory and adding
+ entries to it
+
+When opening a directory (opendir(3)) or rewinding it (rewinddir(3)), we
+are not holding the directory's inode locked, and this can result in later
+attempting to add two entries to the directory with the same index number,
+resulting in a transaction abort, with -EEXIST (-17), when inserting the
+second delayed dir index. This results in a trace like the following:
+
+ Sep 11 22:34:59 myhostname kernel: BTRFS error (device dm-3): err add delayed dir index item(name: cockroach-stderr.log) into the insertion tree of the delayed node(root id: 5, inode id: 4539217, errno: -17)
+ Sep 11 22:34:59 myhostname kernel: ------------[ cut here ]------------
+ Sep 11 22:34:59 myhostname kernel: kernel BUG at fs/btrfs/delayed-inode.c:1504!
+ Sep 11 22:34:59 myhostname kernel: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
+ Sep 11 22:34:59 myhostname kernel: CPU: 0 PID: 7159 Comm: cockroach Not tainted 6.4.15-200.fc38.x86_64 #1
+ Sep 11 22:34:59 myhostname kernel: Hardware name: ASUS ESC500 G3/P9D WS, BIOS 2402 06/27/2018
+ Sep 11 22:34:59 myhostname kernel: RIP: 0010:btrfs_insert_delayed_dir_index+0x1da/0x260
+ Sep 11 22:34:59 myhostname kernel: Code: eb dd 48 (...)
+ Sep 11 22:34:59 myhostname kernel: RSP: 0000:ffffa9980e0fbb28 EFLAGS: 00010282
+ Sep 11 22:34:59 myhostname kernel: RAX: 0000000000000000 RBX: ffff8b10b8f4a3c0 RCX: 0000000000000000
+ Sep 11 22:34:59 myhostname kernel: RDX: 0000000000000000 RSI: ffff8b177ec21540 RDI: ffff8b177ec21540
+ Sep 11 22:34:59 myhostname kernel: RBP: ffff8b110cf80888 R08: 0000000000000000 R09: ffffa9980e0fb938
+ Sep 11 22:34:59 myhostname kernel: R10: 0000000000000003 R11: ffffffff86146508 R12: 0000000000000014
+ Sep 11 22:34:59 myhostname kernel: R13: ffff8b1131ae5b40 R14: ffff8b10b8f4a418 R15: 00000000ffffffef
+ Sep 11 22:34:59 myhostname kernel: FS: 00007fb14a7fe6c0(0000) GS:ffff8b177ec00000(0000) knlGS:0000000000000000
+ Sep 11 22:34:59 myhostname kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+ Sep 11 22:34:59 myhostname kernel: CR2: 000000c00143d000 CR3: 00000001b3b4e002 CR4: 00000000001706f0
+ Sep 11 22:34:59 myhostname kernel: Call Trace:
+ Sep 11 22:34:59 myhostname kernel: <TASK>
+ Sep 11 22:34:59 myhostname kernel: ? die+0x36/0x90
+ Sep 11 22:34:59 myhostname kernel: ? do_trap+0xda/0x100
+ Sep 11 22:34:59 myhostname kernel: ? btrfs_insert_delayed_dir_index+0x1da/0x260
+ Sep 11 22:34:59 myhostname kernel: ? do_error_trap+0x6a/0x90
+ Sep 11 22:34:59 myhostname kernel: ? btrfs_insert_delayed_dir_index+0x1da/0x260
+ Sep 11 22:34:59 myhostname kernel: ? exc_invalid_op+0x50/0x70
+ Sep 11 22:34:59 myhostname kernel: ? btrfs_insert_delayed_dir_index+0x1da/0x260
+ Sep 11 22:34:59 myhostname kernel: ? asm_exc_invalid_op+0x1a/0x20
+ Sep 11 22:34:59 myhostname kernel: ? btrfs_insert_delayed_dir_index+0x1da/0x260
+ Sep 11 22:34:59 myhostname kernel: ? btrfs_insert_delayed_dir_index+0x1da/0x260
+ Sep 11 22:34:59 myhostname kernel: btrfs_insert_dir_item+0x200/0x280
+ Sep 11 22:34:59 myhostname kernel: btrfs_add_link+0xab/0x4f0
+ Sep 11 22:34:59 myhostname kernel: ? ktime_get_real_ts64+0x47/0xe0
+ Sep 11 22:34:59 myhostname kernel: btrfs_create_new_inode+0x7cd/0xa80
+ Sep 11 22:34:59 myhostname kernel: btrfs_symlink+0x190/0x4d0
+ Sep 11 22:34:59 myhostname kernel: ? schedule+0x5e/0xd0
+ Sep 11 22:34:59 myhostname kernel: ? __d_lookup+0x7e/0xc0
+ Sep 11 22:34:59 myhostname kernel: vfs_symlink+0x148/0x1e0
+ Sep 11 22:34:59 myhostname kernel: do_symlinkat+0x130/0x140
+ Sep 11 22:34:59 myhostname kernel: __x64_sys_symlinkat+0x3d/0x50
+ Sep 11 22:34:59 myhostname kernel: do_syscall_64+0x5d/0x90
+ Sep 11 22:34:59 myhostname kernel: ? syscall_exit_to_user_mode+0x2b/0x40
+ Sep 11 22:34:59 myhostname kernel: ? do_syscall_64+0x6c/0x90
+ Sep 11 22:34:59 myhostname kernel: entry_SYSCALL_64_after_hwframe+0x72/0xdc
+
+The race leading to the problem happens like this:
+
+1) Directory inode X is loaded into memory, its ->index_cnt field is
+ initialized to (u64)-1 (at btrfs_alloc_inode());
+
+2) Task A is adding a new file to directory X, holding its vfs inode lock,
+ and calls btrfs_set_inode_index() to get an index number for the entry.
+
+ Because the inode's index_cnt field is set to (u64)-1 it calls
+ btrfs_inode_delayed_dir_index_count() which fails because no dir index
+ entries were added yet to the delayed inode and then it calls
+ btrfs_set_inode_index_count(). This functions finds the last dir index
+ key and then sets index_cnt to that index value + 1. It found that the
+ last index key has an offset of 100. However before it assigns a value
+ of 101 to index_cnt...
+
+3) Task B calls opendir(3), ending up at btrfs_opendir(), where the vfs
+ lock for inode X is not taken, so it calls btrfs_get_dir_last_index()
+ and sees index_cnt still with a value of (u64)-1. Because of that it
+ calls btrfs_inode_delayed_dir_index_count() which fails since no dir
+ index entries were added to the delayed inode yet, and then it also
+ calls btrfs_set_inode_index_count(). This also finds that the last
+ index key has an offset of 100, and before it assigns the value 101
+ to the index_cnt field of inode X...
+
+4) Task A assigns a value of 101 to index_cnt. And then the code flow
+ goes to btrfs_set_inode_index() where it increments index_cnt from
+ 101 to 102. Task A then creates a delayed dir index entry with a
+ sequence number of 101 and adds it to the delayed inode;
+
+5) Task B assigns 101 to the index_cnt field of inode X;
+
+6) At some later point when someone tries to add a new entry to the
+ directory, btrfs_set_inode_index() will return 101 again and shortly
+ after an attempt to add another delayed dir index key with index
+ number 101 will fail with -EEXIST resulting in a transaction abort.
+
+Fix this by locking the inode at btrfs_get_dir_last_index(), which is only
+only used when opening a directory or attempting to lseek on it.
+
+Reported-by: ken <ken@bllue.org>
+Link: https://lore.kernel.org/linux-btrfs/CAE6xmH+Lp=Q=E61bU+v9eWX8gYfLvu6jLYxjxjFpo3zHVPR0EQ@mail.gmail.com/
+Reported-by: syzbot+d13490c82ad5353c779d@syzkaller.appspotmail.com
+Link: https://lore.kernel.org/linux-btrfs/00000000000036e1290603e097e0@google.com/
+Fixes: 9b378f6ad48c ("btrfs: fix infinite directory reads")
+Signed-off-by: Filipe Manana <fdmanana@suse.com>
+Cherry-picked-for: https://bugs.archlinux.org/task/79673
+---
+ fs/btrfs/inode.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
+index a50cbcafca03..0d4196cede7d 100644
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -5924,21 +5924,24 @@ static int btrfs_set_inode_index_count(struct btrfs_inode *inode)
+
+ static int btrfs_get_dir_last_index(struct btrfs_inode *dir, u64 *index)
+ {
+- if (dir->index_cnt == (u64)-1) {
+- int ret;
++ int ret = 0;
+
++ btrfs_inode_lock(dir, 0);
++ if (dir->index_cnt == (u64)-1) {
+ ret = btrfs_inode_delayed_dir_index_count(dir);
+ if (ret) {
+ ret = btrfs_set_inode_index_count(dir);
+ if (ret)
+- return ret;
++ goto out;
+ }
+ }
+
+ /* index_cnt is the index number of next new entry, so decrement it. */
+ *index = dir->index_cnt - 1;
++out:
++ btrfs_inode_unlock(dir, 0);
+
+- return 0;
++ return ret;
+ }
+
+ /*
+--
+2.42.0
+
diff --git a/PKGBUILD b/PKGBUILD
index 78d0e419d0b9..fefc6ef7e588 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -71,7 +71,7 @@ _subarch=
### IMPORTANT: Do no edit below this line unless you know what you're doing
pkgbase=linux-ck
-pkgver=6.5.2
+pkgver=6.5.3
pkgrel=1
arch=(x86_64)
url="https://wiki.archlinux.org/index.php/Linux-ck"
@@ -104,24 +104,30 @@ source=(
"ck-hrtimer-$_commit.tar.gz::https://github.com/graysky2/linux-patches/archive/$_commit.tar.gz"
0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
- 0003-tpm-Enable-hwrng-only-for-Pluton-on-AMD-CPUs.patch
- 0004-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
- 0005-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
+0003-sphinx-kfigure.py-Convert-outdir-to-str-before-using.patch
+0004-ASoC-Intel-soc-acpi-fix-Dell-SKU-0B34.patch
+0005-btrfs-wait-on-uncached-block-groups-on-every-allocat.patch
+0006-btrfs-set-last-dir-index-to-the-current-last-index-w.patch
+0007-btrfs-refresh-dir-last-index-during-a-rewinddir-3-ca.patch
+0008-btrfs-fix-race-between-reading-a-directory-and-addin.patch
)
validpgpkeys=(
ABAF11C65A2970B130ABE3C479BE3E4300411886 # Linus Torvalds
647F28654894E3BD457199BE38DBBDC86092693E # Greg Kroah-Hartman
)
-sha256sums=('2027e14057d568ad3ddc100dadf4c8853a49b031270478a61d88f6011572650f'
+sha256sums=('4cac13f7b17bd8dcf9032ad68f9123ab5313d698c9f59416043165150763eb4f'
'SKIP'
- 'b36c2945633d49b5f85600b58989a58f5ac61e31ca2c02f2046ce15b1462ea4b'
+ '46451dbc3305d4c2e726a2f1943bddf697c5bb6815d93e5baed80bca82e53fdc'
'f1d586e111932890ad5e0df15d092fb9b3f87bae4ea17812aae9b0ec98fe2db0'
'a86a59d089ddd4f31565ff6a27ba74f4697ffa0ab0f57dc839e1da6ab83d77a4'
- '806801da9c5c251a9087a562bb1c203324c484cab60080f62452212e3e02eb77'
- '8c0d18bf189b0dcbe319a850bfa21dba8baab091251ec01ef52019478bc3a82a'
- '92292c9743f496c064c33046bad21670732762e6261227b8ceecb8be874723b8'
- 'cd70f794589c5481ec542d508fd23ca35fe42df5bfdbe3454a8443fae191e5eb'
- 'f9f00f18529c7f15cc476dbe0344636a3e76537476fffe9c37fea16a157e17ce')
+ 'ef5f18993d8705818934cb6c0ec0bc26371360698e008d536ec1fa7499d8a919'
+ 'c8f800f080fc93c805fd4c3888f1249b2700fe37f5de93984f5f0caaac97b36f'
+ '781fd295ca439c2632f1a453239bb58b1cb30df3b84154ce70109678a1b0df53'
+ '302df4d170c81f722879bc624f4d4aee3da1a65c59b2ed873a0e91f0feb2fc5a'
+ '2abf9a149f215bcdb2e76344e67a2f1c5c46e9962953dd073ed7090e85d988c5'
+ 'fd1c1c1dfbc741a03e2e91cb97cc0d4403a0722451dfae06d26faf66c0d3b6e8'
+ '053d903bfe7979be075d3ece4a4f03034af7a9e994c78c381648a13aa0d07b00'
+ '4862ae2813434b949c500a6fef982a9132623e88dc6634ce802b388d166a61fc')
_make() {
test -s version
make KERNELRELEASE="$(<version)" "$@"
diff --git a/config b/config
index 29d59830731d..92b4d865e278 100644
--- a/config
+++ b/config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 6.5.1-arch1 Kernel Configuration
+# Linux/x86 6.5.3-arch1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.1 20230801"
CONFIG_CC_IS_GCC=y
@@ -6140,6 +6140,7 @@ CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_BUDGET=m
CONFIG_DVB_BUDGET_CI=m
CONFIG_DVB_BUDGET_AV=m
+CONFIG_IPU_BRIDGE=m
CONFIG_VIDEO_IPU3_CIO2=m
CONFIG_CIO2_BRIDGE=y
CONFIG_RADIO_ADAPTERS=m
@@ -6324,10 +6325,7 @@ CONFIG_MEDIA_ATTACH=y
# IR I2C driver auto-selected by 'Autoselect ancillary drivers'
#
CONFIG_VIDEO_IR_I2C=m
-
-#
-# Camera sensor devices
-#
+CONFIG_VIDEO_CAMERA_SENSOR=y
CONFIG_VIDEO_APTINA_PLL=m
CONFIG_VIDEO_CCS_PLL=m
CONFIG_VIDEO_AR0521=m
@@ -6390,7 +6388,6 @@ CONFIG_VIDEO_S5K5BAF=m
CONFIG_VIDEO_S5K6A3=m
CONFIG_VIDEO_CCS=m
CONFIG_VIDEO_ET8EK8=m
-# end of Camera sensor devices
#
# Lens drivers
@@ -10445,7 +10442,7 @@ CONFIG_PNFS_FILE_LAYOUT=m
CONFIG_PNFS_BLOCK=m
CONFIG_PNFS_FLEXFILE_LAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
-CONFIG_NFS_V4_1_MIGRATION=y
+# CONFIG_NFS_V4_1_MIGRATION is not set
CONFIG_NFS_V4_SECURITY_LABEL=y
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set