[lvc-project] [PATCH] smb: remove redundant DACL check in smb_check_perm_dacl

Alexey Velichayshiy a.velichayshiy at ispras.ru
Sun Nov 30 01:04:00 MSK 2025


Problem Analysis:
1. Permanently false condition:
The check `if (!pdacl->num_aces)` inside the `FILE_MAXIMAL_ACCESS_LE` block
can never execute because when `pdacl->num_aces == 0`, the function already
jumps to `err_out` in the earlier DACL validation check at line 35.
2. Logical contradiction:
The code contains conflicting semantics for empty DACL handling:
   - First check (line 35): Empty DACL → access denied → goto err_out
   - Second check (line 65): Empty DACL → grant GENERIC_ALL_FLAGS
   This creates unreachable code and semantic inconsistency.

Solution:
Remove the unreachable code block
as the most concise solution with no functional impact.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Alexey Velichayshiy <a.velichayshiy at ispras.ru>
---
 fs/smb/server/smbacl.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/fs/smb/server/smbacl.c b/fs/smb/server/smbacl.c
index 5aa7a66334d9..05598d994a68 100644
--- a/fs/smb/server/smbacl.c
+++ b/fs/smb/server/smbacl.c
@@ -1307,9 +1307,6 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
 			granted |= le32_to_cpu(ace->access_req);
 			ace = (struct smb_ace *)((char *)ace + le16_to_cpu(ace->size));
 		}
-
-		if (!pdacl->num_aces)
-			granted = GENERIC_ALL_FLAGS;
 	}
 
 	if (!uid)
-- 
2.43.0




More information about the lvc-project mailing list