|
@@ -663,6 +663,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
|
|
|
fmode_t mode = file->f_mode;
|
|
|
struct backing_dev_info *bdi;
|
|
|
loff_t size;
|
|
|
+ unsigned int max_sectors;
|
|
|
|
|
|
/*
|
|
|
* O_NDELAY can be altered using fcntl(.., F_SETFL, ..), so we have
|
|
@@ -718,8 +719,9 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
|
|
|
case BLKSSZGET: /* get block device hardware sector size */
|
|
|
return compat_put_int(arg, bdev_logical_block_size(bdev));
|
|
|
case BLKSECTGET:
|
|
|
- return compat_put_ushort(arg,
|
|
|
- queue_max_sectors(bdev_get_queue(bdev)));
|
|
|
+ max_sectors = min_t(unsigned int, USHRT_MAX,
|
|
|
+ queue_max_sectors(bdev_get_queue(bdev)));
|
|
|
+ return compat_put_ushort(arg, max_sectors);
|
|
|
case BLKROTATIONAL:
|
|
|
return compat_put_ushort(arg,
|
|
|
!blk_queue_nonrot(bdev_get_queue(bdev)));
|