Skip to content
Snippets Groups Projects
  1. Oct 25, 2011
    • Anton staaf's avatar
      ext2: Cache line aligned partial sector bounce buffer · 4c1cd721
      Anton staaf authored
      
      Currently, if a device read request is done that does not begin or end
      on a sector boundary a stack allocated bounce buffer is used to perform
      the read, and then just the part of the sector that is needed is copied
      into the users buffer.  This stack allocation can mean that the bounce
      buffer will not be aligned to the dcache line size.  This is a problem
      when caches are enabled because unaligned cache invalidates are not
      safe.
      
      This patch uses ALLOC_CACHE_ALIGN_BUFFER to create a stack allocated
      cache line size aligned bounce buffer.
      
      Signed-off-by: default avatarAnton Staaf <robotboy@chromium.org>
      Cc: Lukasz Majewski <l.majewski@samsung.com>
      Cc: Mike Frysinger <vapier@gentoo.org>
      Cc: Dave Liu <r63238@freescale.com>
      Cc: Andy Fleming <afleming@gmail.com>
      Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
      
      Change-Id: I32e1594d90ef039137bb219b0f7ced55768744ff
      Acked-by: default avatarMike Frysinger <vapier@gentoo.org>
      4c1cd721
  2. Oct 15, 2011
  3. Oct 12, 2011
    • Lars Poeschel's avatar
      ubifs bad superblock bug · 349a8d5e
      Lars Poeschel authored
      
      This patch fixes an issue when ubifs reads a bad superblock. Later it
      tries to free memory, that was not allocated, which freezes u-boot.
      This is fixed by looking for a non null pointer before free.
      
      The message I got before u-boot freezes:
      UBI: max/mean erase counter: 53/32
      UBIFS: mounted UBI device 0, volume 1, name "rootfs"
      UBIFS: mounted read-only
      UBIFS: file system size:   49140 bytes (50319360 KiB, 0 MiB, 49140 LEBs)
      UBIFS: journal size:       49 bytes (6838272 KiB, 0 MiB, 6678 LEBs)
      UBIFS: media format:       w4/r0 (latest is w4/r0)
      UBIFS: default compressor: LZO
      UBIFS: reserved for root:  0 bytes (0 KiB)
      UBIFS error (pid 0): ubifs_read_node: bad node type (255 but expected 9)
      UBIFS error (pid 0): ubifs_read_node: bad node at LEB 330:13104
      UBIFS error (pid 0): ubifs_iget: failed to read inode 1, error -22
      Error reading superblock on volume 'ubi:rootfs'!
      
      Signed-off-by: default avatarLars Poeschel <larsi@wh2.tu-dresden.de>
      Cc: Kyungmin Park <kmpark@infradead.org>
      Signed-off-by: default avatarStefan Roese <sr@denx.de>
      349a8d5e
  4. Oct 09, 2011
  5. Oct 01, 2011
  6. Sep 09, 2011
    • Wolfgang Denk's avatar
      UBIFS: fix warning: format '%lX' expects type 'long unsigned int' · aaf6935b
      Wolfgang Denk authored
      
      Commit 46d7274c "UBIFS: Change ubifsload to set the filesize variable"
      introduced the follwing compiler warning:
      
      ubifs.c: In function 'ubifs_load':
      ubifs.c:742: warning: format '%lX' expects type 'long unsigned int', but argument 3 has type 'u32'
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      Cc: Bastian Ruppert <Bastian.Ruppert@Sewerin.de>
      aaf6935b
    • Bastian Ruppert's avatar
      UBIFS: Change ubifsload to set the filesize variable · 46d7274c
      Bastian Ruppert authored
      
      This is the same behaviour like tftp or fatload command.
      
      Signed-off-by: default avatarBastian Ruppert <Bastian.Ruppert@Sewerin.de>
      CC: kmpark@infradead.org
      Acked-by: default avatarDetlev Zundel <dzu@denx.de>
      46d7274c
    • Wolfgang Denk's avatar
      YAFFS2: fs/yaffs2/yaffs_guts.c - fix build warnings · 068d6f9a
      Wolfgang Denk authored
      
      Fix these:
      yaffs_guts.c: In function 'yaffs_ReadDataFromFile':
      yaffs_guts.c:4622: warning: pointer targets in passing argument 3 of 'yaffs_AddrToChunk' differ in signedness
      yaffs_guts.c:4622: warning: pointer targets in passing argument 4 of 'yaffs_AddrToChunk' differ in signedness
      yaffs_guts.c: In function 'yaffs_WriteDataToFile':
      yaffs_guts.c:4745: warning: pointer targets in passing argument 3 of 'yaffs_AddrToChunk' differ in signedness
      yaffs_guts.c:4745: warning: pointer targets in passing argument 4 of 'yaffs_AddrToChunk' differ in signedness
      yaffs_guts.c: In function 'yaffs_ResizeFile':
      yaffs_guts.c:4968: warning: pointer targets in passing argument 3 of 'yaffs_AddrToChunk' differ in signedness
      yaffs_guts.c:4968: warning: pointer targets in passing argument 4 of 'yaffs_AddrToChunk' differ in signedness
      yaffs_guts.c: In function 'yaffs_GutsInitialise':
      yaffs_guts.c:7235: warning: assignment from incompatible pointer type
      yaffs_guts.c: In function 'yaffs_CreateNewObject':
      yaffs_guts.c:2143: warning: 'tn' may be used uninitialized in this function
      yaffs_guts.c: In function 'yaffs_MknodObject':
      yaffs_guts.c:2258: warning: 'str' may be used uninitialized in this function
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      068d6f9a
    • Wolfgang Denk's avatar
      YAFFS2: fs/yaffs2/yaffs_guts.c - fix build warnings · 3da04743
      Wolfgang Denk authored
      
      Fix these:
      yaffs_guts.c: At top level:
      yaffs_guts.c:400: warning: 'yaffs_SkipFullVerification' defined but not used
      
      Testing shows no changes of the image sizes.
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      3da04743
    • Wolfgang Denk's avatar
      YAFFS2: fs/yaffs2/yaffs_nand.[hc] - fix build warnings · fa00e032
      Wolfgang Denk authored
      
      Fix these:
      yaffs_guts.c: In function 'yaffs_Scan':
      yaffs_guts.c:5436: warning: pointer targets in passing argument 4 of 'yaffs_QueryInitialBlockState' differ in signedness
      yaffs_guts.c: In function 'yaffs_ScanBackwards':
      yaffs_guts.c:6017: warning: pointer targets in passing argument 4 of 'yaffs_QueryInitialBlockState' differ in signedness
      yaffs_nand.c: In function 'yaffs_QueryInitialBlockState':
      yaffs_nand.c:109: warning: pointer targets in passing argument 4 of 'dev->queryNANDBlock' differ in signedness
      yaffs_nand.c:113: warning: pointer targets in passing argument 4 of 'yaffs_TagsCompatabilityQueryNANDBlock' differ in signedness
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      fa00e032
    • Wolfgang Denk's avatar
      YAFFS2: fs/yaffs2/Makefile - fix build warnings · 9d0265e9
      Wolfgang Denk authored
      
      Drop the "-DNO_Y_INLINE" setting to fix these:
      yaffs_guts.h:806: warning: 'yaffs_GetBlockInfo' defined but not used
      
      Impact on image size is negligible - for the VCMA9 board the text
      segment size grew from 496353 to 496357 bytes (i. e. 0.0008%);
      total image size even remained constant.
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      9d0265e9
    • Wolfgang Denk's avatar
      YAFFS2: fs/yaffs2/yaffscfg.c - fix build warnings · 6ac360c4
      Wolfgang Denk authored
      
      Fix these:
      yaffscfg.c: In function 'cmd_yaffs_mread_file':
      yaffscfg.c:316: warning: format '%08x' expects type 'unsigned int', but argument 3 has type 'char *'
      yaffscfg.c: In function 'cmd_yaffs_ls': yaffscfg.c:371: warning: format '%7d' expects type 'int', but argument 3 has type 'off_t'
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      6ac360c4
  7. Aug 19, 2011
  8. Aug 04, 2011
  9. Jul 28, 2011
  10. Jul 26, 2011
  11. May 10, 2011
  12. Apr 12, 2011
  13. Apr 02, 2011
    • Erik Hansen's avatar
      fat32 root directory handling · 3f270f42
      Erik Hansen authored
      
      Fat directory handling didn't check reaching the end of the root directory. It
      relied on a stop condition based on a directory entry with a name starting with
      a '\0' character. This check in itself is wrong ('\0' indicates free entry, not
      end_of_directory) but outside the scope of this fix. For FAT32, the end of the
      rootdir is reached when the end of the cluster chain is reached. The code didn't
      check this condition and started to read an incorrect cluster. This caused a
      subsequent read request of a sector outside the range of the usb stick in
      use. On its turn, the usb stick protested with a stall handshake.
      
      Both FAT32 and non-FAT32 (FAT16/FAT12) end or rootdir checks have been put in.
      
      Signed-off-by: default avatarErik Hansen <erik@makarta.com>
      3f270f42
  14. Jan 11, 2011
  15. Dec 09, 2010
  16. Dec 03, 2010
  17. Nov 28, 2010
  18. Nov 17, 2010
    • Sebastien Carlier's avatar
      Switch from archive libraries to partial linking · 6d8962e8
      Sebastien Carlier authored
      
      Before this commit, weak symbols were not overridden by non-weak symbols
      found in archive libraries when linking with recent versions of
      binutils.  As stated in the System V ABI, "the link editor does not
      extract archive members to resolve undefined weak symbols".
      
      This commit changes all Makefiles to use partial linking (ld -r) instead
      of creating library archives, which forces all symbols to participate in
      linking, allowing non-weak symbols to override weak symbols as intended.
      This approach is also used by Linux, from which the gmake function
      cmd_link_o_target (defined in config.mk and used in all Makefiles) is
      inspired.
      
      The name of each former library archive is preserved except for
      extensions which change from ".a" to ".o".  This commit updates
      references accordingly where needed, in particular in some linker
      scripts.
      
      This commit reveals board configurations that exclude some features but
      include source files that depend these disabled features in the build,
      resulting in undefined symbols.  Known such cases include:
      - disabling CMD_NET but not CMD_NFS;
      - enabling CONFIG_OF_LIBFDT but not CONFIG_QE.
      
      Signed-off-by: default avatarSebastien Carlier <sebastien.carlier@gmail.com>
      6d8962e8
  19. Oct 29, 2010
  20. Oct 20, 2010
    • Stefano Babic's avatar
      FAT: buffer overflow with FAT12/16 · 11c8dd36
      Stefano Babic authored
      
      Last commit 3831530d was intended
      "explicitly specify FAT12/16 root directory parsing buffer size, instead
      of relying on cluster size". Howver, the underlying function requires
      the size of the buffer in blocks, not in bytes, and instead of passing
      a double sector size a request for 1024 blocks is sent. This generates
      a buffer overflow with overwriting of other structure (in the case seen,
      USB structures were overwritten).
      
      Signed-off-by: default avatarStefano Babic <sbabic@denx.de>
      CC: Mikhail Zolotaryov <lebon@lebon.org.ua>
      11c8dd36
  21. Oct 12, 2010
    • Mikhail Zolotaryov's avatar
      VFAT: fix processing of scattered long file name entries · 3831530d
      Mikhail Zolotaryov authored
      
      The U-Boot code has the following bugs related to the processing of Long File
      Name (LFN) entries scattered across several clusters/sectors :
      
      1) get_vfatname() function is designed to gather scattered LFN entries by
      cluster chain processing - that doesn't work for FAT12/16 root directory.
      In other words, the function expects the following input data:
       1.1) FAT32 directory (which is cluster chain based);
              OR
       1.2) FAT12/16 non-root directory (which is also cluster chain based);
              OR
       1.3) FAT12/16 root directory (allocated as contiguous sectors area), but
       all necessary information MUST be within the input buffer of filesystem cluster
       size (thus cluster-chain jump is never initiated).
      
      In order to accomplish the last condition, root directory parsing code in
      do_fat_read() uses the following trick: read-out cluster-size block, process
      only first sector (512 bytes), then shift 512 forward, read-out cluster-size
      block and so on. This works great unless cluster size is equal to 512 bytes
      (in a case you have a small partition), or long file name entries are scattered
      across three sectors, see 4) for details.
      
      2) Despite of the fact that get_vfatname() supports FAT32 root directory
      browsing, do_fat_read() function doesn't send current cluster number correctly,
      so root directory look-up doesn't work correctly.
      
      3) get_vfatname() doesn't gather scattered entries correctly also is the case
      when all LFN entries are located at the end of the source cluster, but real
      directory entry (which must be returned) is at the only beginning of the
      next one. No error detected, the resulting directory entry returned contains
      a semi-random information (wrong size, wrong start cluster number and so on)
      i.e. the entry is not accessible.
      
      4) LFN (VFAT) allows up to 20 entries (slots) each containing 26 bytes (13
      UTF-16 code units) to represent a single long file name i.e. up to 520 bytes.
      U-Boot allocates 256 bytes buffer instead, i.e. 10 or more LFN slots record
      may cause buffer overflow / memory corruption.
      Also, it's worth to mention that 20+1 slots occupy 672 bytes space which may
      take more than one cluster of 512 bytes (medium-size FAT32 or small FAT16
      partition) - get_vfatname() function doesn't support such case as well.
      
      The patch attached fixes these problems in the following way:
      - keep using 256 bytes buffer for a long file name, but safely prevent a
      possible buffer overflow (skip LFN processing, if it contains 10 or more
      slots).
      
      - explicitly specify FAT12/16 root directory parsing buffer size, instead
      of relying on cluster size. The value used is a double sector size (to store
      current sector and the next one). This fixes the first problem and increases
      performance on big FAT12/16 partitions;
      
      - send current cluster number (FAT32) to get_vfatname() during root
      directory processing;
      
      - use LFN counter to seek the real directory entry in get_vfatname() - fixes the
      third problem;
      
      - skip deleted entries in the root directory (to prevent bogus buffer
      overflow detection and LFN counter steps).
      
      Note: it's not advised to split up the patch, because a separate part may
      operate incorrectly.
      
      Signed-off-by: default avatarMikhail Zolotaryov <lebon@lebon.org.ua>
      3831530d
  22. Aug 07, 2010
  23. Jul 24, 2010
    • Wolfgang Denk's avatar
      fs/fat: Big code cleanup. · 7385c28e
      Wolfgang Denk authored
      
      - reformat
      - throw out macros like FAT_DPRINT and FAT_DPRINT
      - remove dead code
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      7385c28e
    • Wolfgang Denk's avatar
      FAT32: fix broken root directory handling. · 2aa98c66
      Wolfgang Denk authored
      
      On FAT32, instead of fetching the cluster numbers from the FAT, the
      code assumed (incorrectly) that the clusters for the root directory
      were allocated contiguously. In the result, only the first cluster
      could be accessed. At the typical cluster size of 8 sectors this
      caused all accesses to files after the first 128 entries to fail -
      "fatls" would terminate after 128 files (usually displaying a bogus
      file name, occasionally even crashing the system), and "fatload"
      would fail to find any files that were not in the first directory
      cluster.
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      2aa98c66
    • Wolfgang Denk's avatar
      FAT32: fix support for superfloppy-format (PBR) · 66c2d73c
      Wolfgang Denk authored
      
      "Superfloppy" format (in U-Boot called PBR) did not work for FAT32 as
      the file system type string is at a different location. Add support
      for FAT32.
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      66c2d73c
  24. May 28, 2010
  25. Apr 28, 2010
  26. Mar 31, 2010
Loading