On Mon, Sep 28, 2015 at 03:45:28PM +0200, Benoît Thébaudeau wrote: > set_cluster() was using a temporary buffer without enforcing its > alignment for DMA and cache. Moreover, it did not check the alignment of > the passed buffer, which can come directly from applicative code or from > the user. > > This could cause random data corruption, which has been observed on > i.MX25 writing to an SD card. > > Fix this by only passing ARCH_DMA_MINALIGN-aligned buffers to > disk_write(), which requires the introduction of a buffer bouncing > mechanism for the misaligned buffers passed to set_cluster(). > > By the way, improve the handling of the corresponding return values from > disk_write(): > - print them with debug() in case of error, > - consider that there is an error is disk_write() returns a smaller > block count than the requested one, not only if its return value is > negative. > > After this change, set_cluster() and get_cluster() are almost > symmetrical. > > Signed-off-by: Benoît Thébaudeau <ben...@wsystem.com>
Applied to u-boot/master, thanks! -- Tom
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot