Skip to contentSkip to conversation

firmware: meson_sm: Fix memcpy vs iomem type warnings

PATCH Applied Kees Cook 2 participants 6 messages Oct 12, 2022 – Jun 1, 2023 Arm/Amlogic Meson SoC support

lore
Share & tools
lore

Kees Cook

author
#0 lore raw

PATCH 1/1 firmware: meson_sm: Fix memcpy vs iomem type warnings

Use memcpy_{toio,fromio}() instead of memcpy(). Silences warnings from Sparse:

drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 2 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base

While here, fix this warning as well:

drivers/firmware/meson/meson_sm.c:85:24: warning: Using plain integer as NULL pointer

---
 drivers/firmware/meson/meson_sm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/firmware/meson/meson_sm.c +3 -3
index 77aa5c6398aa..4efde225a580 100644
@@ -82,7 +82,7 @@ static void __iomem *meson_sm_map_shmem(u32 cmd_shmem, unsigned int size)
 
 	sm_phy_base = __meson_sm_call(cmd_shmem, 0, 0, 0, 0, 0);
 	if (!sm_phy_base)
-		return 0;
+		return NULL;
 
 	return ioremap_cache(sm_phy_base, size);
 }
@@ -167,7 +167,7 @@ int meson_sm_call_read(struct meson_sm_firmware *fw, void *buffer,
 		size = bsize;
 
 	if (buffer)
-		memcpy(buffer, fw->sm_shmem_out_base, size);
+		memcpy_fromio(buffer, fw->sm_shmem_out_base, size);
 
 	return ret;
 }
@@ -203,7 +203,7 @@ int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer,
 	if (!fw->chip->cmd_shmem_in_base)
 		return -EINVAL;
 
-	memcpy(fw->sm_shmem_in_base, buffer, size);
+	memcpy_toio(fw->sm_shmem_in_base, buffer, size);
 
 	if (meson_sm_call(fw, cmd_index, &written, arg0, arg1, arg2, arg3, arg4) < 0)
 		return -EINVAL;
Signature · 7 lines
2.34.1


_______________________________________________
linux-amlogic mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-amlogic
maintainer Acked-by on v1 1/1
#1 lore raw
Quoted 62 lines · Kees Cook

Use memcpy_{toio,fromio}() instead of memcpy(). Silences warnings from Sparse:

drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 2 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base

While here, fix this warning as well:

drivers/firmware/meson/meson_sm.c:85:24: warning: Using plain integer as NULL pointer

---
  drivers/firmware/meson/meson_sm.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
drivers/firmware/meson/meson_sm.c +2 -2
index 77aa5c6398aa..4efde225a580 100644
@@ -82,7 +82,7 @@ static void __iomem *meson_sm_map_shmem(u32 cmd_shmem, unsigned int size)
 
  	sm_phy_base = __meson_sm_call(cmd_shmem, 0, 0, 0, 0, 0);
  	if (!sm_phy_base)
-		return 0;
+		return NULL;
 
  	return ioremap_cache(sm_phy_base, size);
  }
@@ -167,7 +167,7 @@ int meson_sm_call_read(struct meson_sm_firmware *fw, void *buffer,
  		size = bsize;
 
  	if (buffer)
-		memcpy(buffer, fw->sm_shmem_out_base, size);
+		memcpy_fromio(buffer, fw->sm_shmem_out_base, size);
 
  	return ret;
  }

drivers/firmware/meson/meson_sm.c int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer, · line 209

Quoted 8 lines
drivers/firmware/meson/meson_sm.c +1 -1
@@ -203,7 +203,7 @@ int meson_sm_call_write(struct meson_sm_firmware *fw, void *buffer,
  	if (!fw->chip->cmd_shmem_in_base)
  		return -EINVAL;
 
-	memcpy(fw->sm_shmem_in_base, buffer, size);
+	memcpy_toio(fw->sm_shmem_in_base, buffer, size);
 
  	if (meson_sm_call(fw, cmd_index, &written, arg0, arg1, arg2, arg3, arg4) < 0)
  		return -EINVAL;

Thanks,

maintainer Applied
#2 lore raw
In reply to Kees Cook

Hi,

Quoted 22 lines · Kees Cook

Use memcpy_{toio,fromio}() instead of memcpy(). Silences warnings from Sparse:

drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 2 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base

Quoted 1 line

[...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.2/drivers)

[1/1] firmware: meson_sm: Fix memcpy vs iomem type warnings

      https://git.kernel.org/amlogic/c/7dc69c7d073e6004a281db8f7f15cf6ebf702ea0

These changes has been applied on the intermediate git tree [1].

The v6.2/drivers branch will then be sent via a formal Pull Request to the Linux SoC maintainers for inclusion in their intermediate git branches in order to be sent to Linus during the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate kernel and as soon they appear on the Linux master branch they will be backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3], people are encouraged testing these pre-release kernels and report issues on the relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Signature · 1 line
Neil
author
#3 lore raw

*thread necromancy*

Quoted 46 lines · Neil Armstrong

Hi,

Quoted 22 lines · Kees Cook

Use memcpy_{toio,fromio}() instead of memcpy(). Silences warnings from Sparse:

drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 2 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base

Quoted 1 line

[...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.2/drivers)

[1/1] firmware: meson_sm: Fix memcpy vs iomem type warnings

      https://git.kernel.org/amlogic/c/7dc69c7d073e6004a281db8f7f15cf6ebf702ea0

These changes has been applied on the intermediate git tree [1].

The v6.2/drivers branch will then be sent via a formal Pull Request to the Linux SoC maintainers for inclusion in their intermediate git branches in order to be sent to Linus during the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate kernel and as soon they appear on the Linux master branch they will be backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3], people are encouraged testing these pre-release kernels and report issues on the relevant mailing-lists.

Quoted 6 lines

If problems are discovered on those changes, please submit a signed-off-by revert patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Hi! This change seems to have never been mainlined and seems to have disappeared from linux-next.

Signature · 1 line
Kees Cook
maintainer
#4 lore raw
Quoted 52 lines · Kees Cook

*thread necromancy*

Quoted 49 lines · Neil Armstrong

Hi,

Quoted 22 lines · Kees Cook

Use memcpy_{toio,fromio}() instead of memcpy(). Silences warnings from Sparse:

drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 2 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base

Quoted 1 line

[...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.2/drivers)

[1/1] firmware: meson_sm: Fix memcpy vs iomem type warnings

       https://git.kernel.org/amlogic/c/7dc69c7d073e6004a281db8f7f15cf6ebf702ea0

These changes has been applied on the intermediate git tree [1].

The v6.2/drivers branch will then be sent via a formal Pull Request to the Linux SoC maintainers for inclusion in their intermediate git branches in order to be sent to Linus during the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate kernel and as soon they appear on the Linux master branch they will be backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3], people are encouraged testing these pre-release kernels and report issues on the relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert patch followed by a corrective changeset.

Quoted 7 lines
Quoted 3 lines

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Hi! This change seems to have never been mainlined and seems to have disappeared from linux-next.

Hi,

Indeed it was rejected by Arnd, but I failed to find time to investigate how to fix it

https://lore.kernel.org/all/[email protected]/

Neil

_______________________________________________
linux-amlogic mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-amlogic

author
#5 lore raw
Quoted 57 lines · Neil Armstrong
Quoted 56 lines · Kees Cook

*thread necromancy*

Quoted 52 lines · Neil Armstrong

Hi,

Quoted 22 lines · Kees Cook

Use memcpy_{toio,fromio}() instead of memcpy(). Silences warnings from Sparse:

drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:170:17: warning: incorrect type in argument 2 (different address spaces)
drivers/firmware/meson/meson_sm.c:170:17: expected void const *
drivers/firmware/meson/meson_sm.c:170:17: got void [noderef] __iomem *sm_shmem_out_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void const *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base
drivers/firmware/meson/meson_sm.c:206:9: warning: incorrect type in argument 1 (different address spaces)
drivers/firmware/meson/meson_sm.c:206:9: expected void *
drivers/firmware/meson/meson_sm.c:206:9: got void [noderef] __iomem *sm_shmem_in_base

Quoted 1 line

[...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.2/drivers)

[1/1] firmware: meson_sm: Fix memcpy vs iomem type warnings

       https://git.kernel.org/amlogic/c/7dc69c7d073e6004a281db8f7f15cf6ebf702ea0

These changes has been applied on the intermediate git tree [1].

The v6.2/drivers branch will then be sent via a formal Pull Request to the Linux SoC maintainers for inclusion in their intermediate git branches in order to be sent to Linus during the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate kernel and as soon they appear on the Linux master branch they will be backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3], people are encouraged testing these pre-release kernels and report issues on the relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Quoted 8 lines
Quoted 3 lines

Hi! This change seems to have never been mainlined and seems to have disappeared from linux-next.

Hi,

Indeed it was rejected by Arnd, but I failed to find time to investigate how to fix it

https://lore.kernel.org/all/[email protected]/

Ah-ha! Thanks for the pointer.

Signature · 1 line
Kees Cook