]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ksmbd: handle missing create contexts for lease opens
authorNamjae Jeon <linkinjeon@kernel.org>
Sun, 21 Jun 2026 10:32:18 +0000 (19:32 +0900)
committerSteve French <stfrench@microsoft.com>
Tue, 23 Jun 2026 01:15:05 +0000 (20:15 -0500)
commita04159d96c27fd4836538ea6e8ff653b65242eac
treed5a19a57f209f2940573d55ca390dc393e817ee6
parent0c054227479ed7e36ebccb3a558bc0ef698264f6
ksmbd: handle missing create contexts for lease opens

smb2_find_context_vals() assumes that callers only search create
contexts when the SMB2 CREATE request contains a non-empty create context
area. That is not always true. a client can send RequestedOplockLevel set
to SMB2_OPLOCK_LEVEL_LEASE without a lease create context.

In that case parse_lease_state() searches for a lease context and
smb2_find_context_vals() starts parsing from offset 0 with length 0,
returning -EINVAL. This makes the open fail with STATUS_INVALID_PARAMETER.
The smbtorture smb2.lease.duplicate_open test hits this while creating
a second file without a lease request.

Return NULL when the request has no create context area so the missing
context is treated the same as any other absent create context.  The open
then continues without granting a lease.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/oplock.c