diff options
author | Akinobu Mita <akinobu.mita@gmail.com> | 2013-11-18 17:13:18 +0400 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2013-11-21 05:48:44 +0400 |
commit | 475bf36ffba2ad18631865a2429468dc6c7ea919 (patch) | |
tree | f7e0f94e4def76598b66861e9a9820b9ab86517d | |
parent | 4cd8587ce8fb79e49d1d6d1fc065f056188fb86a (diff) | |
download | linux-475bf36ffba2ad18631865a2429468dc6c7ea919.tar.xz |
btrfs: fix bio_size_ok() for max_sectors > 0xffff
The data type of max_sectors in queue settings is unsigned int. But
this value is stored to the local variable whose type is unsigned short
in bio_size_ok(). This can cause unexpected result when max_sectors >
0xffff.
Cc: Chris Mason <chris.mason@fusionio.com>
Cc: linux-btrfs@vger.kernel.org
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
-rw-r--r-- | fs/btrfs/volumes.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 0db637097862..92303f42baaa 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -5394,7 +5394,7 @@ static int bio_size_ok(struct block_device *bdev, struct bio *bio, { struct bio_vec *prev; struct request_queue *q = bdev_get_queue(bdev); - unsigned short max_sectors = queue_max_sectors(q); + unsigned int max_sectors = queue_max_sectors(q); struct bvec_merge_data bvm = { .bi_bdev = bdev, .bi_sector = sector, |