mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 0/4] imd fixes
@ 2021-10-28  1:28 Antony Pavlov
  2021-10-28  1:28 ` [PATCH 1/4] imd: fix imd_is_crc32() Antony Pavlov
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Antony Pavlov @ 2021-10-28  1:28 UTC (permalink / raw)
  To: barebox

Antony Pavlov (4):
  imd: fix imd_is_crc32()
  imd: reuse imd_is_crc32()
  include/image-metadata.h: fix whitespaces in the BAREBOX_IMD_CRC macro
  bareboximd: make the '-c' option work again

 common/imd.c             | 2 +-
 include/image-metadata.h | 8 ++++----
 scripts/bareboximd.c     | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

-- 
2.33.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/4] imd: fix imd_is_crc32()
  2021-10-28  1:28 [PATCH 0/4] imd fixes Antony Pavlov
@ 2021-10-28  1:28 ` Antony Pavlov
  2021-10-28  1:28 ` [PATCH 2/4] imd: reuse imd_is_crc32() Antony Pavlov
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Antony Pavlov @ 2021-10-28  1:28 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 include/image-metadata.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/image-metadata.h b/include/image-metadata.h
index a9cb9cfe8f..439a0cba81 100644
--- a/include/image-metadata.h
+++ b/include/image-metadata.h
@@ -67,7 +67,7 @@ struct imd_entry_crc32 {
 
 static inline int imd_is_crc32(uint32_t type)
 {
-	return (type & IMD_TYPE_CRC32) ? 1 : 0;
+	return type == IMD_TYPE_CRC32;
 }
 
 static inline int imd_crc32_is_valid(uint32_t flags)
-- 
2.33.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/4] imd: reuse imd_is_crc32()
  2021-10-28  1:28 [PATCH 0/4] imd fixes Antony Pavlov
  2021-10-28  1:28 ` [PATCH 1/4] imd: fix imd_is_crc32() Antony Pavlov
@ 2021-10-28  1:28 ` Antony Pavlov
  2021-10-28  1:28 ` [PATCH 3/4] include/image-metadata.h: fix whitespaces in the BAREBOX_IMD_CRC macro Antony Pavlov
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Antony Pavlov @ 2021-10-28  1:28 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 common/imd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common/imd.c b/common/imd.c
index e1d5733c6b..0295d84d34 100644
--- a/common/imd.c
+++ b/common/imd.c
@@ -317,7 +317,7 @@ static int imd_calculate_crc32(void *input, const struct imd_header *imd_start,
 		length = ALIGN(length, 4);
 		length += sizeof(struct imd_header);
 
-		if (imd_read_type(imd) == IMD_TYPE_CRC32) {
+		if (imd_is_crc32(imd_read_type(imd))) {
 			*imd_crc = (struct imd_header *)imd;
 			debug("Found crc token at %d\n", end_ofs);
 			break;
-- 
2.33.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 3/4] include/image-metadata.h: fix whitespaces in the BAREBOX_IMD_CRC macro
  2021-10-28  1:28 [PATCH 0/4] imd fixes Antony Pavlov
  2021-10-28  1:28 ` [PATCH 1/4] imd: fix imd_is_crc32() Antony Pavlov
  2021-10-28  1:28 ` [PATCH 2/4] imd: reuse imd_is_crc32() Antony Pavlov
@ 2021-10-28  1:28 ` Antony Pavlov
  2021-10-28  1:28 ` [PATCH 4/4] bareboximd: make the '-c' option work again Antony Pavlov
  2021-11-01  9:05 ` [PATCH 0/4] imd fixes Sascha Hauer
  4 siblings, 0 replies; 8+ messages in thread
From: Antony Pavlov @ 2021-10-28  1:28 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 include/image-metadata.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/image-metadata.h b/include/image-metadata.h
index 439a0cba81..bf4e08d98a 100644
--- a/include/image-metadata.h
+++ b/include/image-metadata.h
@@ -139,12 +139,12 @@ int imd_verify_crc32(void *buf, size_t size);
 	}
 
 #define BAREBOX_IMD_CRC(_name, _crc, _keep_if_unused)					\
-	const struct imd_entry_crc32 __barebox_imd_##__name 				\
-  	__BAREBOX_IMD_SECTION(.barebox_imd_ ## _keep_if_unused ## _ ## _name) = {	\
+	const struct imd_entry_crc32 __barebox_imd_##__name				\
+	__BAREBOX_IMD_SECTION(.barebox_imd_ ## _keep_if_unused ## _ ## _name) = {	\
 		.header.type = cpu_to_le32(IMD_TYPE_CRC32),				\
 		.header.datalength = cpu_to_le32(sizeof(uint32_t) * 2),			\
 		.data = _crc,								\
-  }
+	}
 
 #ifdef CONFIG_IMD
 void imd_used(const void *);
-- 
2.33.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 4/4] bareboximd: make the '-c' option work again
  2021-10-28  1:28 [PATCH 0/4] imd fixes Antony Pavlov
                   ` (2 preceding siblings ...)
  2021-10-28  1:28 ` [PATCH 3/4] include/image-metadata.h: fix whitespaces in the BAREBOX_IMD_CRC macro Antony Pavlov
@ 2021-10-28  1:28 ` Antony Pavlov
  2021-10-28  6:45   ` Ahmad Fatoum
  2021-11-01  9:05 ` [PATCH 0/4] imd fixes Sascha Hauer
  4 siblings, 1 reply; 8+ messages in thread
From: Antony Pavlov @ 2021-10-28  1:28 UTC (permalink / raw)
  To: barebox

bareboximd with the '-c' option craches while
trying to alter an image file, e.g.:

    barebox$ git describe
    v2021.10.0-125-gd136ec5ac6
    barebox$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- imx_v8_defconfig
    ...
    barebox$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
    ...
    images built:
    barebox-nxp-imx8mm-evk.img
    barebox-prt-prt8mm.img
    barebox-nxp-imx8mn-evk.img
    barebox-nxp-imx8mp-evk.img
    barebox-nxp-imx8mq-evk.img
    barebox-zii-imx8mq-dev.img
    barebox-phytec-phycore-imx8mq.img
    barebox$ ./scripts/bareboximd images/barebox-phytec-phycore-imx8mq.img
    build: #1 Thu Oct 28 01:11:07 UTC 2021
    buildsystem version:
    crc32: 0x00000000
    release: 2021.10.0-00125-gd136ec5ac6
    barebox$ ./scripts/bareboximd -c images/barebox-phytec-phycore-imx8mq.img
    Segmentation fault (core dumped)

The problem is that the bareboximd uses mmap() on an image file
in read-only mode.

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 scripts/bareboximd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/bareboximd.c b/scripts/bareboximd.c
index c3dcb4dcf0..fe0d274380 100644
--- a/scripts/bareboximd.c
+++ b/scripts/bareboximd.c
@@ -97,7 +97,7 @@ static int read_file_2(const char *filename, size_t *size, void **outbuf, size_t
 		goto close;
 	}
 
-	buf = mmap(NULL, max_size, PROT_READ, MAP_SHARED, fd, 0);
+	buf = mmap(NULL, max_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
 	if (buf == MAP_FAILED ) {
 		buf = malloc(max_size);
 		if (!buf) {
-- 
2.33.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 4/4] bareboximd: make the '-c' option work again
  2021-10-28  1:28 ` [PATCH 4/4] bareboximd: make the '-c' option work again Antony Pavlov
@ 2021-10-28  6:45   ` Ahmad Fatoum
  2021-10-28  7:00     ` Antony Pavlov
  0 siblings, 1 reply; 8+ messages in thread
From: Ahmad Fatoum @ 2021-10-28  6:45 UTC (permalink / raw)
  To: Antony Pavlov, barebox

Hello Antony,

On 28.10.21 03:28, Antony Pavlov wrote:
> bareboximd with the '-c' option craches while
> trying to alter an image file, e.g.:
> 
>     barebox$ git describe
>     v2021.10.0-125-gd136ec5ac6
>     barebox$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- imx_v8_defconfig
>     ...
>     barebox$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
>     ...
>     images built:
>     barebox-nxp-imx8mm-evk.img
>     barebox-prt-prt8mm.img
>     barebox-nxp-imx8mn-evk.img
>     barebox-nxp-imx8mp-evk.img
>     barebox-nxp-imx8mq-evk.img
>     barebox-zii-imx8mq-dev.img
>     barebox-phytec-phycore-imx8mq.img
>     barebox$ ./scripts/bareboximd images/barebox-phytec-phycore-imx8mq.img
>     build: #1 Thu Oct 28 01:11:07 UTC 2021
>     buildsystem version:
>     crc32: 0x00000000
>     release: 2021.10.0-00125-gd136ec5ac6
>     barebox$ ./scripts/bareboximd -c images/barebox-phytec-phycore-imx8mq.img
>     Segmentation fault (core dumped)
> 
> The problem is that the bareboximd uses mmap() on an image file
> in read-only mode.
> 
> Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
> ---
>  scripts/bareboximd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/bareboximd.c b/scripts/bareboximd.c
> index c3dcb4dcf0..fe0d274380 100644
> --- a/scripts/bareboximd.c
> +++ b/scripts/bareboximd.c
> @@ -97,7 +97,7 @@ static int read_file_2(const char *filename, size_t *size, void **outbuf, size_t
>  		goto close;
>  	}
>  
> -	buf = mmap(NULL, max_size, PROT_READ, MAP_SHARED, fd, 0);
> +	buf = mmap(NULL, max_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

I think this here only works incidentally, by failing and then doing a malloc. See mmap(2):

Errors: EACCES    MAP_SHARED was requested and PROT_WRITE is set, but fd is  not  open 
                  in  read/write  (O_RDWR)  mode.

Correct would be MAP_PRIVATE. I sent a patch to that effect yesterday:
https://lore.barebox.org/barebox/20211027060150.28184-1-a.fatoum@pengutronix.de/T/#u

>  	if (buf == MAP_FAILED ) {
>  		buf = malloc(max_size);
>  		if (!buf) {
> 


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 4/4] bareboximd: make the '-c' option work again
  2021-10-28  6:45   ` Ahmad Fatoum
@ 2021-10-28  7:00     ` Antony Pavlov
  0 siblings, 0 replies; 8+ messages in thread
From: Antony Pavlov @ 2021-10-28  7:00 UTC (permalink / raw)
  To: Ahmad Fatoum; +Cc: barebox

On Thu, 28 Oct 2021 08:45:19 +0200
Ahmad Fatoum <a.fatoum@pengutronix.de> wrote:


Hi Ahmad!

> On 28.10.21 03:28, Antony Pavlov wrote:
> > bareboximd with the '-c' option craches while
> > trying to alter an image file, e.g.:
> > 
> >     barebox$ git describe
> >     v2021.10.0-125-gd136ec5ac6
> >     barebox$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- imx_v8_defconfig
> >     ...
> >     barebox$ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
> >     ...
> >     images built:
> >     barebox-nxp-imx8mm-evk.img
> >     barebox-prt-prt8mm.img
> >     barebox-nxp-imx8mn-evk.img
> >     barebox-nxp-imx8mp-evk.img
> >     barebox-nxp-imx8mq-evk.img
> >     barebox-zii-imx8mq-dev.img
> >     barebox-phytec-phycore-imx8mq.img
> >     barebox$ ./scripts/bareboximd images/barebox-phytec-phycore-imx8mq.img
> >     build: #1 Thu Oct 28 01:11:07 UTC 2021
> >     buildsystem version:
> >     crc32: 0x00000000
> >     release: 2021.10.0-00125-gd136ec5ac6
> >     barebox$ ./scripts/bareboximd -c images/barebox-phytec-phycore-imx8mq.img
> >     Segmentation fault (core dumped)
> > 
> > The problem is that the bareboximd uses mmap() on an image file
> > in read-only mode.
> > 
> > Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
> > ---
> >  scripts/bareboximd.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/scripts/bareboximd.c b/scripts/bareboximd.c
> > index c3dcb4dcf0..fe0d274380 100644
> > --- a/scripts/bareboximd.c
> > +++ b/scripts/bareboximd.c
> > @@ -97,7 +97,7 @@ static int read_file_2(const char *filename, size_t *size, void **outbuf, size_t
> >  		goto close;
> >  	}
> >  
> > -	buf = mmap(NULL, max_size, PROT_READ, MAP_SHARED, fd, 0);
> > +	buf = mmap(NULL, max_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
> 
> I think this here only works incidentally, by failing and then doing a malloc. See mmap(2):
> 
> Errors: EACCES    MAP_SHARED was requested and PROT_WRITE is set, but fd is  not  open 
>                   in  read/write  (O_RDWR)  mode.
> 
> Correct would be MAP_PRIVATE. I sent a patch to that effect yesterday:
> https://lore.barebox.org/barebox/20211027060150.28184-1-a.fatoum@pengutronix.de/T/#u

Aghh! I have not seen your patch :(

> 
> >  	if (buf == MAP_FAILED ) {
> >  		buf = malloc(max_size);
> >  		if (!buf) {
> > 
> 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


-- 
Best regards,
  Antony Pavlov

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/4] imd fixes
  2021-10-28  1:28 [PATCH 0/4] imd fixes Antony Pavlov
                   ` (3 preceding siblings ...)
  2021-10-28  1:28 ` [PATCH 4/4] bareboximd: make the '-c' option work again Antony Pavlov
@ 2021-11-01  9:05 ` Sascha Hauer
  4 siblings, 0 replies; 8+ messages in thread
From: Sascha Hauer @ 2021-11-01  9:05 UTC (permalink / raw)
  To: Antony Pavlov; +Cc: barebox

On Thu, Oct 28, 2021 at 04:28:12AM +0300, Antony Pavlov wrote:
> Antony Pavlov (4):
>   imd: fix imd_is_crc32()
>   imd: reuse imd_is_crc32()
>   include/image-metadata.h: fix whitespaces in the BAREBOX_IMD_CRC macro
>   bareboximd: make the '-c' option work again

Applied 1-3, thanks

Sascha


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-11-01  9:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-28  1:28 [PATCH 0/4] imd fixes Antony Pavlov
2021-10-28  1:28 ` [PATCH 1/4] imd: fix imd_is_crc32() Antony Pavlov
2021-10-28  1:28 ` [PATCH 2/4] imd: reuse imd_is_crc32() Antony Pavlov
2021-10-28  1:28 ` [PATCH 3/4] include/image-metadata.h: fix whitespaces in the BAREBOX_IMD_CRC macro Antony Pavlov
2021-10-28  1:28 ` [PATCH 4/4] bareboximd: make the '-c' option work again Antony Pavlov
2021-10-28  6:45   ` Ahmad Fatoum
2021-10-28  7:00     ` Antony Pavlov
2021-11-01  9:05 ` [PATCH 0/4] imd fixes Sascha Hauer

mail archive of the barebox mailing list

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://lore.barebox.org/barebox/0 barebox/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 barebox barebox/ https://lore.barebox.org/barebox \
		barebox@lists.infradead.org barebox@lists.infradead.org
	public-inbox-index barebox

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git