Skip to content

Commit 3c0c8e0

Browse files
committed
Merge: block: fix overflow in blk_ioctl_discard()
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/4405 block: fix overflow in blk_ioctl_discard() CVE: CVE-2024-36917 JIRA: https://issues.redhat.com/browse/RHEL-39813 Signed-off-by: Ming Lei <ming.lei@redhat.com> Approved-by: Jeff Moyer <jmoyer@redhat.com> Approved-by: Ewan D. Milne <emilne@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Lucas Zampieri <lzampier@redhat.com>
2 parents 8619793 + cb9391a commit 3c0c8e0

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

block/ioctl.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ static int blk_ioctl_discard(struct block_device *bdev, blk_mode_t mode,
8989
unsigned long arg)
9090
{
9191
uint64_t range[2];
92-
uint64_t start, len;
92+
uint64_t start, len, end;
9393
struct inode *inode = bdev->bd_inode;
9494
int err;
9595

@@ -110,7 +110,8 @@ static int blk_ioctl_discard(struct block_device *bdev, blk_mode_t mode,
110110
if (len & 511)
111111
return -EINVAL;
112112

113-
if (start + len > bdev_nr_bytes(bdev))
113+
if (check_add_overflow(start, len, &end) ||
114+
end > bdev_nr_bytes(bdev))
114115
return -EINVAL;
115116

116117
filemap_invalidate_lock(inode->i_mapping);

0 commit comments

Comments
 (0)