07 Apr, 2009

2 commits


17 Oct, 2008

1 commit

  • The I2O ioctls assume 32bits. In itself that is fine as they are old
    cards and nobody uses 64bit. However on LKML it was noted this
    assumption is also made for allocated memory and is unsafe on 64bit
    systems.

    Fixing this is a mess. It turns out there is tons of crap buried in a
    header file that does racy 32/64bit filtering on the masks.

    So we:
    - Verify all callers of the racy code can sleep (i2o_dma_[re]alloc)
    - Move the code into a new i2o/memory.c file
    - Remove the gfp_mask argument so nobody can try and misuse the function
    - Wrap a mutex around the problem area (a single mutex is easy to do and
    none of this is performance relevant)
    - Switch the remaining problem kmalloc holdout to use i2o_dma_alloc

    Cc: Markus Lidel
    Cc: Vasily Averin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox