* [PATCH v2 0/3] mtd: maps: vmu-flash: Fix build and runtime errors
@ 2026-04-27 11:47 Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 1/3] mtd: maps: vmu-flash: fix build error due to missing include of linux/device.h Florian Fuchs
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Florian Fuchs @ 2026-04-27 11:47 UTC (permalink / raw)
To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, linux-mtd
Cc: linux-sh, linux-kernel, Rich Felker, John Paul Adrian Glaubitz,
Florian Fuchs, Artur Rojek
Hi all,
This small series fixes build and runtime errors in the vmu-flash driver
(enabled by CONFIG_MTD_VMU) and the included maple.h. These changes were
verified on real Dreamcast hardware with a physical VMU. The VMU can now
be successfully probed, read and written with MTD tools like mtdinfo and
mtd_debug. Previously, the driver failed to build or crashed during
probing.
bash-5.3# mtdinfo /dev/mtd0
mtd0
Name: vmu2.1.0
Type: mlc-nand
Eraseblock size: 512 bytes
Amount of eraseblocks: 256 (131072 bytes, 128.0 KiB)
Minimum input/output unit size: 512 bytes
Sub-page size: 512 bytes
Character device major/minor: 90:0
Bad blocks are allowed: true
Device is writable: true
Thanks,
Florian
---
v1->v2: Rebased patches and fixed the hotplug issues in other sh
patches.
v1: https://lore.kernel.org/linux-mtd/20251117224408.498449-1-fuchsfl@gmail.com/
The original v1 was postponed to fix the hotplug issue and other runtime
panics, that are fixed in the following patch:
"[PATCH v2] sh: maple: fix empty port handling":
https://lore.kernel.org/linux-sh/20260426212714.2286437-1-fuchsfl@gmail.com/
Note that in order to use the VMUs while there are empty ports, it
requires the above patch.
Florian Fuchs (3):
mtd: maps: vmu-flash: fix build error due to missing include of
linux/device.h
mtd: maps: vmu-flash: fix fault in unaligned fixup
mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization
drivers/mtd/maps/vmu-flash.c | 7 ++++---
include/linux/maple.h | 3 +--
2 files changed, 5 insertions(+), 5 deletions(-)
base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
--
2.43.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/3] mtd: maps: vmu-flash: fix build error due to missing include of linux/device.h
2026-04-27 11:47 [PATCH v2 0/3] mtd: maps: vmu-flash: Fix build and runtime errors Florian Fuchs
@ 2026-04-27 11:47 ` Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 2/3] mtd: maps: vmu-flash: fix fault in unaligned fixup Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 3/3] mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization Florian Fuchs
2 siblings, 0 replies; 6+ messages in thread
From: Florian Fuchs @ 2026-04-27 11:47 UTC (permalink / raw)
To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, linux-mtd
Cc: linux-sh, linux-kernel, Rich Felker, John Paul Adrian Glaubitz,
Florian Fuchs, Artur Rojek
Fix build error by adding the missing include of linux/device.h
linux/maple.h embeds struct device via struct maple_device, which
requires the definition. Otherwise results in build error:
./include/linux/maple.h:81:16: error: field 'dev' has incomplete type
struct device dev;
^~~
./include/linux/maple.h:86:23: error: field 'drv' has incomplete type
struct device_driver drv;
^~~
Fixes: 313162d0b838 ("device.h: audit and cleanup users in main include dir")
Signed-off-by: Florian Fuchs <fuchsfl@gmail.com>
---
v1->v2: no functional change, just rebase patch
v1: https://lore.kernel.org/lkml/20251117224408.498449-2-fuchsfl@gmail.com/
include/linux/maple.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/linux/maple.h b/include/linux/maple.h
index 3be4e567473c..22f2930251ed 100644
--- a/include/linux/maple.h
+++ b/include/linux/maple.h
@@ -2,10 +2,9 @@
#ifndef __LINUX_MAPLE_H
#define __LINUX_MAPLE_H
+#include <linux/device.h>
#include <mach/maple.h>
-struct device;
-
/* Maple Bus command and response codes */
enum maple_code {
MAPLE_RESPONSE_FILEERR = -5,
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/3] mtd: maps: vmu-flash: fix fault in unaligned fixup
2026-04-27 11:47 [PATCH v2 0/3] mtd: maps: vmu-flash: Fix build and runtime errors Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 1/3] mtd: maps: vmu-flash: fix build error due to missing include of linux/device.h Florian Fuchs
@ 2026-04-27 11:47 ` Florian Fuchs
2026-04-27 12:34 ` Miquel Raynal
2026-04-27 11:47 ` [PATCH v2 3/3] mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization Florian Fuchs
2 siblings, 1 reply; 6+ messages in thread
From: Florian Fuchs @ 2026-04-27 11:47 UTC (permalink / raw)
To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, linux-mtd
Cc: linux-sh, linux-kernel, Rich Felker, John Paul Adrian Glaubitz,
Florian Fuchs, Artur Rojek
Use kzalloc_obj() / kzalloc_objs() to allocate the memcard structs,
instead of kmalloc_obj() / kmalloc_objs() to prevent access to
uninitialized data.
Fixes runtime error: Fault in unaligned fixup: 0000 [#1] at
mtd_get_fact_prot_info.
Signed-off-by: Florian Fuchs <fuchsfl@gmail.com>
---
v1->v2: no functional change, just rebased.
v1: https://lore.kernel.org/lkml/20251117224408.498449-3-fuchsfl@gmail.com/
drivers/mtd/maps/vmu-flash.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/maps/vmu-flash.c b/drivers/mtd/maps/vmu-flash.c
index 75e06d249ce9..b76d0609d1b7 100644
--- a/drivers/mtd/maps/vmu-flash.c
+++ b/drivers/mtd/maps/vmu-flash.c
@@ -609,7 +609,7 @@ static int vmu_connect(struct maple_device *mdev)
basic_flash_data = be32_to_cpu(mdev->devinfo.function_data[c - 1]);
- card = kmalloc_obj(struct memcard);
+ card = kzalloc_obj(struct memcard);
if (!card) {
error = -ENOMEM;
goto fail_nomem;
@@ -627,13 +627,13 @@ static int vmu_connect(struct maple_device *mdev)
* Not sure there are actually any multi-partition devices in the
* real world, but the hardware supports them, so, so will we
*/
- card->parts = kmalloc_objs(struct vmupart, card->partitions);
+ card->parts = kzalloc_objs(struct vmupart, card->partitions);
if (!card->parts) {
error = -ENOMEM;
goto fail_partitions;
}
- card->mtd = kmalloc_objs(struct mtd_info, card->partitions);
+ card->mtd = kzalloc_objs(struct mtd_info, card->partitions);
if (!card->mtd) {
error = -ENOMEM;
goto fail_mtd_info;
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/3] mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization
2026-04-27 11:47 [PATCH v2 0/3] mtd: maps: vmu-flash: Fix build and runtime errors Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 1/3] mtd: maps: vmu-flash: fix build error due to missing include of linux/device.h Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 2/3] mtd: maps: vmu-flash: fix fault in unaligned fixup Florian Fuchs
@ 2026-04-27 11:47 ` Florian Fuchs
2026-04-27 12:35 ` Miquel Raynal
2 siblings, 1 reply; 6+ messages in thread
From: Florian Fuchs @ 2026-04-27 11:47 UTC (permalink / raw)
To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, linux-mtd
Cc: linux-sh, linux-kernel, Rich Felker, John Paul Adrian Glaubitz,
Florian Fuchs, Artur Rojek
The mtd_info contains a struct device, which must be linked to its
parent. Without this, the initialization of the MTD fails with a NULL
pointer dereference.
Signed-off-by: Florian Fuchs <fuchsfl@gmail.com>
---
v1->v2: no functional change
v1: https://lore.kernel.org/lkml/20251117224408.498449-4-fuchsfl@gmail.com/
drivers/mtd/maps/vmu-flash.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/mtd/maps/vmu-flash.c b/drivers/mtd/maps/vmu-flash.c
index b76d0609d1b7..10244e6731d0 100644
--- a/drivers/mtd/maps/vmu-flash.c
+++ b/drivers/mtd/maps/vmu-flash.c
@@ -547,6 +547,7 @@ static void vmu_queryblocks(struct mapleq *mq)
mpart->partition = card->partition;
mtd_cur->priv = mpart;
mtd_cur->owner = THIS_MODULE;
+ mtd_cur->dev.parent = &mdev->dev;
pcache = kzalloc_obj(struct vmu_cache);
if (!pcache)
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/3] mtd: maps: vmu-flash: fix fault in unaligned fixup
2026-04-27 11:47 ` [PATCH v2 2/3] mtd: maps: vmu-flash: fix fault in unaligned fixup Florian Fuchs
@ 2026-04-27 12:34 ` Miquel Raynal
0 siblings, 0 replies; 6+ messages in thread
From: Miquel Raynal @ 2026-04-27 12:34 UTC (permalink / raw)
To: Florian Fuchs
Cc: Richard Weinberger, Vignesh Raghavendra, linux-mtd, linux-sh,
linux-kernel, Rich Felker, John Paul Adrian Glaubitz, Artur Rojek
On 27/04/2026 at 13:47:49 +02, Florian Fuchs <fuchsfl@gmail.com> wrote:
> Use kzalloc_obj() / kzalloc_objs() to allocate the memcard structs,
> instead of kmalloc_obj() / kmalloc_objs() to prevent access to
> uninitialized data.
>
> Fixes runtime error: Fault in unaligned fixup: 0000 [#1] at
> mtd_get_fact_prot_info.
Shall this patch receive a Fixes tag if it actually fixes runtime
behaviour?
Also, please add the 'Cc: stable' line in your fixes.
Thanks,
Miquèl
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 3/3] mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization
2026-04-27 11:47 ` [PATCH v2 3/3] mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization Florian Fuchs
@ 2026-04-27 12:35 ` Miquel Raynal
0 siblings, 0 replies; 6+ messages in thread
From: Miquel Raynal @ 2026-04-27 12:35 UTC (permalink / raw)
To: Florian Fuchs
Cc: Richard Weinberger, Vignesh Raghavendra, linux-mtd, linux-sh,
linux-kernel, Rich Felker, John Paul Adrian Glaubitz, Artur Rojek
On 27/04/2026 at 13:47:50 +02, Florian Fuchs <fuchsfl@gmail.com> wrote:
> The mtd_info contains a struct device, which must be linked to its
> parent. Without this, the initialization of the MTD fails with a NULL
> pointer dereference.
>
> Signed-off-by: Florian Fuchs <fuchsfl@gmail.com>
> ---
For how long as this been broken? Is it really used?
Anyway, also here you will need to Cc stable and add a fixes tag.
Thanks,
Miquèl
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-04-27 12:35 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27 11:47 [PATCH v2 0/3] mtd: maps: vmu-flash: Fix build and runtime errors Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 1/3] mtd: maps: vmu-flash: fix build error due to missing include of linux/device.h Florian Fuchs
2026-04-27 11:47 ` [PATCH v2 2/3] mtd: maps: vmu-flash: fix fault in unaligned fixup Florian Fuchs
2026-04-27 12:34 ` Miquel Raynal
2026-04-27 11:47 ` [PATCH v2 3/3] mtd: maps: vmu-flash: Fix NULL pointer dereference in initialization Florian Fuchs
2026-04-27 12:35 ` Miquel Raynal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox