From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/5] Add bmp_layout module for accessing BMP header data
Date: Mon, 4 Feb 2013 22:26:28 +0100 [thread overview]
Message-ID: <20130204222628.545da91e@lilith> (raw)
In-Reply-To: <20130204192618.529EF200113@gemini.denx.de>
Hi Wolfgang,
On Mon, 04 Feb 2013 20:26:18 +0100, Wolfgang Denk <wd@denx.de> wrote:
> Dear Nikita Kiryanov,
>
> In message <1359977979-28585-2-git-send-email-nikita@compulab.co.il> you wrote:
> > Currently code that displays BMP files does two things:
> > * assume that any address is a valid load address for a BMP
> > * access in-memory BMP header fields directly
> >
> > Since some BMP header fields are 32 bit wide, this has a potential
> > for causing data aborts when these fields are placed in unaligned
> > addresses.
> >
> > Create an API for safely accessing BMP header data, and compile it with
> > $(PLATFORM_NO_UNALIGNED) to give it the ability to emulate unaligned memory
> > accesses.
>
> Frankly, I think this is overkill. U-Boot is a bootloader, and it is
> supposed to be lean and eficient. We don't have all levels of safety
> systems and protective devices as in, for example, an aircraft. You
> are supposed to know what you are doing, and if you ignore the rules,
> you will quickly see the results yourself.
>
> There is plenty of other areas where correct opration requires certain
> alignments, and none of these are enforced by U-Boot. And actually I
> think this is not only acceptable, but good as is.
>
> "UNIX was not designed to stop you from doing stupid things, because
> that would also stop you from doing clever things." - Doug Gwyn
>
>
> You talk about BMP header - but we also have alignment requirements
> for image headers, well, even for a plain "md" or "mw" command. And
> none of these provide any protection against accidsential (or
> intentional) access to unaligned addresses.
>
> My recommendation is: just don;t do it, then.
The point about md not checking alignment is indeed valid: one should
know that a md.l requires a 4-byte-aligned address or it will abort.
OTOH, a cautious user may think that to ensure proper alignment, a BMP
should be loaded on a 4-byte boundary, but IIUC that it precisely what
will cause the load to fail, due to the sole 4-byte field of the BMP
header being misaligned by two bytes.
So if we leave BMP loading as it is now, the load address will need to
be 16-bit-but-not-32-bit-aligned, which is complicated enough to
require documentation.
Or, the BMP struct could be prepended with two bytes so that the
load address alignment requirement becomes a simple 4-byte boundary,
which most users are... bound... to choose naturally.
But ISTR the idea of prepending two bytes was already discussed and for
some reason it could not work. Jeroen?
> Best regards,
>
> Wolfgang Denk
Amicalement,
--
Albert.
next prev parent reply other threads:[~2013-02-04 21:26 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 11:39 [U-Boot] [PATCH 0/5] Create an API for safely accessing BMP header fields Nikita Kiryanov
2013-02-04 11:39 ` [U-Boot] [PATCH 1/5] Add bmp_layout module for accessing BMP header data Nikita Kiryanov
2013-02-04 19:26 ` Wolfgang Denk
2013-02-04 21:26 ` Albert ARIBAUD [this message]
2013-02-04 23:11 ` Wolfgang Denk
2013-02-05 8:07 ` Igor Grinberg
2013-02-05 9:57 ` Wolfgang Denk
2013-02-05 11:38 ` Igor Grinberg
2013-02-05 13:20 ` Wolfgang Denk
2013-02-05 14:49 ` Igor Grinberg
2013-02-05 19:27 ` Wolfgang Denk
2013-02-05 6:52 ` Nikita Kiryanov
2013-02-05 9:47 ` Wolfgang Denk
2013-02-04 11:39 ` [U-Boot] [PATCH 2/5] lcd: use bmp_layout API Nikita Kiryanov
2013-02-04 11:39 ` [U-Boot] [PATCH 3/5] cmd_bmp: " Nikita Kiryanov
2013-02-04 11:39 ` [U-Boot] [PATCH 4/5] video/cfb_console: " Nikita Kiryanov
2013-02-04 11:39 ` [U-Boot] [PATCH 5/5] video/bus_vcxk: " Nikita Kiryanov
2013-02-04 11:57 ` [U-Boot] [PATCH 0/5] Create an API for safely accessing BMP header fields Albert ARIBAUD
2013-02-04 12:37 ` Nikita Kiryanov
2013-02-04 14:19 ` Albert ARIBAUD
2013-02-04 15:07 ` Nikita Kiryanov
2013-02-04 15:25 ` Albert ARIBAUD
2013-02-04 20:48 ` Wolfgang Denk
2013-02-05 7:20 ` Nikita Kiryanov
2013-02-04 20:39 ` Wolfgang Denk
2013-02-05 14:58 ` Tom Rini
2013-02-05 19:37 ` Albert ARIBAUD
2013-02-04 20:35 ` Wolfgang Denk
2013-02-04 21:02 ` Jeroen Hofstee
2013-02-05 7:39 ` Igor Grinberg
2013-02-05 6:53 ` Igor Grinberg
2013-02-05 7:22 ` Nikita Kiryanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130204222628.545da91e@lilith \
--to=albert.u.boot@aribaud.net \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.