• Geert Uytterhoeven's avatar
    block: Do not call sector_div() with a 64-bit divisor · 97597dc0
    Geert Uytterhoeven authored
    do_div() (called by sector_div() if CONFIG_LBDAF=y) is meant for divisions
    of 64-bit number by 32-bit numbers.  Passing 64-bit divisor types caused
    issues in the past on 32-bit platforms, cfr. commit
    ea077b1b ("m68k: Truncate base in
    do_div()").
    
    As queue_limits.max_discard_sectors and .discard_granularity are unsigned
    int, max_discard_sectors and granularity should be unsigned int.
    As bdev_discard_alignment() returns int, alignment should be int.
    Now 2 calls to sector_div() can be replaced by 32-bit arithmetic:
      - The 64-bit modulo operation can become a 32-bit modulo operation,
      - The 64-bit division and multiplication can be replaced by a 32-bit
        modulo operation and a subtraction.
    Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    97597dc0
blk-lib.c 7.02 KB