mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-13 07:54:14 +00:00
Update patch with upstream version and automatically refresh with make target/linux/refresh. Also backport one additional fix patch for NAND patch and drop a patch merged upstream. Link: https://github.com/openwrt/openwrt/pull/17725 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
85 lines
2.9 KiB
Diff
85 lines
2.9 KiB
Diff
From b9371866799d67a80be0ea9e01bd41987db22f26 Mon Sep 17 00:00:00 2001
|
||
From: Md Sadre Alam <quic_mdalam@quicinc.com>
|
||
Date: Mon, 6 Jan 2025 18:45:58 +0530
|
||
Subject: [PATCH] mtd: rawnand: qcom: Fix build issue on x86 architecture
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
Fix a buffer overflow issue in qcom_clear_bam_transaction by using
|
||
struct_group to group related fields and avoid FORTIFY_SOURCE warnings.
|
||
|
||
On x86 architecture, the following error occurs due to warnings being
|
||
treated as errors:
|
||
|
||
In function ‘fortify_memset_chk’,
|
||
inlined from ‘qcom_clear_bam_transaction’ at
|
||
drivers/mtd/nand/qpic_common.c:88:2:
|
||
./include/linux/fortify-string.h:480:25: error: call to ‘__write_overflow_field’
|
||
declared with attribute warning: detected write beyond size of field
|
||
(1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
|
||
480 | __write_overflow_field(p_size_field, size);
|
||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
LD [M] drivers/mtd/nand/nandcore.o
|
||
CC [M] drivers/w1/masters/mxc_w1.o
|
||
cc1: all warnings being treated as errors
|
||
|
||
This patch addresses the issue by grouping the related fields in
|
||
struct bam_transaction using struct_group and updating the memset call
|
||
accordingly.
|
||
|
||
Fixes: 8c52932da5e6 ("mtd: rawnand: qcom: cleanup qcom_nandc driver")
|
||
Signed-off-by: Md Sadre Alam <quic_mdalam@quicinc.com>
|
||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||
---
|
||
drivers/mtd/nand/qpic_common.c | 2 +-
|
||
include/linux/mtd/nand-qpic-common.h | 19 +++++++++++--------
|
||
2 files changed, 12 insertions(+), 9 deletions(-)
|
||
|
||
diff --git a/drivers/mtd/nand/qpic_common.c b/drivers/mtd/nand/qpic_common.c
|
||
index 8abbb960a7ce..e0ed25b5afea 100644
|
||
--- a/drivers/mtd/nand/qpic_common.c
|
||
+++ b/drivers/mtd/nand/qpic_common.c
|
||
@@ -85,7 +85,7 @@ void qcom_clear_bam_transaction(struct qcom_nand_controller *nandc)
|
||
if (!nandc->props->supports_bam)
|
||
return;
|
||
|
||
- memset(&bam_txn->bam_ce_pos, 0, sizeof(u32) * 8);
|
||
+ memset(&bam_txn->bam_positions, 0, sizeof(bam_txn->bam_positions));
|
||
bam_txn->last_data_desc = NULL;
|
||
|
||
sg_init_table(bam_txn->cmd_sgl, nandc->max_cwperpage *
|
||
diff --git a/include/linux/mtd/nand-qpic-common.h b/include/linux/mtd/nand-qpic-common.h
|
||
index e79c79775eb8..4d9b736ff8b7 100644
|
||
--- a/include/linux/mtd/nand-qpic-common.h
|
||
+++ b/include/linux/mtd/nand-qpic-common.h
|
||
@@ -254,14 +254,17 @@ struct bam_transaction {
|
||
struct dma_async_tx_descriptor *last_data_desc;
|
||
struct dma_async_tx_descriptor *last_cmd_desc;
|
||
struct completion txn_done;
|
||
- u32 bam_ce_pos;
|
||
- u32 bam_ce_start;
|
||
- u32 cmd_sgl_pos;
|
||
- u32 cmd_sgl_start;
|
||
- u32 tx_sgl_pos;
|
||
- u32 tx_sgl_start;
|
||
- u32 rx_sgl_pos;
|
||
- u32 rx_sgl_start;
|
||
+ struct_group(bam_positions,
|
||
+ u32 bam_ce_pos;
|
||
+ u32 bam_ce_start;
|
||
+ u32 cmd_sgl_pos;
|
||
+ u32 cmd_sgl_start;
|
||
+ u32 tx_sgl_pos;
|
||
+ u32 tx_sgl_start;
|
||
+ u32 rx_sgl_pos;
|
||
+ u32 rx_sgl_start;
|
||
+
|
||
+ );
|
||
};
|
||
|
||
/*
|
||
--
|
||
2.47.1
|
||
|