lkml.org 
[lkml]   [2011]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: Kernel 3.1.0-rc4 oops when connecting iPod
    Yes, the shifts were the wrong way around.  I'll leave the 9 in for now,
    we use it in so many places and if we're going to clean it up I'd do it
    in ne go.

    Index: linux-2.6/fs/hfsplus/super.c
    ===================================================================
    --- linux-2.6.orig/fs/hfsplus/super.c 2011-09-12 11:20:33.866598100 -0400
    +++ linux-2.6/fs/hfsplus/super.c 2011-09-12 11:20:52.538098052 -0400
    @@ -344,6 +344,7 @@ static int hfsplus_fill_super(struct sup
    struct inode *root, *inode;
    struct qstr str;
    struct nls_table *nls = NULL;
    + u64 last_fs_block, last_fs_page;
    int err;

    err = -EINVAL;
    @@ -399,9 +400,13 @@ static int hfsplus_fill_super(struct sup
    if (!sbi->rsrc_clump_blocks)
    sbi->rsrc_clump_blocks = 1;

    - err = generic_check_addressable(sbi->alloc_blksz_shift,
    - sbi->total_blocks);
    - if (err) {
    + err = -EFBIG;
    + last_fs_block = sbi->total_blocks - 1;
    + last_fs_page = (last_fs_block << sbi->alloc_blksz_shift) >>
    + PAGE_CACHE_SHIFT;
    +
    + if ((last_fs_block > (sector_t)(~0ULL) >> (sbi->alloc_blksz_shift - 9)) ||
    + (last_fs_page > (pgoff_t)(~0ULL))) {
    printk(KERN_ERR "hfs: filesystem size too large.\n");
    goto out_free_vhdr;
    }

    \
     
     \ /
      Last update: 2011-09-12 17:33    [W:2.453 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site