• Y
    shmem: fix division by zero · 61609d01
    Yuri Tikhonov 提交于
    Fix a division by zero which we have in shmem_truncate_range() and
    shmem_unuse_inode() when using big PAGE_SIZE values (e.g.  256kB on
    ppc44x).
    
    With 256kB PAGE_SIZE, the ENTRIES_PER_PAGEPAGE constant becomes too large
    (0x1.0000.0000) on a 32-bit kernel, so this patch just changes its type
    from 'unsigned long' to 'unsigned long long'.
    
    Hugh: reverted its unsigned long longs in shmem_truncate_range() and
    shmem_getpage(): the pagecache index cannot be more than an unsigned long,
    so the divisions by zero occurred in unreached code.  It's a pity we need
    any ULL arithmetic here, but I found no pretty way to avoid it.
    Signed-off-by: NYuri Tikhonov <yur@emcraft.com>
    Signed-off-by: NHugh Dickins <hugh@veritas.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    61609d01
shmem.c 68.1 KB