lightnvm: don't print a warning for ADDR_EMPTY
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 21 Apr 2017 22:49:56 +0000 (16:49 -0600)
committerJens Axboe <axboe@fb.com>
Fri, 21 Apr 2017 22:49:56 +0000 (16:49 -0600)
Reading from ADDR_EMPTY is out of bounds.  The current code generates a
static checker warning because we check for out of bounds "lba" before
we check for ADDR_EMPTY, so the second check is always false.  It looks
like we intended ADDR_EMPTY to be a no-op without printing a warning.

Fixes: a4bd217b4326 ("lightnvm: physical block device (pblk) target")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/lightnvm/pblk-read.c

index c9daa33e8d9ce50a5469df314c478a298a00d5d2..4a12f14d78c68e4a901ff5b012f2797af0022f28 100644 (file)
@@ -410,15 +410,15 @@ static int read_rq_gc(struct pblk *pblk, struct nvm_rq *rqd,
        struct ppa_addr ppa;
        int valid_secs = 0;
 
+       if (lba == ADDR_EMPTY)
+               goto out;
+
        /* logic error: lba out-of-bounds */
        if (lba >= pblk->rl.nr_secs) {
                WARN(1, "pblk: read lba out of bounds\n");
                goto out;
        }
 
-       if (lba == ADDR_EMPTY)
-               goto out;
-
        spin_lock(&pblk->trans_lock);
        ppa = pblk_trans_map_get(pblk, lba);
        spin_unlock(&pblk->trans_lock);