kernel-7.1.4-100
* Sat Jul 18 2026 Justin M. Forbes <jforbes@fedoraproject.org> [7.1.4-0] - KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state (Sean Christopherson) - drm/amd: Create a device link between APU display and XHCI devices (Mario Limonciello) - Linux v7.1.4 Resolves: Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
parent
3e493ef342
commit
20e3901ace
6 changed files with 186 additions and 92 deletions
|
|
@ -12,7 +12,7 @@ RHEL_MINOR = 99
|
|||
#
|
||||
# Use this spot to avoid future merge conflicts.
|
||||
# Do not trim this comment.
|
||||
RHEL_RELEASE = 1
|
||||
RHEL_RELEASE = 0
|
||||
|
||||
#
|
||||
# RHEL_REBASE_NUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
https://gitlab.com/cki-project/kernel-ark/-/commit/7b8efc5af560ec18096b99f3d8b1b6b6ef101ee5
|
||||
7b8efc5af560ec18096b99f3d8b1b6b6ef101ee5 KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/e2e035b8422fed989b46f9679c630cdf1b0bcaae
|
||||
e2e035b8422fed989b46f9679c630cdf1b0bcaae drm/amd: Create a device link between APU display and XHCI devices
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5585ecd6249f39a050e0abf77338d180faaa9faf
|
||||
5585ecd6249f39a050e0abf77338d180faaa9faf xfs: resample the data fork mapping after cycling ILOCK
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
* Sat Jul 18 2026 Justin M. Forbes <jforbes@fedoraproject.org> [7.1.4-0]
|
||||
- KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state (Sean Christopherson)
|
||||
- drm/amd: Create a device link between APU display and XHCI devices (Mario Limonciello)
|
||||
- Linux v7.1.4
|
||||
Resolves:
|
||||
|
||||
* Tue Jul 14 2026 Justin M. Forbes <jforbes@fedoraproject.org> [7.1.3-1]
|
||||
- xfs: resample the data fork mapping after cycling ILOCK (Darrick J. Wong)
|
||||
- redhat: configs: fedora: Enable Sony IMX471 image sensor (Kate Hsuan)
|
||||
|
|
|
|||
17
kernel.spec
17
kernel.spec
|
|
@ -187,18 +187,18 @@ Summary: The Linux kernel
|
|||
# the --with-release option overrides this setting.)
|
||||
%define debugbuildsenabled 1
|
||||
# define buildid .local
|
||||
%define specrpmversion 7.1.3
|
||||
%define specversion 7.1.3
|
||||
%define specrpmversion 7.1.4
|
||||
%define specversion 7.1.4
|
||||
%define patchversion 7.1
|
||||
%define pkgrelease 101
|
||||
%define pkgrelease 100
|
||||
%define kversion 7
|
||||
%define tarfile_release 7.1.3
|
||||
%define tarfile_release 7.1.4
|
||||
# This is needed to do merge window version magic
|
||||
%define patchlevel 1
|
||||
# This allows pkg_release to have configurable %%{?dist} tag
|
||||
%define specrelease 101%{?buildid}%{?dist}
|
||||
%define specrelease 100%{?buildid}%{?dist}
|
||||
# This defines the kabi tarball version
|
||||
%define kabiversion 7.1.3
|
||||
%define kabiversion 7.1.4
|
||||
|
||||
# If this variable is set to 1, a bpf selftests build failure will cause a
|
||||
# fatal kernel package build error
|
||||
|
|
@ -4857,6 +4857,11 @@ fi\
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Sat Jul 18 2026 Justin M. Forbes <jforbes@fedoraproject.org> [7.1.4-0]
|
||||
- KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state (Sean Christopherson)
|
||||
- drm/amd: Create a device link between APU display and XHCI devices (Mario Limonciello)
|
||||
- Linux v7.1.4
|
||||
|
||||
* Tue Jul 14 2026 Justin M. Forbes <jforbes@fedoraproject.org> [7.1.3-1]
|
||||
- xfs: resample the data fork mapping after cycling ILOCK (Darrick J. Wong)
|
||||
- redhat: configs: fedora: Enable Sony IMX471 image sensor (Kate Hsuan)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
arch/s390/kernel/ipl.c | 5 +
|
||||
arch/s390/kernel/setup.c | 4 +
|
||||
arch/x86/kernel/setup.c | 22 +-
|
||||
arch/x86/kvm/vmx/nested.c | 2 +
|
||||
crypto/akcipher.c | 3 +-
|
||||
crypto/dh.c | 25 +
|
||||
crypto/drbg.c | 18 +-
|
||||
|
|
@ -26,6 +27,9 @@
|
|||
drivers/firmware/efi/libstub/fdt.c | 5 +
|
||||
drivers/firmware/efi/libstub/secureboot.c | 14 +-
|
||||
drivers/firmware/efi/secureboot.c | 38 +
|
||||
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 12 +
|
||||
drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | 11 +
|
||||
.../gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c | 45 +
|
||||
drivers/gpu/drm/i915/display/intel_ddi.c | 11 +-
|
||||
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
|
||||
drivers/iommu/iommu.c | 22 +
|
||||
|
|
@ -36,7 +40,6 @@
|
|||
drivers/pci/quirks.c | 24 +
|
||||
drivers/platform/x86/intel/int3472/discrete.c | 18 +
|
||||
drivers/usb/core/hub.c | 7 +
|
||||
fs/xfs/xfs_reflink.c | 36 +
|
||||
include/linux/crypto.h | 3 +
|
||||
include/linux/efi.h | 22 +-
|
||||
include/linux/lsm_hook_defs.h | 1 +
|
||||
|
|
@ -53,13 +56,13 @@
|
|||
tools/testing/selftests/bpf/DENYLIST.rhel | 76 ++
|
||||
tools/testing/selftests/bpf/Makefile | 2 +-
|
||||
tools/testing/selftests/bpf/prog_tests/ksyms_btf.c | 31 -
|
||||
55 files changed, 2000 insertions(+), 142 deletions(-)
|
||||
58 files changed, 2034 insertions(+), 142 deletions(-)
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index c8d4b913f26c..d0ad37bae20d 100644
|
||||
index f74da642290a..06c8bb2075e6 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -24965,6 +24965,12 @@ T: git git://linuxtv.org/media.git
|
||||
@@ -24964,6 +24964,12 @@ T: git git://linuxtv.org/media.git
|
||||
F: Documentation/devicetree/bindings/media/i2c/sony,imx415.yaml
|
||||
F: drivers/media/i2c/imx415.c
|
||||
|
||||
|
|
@ -73,7 +76,7 @@ index c8d4b913f26c..d0ad37bae20d 100644
|
|||
M: Maxim Levitsky <maximlevitsky@gmail.com>
|
||||
M: Alex Dubov <oakad@yahoo.com>
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 9e405218162b..44f47144ebf6 100644
|
||||
index b3496dd21312..cb88d3636564 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -356,6 +356,17 @@ ifneq ($(filter install,$(MAKECMDGOALS)),)
|
||||
|
|
@ -94,7 +97,7 @@ index 9e405218162b..44f47144ebf6 100644
|
|||
ifdef mixed-build
|
||||
# ===========================================================================
|
||||
# We're called with mixed targets (*config and build targets).
|
||||
@@ -1415,6 +1426,8 @@ uapi-asm-generic:
|
||||
@@ -1418,6 +1429,8 @@ uapi-asm-generic:
|
||||
# Generate some files
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -103,7 +106,7 @@ index 9e405218162b..44f47144ebf6 100644
|
|||
# KERNELRELEASE can change from a few different places, meaning version.h
|
||||
# needs to be updated, so this check is forced on all builds
|
||||
|
||||
@@ -2080,6 +2093,23 @@ endif
|
||||
@@ -2083,6 +2096,23 @@ endif
|
||||
|
||||
ifdef CONFIG_MODULES
|
||||
|
||||
|
|
@ -302,6 +305,19 @@ index 46882ce79c3a..9c73814c31e0 100644
|
|||
|
||||
reserve_initrd();
|
||||
|
||||
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
|
||||
index 3fe88f29be7a..f6fd3775ddac 100644
|
||||
--- a/arch/x86/kvm/vmx/nested.c
|
||||
+++ b/arch/x86/kvm/vmx/nested.c
|
||||
@@ -3755,6 +3755,8 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
|
||||
if (!from_vmentry)
|
||||
return NVMX_VMENTRY_VMEXIT;
|
||||
|
||||
+ nested_put_vmcs12_pages(vcpu);
|
||||
+
|
||||
load_vmcs12_host_state(vcpu, vmcs12);
|
||||
vmcs12->vm_exit_reason = exit_reason.full;
|
||||
if (enable_shadow_vmcs || nested_vmx_is_evmptr12_valid(vmx))
|
||||
diff --git a/crypto/akcipher.c b/crypto/akcipher.c
|
||||
index dfe87b3ce183..cd1302ca3b36 100644
|
||||
--- a/crypto/akcipher.c
|
||||
|
|
@ -357,10 +373,10 @@ index 7ad4768716c8..01ccc24db074 100644
|
|||
}
|
||||
|
||||
diff --git a/crypto/drbg.c b/crypto/drbg.c
|
||||
index 9204e6edb426..5c10baf70071 100644
|
||||
index e3065fb9541b..ff5393e6797e 100644
|
||||
--- a/crypto/drbg.c
|
||||
+++ b/crypto/drbg.c
|
||||
@@ -1270,13 +1270,14 @@ static int drbg_generate(struct drbg_state *drbg,
|
||||
@@ -1271,13 +1271,14 @@ static int drbg_generate(struct drbg_state *drbg,
|
||||
* Wrapper around drbg_generate which can pull arbitrary long strings
|
||||
* from the DRBG without hitting the maximum request limitation.
|
||||
*
|
||||
|
|
@ -377,7 +393,7 @@ index 9204e6edb426..5c10baf70071 100644
|
|||
{
|
||||
unsigned int len = 0;
|
||||
unsigned int slice = 0;
|
||||
@@ -1286,6 +1287,8 @@ static int drbg_generate_long(struct drbg_state *drbg,
|
||||
@@ -1287,6 +1288,8 @@ static int drbg_generate_long(struct drbg_state *drbg,
|
||||
slice = ((buflen - len) / drbg_max_request_bytes(drbg));
|
||||
chunk = slice ? drbg_max_request_bytes(drbg) : (buflen - len);
|
||||
mutex_lock(&drbg->drbg_mutex);
|
||||
|
|
@ -386,7 +402,7 @@ index 9204e6edb426..5c10baf70071 100644
|
|||
err = drbg_generate(drbg, buf + len, chunk, addtl);
|
||||
mutex_unlock(&drbg->drbg_mutex);
|
||||
if (0 > err)
|
||||
@@ -1687,6 +1690,7 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
|
||||
@@ -1688,6 +1691,7 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
|
||||
struct drbg_state *drbg = crypto_rng_ctx(tfm);
|
||||
struct drbg_string *addtl = NULL;
|
||||
struct drbg_string string;
|
||||
|
|
@ -394,7 +410,7 @@ index 9204e6edb426..5c10baf70071 100644
|
|||
|
||||
if (slen) {
|
||||
/* linked list variable is now local to allow modification */
|
||||
@@ -1694,7 +1698,15 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
|
||||
@@ -1695,7 +1699,15 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
|
||||
addtl = &string;
|
||||
}
|
||||
|
||||
|
|
@ -1356,6 +1372,135 @@ index 000000000000..de0a3714a5d4
|
|||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
index 8faf7de7aaa9..f65bb1dc44ac 100644
|
||||
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
@@ -1365,6 +1365,14 @@ static void smu_feature_cap_init(struct smu_context *smu)
|
||||
bitmap_zero(fea_cap->cap_map, SMU_FEATURE_CAP_ID__COUNT);
|
||||
}
|
||||
|
||||
+static int smu_set_power_dep(struct smu_context *smu, bool enable)
|
||||
+{
|
||||
+ if (!smu->ppt_funcs->set_power_dep)
|
||||
+ return 0;
|
||||
+
|
||||
+ return smu->ppt_funcs->set_power_dep(smu, enable);
|
||||
+}
|
||||
+
|
||||
static int smu_sw_init(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
@@ -1426,6 +1434,8 @@ static int smu_sw_init(struct amdgpu_ip_block *ip_block)
|
||||
if (!smu->ppt_funcs->get_fan_control_mode)
|
||||
smu->adev->pm.no_fan = true;
|
||||
|
||||
+ smu_set_power_dep(smu, true);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1448,6 +1458,8 @@ static int smu_sw_fini(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
smu_fini_microcode(smu);
|
||||
|
||||
+ smu_set_power_dep(smu, false);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
|
||||
index d76e0b005308..e14bcc3f937c 100644
|
||||
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
|
||||
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
|
||||
@@ -749,6 +749,9 @@ struct smu_context {
|
||||
bool pm_enabled;
|
||||
bool is_apu;
|
||||
|
||||
+ /* Power dependency link from an integrated xHCI controller to the GPU */
|
||||
+ struct device_link *usb_power_link;
|
||||
+
|
||||
uint32_t smc_driver_if_version;
|
||||
uint32_t smc_fw_if_version;
|
||||
uint32_t smc_fw_version;
|
||||
@@ -1654,6 +1657,14 @@ struct pptable_funcs {
|
||||
* Return: ras_smu_drv *
|
||||
*/
|
||||
int (*get_ras_smu_drv)(struct smu_context *smu, const struct ras_smu_drv **ras_smu_drv);
|
||||
+
|
||||
+ /**
|
||||
+ * @set_power_dep: Create or destroy a power dependency link
|
||||
+ * from an integrated xHCI controller to the GPU so that the GPU is
|
||||
+ * resumed before the USB controller during PM resume. @enable is true
|
||||
+ * to create the link and false to tear it down.
|
||||
+ */
|
||||
+ int (*set_power_dep)(struct smu_context *smu, bool enable);
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
|
||||
index 75719c47a41e..3d73f2050bbe 100644
|
||||
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
|
||||
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
|
||||
@@ -1701,6 +1701,50 @@ static int smu_v14_0_0_restore_user_od_settings(struct smu_context *smu)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Link any xHCI controller sharing the GPU's PCIe root port as a consumer
|
||||
+ * of the GPU so the GPU resumes first, avoiding an xHCI resume race.
|
||||
+ */
|
||||
+static int smu_v14_0_0_set_power_dep(struct smu_context *smu, bool enable)
|
||||
+{
|
||||
+ struct amdgpu_device *adev = smu->adev;
|
||||
+ struct pci_dev *gpu_pdev = adev->pdev;
|
||||
+ struct pci_dev *root_port, *usb_pdev = NULL;
|
||||
+ struct device_link *link;
|
||||
+
|
||||
+ if (!enable) {
|
||||
+ if (smu->usb_power_link) {
|
||||
+ device_link_del(smu->usb_power_link);
|
||||
+ smu->usb_power_link = NULL;
|
||||
+ }
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ root_port = pcie_find_root_port(gpu_pdev);
|
||||
+ while ((usb_pdev = pci_get_class(PCI_CLASS_SERIAL_USB_XHCI, usb_pdev))) {
|
||||
+ struct pci_dev *usb_root;
|
||||
+
|
||||
+ usb_root = pcie_find_root_port(usb_pdev);
|
||||
+ if (usb_root != root_port)
|
||||
+ continue;
|
||||
+
|
||||
+ /* Create device link: USB (consumer) depends on GPU (supplier) */
|
||||
+ link = device_link_add(&usb_pdev->dev, &gpu_pdev->dev,
|
||||
+ DL_FLAG_STATELESS | DL_FLAG_PM_RUNTIME);
|
||||
+ if (link) {
|
||||
+ smu->usb_power_link = link;
|
||||
+ drm_info(adev_to_drm(adev), "USB controller %s D0 power state depends on %s\n",
|
||||
+ pci_name(usb_pdev), pci_name(gpu_pdev));
|
||||
+ /* Only create one link for the first USB controller found */
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ pci_dev_put(usb_pdev);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static const struct pptable_funcs smu_v14_0_0_ppt_funcs = {
|
||||
.check_fw_status = smu_v14_0_check_fw_status,
|
||||
.check_fw_version = smu_cmn_check_fw_version,
|
||||
@@ -1734,6 +1778,7 @@ static const struct pptable_funcs smu_v14_0_0_ppt_funcs = {
|
||||
.dpm_set_umsch_mm_enable = smu_v14_0_0_set_umsch_mm_enable,
|
||||
.get_dpm_clock_table = smu_v14_0_common_get_dpm_table,
|
||||
.set_mall_enable = smu_v14_0_common_set_mall_enable,
|
||||
+ .set_power_dep = smu_v14_0_0_set_power_dep,
|
||||
};
|
||||
|
||||
static void smu_v14_0_0_init_msg_ctl(struct smu_context *smu)
|
||||
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
|
||||
index ebefa889bc8c..0987eee38bd1 100644
|
||||
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
|
||||
|
|
@ -2532,10 +2677,10 @@ index fc6608e33de4..8cfa3282bf08 100644
|
|||
};
|
||||
|
||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||
index caaed1a01dc0..ec7b94de5515 100644
|
||||
index dd0025d3914e..e57d10dc843c 100644
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -4506,6 +4506,30 @@ static void quirk_aspeed_pci_bridge_no_alias(struct pci_dev *pdev)
|
||||
@@ -4491,6 +4491,30 @@ static void quirk_aspeed_pci_bridge_no_alias(struct pci_dev *pdev)
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ASPEED, 0x1150, quirk_aspeed_pci_bridge_no_alias);
|
||||
|
||||
|
|
@ -2613,74 +2758,6 @@ index 24960ba9caa9..32597cdb72ef 100644
|
|||
/* Lock the device, then check to see if we were
|
||||
* disconnected while waiting for the lock to succeed. */
|
||||
usb_lock_device(hdev);
|
||||
diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
|
||||
index 251dec48f0e3..e7db02579f28 100644
|
||||
--- a/fs/xfs/xfs_reflink.c
|
||||
+++ b/fs/xfs/xfs_reflink.c
|
||||
@@ -440,6 +440,7 @@ xfs_reflink_fill_cow_hole(
|
||||
struct xfs_mount *mp = ip->i_mount;
|
||||
struct xfs_trans *tp;
|
||||
xfs_filblks_t resaligned;
|
||||
+ unsigned int seq_before = READ_ONCE(ip->i_df.if_seq);
|
||||
unsigned int dblocks = 0, rblocks = 0;
|
||||
int nimaps;
|
||||
int error;
|
||||
@@ -465,6 +466,22 @@ xfs_reflink_fill_cow_hole(
|
||||
|
||||
*lockmode = XFS_ILOCK_EXCL;
|
||||
|
||||
+ /*
|
||||
+ * The data fork mapping may have changed while we dropped the ILOCK
|
||||
+ * (a racing O_DIRECT writer under IOLOCK_SHARED can complete a full
|
||||
+ * CoW cycle including xfs_reflink_end_cow(), which remaps this offset
|
||||
+ * and drops the refcount of the old shared block). Re-read it so the
|
||||
+ * shared-status recheck below and the caller's in-place iomap both
|
||||
+ * operate on the current mapping rather than a stale physical block.
|
||||
+ */
|
||||
+ if (seq_before != READ_ONCE(ip->i_df.if_seq)) {
|
||||
+ nimaps = 1;
|
||||
+ error = xfs_bmapi_read(ip, imap->br_startoff,
|
||||
+ imap->br_blockcount, imap, &nimaps, 0);
|
||||
+ if (error)
|
||||
+ goto out_trans_cancel;
|
||||
+ }
|
||||
+
|
||||
error = xfs_find_trim_cow_extent(ip, imap, cmap, shared, &found);
|
||||
if (error || !*shared)
|
||||
goto out_trans_cancel;
|
||||
@@ -511,6 +528,8 @@ xfs_reflink_fill_delalloc(
|
||||
bool found;
|
||||
|
||||
do {
|
||||
+ unsigned int seq_before = READ_ONCE(ip->i_df.if_seq);
|
||||
+
|
||||
xfs_iunlock(ip, *lockmode);
|
||||
*lockmode = 0;
|
||||
|
||||
@@ -521,6 +540,23 @@ xfs_reflink_fill_delalloc(
|
||||
|
||||
*lockmode = XFS_ILOCK_EXCL;
|
||||
|
||||
+ /*
|
||||
+ * The data fork mapping may have changed while we dropped the
|
||||
+ * ILOCK (a racing O_DIRECT writer under IOLOCK_SHARED can
|
||||
+ * complete a full CoW cycle including xfs_reflink_end_cow(),
|
||||
+ * which remaps this offset and drops the refcount of the old
|
||||
+ * shared block). Re-read it so the shared-status recheck
|
||||
+ * below and the caller's in-place iomap both operate on the
|
||||
+ * current mapping rather than a stale physical block.
|
||||
+ */
|
||||
+ if (seq_before != READ_ONCE(ip->i_df.if_seq)) {
|
||||
+ nimaps = 1;
|
||||
+ error = xfs_bmapi_read(ip, imap->br_startoff,
|
||||
+ imap->br_blockcount, imap, &nimaps, 0);
|
||||
+ if (error)
|
||||
+ goto out_trans_cancel;
|
||||
+ }
|
||||
+
|
||||
error = xfs_find_trim_cow_extent(ip, imap, cmap, shared,
|
||||
&found);
|
||||
if (error || !*shared)
|
||||
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
|
||||
index a2137e19be7d..df268ca70170 100644
|
||||
--- a/include/linux/crypto.h
|
||||
|
|
|
|||
6
sources
6
sources
|
|
@ -1,3 +1,3 @@
|
|||
SHA512 (linux-7.1.3.tar.xz) = 8c2471239ff082532d0813d797a137ad353822a0d5bdbe48c9d981668977167ce2ae9d86a912d111bb4523eebfbc4b17379eb6c6ec7d17ec6503b675f32f7da3
|
||||
SHA512 (kernel-abi-stablelists-7.1.3.tar.xz) = 282979c2a89094ecf7e4a4c059d9b5e756a0aa9bb98a762e3df0f4718baa9901682bc4748c68bb8e0118c735100ecd31350d78e06d4a50e33a947d7ad0cbe91c
|
||||
SHA512 (kernel-kabi-dw-7.1.3.tar.xz) = 3f1dcad0b9e39b7415e90d8a29ac6678304422389e1cec322e6af4bb179c632524674d906e22b93f4e16f0573261dab05ba85c6d05a7a896c1156cedd5c893ee
|
||||
SHA512 (linux-7.1.4.tar.xz) = 164f7c0353dfcf1eaacf886530273271d473314a9f99d9441a63bfc24368c8d2f194552bd4800dd440bf824598cbd74263b1b544dc61307517b8208acf9b4a7a
|
||||
SHA512 (kernel-abi-stablelists-7.1.4.tar.xz) = d2ed3ee6a6b8f1aae32eeeba1e22e599e92f0a653083ae27e26b373f932a1a2fb052fe1ae4f5a4ea2210e84527b489d5115764ef0f46f01ae901810ed1fcbaf3
|
||||
SHA512 (kernel-kabi-dw-7.1.4.tar.xz) = d8d89633a4474b1ad9522ab066c97907e217f72fde3290b3a02bbddadd79b5d82514ae1a6b0b1dccd770cd0717df0a45e9e6aaa4bc9f45aba1ee9be44d1e832b
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue