]> git.proxmox.com Git - pve-kernel.git/commitdiff
update submodule and patches for 24.04 Noble based kernel
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 2 Apr 2024 16:14:21 +0000 (18:14 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 2 Apr 2024 16:14:21 +0000 (18:14 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
patches/kernel/0012-drm-amd-Fix-UBSAN-array-index-out-of-bounds-for-Powe.patch [deleted file]
patches/kernel/0013-ext4-fallback-to-complex-scan-if-aligned-scan-doesn-.patch [deleted file]
submodules/ubuntu-kernel

index ee532b442ae6f34f356c410d0dc13e1cba96064f..a099423b99687e6c8bef273db5963161fef5bc40 100644 (file)
@@ -55,10 +55,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  2 files changed, 111 insertions(+)
 
 diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index 90ddf08e8409..eedfabda597f 100644
+index a413dd5cf488..89d1b030e1d5 100644
 --- a/Documentation/admin-guide/kernel-parameters.txt
 +++ b/Documentation/admin-guide/kernel-parameters.txt
-@@ -4285,6 +4285,15 @@
+@@ -4401,6 +4401,15 @@
                                Also, it enforces the PCI Local Bus spec
                                rule that those bits should be 0 in system reset
                                events (useful for kexec/kdump cases).
@@ -75,7 +75,7 @@ index 90ddf08e8409..eedfabda597f 100644
                                Safety option to keep boot IRQs enabled. This
                                should never be necessary.
 diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index c7a5718e5729..901f55b9ac64 100644
+index 17e43aa28774..1f4202c091bb 100644
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
 @@ -287,6 +287,106 @@ static int __init pci_apply_final_quirks(void)
@@ -185,7 +185,7 @@ index c7a5718e5729..901f55b9ac64 100644
  /*
   * Decoding should be disabled for a PCI device during BAR sizing to avoid
   * conflict. But doing so may cause problems on host bridge and perhaps other
-@@ -5091,6 +5191,8 @@ static const struct pci_dev_acs_enabled {
+@@ -5100,6 +5200,8 @@ static const struct pci_dev_acs_enabled {
        { PCI_VENDOR_ID_CAVIUM, 0xA060, pci_quirk_mf_endpoint_acs },
        /* APM X-Gene */
        { PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
index 4bc4bd3182dc0d99965bb255fdb5895d52637fed..2a69480755261d257bc5e414c4c94f0e7a8d38ad 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index 5bbb5612b207..691ce10e7647 100644
+index 0f50960b0e3a..37f840f57f32 100644
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
 @@ -82,7 +82,7 @@ module_param(halt_poll_ns, uint, 0644);
index af2e2b345de30fd513eef49ebacec246084dde09..50a1bbef3dbb2e57cdf79d7ba6b987161ece76db 100644 (file)
@@ -14,10 +14,10 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/net/core/dev.c b/net/core/dev.c
-index 4811937f572d..8850f9be9044 100644
+index 76e6438f4858..3686fc45c557 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -10355,7 +10355,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
+@@ -10461,7 +10461,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
                if (time_after(jiffies, warning_time +
                               READ_ONCE(netdev_unregister_timeout_secs) * HZ)) {
                        list_for_each_entry(dev, list, todo_list) {
index f420c8f31f0ae75b5d02513d55d08af00341a08b..2b8111449811c121c0e5c007443c5a83d48f5ea1 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h
-index da51a83b2829..9d9e7822eddf 100644
+index 89a6888f2f9e..66e0b60dcabb 100644
 --- a/include/linux/fortify-string.h
 +++ b/include/linux/fortify-string.h
 @@ -18,7 +18,7 @@ void __write_overflow_field(size_t avail, size_t wanted) __compiletime_warning("
index f1d9ca895171b9d06093435b77ad38cdaa3ce2eb..f0e1265fa53df50605377991a3aba9dd553edbe0 100644 (file)
@@ -78,10 +78,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  3 files changed, 21 insertions(+)
 
 diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
-index 7bdc66abfc92..e2b67975869c 100644
+index adba49afb5fe..e6e4408c8d51 100644
 --- a/arch/x86/kvm/cpuid.c
 +++ b/arch/x86/kvm/cpuid.c
-@@ -249,6 +249,12 @@ static u64 cpuid_get_supported_xcr0(struct kvm_cpuid_entry2 *entries, int nent)
+@@ -262,6 +262,12 @@ static u64 cpuid_get_supported_xcr0(struct kvm_cpuid_entry2 *entries, int nent)
        return (best->eax | ((u64)best->edx << 32)) & kvm_caps.supported_xcr0;
  }
  
@@ -95,7 +95,7 @@ index 7bdc66abfc92..e2b67975869c 100644
                                       int nent)
  {
 diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
-index b1658c0de847..12a02851ff57 100644
+index 856e3037e74f..0ac5a84adcd5 100644
 --- a/arch/x86/kvm/cpuid.h
 +++ b/arch/x86/kvm/cpuid.h
 @@ -32,6 +32,8 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
@@ -108,10 +108,10 @@ index b1658c0de847..12a02851ff57 100644
  
  int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index a5c8a01f7e7e..632d2d18041a 100644
+index ffe580169c93..f0870144a6cf 100644
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
-@@ -5426,6 +5426,19 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
+@@ -5580,6 +5580,19 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
        if (fpstate_is_confidential(&vcpu->arch.guest_fpu))
                return 0;
  
index e3cb595636ead97d677293aa81d167cd0f386ad5..e73292f4037fa1c8d1247576252655b606a309bc 100644 (file)
@@ -11,10 +11,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index 8faccfdfe500..2b9ef40799a5 100644
+index a788062820df..4020c5336369 100644
 --- a/drivers/iommu/intel/iommu.c
 +++ b/drivers/iommu/intel/iommu.c
-@@ -298,6 +298,7 @@ static int dmar_map_gfx = 1;
+@@ -159,6 +159,7 @@ static int dmar_map_gfx = 1;
  static int dmar_map_ipu = 1;
  static int intel_iommu_superpage = 1;
  static int iommu_identity_mapping;
@@ -22,7 +22,7 @@ index 8faccfdfe500..2b9ef40799a5 100644
  static int iommu_skip_te_disable;
  
  #define IDENTMAP_GFX          2
-@@ -359,6 +360,9 @@ static int __init intel_iommu_setup(char *str)
+@@ -221,6 +222,9 @@ static int __init intel_iommu_setup(char *str)
                } else if (!strncmp(str, "tboot_noforce", 13)) {
                        pr_info("Intel-IOMMU: not forcing on after tboot. This could expose security risk for tboot\n");
                        intel_iommu_tboot_noforce = 1;
@@ -32,7 +32,7 @@ index 8faccfdfe500..2b9ef40799a5 100644
                } else {
                        pr_notice("Unknown option - '%s'\n", str);
                }
-@@ -2506,7 +2510,7 @@ static bool device_rmrr_is_relaxable(struct device *dev)
+@@ -2395,7 +2399,7 @@ static bool device_rmrr_is_relaxable(struct device *dev)
                return false;
  
        pdev = to_pci_dev(dev);
index bdfc0f0e16fa47faab0403936e7de94f858da269..f10b59f637ddd5e496f7dee2dd07d6a97e58b460 100644 (file)
@@ -24,14 +24,14 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+)
 
 diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
-index 99832814341c..e8bb2bfd1ba1 100644
+index e90b429c84f1..5c7faf7c447f 100644
 --- a/arch/x86/kvm/svm/svm.c
 +++ b/arch/x86/kvm/svm/svm.c
-@@ -4985,6 +4985,7 @@ static __init void svm_set_cpu_caps(void)
+@@ -5085,6 +5085,7 @@ static __init void svm_set_cpu_caps(void)
        if (nested) {
                kvm_cpu_cap_set(X86_FEATURE_SVM);
                kvm_cpu_cap_set(X86_FEATURE_VMCBCLEAN);
 +              kvm_cpu_cap_set(X86_FEATURE_FLUSHBYASID);
  
-               if (nrips)
-                       kvm_cpu_cap_set(X86_FEATURE_NRIPS);
+               /*
+                * KVM currently flushes TLBs on *every* nested SVM transition,
index fec2af221c6acedc0fd528e25b5018634297121f..5df98ce6c9fbf4a4b519aad3697745150927b61a 100644 (file)
@@ -30,7 +30,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/mm/memfd.c b/mm/memfd.c
-index 2dba2cb6f0d0..1c077e98e116 100644
+index d3a1ba4208c9..6a9de5d9105e 100644
 --- a/mm/memfd.c
 +++ b/mm/memfd.c
 @@ -282,7 +282,7 @@ static int check_sysctl_memfd_noexec(unsigned int *flags)
diff --git a/patches/kernel/0012-drm-amd-Fix-UBSAN-array-index-out-of-bounds-for-Powe.patch b/patches/kernel/0012-drm-amd-Fix-UBSAN-array-index-out-of-bounds-for-Powe.patch
deleted file mode 100644 (file)
index 6f92403..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Alex Deucher <alexander.deucher@amd.com>
-Date: Fri, 27 Oct 2023 16:40:47 -0400
-Subject: [PATCH] drm/amd: Fix UBSAN array-index-out-of-bounds for Powerplay
- headers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-For pptable structs that use flexible array sizes, use flexible arrays.
-
-Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2039926
-Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
-Acked-by: Christian König <christian.koenig@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-(cherry-picked from commit 49afe91370b86566857a3c2c39612cf098110885)
-Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
----
- .../drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h |  4 ++--
- .../amd/pm/powerplay/hwmgr/vega10_pptable.h   | 24 +++++++++----------
- 2 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
-index e0e40b054c08..5ec564dbf339 100644
---- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
-+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
-@@ -367,7 +367,7 @@ typedef struct _ATOM_Tonga_VCE_State_Record {
- typedef struct _ATOM_Tonga_VCE_State_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;
--      ATOM_Tonga_VCE_State_Record entries[1];
-+      ATOM_Tonga_VCE_State_Record entries[];
- } ATOM_Tonga_VCE_State_Table;
- typedef struct _ATOM_Tonga_PowerTune_Table {
-@@ -482,7 +482,7 @@ typedef struct _ATOM_Tonga_Hard_Limit_Record {
- typedef struct _ATOM_Tonga_Hard_Limit_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;
--      ATOM_Tonga_Hard_Limit_Record entries[1];
-+      ATOM_Tonga_Hard_Limit_Record entries[];
- } ATOM_Tonga_Hard_Limit_Table;
- typedef struct _ATOM_Tonga_GPIO_Table {
-diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_pptable.h b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_pptable.h
-index 9c479bd9a786..a372abcd01be 100644
---- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_pptable.h
-+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_pptable.h
-@@ -129,7 +129,7 @@ typedef struct _ATOM_Vega10_State {
- typedef struct _ATOM_Vega10_State_Array {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;                                         /* Number of entries. */
--      ATOM_Vega10_State states[1];                             /* Dynamically allocate entries. */
-+      ATOM_Vega10_State states[];                             /* Dynamically allocate entries. */
- } ATOM_Vega10_State_Array;
- typedef struct _ATOM_Vega10_CLK_Dependency_Record {
-@@ -169,37 +169,37 @@ typedef struct _ATOM_Vega10_GFXCLK_Dependency_Table {
- typedef struct _ATOM_Vega10_MCLK_Dependency_Table {
-     UCHAR ucRevId;
-     UCHAR ucNumEntries;                                         /* Number of entries. */
--    ATOM_Vega10_MCLK_Dependency_Record entries[1];            /* Dynamically allocate entries. */
-+    ATOM_Vega10_MCLK_Dependency_Record entries[];            /* Dynamically allocate entries. */
- } ATOM_Vega10_MCLK_Dependency_Table;
- typedef struct _ATOM_Vega10_SOCCLK_Dependency_Table {
-     UCHAR ucRevId;
-     UCHAR ucNumEntries;                                         /* Number of entries. */
--    ATOM_Vega10_CLK_Dependency_Record entries[1];            /* Dynamically allocate entries. */
-+    ATOM_Vega10_CLK_Dependency_Record entries[];            /* Dynamically allocate entries. */
- } ATOM_Vega10_SOCCLK_Dependency_Table;
- typedef struct _ATOM_Vega10_DCEFCLK_Dependency_Table {
-     UCHAR ucRevId;
-     UCHAR ucNumEntries;                                         /* Number of entries. */
--    ATOM_Vega10_CLK_Dependency_Record entries[1];            /* Dynamically allocate entries. */
-+    ATOM_Vega10_CLK_Dependency_Record entries[];            /* Dynamically allocate entries. */
- } ATOM_Vega10_DCEFCLK_Dependency_Table;
- typedef struct _ATOM_Vega10_PIXCLK_Dependency_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;                                         /* Number of entries. */
--      ATOM_Vega10_CLK_Dependency_Record entries[1];            /* Dynamically allocate entries. */
-+      ATOM_Vega10_CLK_Dependency_Record entries[];            /* Dynamically allocate entries. */
- } ATOM_Vega10_PIXCLK_Dependency_Table;
- typedef struct _ATOM_Vega10_DISPCLK_Dependency_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;                                         /* Number of entries.*/
--      ATOM_Vega10_CLK_Dependency_Record entries[1];            /* Dynamically allocate entries. */
-+      ATOM_Vega10_CLK_Dependency_Record entries[];            /* Dynamically allocate entries. */
- } ATOM_Vega10_DISPCLK_Dependency_Table;
- typedef struct _ATOM_Vega10_PHYCLK_Dependency_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;                                         /* Number of entries. */
--      ATOM_Vega10_CLK_Dependency_Record entries[1];            /* Dynamically allocate entries. */
-+      ATOM_Vega10_CLK_Dependency_Record entries[];            /* Dynamically allocate entries. */
- } ATOM_Vega10_PHYCLK_Dependency_Table;
- typedef struct _ATOM_Vega10_MM_Dependency_Record {
-@@ -213,7 +213,7 @@ typedef struct _ATOM_Vega10_MM_Dependency_Record {
- typedef struct _ATOM_Vega10_MM_Dependency_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;                                         /* Number of entries */
--      ATOM_Vega10_MM_Dependency_Record entries[1];             /* Dynamically allocate entries */
-+      ATOM_Vega10_MM_Dependency_Record entries[];             /* Dynamically allocate entries */
- } ATOM_Vega10_MM_Dependency_Table;
- typedef struct _ATOM_Vega10_PCIE_Record {
-@@ -225,7 +225,7 @@ typedef struct _ATOM_Vega10_PCIE_Record {
- typedef struct _ATOM_Vega10_PCIE_Table {
-       UCHAR  ucRevId;
-       UCHAR  ucNumEntries;                                        /* Number of entries */
--      ATOM_Vega10_PCIE_Record entries[1];                      /* Dynamically allocate entries. */
-+      ATOM_Vega10_PCIE_Record entries[];                      /* Dynamically allocate entries. */
- } ATOM_Vega10_PCIE_Table;
- typedef struct _ATOM_Vega10_Voltage_Lookup_Record {
-@@ -235,7 +235,7 @@ typedef struct _ATOM_Vega10_Voltage_Lookup_Record {
- typedef struct _ATOM_Vega10_Voltage_Lookup_Table {
-       UCHAR ucRevId;
-       UCHAR ucNumEntries;                                          /* Number of entries */
--      ATOM_Vega10_Voltage_Lookup_Record entries[1];             /* Dynamically allocate entries */
-+      ATOM_Vega10_Voltage_Lookup_Record entries[];             /* Dynamically allocate entries */
- } ATOM_Vega10_Voltage_Lookup_Table;
- typedef struct _ATOM_Vega10_Fan_Table {
-@@ -329,7 +329,7 @@ typedef struct _ATOM_Vega10_VCE_State_Table
- {
-     UCHAR ucRevId;
-     UCHAR ucNumEntries;
--    ATOM_Vega10_VCE_State_Record entries[1];
-+    ATOM_Vega10_VCE_State_Record entries[];
- } ATOM_Vega10_VCE_State_Table;
- typedef struct _ATOM_Vega10_PowerTune_Table {
-@@ -432,7 +432,7 @@ typedef struct _ATOM_Vega10_Hard_Limit_Table
- {
-     UCHAR ucRevId;
-     UCHAR ucNumEntries;
--    ATOM_Vega10_Hard_Limit_Record entries[1];
-+    ATOM_Vega10_Hard_Limit_Record entries[];
- } ATOM_Vega10_Hard_Limit_Table;
- typedef struct _Vega10_PPTable_Generic_SubTable_Header
diff --git a/patches/kernel/0013-ext4-fallback-to-complex-scan-if-aligned-scan-doesn-.patch b/patches/kernel/0013-ext4-fallback-to-complex-scan-if-aligned-scan-doesn-.patch
deleted file mode 100644 (file)
index 81a3e3f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Ojaswin Mujoo <ojaswin@linux.ibm.com>
-Date: Fri, 15 Dec 2023 16:49:50 +0530
-Subject: [PATCH] ext4: fallback to complex scan if aligned scan doesn't work
-
-Currently in case the goal length is a multiple of stripe size we use
-ext4_mb_scan_aligned() to find the stripe size aligned physical blocks.
-In case we are not able to find any, we again go back to calling
-ext4_mb_choose_next_group() to search for a different suitable block
-group. However, since the linear search always begins from the start,
-most of the times we end up with the same BG and the cycle continues.
-
-With large fliesystems, the CPU can be stuck in this loop for hours
-which can slow down the whole system. Hence, until we figure out a
-better way to continue the search (rather than starting from beginning)
-in ext4_mb_choose_next_group(), lets just fallback to
-ext4_mb_complex_scan_group() in case aligned scan fails, as it is much
-more likely to find the needed blocks.
-
-Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
----
- fs/ext4/mballoc.c | 21 +++++++++++++--------
- 1 file changed, 13 insertions(+), 8 deletions(-)
-
-diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
-index 2690d47a9ea2..9ff8ea02f79d 100644
---- a/fs/ext4/mballoc.c
-+++ b/fs/ext4/mballoc.c
-@@ -2894,14 +2894,19 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
-                       ac->ac_groups_scanned++;
-                       if (cr == CR_POWER2_ALIGNED)
-                               ext4_mb_simple_scan_group(ac, &e4b);
--                      else if ((cr == CR_GOAL_LEN_FAST ||
--                               cr == CR_BEST_AVAIL_LEN) &&
--                               sbi->s_stripe &&
--                               !(ac->ac_g_ex.fe_len %
--                               EXT4_B2C(sbi, sbi->s_stripe)))
--                              ext4_mb_scan_aligned(ac, &e4b);
--                      else
--                              ext4_mb_complex_scan_group(ac, &e4b);
-+                      else {
-+                              bool is_stripe_aligned = sbi->s_stripe &&
-+                                      !(ac->ac_g_ex.fe_len %
-+                                        EXT4_B2C(sbi, sbi->s_stripe));
-+
-+                              if ((cr == CR_GOAL_LEN_FAST ||
-+                                   cr == CR_BEST_AVAIL_LEN) &&
-+                                  is_stripe_aligned)
-+                                      ext4_mb_scan_aligned(ac, &e4b);
-+
-+                              if (ac->ac_status == AC_STATUS_CONTINUE)
-+                                      ext4_mb_complex_scan_group(ac, &e4b);
-+                      }
-                       ext4_unlock_group(sb, group);
-                       ext4_mb_unload_buddy(&e4b);
index 262b099bd0e4cd21d7196abfeadb0fa2bc3512d6..4427c45609f6faf3b5b15e9e9246caa87894c36f 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 262b099bd0e4cd21d7196abfeadb0fa2bc3512d6
+Subproject commit 4427c45609f6faf3b5b15e9e9246caa87894c36f