diff mbox series

block/compat_ioctl: fix range check in BLKGETSIZE

Message ID 20220419191239.588421-1-khazhy@google.com
State New
Headers show
Series block/compat_ioctl: fix range check in BLKGETSIZE | expand

Commit Message

Khazhismel Kumykov April 19, 2022, 7:12 p.m. UTC
[ Upstream commit ccf16413e520164eb718cf8b22a30438da80ff23 ]

kernel ulong and compat_ulong_t may not be same width. Use type directly
to eliminate mismatches.

This would result in truncation rather than EFBIG for 32bit mode for
large disks.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Link: https://lore.kernel.org/r/20220414224056.2875681-1-khazhy@google.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
[compat_ioctl is it's own file in 5.4-stable and earlier]
---

The original commit should apply to the newer stables, this should apply
to all the older stables.

 block/compat_ioctl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Khazhismel Kumykov April 25, 2022, 7:29 p.m. UTC | #1
On Thu, Apr 21, 2022 at 3:02 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Tue, Apr 19, 2022 at 12:12:39PM -0700, Khazhismel Kumykov wrote:
> > [ Upstream commit ccf16413e520164eb718cf8b22a30438da80ff23 ]
> >
> > kernel ulong and compat_ulong_t may not be same width. Use type directly
> > to eliminate mismatches.
> >
> > This would result in truncation rather than EFBIG for 32bit mode for
> > large disks.
> >
> > Reviewed-by: Bart Van Assche <bvanassche@acm.org>
> > Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
> > Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
> > Link: https://lore.kernel.org/r/20220414224056.2875681-1-khazhy@google.com
> > Signed-off-by: Jens Axboe <axboe@kernel.dk>
> > [compat_ioctl is it's own file in 5.4-stable and earlier]
> > ---
> >
> > The original commit should apply to the newer stables
>
> It does not, it only applied to 5.17.y.
>
> Please provide working backports for all of the others.
>
> > this should apply
> > to all the older stables.
>
> I'll wait for the 5.10.y and 5.15.y backport first before applying this
> one.
I double checked and the above patch applied to 4.9-5.4 for me
>
> thanks,
>
> greg k-h
Greg Kroah-Hartman April 26, 2022, 6:39 a.m. UTC | #2
On Mon, Apr 25, 2022 at 12:29:41PM -0700, Khazhy Kumykov wrote:
> On Thu, Apr 21, 2022 at 3:02 AM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Tue, Apr 19, 2022 at 12:12:39PM -0700, Khazhismel Kumykov wrote:
> > > [ Upstream commit ccf16413e520164eb718cf8b22a30438da80ff23 ]
> > >
> > > kernel ulong and compat_ulong_t may not be same width. Use type directly
> > > to eliminate mismatches.
> > >
> > > This would result in truncation rather than EFBIG for 32bit mode for
> > > large disks.
> > >
> > > Reviewed-by: Bart Van Assche <bvanassche@acm.org>
> > > Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
> > > Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
> > > Link: https://lore.kernel.org/r/20220414224056.2875681-1-khazhy@google.com
> > > Signed-off-by: Jens Axboe <axboe@kernel.dk>
> > > [compat_ioctl is it's own file in 5.4-stable and earlier]
> > > ---
> > >
> > > The original commit should apply to the newer stables
> >
> > It does not, it only applied to 5.17.y.
> >
> > Please provide working backports for all of the others.
> >
> > > this should apply
> > > to all the older stables.
> >
> > I'll wait for the 5.10.y and 5.15.y backport first before applying this
> > one.
> I double checked and the above patch applied to 4.9-5.4 for me

All now queued up, thanks.

greg k-h
diff mbox series

Patch

diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index 7f053468b50d..d490ac220ba8 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -393,7 +393,7 @@  long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
 		return 0;
 	case BLKGETSIZE:
 		size = i_size_read(bdev->bd_inode);
-		if ((size >> 9) > ~0UL)
+		if ((size >> 9) > ~(compat_ulong_t)0)
 			return -EFBIG;
 		return compat_put_ulong(arg, size >> 9);