From: Sasha Levin Date: Tue, 5 Nov 2024 10:20:02 +0000 (-0500) Subject: Drop net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch X-Git-Tag: v4.19.323~92 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9e22a55da5e462d311ec9edd16415c2ce66889d9;p=thirdparty%2Fkernel%2Fstable-queue.git Drop net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch Signed-off-by: Sasha Levin --- diff --git a/queue-6.11/net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch b/queue-6.11/net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch deleted file mode 100644 index ef0bf08d985..00000000000 --- a/queue-6.11/net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch +++ /dev/null @@ -1,115 +0,0 @@ -From d3488bb5a2e123a6c1fff8992ee4fe95bd397598 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 25 Oct 2024 17:29:37 +0800 -Subject: net: hns3: fixed hclge_fetch_pf_reg accesses bar space out of bounds - issue - -From: Hao Lan - -[ Upstream commit 3e22b7de34cbdb991a2c9c5413eeb8a6fb7da2a5 ] - -The TQP BAR space is divided into two segments. TQPs 0-1023 and TQPs -1024-1279 are in different BAR space addresses. However, -hclge_fetch_pf_reg does not distinguish the tqp space information when -reading the tqp space information. When the number of TQPs is greater -than 1024, access bar space overwriting occurs. -The problem of different segments has been considered during the -initialization of tqp.io_base. Therefore, tqp.io_base is directly used -when the queue is read in hclge_fetch_pf_reg. - -The error message: - -Unable to handle kernel paging request at virtual address ffff800037200000 -pc : hclge_fetch_pf_reg+0x138/0x250 [hclge] -lr : hclge_get_regs+0x84/0x1d0 [hclge] -Call trace: - hclge_fetch_pf_reg+0x138/0x250 [hclge] - hclge_get_regs+0x84/0x1d0 [hclge] - hns3_get_regs+0x2c/0x50 [hns3] - ethtool_get_regs+0xf4/0x270 - dev_ethtool+0x674/0x8a0 - dev_ioctl+0x270/0x36c - sock_do_ioctl+0x110/0x2a0 - sock_ioctl+0x2ac/0x530 - __arm64_sys_ioctl+0xa8/0x100 - invoke_syscall+0x4c/0x124 - el0_svc_common.constprop.0+0x140/0x15c - do_el0_svc+0x30/0xd0 - el0_svc+0x1c/0x2c - el0_sync_handler+0xb0/0xb4 - el0_sync+0x168/0x180 - -Fixes: 939ccd107ffc ("net: hns3: move dump regs function to a separate file") -Signed-off-by: Hao Lan -Signed-off-by: Jijie Shao -Signed-off-by: Paolo Abeni -Signed-off-by: Sasha Levin ---- - drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c | 9 +++++---- - .../net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c | 9 +++++---- - 2 files changed, 10 insertions(+), 8 deletions(-) - -diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c -index 43c1c18fa81f8..8c057192aae6e 100644 ---- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c -+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c -@@ -510,9 +510,9 @@ static int hclge_get_dfx_reg(struct hclge_dev *hdev, void *data) - static int hclge_fetch_pf_reg(struct hclge_dev *hdev, void *data, - struct hnae3_knic_private_info *kinfo) - { --#define HCLGE_RING_REG_OFFSET 0x200 - #define HCLGE_RING_INT_REG_OFFSET 0x4 - -+ struct hnae3_queue *tqp; - int i, j, reg_num; - int data_num_sum; - u32 *reg = data; -@@ -533,10 +533,11 @@ static int hclge_fetch_pf_reg(struct hclge_dev *hdev, void *data, - reg_num = ARRAY_SIZE(ring_reg_addr_list); - for (j = 0; j < kinfo->num_tqps; j++) { - reg += hclge_reg_get_tlv(HCLGE_REG_TAG_RING, reg_num, reg); -+ tqp = kinfo->tqp[j]; - for (i = 0; i < reg_num; i++) -- *reg++ = hclge_read_dev(&hdev->hw, -- ring_reg_addr_list[i] + -- HCLGE_RING_REG_OFFSET * j); -+ *reg++ = readl_relaxed(tqp->io_base - -+ HCLGE_TQP_REG_OFFSET + -+ ring_reg_addr_list[i]); - } - data_num_sum += (reg_num + HCLGE_REG_TLV_SPACE) * kinfo->num_tqps; - -diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c -index 65b9dcd381375..6ecf936c79b21 100644 ---- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c -+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c -@@ -123,10 +123,10 @@ int hclgevf_get_regs_len(struct hnae3_handle *handle) - void hclgevf_get_regs(struct hnae3_handle *handle, u32 *version, - void *data) - { --#define HCLGEVF_RING_REG_OFFSET 0x200 - #define HCLGEVF_RING_INT_REG_OFFSET 0x4 - - struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle); -+ struct hnae3_queue *tqp; - int i, j, reg_um; - u32 *reg = data; - -@@ -147,10 +147,11 @@ void hclgevf_get_regs(struct hnae3_handle *handle, u32 *version, - reg_um = sizeof(ring_reg_addr_list) / sizeof(u32); - for (j = 0; j < hdev->num_tqps; j++) { - reg += hclgevf_reg_get_tlv(HCLGEVF_REG_TAG_RING, reg_um, reg); -+ tqp = &hdev->htqp[j].q; - for (i = 0; i < reg_um; i++) -- *reg++ = hclgevf_read_dev(&hdev->hw, -- ring_reg_addr_list[i] + -- HCLGEVF_RING_REG_OFFSET * j); -+ *reg++ = readl_relaxed(tqp->io_base - -+ HCLGEVF_TQP_REG_OFFSET + -+ ring_reg_addr_list[i]); - } - - reg_um = sizeof(tqp_intr_reg_addr_list) / sizeof(u32); --- -2.43.0 - diff --git a/queue-6.11/series b/queue-6.11/series index 6d2cbbeaaca..1df393b67cf 100644 --- a/queue-6.11/series +++ b/queue-6.11/series @@ -57,7 +57,6 @@ net-hns3-fixed-reset-failure-issues-caused-by-the-in.patch net-hns3-fix-missing-features-due-to-dev-features-co.patch net-hns3-resolved-the-issue-that-the-debugfs-query-r.patch net-hns3-initialize-reset_timer-before-hclgevf_misc_.patch -net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch net-hns3-fix-kernel-crash-when-1588-is-sent-on-hip08.patch bpf-test_run-fix-live_frame-frame-update-after-a-pag.patch iomap-improve-shared-block-detection-in-iomap_unshar.patch diff --git a/queue-6.6/net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch b/queue-6.6/net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch deleted file mode 100644 index 78f22b5ef64..00000000000 --- a/queue-6.6/net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 046864a1de0cd8730f66ee9fe6c3ae1f4f04be04 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 25 Oct 2024 17:29:37 +0800 -Subject: net: hns3: fixed hclge_fetch_pf_reg accesses bar space out of bounds - issue - -From: Hao Lan - -[ Upstream commit 3e22b7de34cbdb991a2c9c5413eeb8a6fb7da2a5 ] - -The TQP BAR space is divided into two segments. TQPs 0-1023 and TQPs -1024-1279 are in different BAR space addresses. However, -hclge_fetch_pf_reg does not distinguish the tqp space information when -reading the tqp space information. When the number of TQPs is greater -than 1024, access bar space overwriting occurs. -The problem of different segments has been considered during the -initialization of tqp.io_base. Therefore, tqp.io_base is directly used -when the queue is read in hclge_fetch_pf_reg. - -The error message: - -Unable to handle kernel paging request at virtual address ffff800037200000 -pc : hclge_fetch_pf_reg+0x138/0x250 [hclge] -lr : hclge_get_regs+0x84/0x1d0 [hclge] -Call trace: - hclge_fetch_pf_reg+0x138/0x250 [hclge] - hclge_get_regs+0x84/0x1d0 [hclge] - hns3_get_regs+0x2c/0x50 [hns3] - ethtool_get_regs+0xf4/0x270 - dev_ethtool+0x674/0x8a0 - dev_ioctl+0x270/0x36c - sock_do_ioctl+0x110/0x2a0 - sock_ioctl+0x2ac/0x530 - __arm64_sys_ioctl+0xa8/0x100 - invoke_syscall+0x4c/0x124 - el0_svc_common.constprop.0+0x140/0x15c - do_el0_svc+0x30/0xd0 - el0_svc+0x1c/0x2c - el0_sync_handler+0xb0/0xb4 - el0_sync+0x168/0x180 - -Fixes: 939ccd107ffc ("net: hns3: move dump regs function to a separate file") -Signed-off-by: Hao Lan -Signed-off-by: Jijie Shao -Signed-off-by: Paolo Abeni -Signed-off-by: Sasha Levin ---- - drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c | 9 +++++---- - .../net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c | 9 +++++---- - 2 files changed, 10 insertions(+), 8 deletions(-) - -diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c -index 43c1c18fa81f8..8c057192aae6e 100644 ---- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c -+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c -@@ -510,9 +510,9 @@ static int hclge_get_dfx_reg(struct hclge_dev *hdev, void *data) - static int hclge_fetch_pf_reg(struct hclge_dev *hdev, void *data, - struct hnae3_knic_private_info *kinfo) - { --#define HCLGE_RING_REG_OFFSET 0x200 - #define HCLGE_RING_INT_REG_OFFSET 0x4 - -+ struct hnae3_queue *tqp; - int i, j, reg_num; - int data_num_sum; - u32 *reg = data; -@@ -533,10 +533,11 @@ static int hclge_fetch_pf_reg(struct hclge_dev *hdev, void *data, - reg_num = ARRAY_SIZE(ring_reg_addr_list); - for (j = 0; j < kinfo->num_tqps; j++) { - reg += hclge_reg_get_tlv(HCLGE_REG_TAG_RING, reg_num, reg); -+ tqp = kinfo->tqp[j]; - for (i = 0; i < reg_num; i++) -- *reg++ = hclge_read_dev(&hdev->hw, -- ring_reg_addr_list[i] + -- HCLGE_RING_REG_OFFSET * j); -+ *reg++ = readl_relaxed(tqp->io_base - -+ HCLGE_TQP_REG_OFFSET + -+ ring_reg_addr_list[i]); - } - data_num_sum += (reg_num + HCLGE_REG_TLV_SPACE) * kinfo->num_tqps; - -diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c -index 65b9dcd381375..6ecf936c79b21 100644 ---- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c -+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c -@@ -123,10 +123,10 @@ int hclgevf_get_regs_len(struct hnae3_handle *handle) - void hclgevf_get_regs(struct hnae3_handle *handle, u32 *version, - void *data) - { --#define HCLGEVF_RING_REG_OFFSET 0x200 - #define HCLGEVF_RING_INT_REG_OFFSET 0x4 - - struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle); -+ struct hnae3_queue *tqp; - int i, j, reg_um; - u32 *reg = data; - -@@ -147,10 +147,11 @@ void hclgevf_get_regs(struct hnae3_handle *handle, u32 *version, - reg_um = sizeof(ring_reg_addr_list) / sizeof(u32); - for (j = 0; j < hdev->num_tqps; j++) { - reg += hclgevf_reg_get_tlv(HCLGEVF_REG_TAG_RING, reg_um, reg); -+ tqp = &hdev->htqp[j].q; - for (i = 0; i < reg_um; i++) -- *reg++ = hclgevf_read_dev(&hdev->hw, -- ring_reg_addr_list[i] + -- HCLGEVF_RING_REG_OFFSET * j); -+ *reg++ = readl_relaxed(tqp->io_base - -+ HCLGEVF_TQP_REG_OFFSET + -+ ring_reg_addr_list[i]); - } - - reg_um = sizeof(tqp_intr_reg_addr_list) / sizeof(u32); --- -2.43.0 - diff --git a/queue-6.6/series b/queue-6.6/series index 61bd79d6e5a..1671dc71bdc 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -40,7 +40,6 @@ netfilter-nft_payload-sanitize-offset-and-length-bef.patch net-hns3-fix-missing-features-due-to-dev-features-co.patch net-hns3-resolved-the-issue-that-the-debugfs-query-r.patch net-hns3-initialize-reset_timer-before-hclgevf_misc_.patch -net-hns3-fixed-hclge_fetch_pf_reg-accesses-bar-space.patch net-hns3-fix-kernel-crash-when-1588-is-sent-on-hip08.patch bpf-test_run-fix-live_frame-frame-update-after-a-pag.patch iomap-improve-shared-block-detection-in-iomap_unshar.patch