[PATCH v3 1/3] KEYS: Expand key->{datalen,quotalen} to unsigned int
sashiko-bot at kernel.org
sashiko-bot at kernel.org
Tue Oct 20 01:46:39 UTC 2026
> In key_alloc() and key_payload_reserve(), key->quotalen and key->datalen
> can receive values larger than USHRT_MAX.
>
> Example:
>
> keyctl new_session >/dev/null
> owner=$(keyctl newring owner @s)
> keeper=$(keyctl newring keeper @s)
>
> for ((i=0; i<16384; i++)); do
> key=$(keyctl add user "k$i" x "$keeper")
> keyctl link "$key" "$owner"
> done
>
> awk -v uid="$(id -u):" '$1 == uid {print $NF}' /proc/key-users
> keyctl clear "$owner"
> awk -v uid="$(id -u):" '$1 == uid {print $NF}' /proc/key-users
>
> Because key->datalen wraps around 65535, the quota refunded upon clearing
> is truncated, causing quota bytes to leak in /proc/key-users.
>
> Change the types of key->datalen and key->quotalen from unsigned short to
> unsigned int so that they can carry the full payload length without
> truncation.
>
> Cc: stable at vger.kernel.org
> Assisted-by: LLM
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Reviewed-by: David Howells <dhowells at redhat.com>
> Signed-off-by: Jarkko Sakkinen <jarkko at kernel.org>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261020013903.1244157-1-jarkko@kernel.org?part=1
More information about the Linux-security-module-archive
mailing list