Re: [PATCH v4] 9p/trans_virtio: reject mount tags longer than NAME_MAX at probe
From: Dominique Martinet
Date: Sun Sep 13 2026 - 05:02:25 EST
Michael Bommarito wrote on Sat, Jun 27, 2026 at 05:10:12PM -0400:
> p9_virtio_probe() reads a 16-bit mount tag length (tag_len) from the
> device config and kzalloc()s tag_len + 1 bytes for chan->tag with no
> upper bound. A malicious or compromised host can present a tag of up to
> 65535 bytes; that tag is later copied into the single-page sysfs buffer
> by p9_mount_tag_show() (memcpy(buf, chan->tag, tag_len + 1)), a
> host-controlled out-of-bounds write of up to ~64 KiB past the PAGE_SIZE
> attribute buffer.
>
> Reject an overlong tag at probe time. A 9p mount tag is a name-like
> identifier, so bound it by NAME_MAX (255): that limit is independent of
> the sysfs/seq_file page size and is far above any legitimate mount tag,
> which keeps p9_mount_tag_show() safe at the root without hard-coding a
> seq_file implementation detail.
>
> Fixes: 179a5bc4b8cb ("net/9p: use memcpy() instead of snprintf() in p9_mount_tag_show()")
> Cc: stable@xxxxxxxxxxxxxxx
> Suggested-by: Christian Schoenebeck <linux_oss@xxxxxxxxxxxxx>
> Assisted-by: Claude:claude-opus-4-8
> Signed-off-by: Michael Bommarito <michael.bommarito@xxxxxxxxx>
Thank you both, I've picked this up for 7.4
--
Dominique Martinet | Asmadeus