| From foo@baz Mon Dec 18 15:03:25 CET 2017 |
| From: Jan Kara <jack@suse.cz> |
| Date: Mon, 16 Oct 2017 11:38:11 +0200 |
| Subject: udf: Avoid overflow when session starts at large offset |
| |
| From: Jan Kara <jack@suse.cz> |
| |
| |
| [ Upstream commit abdc0eb06964fe1d2fea6dd1391b734d0590365d ] |
| |
| When session starts beyond offset 2^31 the arithmetics in |
| udf_check_vsd() would overflow. Make sure the computation is done in |
| large enough type. |
| |
| Reported-by: Cezary Sliwa <sliwa@ifpan.edu.pl> |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/udf/super.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/udf/super.c |
| +++ b/fs/udf/super.c |
| @@ -706,7 +706,7 @@ static loff_t udf_check_vsd(struct super |
| else |
| sectorsize = sb->s_blocksize; |
| |
| - sector += (sbi->s_session << sb->s_blocksize_bits); |
| + sector += (((loff_t)sbi->s_session) << sb->s_blocksize_bits); |
| |
| udf_debug("Starting at sector %u (%ld byte sectors)\n", |
| (unsigned int)(sector >> sb->s_blocksize_bits), |