summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorRosen Penev <rosenp@gmail.com>2026-05-26 01:04:40 +0300
committerMiquel Raynal <miquel.raynal@bootlin.com>2026-05-27 12:10:21 +0300
commit7fbdbc7d028a20a78b7d28a9510a216c76b5fbfd (patch)
treed43b8a7eacc8f322c7eba18290b0d3a83379beae /include/linux
parent8e4531667d718e2e9b193928cf9b2497fa0d01ef (diff)
downloadlinux-7fbdbc7d028a20a78b7d28a9510a216c76b5fbfd.tar.xz
mtd: rawnand: qcom: embed nand_controller into qcom_nand_controller
The qcom_nand_controller had a struct nand_controller *controller pointer that was assigned to (struct nand_controller *)&nandc[1], with the allocation oversized by sizeof(*controller) to make room. get_qcom_nand_controller() then walked backwards from chip->controller using sizeof()-based arithmetic to recover the enclosing nandc. Embed the nand_controller directly into qcom_nand_controller and use container_of() in get_qcom_nand_controller(). The header now needs the full rawnand.h definition rather than a forward declaration. Assisted-by: Claude:Opus-4.7 Signed-off-by: Rosen Penev <rosenp@gmail.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mtd/nand-qpic-common.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/mtd/nand-qpic-common.h b/include/linux/mtd/nand-qpic-common.h
index e8201d1b7cf9..006ca8c978a9 100644
--- a/include/linux/mtd/nand-qpic-common.h
+++ b/include/linux/mtd/nand-qpic-common.h
@@ -9,6 +9,8 @@
#ifndef __MTD_NAND_QPIC_COMMON_H__
#define __MTD_NAND_QPIC_COMMON_H__
+#include <linux/mtd/rawnand.h>
+
/* NANDc reg offsets */
#define NAND_FLASH_CMD 0x00
#define NAND_ADDR0 0x04
@@ -394,7 +396,7 @@ struct qcom_nand_controller {
const struct qcom_nandc_props *props;
- struct nand_controller *controller;
+ struct nand_controller controller;
struct qpic_spi_nand *qspi;
struct list_head host_list;