1. 11 7月, 2010 1 次提交
  2. 06 7月, 2010 1 次提交
  3. 28 5月, 2010 1 次提交
    • C
      rename the generic fsync implementations · 1b061d92
      Christoph Hellwig 提交于
      We don't name our generic fsync implementations very well currently.
      The no-op implementation for in-memory filesystems currently is called
      simple_sync_file which doesn't make too much sense to start with,
      the the generic one for simple filesystems is called simple_fsync
      which can lead to some confusion.
      
      This patch renames the generic file fsync method to generic_file_fsync
      to match the other generic_file_* routines it is supposed to be used
      with, and the no-op implementation to noop_fsync to make it obvious
      what to expect.  In addition add some documentation for both methods.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      1b061d92
  4. 22 5月, 2010 1 次提交
  5. 30 3月, 2010 1 次提交
    • T
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo 提交于
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      
        http://userweb.kernel.org/~tj/misc/slabh-sweep.py
      
      The script does the followings.
      
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
        file.
      
      The conversion was done in the following steps.
      
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
         files.
      
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
         necessary.
      
      6. percpu.h was updated not to include slab.h.
      
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
      
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  6. 15 3月, 2010 1 次提交
  7. 06 3月, 2010 1 次提交
  8. 04 12月, 2009 1 次提交
  9. 02 10月, 2009 1 次提交
  10. 22 9月, 2009 3 次提交
  11. 12 6月, 2009 1 次提交
  12. 03 4月, 2009 1 次提交
  13. 01 4月, 2009 1 次提交
  14. 22 1月, 2009 1 次提交
  15. 06 1月, 2009 1 次提交
  16. 14 11月, 2008 1 次提交
  17. 23 10月, 2008 1 次提交
  18. 14 10月, 2008 1 次提交
  19. 15 8月, 2008 2 次提交
    • B
      omfs: fix oops when file metadata is corrupted · 9419fc1c
      Bob Copeland 提交于
      A fuzzed fileystem image failed with OMFS when the extent count was
      used in a loop without being checked against the max number of extents.
      It also provoked a signed division for an array index that was checked
      as if unsigned, leading to index by -1.
      
      omfsck will be updated to fix these cases, in the meantime bail out
      gracefully.
      Reported-by: NEric Sesterhenn <snakebyte@gmx.de>
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9419fc1c
    • B
      omfs: fix potential oops when directory size is corrupted · c963343a
      Bob Copeland 提交于
      Testing with a modified fsfuzzer reveals a couple of locations in omfs
      where filesystem variables are ultimately used as loop counters with
      insufficient sanity checking.  In this case, dir->i_size is used to
      compute the number of buckets in the directory hash.  If too large,
      readdir will overrun a buffer.
      
      Since it's an invariant that dir->i_size is equal to the sysblock
      size, and we already sanity check that, just use that value instead.
      This fixes the following oops:
      
      BUG: unable to handle kernel paging request at c978e004
      IP: [<c032298e>] omfs_readdir+0x18e/0x32f
      Oops: 0000 [#1] PREEMPT DEBUG_PAGEALLOC
      Modules linked in:
      
      Pid: 4796, comm: ls Not tainted (2.6.27-rc2 #12)
      EIP: 0060:[<c032298e>] EFLAGS: 00010287 CPU: 0
      EIP is at omfs_readdir+0x18e/0x32f
      EAX: c978d000 EBX: 00000000 ECX: cbfcfaf8 EDX: cb2cf100
      ESI: 00001000 EDI: 00000800 EBP: cb2d3f68 ESP: cb2d3f0c
       DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
      Process ls (pid: 4796, ti=cb2d3000 task=cb175f40 task.ti=cb2d3000)
      Stack: 00000002 00000000 00000000 c018a820 cb2d3f94 cb2cf100 cbfb0000 ffffff10
             cbfb3b80 cbfcfaf8 000001c9 00000a09 00000000 00000000 00000000 cbfcfbc8
             c9697000 cbfb3b80 22222222 00001000 c08e6cd0 cb2cf100 cbfb3b80 cb2d3f88
      Call Trace:
       [<c018a820>] ? filldir64+0x0/0xcd
       [<c018a9f2>] ? vfs_readdir+0x56/0x82
       [<c018a820>] ? filldir64+0x0/0xcd
       [<c018aa7c>] ? sys_getdents64+0x5e/0xa0
       [<c01038bd>] ? sysenter_do_call+0x12/0x31
       =======================
      Code: 00 89 f0 89 f3 0f ac f8 14 81 e3 ff ff 0f 00 48 8d
      14 c5 b8 01 00 00 89 45 cc 89 55 f0 e9 8c 01 00 00 8b 4d c8 8b 75 f0 8b
      41 18 <8b> 54 30 04 8b 04 30 31 f6 89 5d dc 89 d1 8b 55 b8 0f c8 0f c9
      Reported-by: NEric Sesterhenn <snakebyte@gmx.de>
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c963343a
  20. 06 8月, 2008 1 次提交
  21. 31 7月, 2008 1 次提交
    • H
      omfs: sparse annotations · d406f66d
      Harvey Harrison 提交于
      Missing cpu_to_be64 on some constant assignments.
      fs/omfs/dir.c:107:16: warning: incorrect type in assignment (different base types)
      fs/omfs/dir.c:107:16:    expected restricted __be64 [usertype] i_sibling
      fs/omfs/dir.c:107:16:    got unsigned long long
      fs/omfs/file.c:33:13: warning: incorrect type in assignment (different base types)
      fs/omfs/file.c:33:13:    expected restricted __be64 [usertype] e_next
      fs/omfs/file.c:33:13:    got unsigned long long
      fs/omfs/file.c:36:24: warning: incorrect type in assignment (different base types)
      fs/omfs/file.c:36:24:    expected restricted __be64 [usertype] e_cluster
      fs/omfs/file.c:36:24:    got unsigned long long
      fs/omfs/file.c:37:23: warning: incorrect type in assignment (different base types)
      fs/omfs/file.c:37:23:    expected restricted __be64 [usertype] e_blocks
      fs/omfs/file.c:37:23:    got unsigned long long
      
      fs/omfs/bitmap.c:74:18: warning: incorrect type in argument 2 (different signedness)
      fs/omfs/bitmap.c:74:18:    expected unsigned long volatile *addr
      fs/omfs/bitmap.c:74:18:    got long *<noident>
      fs/omfs/bitmap.c:77:20: warning: incorrect type in argument 2 (different signedness)
      fs/omfs/bitmap.c:77:20:    expected unsigned long volatile *addr
      fs/omfs/bitmap.c:77:20:    got long *<noident>
      fs/omfs/bitmap.c:112:17: warning: incorrect type in argument 2 (different signedness)
      fs/omfs/bitmap.c:112:17:    expected unsigned long volatile *addr
      fs/omfs/bitmap.c:112:17:    got long *<noident>
      Signed-off-by: NHarvey Harrison <harvey.harrison@gmail.com>
      Acked-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d406f66d
  22. 27 7月, 2008 6 次提交