block: Fix off-by-one errors in blk_status_to_errno() and print_req_error()
authorBart Van Assche <bart.vanassche@wdc.com>
Wed, 21 Jun 2017 17:55:46 +0000 (10:55 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 21 Jun 2017 18:01:14 +0000 (12:01 -0600)
This was detected by the smatch static analyzer.

Fixes: commit 2a842acab109 ("block: introduce new block status code type")
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-core.c

index 2e02314ea3319754f1e22dab2f378e693a9e14db..3c18ea60cb1c0b7dd6a038905c0c62bc795dbc89 100644 (file)
@@ -169,7 +169,7 @@ int blk_status_to_errno(blk_status_t status)
 {
        int idx = (__force int)status;
 
-       if (WARN_ON_ONCE(idx > ARRAY_SIZE(blk_errors)))
+       if (WARN_ON_ONCE(idx >= ARRAY_SIZE(blk_errors)))
                return -EIO;
        return blk_errors[idx].errno;
 }
@@ -179,7 +179,7 @@ static void print_req_error(struct request *req, blk_status_t status)
 {
        int idx = (__force int)status;
 
-       if (WARN_ON_ONCE(idx > ARRAY_SIZE(blk_errors)))
+       if (WARN_ON_ONCE(idx >= ARRAY_SIZE(blk_errors)))
                return;
 
        printk_ratelimited(KERN_ERR "%s: %s error, dev %s, sector %llu\n",