clean up kernels' repo
This commit is contained in:
parent
043d4a37e2
commit
d560d87bc6
|
@ -1,21 +0,0 @@
|
|||
From 0bb6e4f104167b1e283269b46f3bbd30b2d979a7 Mon Sep 17 00:00:00 2001
|
||||
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
|
||||
Date: Thu, 18 Nov 2021 22:53:31 +0100
|
||||
Subject: [PATCH] PCI: Add more NVIDIA controllers to the MSI masking quirk
|
||||
|
||||
For: https://bugs.archlinux.org/task/72734
|
||||
For: https://bugs.archlinux.org/task/72777
|
||||
---
|
||||
drivers/pci/quirks.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||
index 208fa03acdda0..7fdb7e9c2e12c 100644
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -5802,3 +5802,5 @@ static void nvidia_ion_ahci_fixup(struct pci_dev *pdev)
|
||||
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
|
||||
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab9, nvidia_ion_ahci_fixup);
|
||||
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0d88, nvidia_ion_ahci_fixup);
|
|
@ -1,85 +0,0 @@
|
|||
From 32803dc7c2ffc29db15a46034d818f6e6c5775ef Mon Sep 17 00:00:00 2001
|
||||
From: Ajay Garg <ajaygargnsit@gmail.com>
|
||||
Date: Tue, 12 Oct 2021 19:26:53 +0530
|
||||
Subject: [PATCH] iommu: intel: do deep dma-unmapping, to avoid
|
||||
kernel-flooding.
|
||||
|
||||
Origins at :
|
||||
https://lists.linuxfoundation.org/pipermail/iommu/2021-October/thread.html
|
||||
|
||||
=== Changes from v1 => v2 ===
|
||||
|
||||
a)
|
||||
Improved patch-description.
|
||||
|
||||
b)
|
||||
A more root-level fix, as suggested by
|
||||
|
||||
1.
|
||||
Alex Williamson <alex.williamson@redhat.com>
|
||||
|
||||
2.
|
||||
Lu Baolu <baolu.lu@linux.intel.com>
|
||||
|
||||
=== Issue ===
|
||||
|
||||
Kernel-flooding is seen, when an x86_64 L1 guest (Ubuntu-21) is booted in qemu/kvm
|
||||
on a x86_64 host (Ubuntu-21), with a host-pci-device attached.
|
||||
|
||||
Following kind of logs, along with the stacktraces, cause the flood :
|
||||
|
||||
......
|
||||
DMAR: ERROR: DMA PTE for vPFN 0x428ec already set (to 3f6ec003 not 3f6ec003)
|
||||
DMAR: ERROR: DMA PTE for vPFN 0x428ed already set (to 3f6ed003 not 3f6ed003)
|
||||
DMAR: ERROR: DMA PTE for vPFN 0x428ee already set (to 3f6ee003 not 3f6ee003)
|
||||
DMAR: ERROR: DMA PTE for vPFN 0x428ef already set (to 3f6ef003 not 3f6ef003)
|
||||
DMAR: ERROR: DMA PTE for vPFN 0x428f0 already set (to 3f6f0003 not 3f6f0003)
|
||||
......
|
||||
|
||||
=== Current Behaviour, leading to the issue ===
|
||||
|
||||
Currently, when we do a dma-unmapping, we unmap/unlink the mappings, but
|
||||
the pte-entries are not cleared.
|
||||
|
||||
Thus, following sequencing would flood the kernel-logs :
|
||||
|
||||
i)
|
||||
A dma-unmapping makes the real/leaf-level pte-slot invalid, but the
|
||||
pte-content itself is not cleared.
|
||||
|
||||
ii)
|
||||
Now, during some later dma-mapping procedure, as the pte-slot is about
|
||||
to hold a new pte-value, the intel-iommu checks if a prior
|
||||
pte-entry exists in the pte-slot. If it exists, it logs a kernel-error,
|
||||
along with a corresponding stacktrace.
|
||||
|
||||
iii)
|
||||
Step ii) runs in abundance, and the kernel-logs run insane.
|
||||
|
||||
=== Fix ===
|
||||
|
||||
We ensure that as part of a dma-unmapping, each (unmapped) pte-slot
|
||||
is also cleared of its value/content (at the leaf-level, where the
|
||||
real mapping from a iova => pfn mapping is stored).
|
||||
|
||||
This completes a "deep" dma-unmapping.
|
||||
|
||||
Signed-off-by: Ajay Garg <ajaygargnsit@gmail.com>
|
||||
Link: https://lore.kernel.org/linux-iommu/20211012135653.3852-1-ajaygargnsit@gmail.com/
|
||||
---
|
||||
drivers/iommu/intel/iommu.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
|
||||
index 78f8c8e6803e9..d8da48a91ba3b 100644
|
||||
--- a/drivers/iommu/intel/iommu.c
|
||||
+++ b/drivers/iommu/intel/iommu.c
|
||||
@@ -5092,6 +5092,8 @@ static size_t intel_iommu_unmap(struct iommu_domain *domain,
|
||||
gather->freelist = domain_unmap(dmar_domain, start_pfn,
|
||||
last_pfn, gather->freelist);
|
||||
|
||||
+ dma_pte_clear_range(dmar_domain, start_pfn, last_pfn);
|
||||
+
|
||||
if (dmar_domain->max_addr == iova + size)
|
||||
dmar_domain->max_addr = iova;
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
From a6d4fb4f5e7fe795d9e3b28b261a0f86f1026d03 Mon Sep 17 00:00:00 2001
|
||||
From: Kiran K <kiran.k@intel.com>
|
||||
Date: Wed, 13 Oct 2021 13:35:11 +0530
|
||||
Subject: [PATCH] Bluetooth: btintel: Fix bdaddress comparison with garbage
|
||||
value
|
||||
|
||||
Intel Read Verision(TLV) data is parsed into a local structure variable
|
||||
and it contains a field for bd address. Bd address is returned only in
|
||||
bootloader mode and hence bd address in TLV structure needs to be validated
|
||||
only if controller is present in boot loader mode.
|
||||
|
||||
Signed-off-by: Kiran K <kiran.k@intel.com>
|
||||
Reviewed-by: Tedd Ho-Jeong An <tedd.an@intel.com>
|
||||
---
|
||||
drivers/bluetooth/btintel.c | 22 ++++++++++++++--------
|
||||
1 file changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c
|
||||
index f1705b46fc889..b9055a3e61ed7 100644
|
||||
--- a/drivers/bluetooth/btintel.c
|
||||
+++ b/drivers/bluetooth/btintel.c
|
||||
@@ -2006,14 +2006,16 @@ static int btintel_prepare_fw_download_tlv(struct hci_dev *hdev,
|
||||
if (ver->img_type == 0x03) {
|
||||
btintel_clear_flag(hdev, INTEL_BOOTLOADER);
|
||||
btintel_check_bdaddr(hdev);
|
||||
- }
|
||||
-
|
||||
- /* If the OTP has no valid Bluetooth device address, then there will
|
||||
- * also be no valid address for the operational firmware.
|
||||
- */
|
||||
- if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) {
|
||||
- bt_dev_info(hdev, "No device address configured");
|
||||
- set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks);
|
||||
+ } else {
|
||||
+ /*
|
||||
+ * Check for valid bd address in boot loader mode. Device
|
||||
+ * will be marked as unconfigured if empty bd address is
|
||||
+ * found.
|
||||
+ */
|
||||
+ if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) {
|
||||
+ bt_dev_info(hdev, "No device address configured");
|
||||
+ set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks);
|
||||
+ }
|
||||
}
|
||||
|
||||
btintel_get_fw_name_tlv(ver, fwname, sizeof(fwname), "sfi");
|
||||
@@ -2303,6 +2305,10 @@ static int btintel_setup_combined(struct hci_dev *hdev)
|
||||
goto exit_error;
|
||||
}
|
||||
|
||||
+ /* memset ver_tlv to start with clean state as few fields are exclusive
|
||||
+ * to bootloader mode and are not populated in operational mode
|
||||
+ */
|
||||
+ memset(&ver_tlv, 0, sizeof(ver_tlv));
|
||||
/* For TLV type device, parse the tlv data */
|
||||
err = btintel_parse_version_tlv(hdev, &ver_tlv, skb);
|
||||
if (err) {
|
|
@ -1,51 +0,0 @@
|
|||
From aa7300919d0656a001fe0d526508b8c5958e7630 Mon Sep 17 00:00:00 2001
|
||||
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
|
||||
Date: Thu, 18 Nov 2021 21:18:01 -0800
|
||||
Subject: [PATCH] cpufreq: intel_pstate: ITMT support for overclocked system
|
||||
|
||||
On systems with overclocking enabled, CPPC Highest Performance can be
|
||||
hard coded to 0xff. In this case even if we have cores with different
|
||||
highest performance, ITMT can't be enabled as the current implementation
|
||||
depends on CPPC Highest Performance.
|
||||
|
||||
On such systems we can use MSR_HWP_CAPABILITIES maximum performance field
|
||||
when CPPC.Highest Performance is 0xff.
|
||||
|
||||
Due to legacy reasons, we can't solely depend on MSR_HWP_CAPABILITIES as
|
||||
in some older systems CPPC Highest Performance is the only way to identify
|
||||
different performing cores.
|
||||
|
||||
Reported-by: Michael Larabel <Michael@MichaelLarabel.com>
|
||||
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
|
||||
---
|
||||
drivers/cpufreq/intel_pstate.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
|
||||
index e15c3bc17a55c..8a2c6b58b6524 100644
|
||||
--- a/drivers/cpufreq/intel_pstate.c
|
||||
+++ b/drivers/cpufreq/intel_pstate.c
|
||||
@@ -335,6 +335,8 @@ static void intel_pstste_sched_itmt_work_fn(struct work_struct *work)
|
||||
|
||||
static DECLARE_WORK(sched_itmt_work, intel_pstste_sched_itmt_work_fn);
|
||||
|
||||
+#define CPPC_MAX_PERF U8_MAX
|
||||
+
|
||||
static void intel_pstate_set_itmt_prio(int cpu)
|
||||
{
|
||||
struct cppc_perf_caps cppc_perf;
|
||||
@@ -345,6 +347,14 @@ static void intel_pstate_set_itmt_prio(int cpu)
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
+ /*
|
||||
+ * On some systems with overclocking enabled, CPPC.highest_perf is hardcoded to 0xff.
|
||||
+ * In this case we can't use CPPC.highest_perf to enable ITMT.
|
||||
+ * In this case we can look at MSR_HWP_CAPABILITIES bits [8:0] to decide.
|
||||
+ */
|
||||
+ if (cppc_perf.highest_perf == CPPC_MAX_PERF)
|
||||
+ cppc_perf.highest_perf = HWP_HIGHEST_PERF(READ_ONCE(all_cpu_data[cpu]->hwp_cap_cached));
|
||||
+
|
||||
/*
|
||||
* The priorities can be set regardless of whether or not
|
||||
* sched_set_itmt_support(true) has been called and it is valid to
|
|
@ -1,57 +0,0 @@
|
|||
From a6d4fb4f5e7fe795d9e3b28b261a0f86f1026d03 Mon Sep 17 00:00:00 2001
|
||||
From: Kiran K <kiran.k@intel.com>
|
||||
Date: Wed, 13 Oct 2021 13:35:11 +0530
|
||||
Subject: [PATCH] Bluetooth: btintel: Fix bdaddress comparison with garbage
|
||||
value
|
||||
|
||||
Intel Read Verision(TLV) data is parsed into a local structure variable
|
||||
and it contains a field for bd address. Bd address is returned only in
|
||||
bootloader mode and hence bd address in TLV structure needs to be validated
|
||||
only if controller is present in boot loader mode.
|
||||
|
||||
Signed-off-by: Kiran K <kiran.k@intel.com>
|
||||
Reviewed-by: Tedd Ho-Jeong An <tedd.an@intel.com>
|
||||
---
|
||||
drivers/bluetooth/btintel.c | 22 ++++++++++++++--------
|
||||
1 file changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c
|
||||
index f1705b46fc889..b9055a3e61ed7 100644
|
||||
--- a/drivers/bluetooth/btintel.c
|
||||
+++ b/drivers/bluetooth/btintel.c
|
||||
@@ -2006,14 +2006,16 @@ static int btintel_prepare_fw_download_tlv(struct hci_dev *hdev,
|
||||
if (ver->img_type == 0x03) {
|
||||
btintel_clear_flag(hdev, INTEL_BOOTLOADER);
|
||||
btintel_check_bdaddr(hdev);
|
||||
- }
|
||||
-
|
||||
- /* If the OTP has no valid Bluetooth device address, then there will
|
||||
- * also be no valid address for the operational firmware.
|
||||
- */
|
||||
- if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) {
|
||||
- bt_dev_info(hdev, "No device address configured");
|
||||
- set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks);
|
||||
+ } else {
|
||||
+ /*
|
||||
+ * Check for valid bd address in boot loader mode. Device
|
||||
+ * will be marked as unconfigured if empty bd address is
|
||||
+ * found.
|
||||
+ */
|
||||
+ if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) {
|
||||
+ bt_dev_info(hdev, "No device address configured");
|
||||
+ set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks);
|
||||
+ }
|
||||
}
|
||||
|
||||
btintel_get_fw_name_tlv(ver, fwname, sizeof(fwname), "sfi");
|
||||
@@ -2303,6 +2305,10 @@ static int btintel_setup_combined(struct hci_dev *hdev)
|
||||
goto exit_error;
|
||||
}
|
||||
|
||||
+ /* memset ver_tlv to start with clean state as few fields are exclusive
|
||||
+ * to bootloader mode and are not populated in operational mode
|
||||
+ */
|
||||
+ memset(&ver_tlv, 0, sizeof(ver_tlv));
|
||||
/* For TLV type device, parse the tlv data */
|
||||
err = btintel_parse_version_tlv(hdev, &ver_tlv, skb);
|
||||
if (err) {
|
|
@ -1,36 +0,0 @@
|
|||
From 72edf8c167268bb68d701f46006ccfdfa5490db8 Mon Sep 17 00:00:00 2001
|
||||
From: Matan Ziv-Av <matan@svgalib.org>
|
||||
Date: Tue, 23 Nov 2021 22:14:55 +0200
|
||||
Subject: [PATCH] lg-laptop: Recognize more models
|
||||
|
||||
LG uses 5 instead of 0 in the third digit (second digit after 2019) of the year string to indicate newer models in the same year. Handle this case as well.
|
||||
|
||||
Signed-off-by: Matan Ziv-Av <matan@svgalib.org>
|
||||
For: https://bugs.archlinux.org/task/71772
|
||||
---
|
||||
drivers/platform/x86/lg-laptop.c | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/drivers/platform/x86/lg-laptop.c b/drivers/platform/x86/lg-laptop.c
|
||||
index 88b551caeaaf4..d6f74d3a7605e 100644
|
||||
--- a/drivers/platform/x86/lg-laptop.c
|
||||
+++ b/drivers/platform/x86/lg-laptop.c
|
||||
@@ -658,6 +658,18 @@ static int acpi_add(struct acpi_device *device)
|
||||
if (product && strlen(product) > 4)
|
||||
switch (product[4]) {
|
||||
case '5':
|
||||
+ if (strlen(product) > 5)
|
||||
+ switch (product[5]) {
|
||||
+ case 'N':
|
||||
+ year = 2021;
|
||||
+ break;
|
||||
+ case '0':
|
||||
+ year = 2016;
|
||||
+ break;
|
||||
+ default:
|
||||
+ year = 2022;
|
||||
+ }
|
||||
+ break;
|
||||
case '6':
|
||||
year = 2016;
|
||||
break;
|
|
@ -1,36 +0,0 @@
|
|||
From 72edf8c167268bb68d701f46006ccfdfa5490db8 Mon Sep 17 00:00:00 2001
|
||||
From: Matan Ziv-Av <matan@svgalib.org>
|
||||
Date: Tue, 23 Nov 2021 22:14:55 +0200
|
||||
Subject: [PATCH] lg-laptop: Recognize more models
|
||||
|
||||
LG uses 5 instead of 0 in the third digit (second digit after 2019) of the year string to indicate newer models in the same year. Handle this case as well.
|
||||
|
||||
Signed-off-by: Matan Ziv-Av <matan@svgalib.org>
|
||||
For: https://bugs.archlinux.org/task/71772
|
||||
---
|
||||
drivers/platform/x86/lg-laptop.c | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/drivers/platform/x86/lg-laptop.c b/drivers/platform/x86/lg-laptop.c
|
||||
index 88b551caeaaf4..d6f74d3a7605e 100644
|
||||
--- a/drivers/platform/x86/lg-laptop.c
|
||||
+++ b/drivers/platform/x86/lg-laptop.c
|
||||
@@ -658,6 +658,18 @@ static int acpi_add(struct acpi_device *device)
|
||||
if (product && strlen(product) > 4)
|
||||
switch (product[4]) {
|
||||
case '5':
|
||||
+ if (strlen(product) > 5)
|
||||
+ switch (product[5]) {
|
||||
+ case 'N':
|
||||
+ year = 2021;
|
||||
+ break;
|
||||
+ case '0':
|
||||
+ year = 2016;
|
||||
+ break;
|
||||
+ default:
|
||||
+ year = 2022;
|
||||
+ }
|
||||
+ break;
|
||||
case '6':
|
||||
year = 2016;
|
||||
break;
|
|
@ -1,243 +0,0 @@
|
|||
From 6f2836341d8a39e1e000572b10959347d7e61fd9 Mon Sep 17 00:00:00 2001
|
||||
From: Olga Kornievskaia <kolga@netapp.com>
|
||||
Date: Wed, 12 Jan 2022 10:27:38 -0500
|
||||
Subject: NFSv4.1 query for fs_location attr on a new file system
|
||||
|
||||
[ Upstream commit 1976b2b31462151403c9fc110204fcc2a77bdfd1 ]
|
||||
|
||||
Query the server for other possible trunkable locations for a given
|
||||
file system on a 4.1+ mount.
|
||||
|
||||
v2:
|
||||
-- added missing static to nfs4_discover_trunking,
|
||||
reported by the kernel test robot
|
||||
|
||||
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
|
||||
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
---
|
||||
fs/nfs/client.c | 7 +++++
|
||||
fs/nfs/nfs4_fs.h | 9 +++---
|
||||
fs/nfs/nfs4proc.c | 76 ++++++++++++++++++++++++++++++++++++++++++-------
|
||||
fs/nfs/nfs4state.c | 3 +-
|
||||
include/linux/nfs_xdr.h | 1 +
|
||||
5 files changed, 81 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
|
||||
index 551833862171f..090b16890e3d6 100644
|
||||
--- a/fs/nfs/client.c
|
||||
+++ b/fs/nfs/client.c
|
||||
@@ -860,6 +860,13 @@ int nfs_probe_fsinfo(struct nfs_server *server, struct nfs_fh *mntfh, struct nfs
|
||||
server->namelen = pathinfo.max_namelen;
|
||||
}
|
||||
|
||||
+ if (clp->rpc_ops->discover_trunking != NULL &&
|
||||
+ (server->caps & NFS_CAP_FS_LOCATIONS)) {
|
||||
+ error = clp->rpc_ops->discover_trunking(server, mntfh);
|
||||
+ if (error < 0)
|
||||
+ return error;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_probe_fsinfo);
|
||||
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
|
||||
index ba78df4b13d94..1a048ee653a11 100644
|
||||
--- a/fs/nfs/nfs4_fs.h
|
||||
+++ b/fs/nfs/nfs4_fs.h
|
||||
@@ -261,8 +261,8 @@ struct nfs4_state_maintenance_ops {
|
||||
};
|
||||
|
||||
struct nfs4_mig_recovery_ops {
|
||||
- int (*get_locations)(struct inode *, struct nfs4_fs_locations *,
|
||||
- struct page *, const struct cred *);
|
||||
+ int (*get_locations)(struct nfs_server *, struct nfs_fh *,
|
||||
+ struct nfs4_fs_locations *, struct page *, const struct cred *);
|
||||
int (*fsid_present)(struct inode *, const struct cred *);
|
||||
};
|
||||
|
||||
@@ -303,8 +303,9 @@ extern int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait);
|
||||
extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle);
|
||||
extern int nfs4_proc_fs_locations(struct rpc_clnt *, struct inode *, const struct qstr *,
|
||||
struct nfs4_fs_locations *, struct page *);
|
||||
-extern int nfs4_proc_get_locations(struct inode *, struct nfs4_fs_locations *,
|
||||
- struct page *page, const struct cred *);
|
||||
+extern int nfs4_proc_get_locations(struct nfs_server *, struct nfs_fh *,
|
||||
+ struct nfs4_fs_locations *,
|
||||
+ struct page *page, const struct cred *);
|
||||
extern int nfs4_proc_fsid_present(struct inode *, const struct cred *);
|
||||
extern struct rpc_clnt *nfs4_proc_lookup_mountpoint(struct inode *,
|
||||
struct dentry *,
|
||||
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
||||
index 367a1b99b7550..389fa72d4ca98 100644
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -3952,6 +3952,60 @@ int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle)
|
||||
return err;
|
||||
}
|
||||
|
||||
+static int _nfs4_discover_trunking(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle)
|
||||
+{
|
||||
+ struct nfs4_fs_locations *locations = NULL;
|
||||
+ struct page *page;
|
||||
+ const struct cred *cred;
|
||||
+ struct nfs_client *clp = server->nfs_client;
|
||||
+ const struct nfs4_state_maintenance_ops *ops =
|
||||
+ clp->cl_mvops->state_renewal_ops;
|
||||
+ int status = -ENOMEM;
|
||||
+
|
||||
+ cred = ops->get_state_renewal_cred(clp);
|
||||
+ if (cred == NULL) {
|
||||
+ cred = nfs4_get_clid_cred(clp);
|
||||
+ if (cred == NULL)
|
||||
+ return -ENOKEY;
|
||||
+ }
|
||||
+
|
||||
+ page = alloc_page(GFP_KERNEL);
|
||||
+ locations = kmalloc(sizeof(struct nfs4_fs_locations), GFP_KERNEL);
|
||||
+ if (page == NULL || locations == NULL)
|
||||
+ goto out;
|
||||
+
|
||||
+ status = nfs4_proc_get_locations(server, fhandle, locations, page,
|
||||
+ cred);
|
||||
+ if (status)
|
||||
+ goto out;
|
||||
+out:
|
||||
+ if (page)
|
||||
+ __free_page(page);
|
||||
+ kfree(locations);
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static int nfs4_discover_trunking(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle)
|
||||
+{
|
||||
+ struct nfs4_exception exception = {
|
||||
+ .interruptible = true,
|
||||
+ };
|
||||
+ struct nfs_client *clp = server->nfs_client;
|
||||
+ int err = 0;
|
||||
+
|
||||
+ if (!nfs4_has_session(clp))
|
||||
+ goto out;
|
||||
+ do {
|
||||
+ err = nfs4_handle_exception(server,
|
||||
+ _nfs4_discover_trunking(server, fhandle),
|
||||
+ &exception);
|
||||
+ } while (exception.retry);
|
||||
+out:
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
static int _nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle,
|
||||
struct nfs_fsinfo *info)
|
||||
{
|
||||
@@ -7886,18 +7940,18 @@ int nfs4_proc_fs_locations(struct rpc_clnt *client, struct inode *dir,
|
||||
* appended to this compound to identify the client ID which is
|
||||
* performing recovery.
|
||||
*/
|
||||
-static int _nfs40_proc_get_locations(struct inode *inode,
|
||||
+static int _nfs40_proc_get_locations(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle,
|
||||
struct nfs4_fs_locations *locations,
|
||||
struct page *page, const struct cred *cred)
|
||||
{
|
||||
- struct nfs_server *server = NFS_SERVER(inode);
|
||||
struct rpc_clnt *clnt = server->client;
|
||||
u32 bitmask[2] = {
|
||||
[0] = FATTR4_WORD0_FSID | FATTR4_WORD0_FS_LOCATIONS,
|
||||
};
|
||||
struct nfs4_fs_locations_arg args = {
|
||||
.clientid = server->nfs_client->cl_clientid,
|
||||
- .fh = NFS_FH(inode),
|
||||
+ .fh = fhandle,
|
||||
.page = page,
|
||||
.bitmask = bitmask,
|
||||
.migration = 1, /* skip LOOKUP */
|
||||
@@ -7943,17 +7997,17 @@ static int _nfs40_proc_get_locations(struct inode *inode,
|
||||
* When the client supports GETATTR(fs_locations_info), it can
|
||||
* be plumbed in here.
|
||||
*/
|
||||
-static int _nfs41_proc_get_locations(struct inode *inode,
|
||||
+static int _nfs41_proc_get_locations(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle,
|
||||
struct nfs4_fs_locations *locations,
|
||||
struct page *page, const struct cred *cred)
|
||||
{
|
||||
- struct nfs_server *server = NFS_SERVER(inode);
|
||||
struct rpc_clnt *clnt = server->client;
|
||||
u32 bitmask[2] = {
|
||||
[0] = FATTR4_WORD0_FSID | FATTR4_WORD0_FS_LOCATIONS,
|
||||
};
|
||||
struct nfs4_fs_locations_arg args = {
|
||||
- .fh = NFS_FH(inode),
|
||||
+ .fh = fhandle,
|
||||
.page = page,
|
||||
.bitmask = bitmask,
|
||||
.migration = 1, /* skip LOOKUP */
|
||||
@@ -8002,11 +8056,11 @@ static int _nfs41_proc_get_locations(struct inode *inode,
|
||||
* -NFS4ERR_LEASE_MOVED is returned if the server still has leases
|
||||
* from this client that require migration recovery.
|
||||
*/
|
||||
-int nfs4_proc_get_locations(struct inode *inode,
|
||||
+int nfs4_proc_get_locations(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle,
|
||||
struct nfs4_fs_locations *locations,
|
||||
struct page *page, const struct cred *cred)
|
||||
{
|
||||
- struct nfs_server *server = NFS_SERVER(inode);
|
||||
struct nfs_client *clp = server->nfs_client;
|
||||
const struct nfs4_mig_recovery_ops *ops =
|
||||
clp->cl_mvops->mig_recovery_ops;
|
||||
@@ -8019,10 +8073,11 @@ int nfs4_proc_get_locations(struct inode *inode,
|
||||
(unsigned long long)server->fsid.major,
|
||||
(unsigned long long)server->fsid.minor,
|
||||
clp->cl_hostname);
|
||||
- nfs_display_fhandle(NFS_FH(inode), __func__);
|
||||
+ nfs_display_fhandle(fhandle, __func__);
|
||||
|
||||
do {
|
||||
- status = ops->get_locations(inode, locations, page, cred);
|
||||
+ status = ops->get_locations(server, fhandle, locations, page,
|
||||
+ cred);
|
||||
if (status != -NFS4ERR_DELAY)
|
||||
break;
|
||||
nfs4_handle_exception(server, status, &exception);
|
||||
@@ -10516,6 +10571,7 @@ const struct nfs_rpc_ops nfs_v4_clientops = {
|
||||
.free_client = nfs4_free_client,
|
||||
.create_server = nfs4_create_server,
|
||||
.clone_server = nfs_clone_server,
|
||||
+ .discover_trunking = nfs4_discover_trunking,
|
||||
};
|
||||
|
||||
static const struct xattr_handler nfs4_xattr_nfs4_acl_handler = {
|
||||
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
|
||||
index acc1cd3e63a48..51f5cb41e87a4 100644
|
||||
--- a/fs/nfs/nfs4state.c
|
||||
+++ b/fs/nfs/nfs4state.c
|
||||
@@ -2097,7 +2097,8 @@ static int nfs4_try_migration(struct nfs_server *server, const struct cred *cred
|
||||
}
|
||||
|
||||
inode = d_inode(server->super->s_root);
|
||||
- result = nfs4_proc_get_locations(inode, locations, page, cred);
|
||||
+ result = nfs4_proc_get_locations(server, NFS_FH(inode), locations,
|
||||
+ page, cred);
|
||||
if (result) {
|
||||
dprintk("<-- %s: failed to retrieve fs_locations: %d\n",
|
||||
__func__, result);
|
||||
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
|
||||
index e9698b6278a52..ecd74cc347974 100644
|
||||
--- a/include/linux/nfs_xdr.h
|
||||
+++ b/include/linux/nfs_xdr.h
|
||||
@@ -1805,6 +1805,7 @@ struct nfs_rpc_ops {
|
||||
struct nfs_server *(*create_server)(struct fs_context *);
|
||||
struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *,
|
||||
struct nfs_fattr *, rpc_authflavor_t);
|
||||
+ int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
|
||||
};
|
||||
|
||||
/*
|
||||
--
|
||||
cgit
|
||||
|
|
@ -1,243 +0,0 @@
|
|||
From 6f2836341d8a39e1e000572b10959347d7e61fd9 Mon Sep 17 00:00:00 2001
|
||||
From: Olga Kornievskaia <kolga@netapp.com>
|
||||
Date: Wed, 12 Jan 2022 10:27:38 -0500
|
||||
Subject: NFSv4.1 query for fs_location attr on a new file system
|
||||
|
||||
[ Upstream commit 1976b2b31462151403c9fc110204fcc2a77bdfd1 ]
|
||||
|
||||
Query the server for other possible trunkable locations for a given
|
||||
file system on a 4.1+ mount.
|
||||
|
||||
v2:
|
||||
-- added missing static to nfs4_discover_trunking,
|
||||
reported by the kernel test robot
|
||||
|
||||
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
|
||||
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
---
|
||||
fs/nfs/client.c | 7 +++++
|
||||
fs/nfs/nfs4_fs.h | 9 +++---
|
||||
fs/nfs/nfs4proc.c | 76 ++++++++++++++++++++++++++++++++++++++++++-------
|
||||
fs/nfs/nfs4state.c | 3 +-
|
||||
include/linux/nfs_xdr.h | 1 +
|
||||
5 files changed, 81 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
|
||||
index 551833862171f..090b16890e3d6 100644
|
||||
--- a/fs/nfs/client.c
|
||||
+++ b/fs/nfs/client.c
|
||||
@@ -860,6 +860,13 @@ int nfs_probe_fsinfo(struct nfs_server *server, struct nfs_fh *mntfh, struct nfs
|
||||
server->namelen = pathinfo.max_namelen;
|
||||
}
|
||||
|
||||
+ if (clp->rpc_ops->discover_trunking != NULL &&
|
||||
+ (server->caps & NFS_CAP_FS_LOCATIONS)) {
|
||||
+ error = clp->rpc_ops->discover_trunking(server, mntfh);
|
||||
+ if (error < 0)
|
||||
+ return error;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_probe_fsinfo);
|
||||
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
|
||||
index ba78df4b13d94..1a048ee653a11 100644
|
||||
--- a/fs/nfs/nfs4_fs.h
|
||||
+++ b/fs/nfs/nfs4_fs.h
|
||||
@@ -261,8 +261,8 @@ struct nfs4_state_maintenance_ops {
|
||||
};
|
||||
|
||||
struct nfs4_mig_recovery_ops {
|
||||
- int (*get_locations)(struct inode *, struct nfs4_fs_locations *,
|
||||
- struct page *, const struct cred *);
|
||||
+ int (*get_locations)(struct nfs_server *, struct nfs_fh *,
|
||||
+ struct nfs4_fs_locations *, struct page *, const struct cred *);
|
||||
int (*fsid_present)(struct inode *, const struct cred *);
|
||||
};
|
||||
|
||||
@@ -303,8 +303,9 @@ extern int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait);
|
||||
extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle);
|
||||
extern int nfs4_proc_fs_locations(struct rpc_clnt *, struct inode *, const struct qstr *,
|
||||
struct nfs4_fs_locations *, struct page *);
|
||||
-extern int nfs4_proc_get_locations(struct inode *, struct nfs4_fs_locations *,
|
||||
- struct page *page, const struct cred *);
|
||||
+extern int nfs4_proc_get_locations(struct nfs_server *, struct nfs_fh *,
|
||||
+ struct nfs4_fs_locations *,
|
||||
+ struct page *page, const struct cred *);
|
||||
extern int nfs4_proc_fsid_present(struct inode *, const struct cred *);
|
||||
extern struct rpc_clnt *nfs4_proc_lookup_mountpoint(struct inode *,
|
||||
struct dentry *,
|
||||
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
||||
index 367a1b99b7550..389fa72d4ca98 100644
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -3952,6 +3952,60 @@ int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle)
|
||||
return err;
|
||||
}
|
||||
|
||||
+static int _nfs4_discover_trunking(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle)
|
||||
+{
|
||||
+ struct nfs4_fs_locations *locations = NULL;
|
||||
+ struct page *page;
|
||||
+ const struct cred *cred;
|
||||
+ struct nfs_client *clp = server->nfs_client;
|
||||
+ const struct nfs4_state_maintenance_ops *ops =
|
||||
+ clp->cl_mvops->state_renewal_ops;
|
||||
+ int status = -ENOMEM;
|
||||
+
|
||||
+ cred = ops->get_state_renewal_cred(clp);
|
||||
+ if (cred == NULL) {
|
||||
+ cred = nfs4_get_clid_cred(clp);
|
||||
+ if (cred == NULL)
|
||||
+ return -ENOKEY;
|
||||
+ }
|
||||
+
|
||||
+ page = alloc_page(GFP_KERNEL);
|
||||
+ locations = kmalloc(sizeof(struct nfs4_fs_locations), GFP_KERNEL);
|
||||
+ if (page == NULL || locations == NULL)
|
||||
+ goto out;
|
||||
+
|
||||
+ status = nfs4_proc_get_locations(server, fhandle, locations, page,
|
||||
+ cred);
|
||||
+ if (status)
|
||||
+ goto out;
|
||||
+out:
|
||||
+ if (page)
|
||||
+ __free_page(page);
|
||||
+ kfree(locations);
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+static int nfs4_discover_trunking(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle)
|
||||
+{
|
||||
+ struct nfs4_exception exception = {
|
||||
+ .interruptible = true,
|
||||
+ };
|
||||
+ struct nfs_client *clp = server->nfs_client;
|
||||
+ int err = 0;
|
||||
+
|
||||
+ if (!nfs4_has_session(clp))
|
||||
+ goto out;
|
||||
+ do {
|
||||
+ err = nfs4_handle_exception(server,
|
||||
+ _nfs4_discover_trunking(server, fhandle),
|
||||
+ &exception);
|
||||
+ } while (exception.retry);
|
||||
+out:
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
static int _nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle,
|
||||
struct nfs_fsinfo *info)
|
||||
{
|
||||
@@ -7886,18 +7940,18 @@ int nfs4_proc_fs_locations(struct rpc_clnt *client, struct inode *dir,
|
||||
* appended to this compound to identify the client ID which is
|
||||
* performing recovery.
|
||||
*/
|
||||
-static int _nfs40_proc_get_locations(struct inode *inode,
|
||||
+static int _nfs40_proc_get_locations(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle,
|
||||
struct nfs4_fs_locations *locations,
|
||||
struct page *page, const struct cred *cred)
|
||||
{
|
||||
- struct nfs_server *server = NFS_SERVER(inode);
|
||||
struct rpc_clnt *clnt = server->client;
|
||||
u32 bitmask[2] = {
|
||||
[0] = FATTR4_WORD0_FSID | FATTR4_WORD0_FS_LOCATIONS,
|
||||
};
|
||||
struct nfs4_fs_locations_arg args = {
|
||||
.clientid = server->nfs_client->cl_clientid,
|
||||
- .fh = NFS_FH(inode),
|
||||
+ .fh = fhandle,
|
||||
.page = page,
|
||||
.bitmask = bitmask,
|
||||
.migration = 1, /* skip LOOKUP */
|
||||
@@ -7943,17 +7997,17 @@ static int _nfs40_proc_get_locations(struct inode *inode,
|
||||
* When the client supports GETATTR(fs_locations_info), it can
|
||||
* be plumbed in here.
|
||||
*/
|
||||
-static int _nfs41_proc_get_locations(struct inode *inode,
|
||||
+static int _nfs41_proc_get_locations(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle,
|
||||
struct nfs4_fs_locations *locations,
|
||||
struct page *page, const struct cred *cred)
|
||||
{
|
||||
- struct nfs_server *server = NFS_SERVER(inode);
|
||||
struct rpc_clnt *clnt = server->client;
|
||||
u32 bitmask[2] = {
|
||||
[0] = FATTR4_WORD0_FSID | FATTR4_WORD0_FS_LOCATIONS,
|
||||
};
|
||||
struct nfs4_fs_locations_arg args = {
|
||||
- .fh = NFS_FH(inode),
|
||||
+ .fh = fhandle,
|
||||
.page = page,
|
||||
.bitmask = bitmask,
|
||||
.migration = 1, /* skip LOOKUP */
|
||||
@@ -8002,11 +8056,11 @@ static int _nfs41_proc_get_locations(struct inode *inode,
|
||||
* -NFS4ERR_LEASE_MOVED is returned if the server still has leases
|
||||
* from this client that require migration recovery.
|
||||
*/
|
||||
-int nfs4_proc_get_locations(struct inode *inode,
|
||||
+int nfs4_proc_get_locations(struct nfs_server *server,
|
||||
+ struct nfs_fh *fhandle,
|
||||
struct nfs4_fs_locations *locations,
|
||||
struct page *page, const struct cred *cred)
|
||||
{
|
||||
- struct nfs_server *server = NFS_SERVER(inode);
|
||||
struct nfs_client *clp = server->nfs_client;
|
||||
const struct nfs4_mig_recovery_ops *ops =
|
||||
clp->cl_mvops->mig_recovery_ops;
|
||||
@@ -8019,10 +8073,11 @@ int nfs4_proc_get_locations(struct inode *inode,
|
||||
(unsigned long long)server->fsid.major,
|
||||
(unsigned long long)server->fsid.minor,
|
||||
clp->cl_hostname);
|
||||
- nfs_display_fhandle(NFS_FH(inode), __func__);
|
||||
+ nfs_display_fhandle(fhandle, __func__);
|
||||
|
||||
do {
|
||||
- status = ops->get_locations(inode, locations, page, cred);
|
||||
+ status = ops->get_locations(server, fhandle, locations, page,
|
||||
+ cred);
|
||||
if (status != -NFS4ERR_DELAY)
|
||||
break;
|
||||
nfs4_handle_exception(server, status, &exception);
|
||||
@@ -10516,6 +10571,7 @@ const struct nfs_rpc_ops nfs_v4_clientops = {
|
||||
.free_client = nfs4_free_client,
|
||||
.create_server = nfs4_create_server,
|
||||
.clone_server = nfs_clone_server,
|
||||
+ .discover_trunking = nfs4_discover_trunking,
|
||||
};
|
||||
|
||||
static const struct xattr_handler nfs4_xattr_nfs4_acl_handler = {
|
||||
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
|
||||
index acc1cd3e63a48..51f5cb41e87a4 100644
|
||||
--- a/fs/nfs/nfs4state.c
|
||||
+++ b/fs/nfs/nfs4state.c
|
||||
@@ -2097,7 +2097,8 @@ static int nfs4_try_migration(struct nfs_server *server, const struct cred *cred
|
||||
}
|
||||
|
||||
inode = d_inode(server->super->s_root);
|
||||
- result = nfs4_proc_get_locations(inode, locations, page, cred);
|
||||
+ result = nfs4_proc_get_locations(server, NFS_FH(inode), locations,
|
||||
+ page, cred);
|
||||
if (result) {
|
||||
dprintk("<-- %s: failed to retrieve fs_locations: %d\n",
|
||||
__func__, result);
|
||||
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
|
||||
index e9698b6278a52..ecd74cc347974 100644
|
||||
--- a/include/linux/nfs_xdr.h
|
||||
+++ b/include/linux/nfs_xdr.h
|
||||
@@ -1805,6 +1805,7 @@ struct nfs_rpc_ops {
|
||||
struct nfs_server *(*create_server)(struct fs_context *);
|
||||
struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *,
|
||||
struct nfs_fattr *, rpc_authflavor_t);
|
||||
+ int (*discover_trunking)(struct nfs_server *, struct nfs_fh *);
|
||||
};
|
||||
|
||||
/*
|
||||
--
|
||||
cgit
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
|
||||
|
||||
pkgbase=linux-lts
|
||||
pkgver=5.15.53
|
||||
pkgrel=2
|
||||
pkgver=5.15.70
|
||||
pkgrel=1
|
||||
pkgdesc='LTS Linux'
|
||||
url="https://www.kernel.org/"
|
||||
arch=(x86_64)
|
||||
|
@ -17,30 +17,26 @@ source=(
|
|||
https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.{xz,sign}
|
||||
config # the main kernel config file
|
||||
0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
|
||||
0002-PCI_Add_more_NVIDIA_controllers_to_the_MSI_masking_quirk.patch
|
||||
0003-iommu_intel_do_deep_dma-unmapping_to_avoid_kernel-flooding.patch
|
||||
0004-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch
|
||||
0005-lg-laptop_Recognize_more_models.patch
|
||||
0006_fix_NFSv4_mount_regression.diff
|
||||
0100-netfilter-nf_tables-stricter-validation-of-element-data.diff
|
||||
0101-netfilter-nft_set_pipapo-release-elements-in-clone-from-abort-path.diff
|
||||
0002-PCI-Add-more-NVIDIA-controllers-to-the-MSI-masking-q.patch
|
||||
0003-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch
|
||||
0004-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch
|
||||
0005-lg-laptop-Recognize-more-models.patch
|
||||
0006-Fix-NFSv4-mount-regression.patch
|
||||
)
|
||||
validpgpkeys=(
|
||||
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
|
||||
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
|
||||
)
|
||||
# https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc
|
||||
sha256sums=('f3aa717243051f3fcca90ebfe26fe5c3a596c2f6047846e8d1724ea90df77b07'
|
||||
sha256sums=('1a7c26f0253407bb222786c8cbf2ee6235acebe8ea641fe0bc2360acce970d76'
|
||||
'SKIP'
|
||||
'0e605ccfafa347522c5960289aaaabe368aef98b47bc0b76baadab7ca28e833c'
|
||||
'99df282c594cc269d9a5d19bb86ea887892d3654cfc53c4ce94a644cf3278423'
|
||||
'c35018601f04ae81e0a2018a8597595db6ae053158c206845399cdebb2d2b706'
|
||||
'7c7707c738983f3683d76295b496f578996b7341fa39ad334ec2833bfe4b966e'
|
||||
'3fa8a4af66d5a3b99b48ca979a247c61e81c9b2d3bcdffa9d3895a5532a420b4'
|
||||
'79266c6cc970733fd35881d9a8f0a74c25c00b4d81741b8d4bba6827c48f7c78'
|
||||
'e9527ad81d5b1821a7b17c56cb3abaec85785563f51e448cb3c06f1c68e2966f'
|
||||
'b2e03d795a67843b9898367eaf3f2b855487d7e7cbe87b43a0df22b2fb36477c'
|
||||
'08cae506648665a0a2990a690d951dd4432b6eea4ca295dbfc0a836ee63671ea')
|
||||
'f2d7225bc54cdca2b12baab9140cc4f32dca12e460f8a0dbb0ebb1a2c8ea6a34'
|
||||
'7bd64ff894475b3415d792ba8466ba7e8f872af56dbf1aeed0d261fe4008b8b5'
|
||||
'39649dc1dfcb06b411ad124e123769e955a78961b4ea17538c0919a930925549'
|
||||
'56c12551e859cc67520909e64feecbf1b190cee8addef150c5b9d1bb1d40981e'
|
||||
'5c1ee81fdd5818442af6081de987f9c1a9ce3c8d183566b3dfc19a8433aa3dde'
|
||||
'067e8995fcd6f6ed25e0253e9374c0e179a000c154da3e59ce62634945ac5be9'
|
||||
'95dad02b01937681af0a207e22a6bf64c33e067bf7a14cb98262dd8f69194eb8')
|
||||
|
||||
export KBUILD_BUILD_HOST=archlinux
|
||||
export KBUILD_BUILD_USER=$pkgbase
|
||||
|
@ -49,14 +45,6 @@ export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EP
|
|||
prepare() {
|
||||
cd $_srcname
|
||||
|
||||
# fix NFSv4 mounting issue regression - FS#73838 / FS#73860
|
||||
# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/?id=6f2836341d8a39e1e000572b10959347d7e61fd9
|
||||
patch -Rp1 -i ../0006_fix_NFSv4_mount_regression.diff
|
||||
|
||||
# FS#75226 - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-34918
|
||||
patch -Np1 -i ../0100-netfilter-nf_tables-stricter-validation-of-element-data.diff
|
||||
patch -Np1 -i ../0101-netfilter-nft_set_pipapo-release-elements-in-clone-from-abort-path.diff
|
||||
|
||||
echo "Setting version..."
|
||||
scripts/setlocalversion --save-scmversion
|
||||
echo "-$pkgrel" > localversion.10-pkgrel
|
||||
|
@ -74,8 +62,8 @@ prepare() {
|
|||
echo "Setting config..."
|
||||
cp ../config .config
|
||||
make olddefconfig
|
||||
# diff -u ../config .config || :
|
||||
#return 1
|
||||
diff -u ../config .config || :
|
||||
|
||||
make -s kernelrelease > version
|
||||
echo "Prepared $pkgbase version $(<version)"
|
||||
}
|
||||
|
@ -90,7 +78,7 @@ _package() {
|
|||
depends=(coreutils kmod initramfs)
|
||||
optdepends=('wireless-regdb: to set the correct wireless channels of your country'
|
||||
'linux-firmware: firmware images needed for some devices')
|
||||
provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE)
|
||||
provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE KSMBD-MODULE)
|
||||
replaces=(wireguard-lts)
|
||||
|
||||
cd $_srcname
|
||||
|
@ -127,11 +115,11 @@ _package-headers() {
|
|||
install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile
|
||||
cp -t "$builddir" -a scripts
|
||||
|
||||
# add objtool for external module building and enabled VALIDATION_STACK option
|
||||
# required when STACK_VALIDATION is enabled
|
||||
install -Dt "$builddir/tools/objtool" tools/objtool/objtool
|
||||
|
||||
# add xfs and shmem for aufs building
|
||||
mkdir -p "$builddir"/{fs/xfs,mm}
|
||||
# required when DEBUG_INFO_BTF_MODULES is enabled
|
||||
install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids
|
||||
|
||||
echo "Installing headers..."
|
||||
cp -t "$builddir" -a include
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.15.53 Kernel Configuration
|
||||
# Linux/x86 5.15.70 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.1.0"
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
CONFIG_GCC_VERSION=120100
|
||||
CONFIG_GCC_VERSION=120200
|
||||
CONFIG_CLANG_VERSION=0
|
||||
CONFIG_AS_IS_GNU=y
|
||||
CONFIG_AS_VERSION=23800
|
||||
CONFIG_AS_VERSION=23900
|
||||
CONFIG_LD_IS_BFD=y
|
||||
CONFIG_LD_VERSION=23800
|
||||
CONFIG_LD_VERSION=23900
|
||||
CONFIG_LLD_VERSION=0
|
||||
CONFIG_CC_CAN_LINK=y
|
||||
CONFIG_CC_CAN_LINK_STATIC=y
|
||||
|
@ -117,7 +117,7 @@ CONFIG_BPF_SYSCALL=y
|
|||
CONFIG_BPF_JIT=y
|
||||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
CONFIG_BPF_JIT_DEFAULT_ON=y
|
||||
# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set
|
||||
CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
|
||||
CONFIG_USERMODE_DRIVER=y
|
||||
CONFIG_BPF_PRELOAD=y
|
||||
CONFIG_BPF_PRELOAD_UMD=m
|
||||
|
@ -127,7 +127,7 @@ CONFIG_BPF_LSM=y
|
|||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_SCHED_CORE is not set
|
||||
CONFIG_SCHED_CORE=y
|
||||
|
||||
#
|
||||
# CPU/Task time and stats accounting
|
||||
|
@ -345,9 +345,6 @@ CONFIG_X86_FEATURE_NAMES=y
|
|||
CONFIG_X86_X2APIC=y
|
||||
CONFIG_X86_MPPARSE=y
|
||||
# CONFIG_GOLDFISH is not set
|
||||
CONFIG_RETPOLINE=y
|
||||
CONFIG_CC_HAS_SLS=y
|
||||
# CONFIG_SLS is not set
|
||||
CONFIG_X86_CPU_RESCTRL=y
|
||||
# CONFIG_X86_EXTENDED_PLATFORM is not set
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
|
@ -489,7 +486,9 @@ CONFIG_SCHED_HRTICK=y
|
|||
CONFIG_KEXEC=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
CONFIG_ARCH_HAS_KEXEC_PURGATORY=y
|
||||
# CONFIG_KEXEC_SIG is not set
|
||||
CONFIG_KEXEC_SIG=y
|
||||
# CONFIG_KEXEC_SIG_FORCE is not set
|
||||
CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_KEXEC_JUMP=y
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
|
@ -513,6 +512,16 @@ CONFIG_HAVE_LIVEPATCH=y
|
|||
# CONFIG_LIVEPATCH is not set
|
||||
# end of Processor type and features
|
||||
|
||||
CONFIG_CC_HAS_SLS=y
|
||||
CONFIG_CC_HAS_RETURN_THUNK=y
|
||||
CONFIG_SPECULATION_MITIGATIONS=y
|
||||
CONFIG_PAGE_TABLE_ISOLATION=y
|
||||
CONFIG_RETPOLINE=y
|
||||
CONFIG_RETHUNK=y
|
||||
CONFIG_CPU_UNRET_ENTRY=y
|
||||
CONFIG_CPU_IBPB_ENTRY=y
|
||||
CONFIG_CPU_IBRS_ENTRY=y
|
||||
CONFIG_SLS=y
|
||||
CONFIG_ARCH_HAS_ADD_PAGES=y
|
||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
|
||||
|
@ -705,7 +714,7 @@ CONFIG_HAVE_KVM_PM_NOTIFIER=y
|
|||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM=m
|
||||
CONFIG_KVM_INTEL=m
|
||||
# CONFIG_X86_SGX_KVM is not set
|
||||
CONFIG_X86_SGX_KVM=y
|
||||
CONFIG_KVM_AMD=m
|
||||
CONFIG_KVM_AMD_SEV=y
|
||||
CONFIG_KVM_XEN=y
|
||||
|
@ -741,6 +750,7 @@ CONFIG_HAVE_KPROBES_ON_FTRACE=y
|
|||
CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
|
||||
CONFIG_HAVE_NMI=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
|
@ -1063,7 +1073,9 @@ CONFIG_SECRETMEM=y
|
|||
#
|
||||
# Data Access Monitoring
|
||||
#
|
||||
# CONFIG_DAMON is not set
|
||||
CONFIG_DAMON=y
|
||||
CONFIG_DAMON_VADDR=y
|
||||
CONFIG_DAMON_DBGFS=y
|
||||
# end of Data Access Monitoring
|
||||
# end of Memory Management options
|
||||
|
||||
|
@ -9577,7 +9589,7 @@ CONFIG_TMPFS_INODE64=y
|
|||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y
|
||||
CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON=y
|
||||
# CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
|
@ -9829,7 +9841,6 @@ CONFIG_SECURITY_DMESG_RESTRICT=y
|
|||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITYFS=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
CONFIG_PAGE_TABLE_ISOLATION=y
|
||||
CONFIG_SECURITY_INFINIBAND=y
|
||||
CONFIG_SECURITY_NETWORK_XFRM=y
|
||||
CONFIG_SECURITY_PATH=y
|
||||
|
@ -9873,19 +9884,27 @@ CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
|
|||
# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set
|
||||
# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set
|
||||
CONFIG_SECURITY_LANDLOCK=y
|
||||
# CONFIG_INTEGRITY is not set
|
||||
CONFIG_INTEGRITY=y
|
||||
CONFIG_INTEGRITY_SIGNATURE=y
|
||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||
CONFIG_INTEGRITY_TRUSTED_KEYRING=y
|
||||
CONFIG_INTEGRITY_PLATFORM_KEYRING=y
|
||||
CONFIG_LOAD_UEFI_KEYS=y
|
||||
CONFIG_INTEGRITY_AUDIT=y
|
||||
# CONFIG_IMA is not set
|
||||
# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set
|
||||
# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
|
||||
# CONFIG_EVM is not set
|
||||
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
|
||||
# CONFIG_DEFAULT_SECURITY_SMACK is not set
|
||||
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
|
||||
# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
|
||||
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
CONFIG_LSM="landlock,lockdown,yama,bpf"
|
||||
CONFIG_LSM="landlock,lockdown,yama,integrity,bpf"
|
||||
|
||||
#
|
||||
# Kernel hardening options
|
||||
#
|
||||
CONFIG_GCC_PLUGIN_STRUCTLEAK=y
|
||||
|
||||
#
|
||||
# Memory initialization
|
||||
|
@ -9895,10 +9914,9 @@ CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
|
|||
# CONFIG_INIT_STACK_NONE is not set
|
||||
# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set
|
||||
# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set
|
||||
CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y
|
||||
# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set
|
||||
# CONFIG_INIT_STACK_ALL_PATTERN is not set
|
||||
# CONFIG_INIT_STACK_ALL_ZERO is not set
|
||||
# CONFIG_GCC_PLUGIN_STRUCTLEAK_VERBOSE is not set
|
||||
CONFIG_INIT_STACK_ALL_ZERO=y
|
||||
# CONFIG_GCC_PLUGIN_STACKLEAK is not set
|
||||
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
|
||||
# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
|
||||
|
@ -10009,8 +10027,7 @@ CONFIG_CRYPTO_CRC32=m
|
|||
CONFIG_CRYPTO_CRC32_PCLMUL=m
|
||||
CONFIG_CRYPTO_XXHASH=m
|
||||
CONFIG_CRYPTO_BLAKE2B=m
|
||||
CONFIG_CRYPTO_BLAKE2S=m
|
||||
CONFIG_CRYPTO_BLAKE2S_X86=m
|
||||
CONFIG_CRYPTO_BLAKE2S_X86=y
|
||||
CONFIG_CRYPTO_CRCT10DIF=y
|
||||
CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m
|
||||
CONFIG_CRYPTO_GHASH=m
|
||||
|
@ -10290,6 +10307,7 @@ CONFIG_LRU_CACHE=m
|
|||
CONFIG_CLZ_TAB=y
|
||||
CONFIG_IRQ_POLL=y
|
||||
CONFIG_MPILIB=y
|
||||
CONFIG_SIGNATURE=y
|
||||
CONFIG_DIMLIB=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
|
@ -10596,7 +10614,6 @@ CONFIG_IO_STRICT_DEVMEM=y
|
|||
#
|
||||
# x86 Debugging
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
|
||||
CONFIG_EARLY_PRINTK_USB=y
|
||||
# CONFIG_X86_VERBOSE_BOOTUP is not set
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -10678,7 +10695,7 @@ CONFIG_ASYNC_RAID6_TEST=m
|
|||
# CONFIG_TEST_FPU is not set
|
||||
# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set
|
||||
CONFIG_ARCH_USE_MEMTEST=y
|
||||
# CONFIG_MEMTEST is not set
|
||||
CONFIG_MEMTEST=y
|
||||
# CONFIG_HYPERV_TESTING is not set
|
||||
# end of Kernel Testing and Coverage
|
||||
# end of Kernel hacking
|
||||
|
|
Loading…
Reference in New Issue