nvme: precedence bug in nvme_pr_clear()
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 9 Dec 2015 10:24:06 +0000 (13:24 +0300)
committerJens Axboe <axboe@fb.com>
Wed, 9 Dec 2015 17:56:52 +0000 (10:56 -0700)
The "|" operator has higher precedence than "?:" so this didn't work as
intended.  I had previously fixed this bug, but it we copied the older
unfixed version when we moved the function between files.

Fixes: 1673f1f08c88 ('nvme: move block_device_operations and ns/ctrl freeing to common code')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/core.c

index 47ebfb85b14b3a7d2e22368ef8917c9662d16688..64891ebc4c524a7f2b92f021e238df8ac2b0dfc3 100644 (file)
@@ -671,7 +671,7 @@ static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new,
 
 static int nvme_pr_clear(struct block_device *bdev, u64 key)
 {
-       u32 cdw10 = 1 | key ? 1 << 3 : 0;
+       u32 cdw10 = 1 | (key ? 1 << 3 : 0);
        return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_register);
 }