Description
In the Linux kernel, the following vulnerability has been resolved: cifs: fix DFS traversal oops without CONFIG_CIFS_DFS_UPCALL When compiled with CONFIG_CIFS_DFS_UPCALL disabled, cifs_dfs_d_automount is NULL. cifs.ko logic for mapping CIFS_FATTR_DFS_REFERRAL attributes to S_AUTOMOUNT and corresponding dentry flags is retained regardless of CONFIG_CIFS_DFS_UPCALL, leading to a NULL pointer dereference in VFS follow_automount() when traversing a DFS referral link: BUG: kernel NULL pointer dereference, address: 0000000000000000 ... Call Trace: <TASK> __traverse_mounts+0xb5/0x220 ? cifs_revalidate_mapping+0x65/0xc0 [cifs] step_into+0x195/0x610 ? lookup_fast+0xe2/0xf0 path_lookupat+0x64/0x140 filename_lookup+0xc2/0x140 ? __create_object+0x299/0x380 ? kmem_cache_alloc+0x119/0x220 ? user_path_at_empty+0x31/0x50 user_path_at_empty+0x31/0x50 __x64_sys_chdir+0x2a/0xd0 ? exit_to_user_mode_prepare+0xca/0x100 do_syscall_64+0x42/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc This fix adds an inline cifs_dfs_d_automount() {return -EREMOTE} handler when CONFIG_CIFS_DFS_UPCALL is disabled. An alternative would be to avoid flagging S_AUTOMOUNT, etc. without CONFIG_CIFS_DFS_UPCALL. This approach was chosen as it provides more control over the error path.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
25e195aa1e607f129ab912d29fcfc79239703307 to < 26a32a212bc540f4773cd6af8cf73e967d72569caffected25e195aa1e607f129ab912d29fcfc79239703307 to < b64305185b76f1d5145ce594ff48f3f0e70695bdaffected25e195aa1e607f129ab912d29fcfc79239703307 to < b7d854c33ab48e55fc233699bbefe39ec9bb5c05affected25e195aa1e607f129ab912d29fcfc79239703307 to < 1e144b68208e98fd4602c842a7149ba5f41d87fbaffected25e195aa1e607f129ab912d29fcfc79239703307 to < 179a88a8558bbf42991d361595281f3e45d7edfcaffected
Linux Linux
Default version status: affected
5.7affected0 to < 5.7unaffected5.10.177 to ≤ 5.10.*unaffected5.15.106 to ≤ 5.15.*unaffected6.1.23 to ≤ 6.1.*unaffected6.2.10 to ≤ 6.2.*unaffected6.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/26a32a212bc540f4773cd6af8cf73e967d72569c ↗
- https://git.kernel.org/stable/c/b64305185b76f1d5145ce594ff48f3f0e70695bd ↗
- https://git.kernel.org/stable/c/b7d854c33ab48e55fc233699bbefe39ec9bb5c05 ↗
- https://git.kernel.org/stable/c/1e144b68208e98fd4602c842a7149ba5f41d87fb ↗
- https://git.kernel.org/stable/c/179a88a8558bbf42991d361595281f3e45d7edfc ↗