Paulo Alcantara
f47e3f60f2
smb: client: fix OOB in smb2_query_reparse_point()
...
[ Upstream commit 3a42709fa909e22b0be4bb1e2795aa04ada732a3 ]
Validate @ioctl_rsp->OutputOffset and @ioctl_rsp->OutputCount so that
their sum does not wrap to a number that is smaller than @reparse_buf
and we end up with a wild pointer as follows:
BUG: unable to handle page fault for address: ffff88809c5cd45f
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 4a01067 P4D 4a01067 PUD 0
Oops: 0000 [#1 ] PREEMPT SMP NOPTI
CPU: 2 PID: 1260 Comm: mount.cifs Not tainted 6.7.0-rc4 #2
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
RIP: 0010:smb2_query_reparse_point+0x3e0/0x4c0 [cifs]
Code: ff ff e8 f3 51 fe ff 41 89 c6 58 5a 45 85 f6 0f 85 14 fe ff ff
49 8b 57 48 8b 42 60 44 8b 42 64 42 8d 0c 00 49 39 4f 50 72 40 <8b>
04 02 48 8b 9d f0 fe ff ff 49 8b 57 50 89 03 48 8b 9d e8 fe ff
RSP: 0018:ffffc90000347a90 EFLAGS: 00010212
RAX: 000000008000001f RBX: ffff88800ae11000 RCX: 00000000000000ec
RDX: ffff88801c5cd440 RSI: 0000000000000000 RDI: ffffffff82004aa4
RBP: ffffc90000347bb0 R08: 00000000800000cd R09: 0000000000000001
R10: 0000000000000000 R11: 0000000000000024 R12: ffff8880114d4100
R13: ffff8880114d4198 R14: 0000000000000000 R15: ffff8880114d4000
FS: 00007f02c07babc0(0000) GS:ffff88806ba00000(0000)
knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff88809c5cd45f CR3: 0000000011750000 CR4: 0000000000750ef0
PKRU: 55555554
Call Trace:
<TASK>
? __die+0x23/0x70
? page_fault_oops+0x181/0x480
? search_module_extables+0x19/0x60
? srso_alias_return_thunk+0x5/0xfbef5
? exc_page_fault+0x1b6/0x1c0
? asm_exc_page_fault+0x26/0x30
? _raw_spin_unlock_irqrestore+0x44/0x60
? smb2_query_reparse_point+0x3e0/0x4c0 [cifs]
cifs_get_fattr+0x16e/0xa50 [cifs]
? srso_alias_return_thunk+0x5/0xfbef5
? lock_acquire+0xbf/0x2b0
cifs_root_iget+0x163/0x5f0 [cifs]
cifs_smb3_do_mount+0x5bd/0x780 [cifs]
smb3_get_tree+0xd9/0x290 [cifs]
vfs_get_tree+0x2c/0x100
? capable+0x37/0x70
path_mount+0x2d7/0xb80
? srso_alias_return_thunk+0x5/0xfbef5
? _raw_spin_unlock_irqrestore+0x44/0x60
__x64_sys_mount+0x11a/0x150
do_syscall_64+0x47/0xf0
entry_SYSCALL_64_after_hwframe+0x6f/0x77
RIP: 0033:0x7f02c08d5b1e
Fixes: 2e4564b31b64 ("smb3: add support for stat of WSL reparse points for special file types")
Cc: stable@vger.kernel.org
Reported-by: Robert Morris <rtm@csail.mit.edu>
Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-05 15:13:32 +01:00
..
2023-11-28 16:56:19 +00:00
2023-02-01 08:27:06 +01:00
2024-01-05 15:13:30 +01:00
2023-09-23 11:09:54 +02:00
2023-12-20 15:17:41 +01:00
2022-07-02 16:41:14 +02:00
2023-10-19 23:05:36 +02:00
2024-01-05 15:13:32 +01:00
2023-03-10 09:39:50 +01:00
2022-12-31 13:14:15 +01:00
2022-11-10 18:15:37 +01:00
2022-12-31 13:14:03 +01:00
2022-02-01 17:27:01 +01:00
2023-09-19 12:22:52 +02:00
2022-07-02 16:41:14 +02:00
2023-09-06 21:28:37 +01:00
2023-11-28 16:56:19 +00:00
2022-06-09 10:23:32 +02:00
2023-09-23 11:09:57 +02:00
2023-12-20 15:17:41 +01:00
2023-11-28 16:56:34 +00:00
2022-06-09 10:22:42 +02:00
2021-10-04 22:13:12 +01:00
2023-12-20 15:17:38 +01:00
2023-11-28 16:56:22 +00:00
2023-03-10 09:39:57 +01:00
2023-05-24 17:36:43 +01:00
2021-08-26 22:28:02 +02:00
2022-12-31 13:14:44 +01:00
2023-12-08 08:48:05 +01:00
2021-11-12 15:05:50 +01:00
2023-11-28 16:56:30 +00:00
2023-07-23 13:47:34 +02:00
2023-11-28 16:56:18 +00:00
2023-07-23 13:47:23 +02:00
2023-12-23 10:42:00 +01:00
2023-09-19 12:22:43 +02:00
2022-04-13 20:59:10 +02:00
2021-12-29 12:28:59 +01:00
2023-11-28 16:56:21 +00:00
2021-10-04 22:02:17 +01:00
2023-11-28 16:56:34 +00:00
2023-12-13 18:36:43 +01:00
2023-09-19 12:22:27 +02:00
2023-07-23 13:47:36 +02:00
2022-11-26 09:24:52 +01:00
2023-11-08 17:26:46 +01:00
2023-09-19 12:22:34 +02:00
2022-12-31 13:14:44 +01:00
2023-11-28 16:56:29 +00:00
2023-12-03 07:31:24 +01:00
2023-11-20 11:08:13 +01:00
2021-09-21 08:36:48 -07:00
2023-11-28 16:56:31 +00:00
2023-07-23 13:47:33 +02:00
2023-09-19 12:22:30 +02:00
2021-12-14 10:57:12 +01:00
2023-02-22 12:57:07 +01:00
2023-08-11 15:13:58 +02:00
2023-09-23 11:10:02 +02:00
2023-05-17 11:50:14 +02:00
2023-09-19 12:22:53 +02:00
2021-09-27 11:26:21 -07:00
2023-09-19 12:22:52 +02:00
2023-11-28 16:56:26 +00:00
2023-04-05 11:25:01 +02:00
2023-02-22 12:57:05 +01:00
2023-09-23 11:10:01 +02:00
2021-09-05 10:15:05 -07:00
2023-10-06 13:18:24 +02:00
2022-11-03 23:59:12 +09:00
2022-06-09 10:22:26 +02:00
2022-12-31 13:14:39 +01:00
2022-11-26 09:24:51 +01:00
2022-12-31 13:14:30 +01:00
2022-04-08 14:24:18 +02:00
2021-09-02 10:07:29 -07:00
2022-09-28 11:11:56 +02:00
2021-09-03 09:58:10 -07:00
2023-09-19 12:22:30 +02:00
2023-06-21 15:59:14 +02:00
2022-11-03 23:59:12 +09:00
2021-09-03 10:08:28 -07:00
2022-10-26 12:34:58 +02:00
2023-08-11 15:13:58 +02:00
2023-07-23 13:47:34 +02:00
2021-09-07 16:07:47 -04:00
2023-11-20 11:08:13 +01:00
2023-12-08 08:48:04 +01:00
2023-08-30 16:18:19 +02:00
2022-05-25 09:57:26 +02:00
2021-09-12 10:10:21 -07:00
2021-10-18 20:22:03 -10:00
2022-12-31 13:14:03 +01:00
2023-09-23 11:09:55 +02:00
2022-12-14 11:37:31 +01:00
2023-01-12 11:59:20 +01:00
2023-12-23 10:41:55 +01:00
2023-04-13 16:48:25 +02:00
2023-08-11 15:13:57 +02:00
2022-06-06 08:43:37 +02:00
2023-01-12 11:58:47 +01:00
2022-07-02 16:41:17 +02:00
2022-07-02 16:41:14 +02:00
2022-12-19 12:36:39 +01:00
2022-07-21 21:24:14 +02:00
2022-01-29 10:58:25 +01:00
2022-07-12 16:35:08 +02:00
2021-12-14 10:57:15 +01:00
2022-10-26 12:34:17 +02:00
2022-04-27 14:38:57 +02:00
2023-05-24 17:36:54 +01:00
2023-08-11 15:13:58 +02:00
2022-04-27 14:38:50 +02:00
2022-10-26 12:34:36 +02:00
2022-12-31 13:14:01 +01:00