• Diego Calleja's avatar
    [PATCH] Fix BeFS slab corruption · 94f563c4
    Diego Calleja authored
    In bugzilla #6941, Jens Kilian reported:
    
    "The function befs_utf2nls (in fs/befs/linuxvfs.c) writes a 0 byte past the
    end of a block of memory allocated via kmalloc(), leading to memory
    corruption.  This happens only for filenames which are pure ASCII and a
    multiple of 4 bytes in length.  [...]
    
    Without DEBUG_SLAB, this leads to further corruption and hard lockups; I
    believe this is the bug which has made kernels later than 2.6.8 unusable
    for me.  (This must be due to changes in memory management, the bug has
    been in the BeFS driver since the time it was introduced (AFAICT).)
    
    Steps to reproduce:
    Create a directory (in BeOS, naturally :-) with files named, e.g.,
    "1", "22", "333", "4444", ...  Mount it in Linux and do an "ls" or "find""
    
    This patch implements the suggested fix. Credits to Jens Kilian for
    debugging the problem and finding the right fix.
    Signed-off-by: default avatarDiego Calleja <diegocg@gmail.com>
    Cc: Jens Kilian <jjk@acm.org>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    94f563c4
linuxvfs.c 23.7 KB