---
id: CVE-2026-43185
title: 'ksmbd: fix signededness bug in smb_direct_prepare_negotiation()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()

  smb_direct_prepare_negotiation() casts an unsigned __u32 value
  from sp->max_recv_size and req->preferre…
severity: critical
cvss: 9.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf <
    56eab82fa6fb5ca024b0514e249d40d9b23ee5a7
  - >-
    Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf <
    a110dbe928561d440e9e117d17331139a0bedace
  - >-
    Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf <
    ceae058eb707ddd0d68f0872f9d9f23b7c30c37b
  - >-
    Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf <
    55abc475d096da4a5356b6efb0cfdc6156bc1550
  - >-
    Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf <
    6b4f875aac344cdd52a1f34cc70ed2f874a65757
  - Linux 5.15
published: '2026-05-06'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:40:13.282Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-43185'
references:
  - url: 'https://git.kernel.org/stable/c/56eab82fa6fb5ca024b0514e249d40d9b23ee5a7'
  - url: 'https://git.kernel.org/stable/c/a110dbe928561d440e9e117d17331139a0bedace'
  - url: 'https://git.kernel.org/stable/c/ceae058eb707ddd0d68f0872f9d9f23b7c30c37b'
  - url: 'https://git.kernel.org/stable/c/55abc475d096da4a5356b6efb0cfdc6156bc1550'
  - url: 'https://git.kernel.org/stable/c/6b4f875aac344cdd52a1f34cc70ed2f874a65757'
tags:
  - cve.org
epss: 0.00702
epssPercentile: 0.52658
ingestedAt: '2026-10-21T12:48:53.646Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

ksmbd: fix signededness bug in smb_direct_prepare_negotiation()

smb_direct_prepare_negotiation() casts an unsigned __u32 value
from sp->max_recv_size and req->preferred_send_size to a signed
int before computing min_t(int, ...). A maliciously provided
preferred_send_size of 0x80000000 will return as smaller than
max_recv_size, and then be used to set the maximum allowed
alowed receive size for the next message.

By sending a second message with a large value (>1420 bytes)
the attacker can then achieve a heap buffer overflow.

This fix replaces min_t(int, ...) with min_t(u32)

## Affected

- `Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf < 56eab82fa6fb5ca024b0514e249d40d9b23ee5a7`
- `Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf < a110dbe928561d440e9e117d17331139a0bedace`
- `Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf < ceae058eb707ddd0d68f0872f9d9f23b7c30c37b`
- `Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf < 55abc475d096da4a5356b6efb0cfdc6156bc1550`
- `Linux >= 0626e6641f6b467447c81dd7678a69c66f7746cf < 6b4f875aac344cdd52a1f34cc70ed2f874a65757`
- `Linux 5.15`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
