public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Wolfgang Denk <wd@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 1/5] common: introduce maximum load size
Date: Wed, 16 Apr 2014 09:27:09 +0200	[thread overview]
Message-ID: <20140416072709.BAFA8380412@gemini.denx.de> (raw)
In-Reply-To: <CAL_JsqJ3mDsUoqqDL93Aa6OiLVpscVs3M_ixjgF0O+yfkftgEA@mail.gmail.com>

Dear Rob Herring,

In message <CAL_JsqJ3mDsUoqqDL93Aa6OiLVpscVs3M_ixjgF0O+yfkftgEA@mail.gmail.com> you wrote:
>
> > You are mixing some pretty much unrelated things here, which is IMO
> > not a good idea.  Limiting the size for load operations is one thing,
> > but buffer size is something totally different.  These must not be
> > mixed up.  Please keep in mind that there is (or at least should be)
> > no need to load the whole file into a buffer. [Limitations of the
> > implementation should be fixed rather than supported.]
> 
> That is true if you are loading files to write to storage, but if you
> are loading them to boot like tftp, diskboot, fsload, fastboot, etc.
> all do, then you should have some checks in place. Otherwise you can
> just load things over RAM u-boot is using.

This can always happen - like when the user sets the maximum load size
too big.  Actually the concept of a maximum load size is not working
at all, as it takes not into account _where_ you load the image to;
when loading it low in RAM the allowable size is different from when
loading to a higher address.  You cannot tell in advance how much RAM
you can actually use - the stack is growing downward, and we don't
have any hard limits on the stack size.  And even if the loading does
not collide with the stack, you don't know if the stack will not grow
urther down when you process the image, in which case it would get
overwritten _after_ loading, so your test would not catch it either.

> fastboot is loading images to boot just like other commands that use
> loadaddr, but has the additional need to know the max size. Rather

Don't you see that the max actually available size depends on
loadaddr, so you cannot set one without considering the other?

> > Um... what makes these operations different from any other operations
> > that read images or other data to memory?  Like loading from NOR or
> > NAND flash, from USB, IDE or SATA storage devices, from any of the
> > supported file system types?
> 
> They are not. I just copied the text from loadaddr, but any command
> that uses load_addr is missing any upper bounds checking.

Yes, and this is intentionally.  There is no clean, reliable way to
implement this features, so instead of providing some deceptive
security we rely on the user knowing what he is doing.

> > I feel we should either support this consequently everywhere, or not
> > at all.  My personal preference is the second option, as otherwise you
> > will just add a lot of code in too many places for too little benefit.
> 
> I believe the former will make things more robust and I would like to
> see this for all commands that load something to memory, but we should
> agree on the approach first.

Well, we need one that actually works first.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Let the programmers be many and the managers few -- then all will  be
productive.               -- Geoffrey James, "The Tao of Programming"

  reply	other threads:[~2014-04-16  7:27 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-10 19:18 [U-Boot] [PATCH v3 0/5] Android Fastboot support Rob Herring
2014-04-10 19:18 ` [U-Boot] [PATCH v3 1/5] common: introduce maximum load size Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-15 12:55   ` Lukasz Majewski
2014-04-15 21:59   ` Wolfgang Denk
2014-04-15 23:54     ` Rob Herring
2014-04-16  7:27       ` Wolfgang Denk [this message]
2014-04-10 19:18 ` [U-Boot] [PATCH v3 2/5] usb: handle NULL table in usb_gadget_get_string Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-11 21:39   ` Marek Vasut
2014-04-15 13:00   ` Lukasz Majewski
2014-04-10 19:18 ` [U-Boot] [PATCH v3 3/5] image: add support for Android's boot image format Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-11 21:44   ` Marek Vasut
2014-04-12 21:54     ` Rob Herring
2014-04-13 16:55       ` Marek Vasut
2014-04-15 13:59   ` Lukasz Majewski
2014-04-10 19:18 ` [U-Boot] [PATCH v3 4/5] usb/gadget: add the fastboot gadget Rob Herring
2014-04-11  7:14   ` Bo Shen
2014-04-11 12:55     ` Rob Herring
2014-04-11 22:13       ` Marek Vasut
2014-04-14  6:51         ` Lukasz Majewski
2014-04-14  2:28       ` Bo Shen
2014-04-11  7:30   ` Lukasz Majewski
2014-04-11 14:46   ` Tom Rini
2014-04-11 22:08   ` Marek Vasut
2014-04-15 15:41   ` Lukasz Majewski
2014-04-15 16:01     ` Rob Herring
2014-04-10 19:18 ` [U-Boot] [PATCH v3 5/5] arm: beagle: enable Android fastboot support Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-10 19:18 ` [U-Boot] [PATCH 5/5] beagle: " Rob Herring
2014-04-10 19:42   ` Rob Herring
2014-04-11  7:04 ` [U-Boot] [PATCH v3 0/5] Android Fastboot support Sebastian Andrzej Siewior
2014-04-11 14:15   ` Tom Rini
2014-04-11 14:45 ` Tom Rini
2014-04-14 12:19   ` Rob Herring
2014-04-18 13:54 ` [U-Boot] [PATCH v4 " Rob Herring
2014-04-18 13:54   ` [U-Boot] [PATCH v4 1/5] usb: handle NULL table in usb_gadget_get_string Rob Herring
2014-04-18 13:54   ` [U-Boot] [PATCH v4 2/5] image: add support for Android's boot image format Rob Herring
2014-04-18 13:54   ` [U-Boot] [PATCH v4 3/5] usb: musb: fill in usb_gadget_unregister_driver Rob Herring
2014-04-23  9:46     ` Lukasz Majewski
2014-04-18 13:54   ` [U-Boot] [PATCH v4 4/5] usb/gadget: add the fastboot gadget Rob Herring
2014-04-23 11:02     ` Lukasz Majewski
2014-04-23 12:25       ` Marek Vasut
2014-04-24 15:02       ` Rob Herring
2014-04-25  5:26         ` Lukasz Majewski
2014-04-25 13:30           ` Rob Herring
2014-04-28  7:00             ` Lukasz Majewski
2014-04-18 13:54   ` [U-Boot] [PATCH v4 5/5] arm: beagle: enable Android fastboot support Rob Herring
2014-04-18 16:14   ` [U-Boot] [PATCH v4 0/5] Android Fastboot support Wolfgang Denk
2014-04-21 15:13     ` Marek Vasut
2014-04-23 14:36       ` Rob Herring
2014-04-23 16:57         ` Marek Vasut
2014-05-05 20:08   ` [U-Boot] [PATCH v5 0/3] " Rob Herring
2014-05-05 20:08     ` [U-Boot] [PATCH v5 1/3] image: add support for Android's boot image format Rob Herring
2014-05-05 20:08     ` [U-Boot] [PATCH v5 2/3] usb/gadget: add the fastboot gadget Rob Herring
2014-05-05 20:08     ` [U-Boot] [PATCH v5 3/3] arm: beagle: enable Android fastboot support Rob Herring
2014-05-05 20:21     ` [U-Boot] [PATCH v5 0/3] Android Fastboot support Marek Vasut
2014-05-07  6:35     ` Lukasz Majewski

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=20140416072709.BAFA8380412@gemini.denx.de \
    --to=wd@denx.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox