From: sashiko-bot@kernel.org
To: "Sasha Levin" <sashal@kernel.org>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH AUTOSEL 6.18-5.10] drm/amdgpu: Validate ATIF buffer length before use
Date: Mon, 19 Oct 2026 14:22:58 +0000 [thread overview]
Message-ID: <sashiko-outbox-177366@kernel.org> (raw)
In-Reply-To: <20261019135441.1420968-55-sashal@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/amdgpu: unvalidated number_of_points in amdgpu_atif_query_backlight_caps()
--
commit a73a09a7b2fb3e5ffd26ffc3c59fb52e0414b2a7
Author: Lijo Lazar <lijo.lazar@amd.com>
drm/amdgpu: Validate ATIF buffer length before use
This commit adds a min_size parameter to amdgpu_atif_call() to validate that
the returned ACPI buffer is of type ACPI_TYPE_BUFFER, holds at least a u16
size field, does not claim more data than was actually returned, and meets
the minimum size required by each calling function.
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> index 6c62e27b98002..5be40c781807a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
[ ... ]
> @@ -371,20 +383,14 @@ static int amdgpu_atif_query_backlight_caps(struct amdgpu_atif *atif)
>
> info = amdgpu_atif_call(atif,
> ATIF_FUNCTION_QUERY_BRIGHTNESS_TRANSFER_CHARACTERISTICS,
> - ¶ms);
> + ¶ms, offsetof(struct atif_qbtc_output, data_points));
> if (!info) {
> err = -EIO;
> goto out;
> }
>
> - size = *(u16 *) info->buffer.pointer;
> - if (size < 10) {
> - err = -EINVAL;
> - goto out;
> - }
> -
> memset(&characteristics, 0, sizeof(characteristics));
> - size = min(sizeof(characteristics), size);
> + size = min(sizeof(characteristics), (size_t)*(u16 *)info->buffer.pointer);
> memcpy(&characteristics, info->buffer.pointer, size);
>
> atif->backlight_caps.caps_valid = true;
[Severity: High]
Should amdgpu_atif_query_backlight_caps() also validate
characteristics.number_of_points against ATIF_QBTC_MAX_DATA_POINTS and the
returned buffer size?
Right after this hunk in drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c,
amdgpu_atif_query_backlight_caps() stores characteristics.number_of_points (a
u8) directly into atif->backlight_caps.data_points:
atif->backlight_caps.data_points = characteristics.number_of_points;
memcpy(atif->backlight_caps.luminance_data,
characteristics.data_points,
sizeof(atif->backlight_caps.luminance_data));
Because amdgpu_atif_call() only validates that the buffer is at least
offsetof(struct atif_qbtc_output, data_points) bytes, a malformed ATIF
response can report characteristics.number_of_points greater than
ATIF_QBTC_MAX_DATA_POINTS (99), or report more data points than are actually
present in the returned buffer size.
When backlight brightness is later updated via:
amdgpu_dm_backlight_update_status() ->
amdgpu_dm_backlight_set_level() ->
convert_brightness_from_user() ->
convert_custom_brightness()
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:convert_custom_brightness()
uses caps->data_points to index caps->luminance_data[MAX_LUMINANCE_DATA_POINTS]
without clamping:
left = 0;
right = caps->data_points - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
u8 signal = caps->luminance_data[mid].input_signal;
Could this read out of bounds of caps->luminance_data[] when
characteristics.number_of_points exceeds ATIF_QBTC_MAX_DATA_POINTS, or read
zero-padded entries if size is smaller than
offsetof(struct atif_qbtc_output, data_points) +
characteristics.number_of_points * sizeof(struct atif_qbtc_data_point)?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261019135441.1420968-55-sashal@kernel.org?part=1
next prev parent reply other threads:[~2026-10-19 14:23 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20261019135441.1420968-1-sashal@kernel.org>
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-6.6] drm/amdgpu: add buf length check Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-5.10] drm/amd/pm: Validate Vega hwmgr PowerPlay table bounds Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18] drm/amdgpu: validate XCP topology counts before division Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18] drm/panel-edp: Add BOE NE140QDM-NX2 Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-5.10] drm/panel: simple: Add Kyocera tcg070wvlq panel Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-6.1] drm/amdgpu/gfx11: WARN() rather than BUG() for invalid SDMA engine Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18] drm/amdgpu: Validate ATPX buffer length before use Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-5.10] drm/amd/pm: Validate legacy hwmgr PP table offsets Sasha Levin
2026-10-19 14:28 ` sashiko-bot
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18] drm/amd/display: Fix rounding errors in CalculatePrefetchSchedule Sasha Levin
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-5.10] drm/amdgpu: Validate ATIF buffer length before use Sasha Levin
2026-10-19 14:22 ` sashiko-bot [this message]
2026-10-19 13:45 ` [PATCH AUTOSEL 6.18-5.10] drm/amdgpu: Add checks to vbios fetch through ATRM Sasha Levin
2026-10-19 13:46 ` [PATCH AUTOSEL 6.18] drm/amd/pm: derive stable PPT limits from PPTable Sasha Levin
2026-10-19 14:32 ` sashiko-bot
2026-10-19 13:46 ` [PATCH AUTOSEL 6.18-6.12] drm/msm/adreno: Add support for A704 GPU Sasha Levin
2026-10-19 13:46 ` [PATCH AUTOSEL 6.18-6.12] drm/xe: only resume exec queues that were actually suspended Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18-6.1] drm/amd/pm: Use uploaded size for legacy custom PPTable Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18-5.10] gpu: host1x: Wait for timeout worker completion on channel free Sasha Levin
2026-10-19 14:39 ` sashiko-bot
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18-5.10] fbdev: udlfb: validate vendor descriptor items Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18-5.10] fbdev: maxine: fix 64-bit build error Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18] drm/msm: Move nr_cmds initialization Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18] drm/amdgpu: Fix kobject cleanup in xcp sysfs Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18] drm/amdgpu/mes_v12_0: use mes schedule pipe for legacy queues on unified MES Sasha Levin
2026-10-19 13:47 ` [PATCH AUTOSEL 6.18-6.1] drm/virtio: reclaim pending vbufs before tearing down vqs Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-5.15] drm/amd/pm: Validate Tonga PPTable subtable bounds Sasha Levin
2026-10-19 14:47 ` sashiko-bot
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-6.12] drm/etnaviv: force flush on power register ops Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-5.10] drm/amdgpu: Support some Barco AMD based graphics adapters Sasha Levin
2026-10-19 13:48 ` [PATCH AUTOSEL 6.18-5.10] drm/amd/pm: validate vega10 profile mode inputs Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18] drm/amdgpu: add check for xcp id Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18-6.1] drm/amdgpu: add bounds check to prevent array overflow Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18] drm/msm: detach the ARM DMA mapping before attaching our own domain Sasha Levin
2026-10-19 14:59 ` sashiko-bot
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18-6.6] drm/amd/pm: Validate Vega10 PPTable subtable bounds Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18] drm/sysfb: simpledrm: Validate mmap size against framebuffer size Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18-6.12] drm/panel-edp: Support MB116AS01'3 edp panel Sasha Levin
2026-10-19 13:49 ` [PATCH AUTOSEL 6.18-5.10] drm/etnaviv: check all modules for idle after reset Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18] drm/panel: panel-edp: Adjust T8 timing for AUO B116XAK01.6 and B140XTK02.4 Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-5.10] fbdev: omap2: dsi: do not copy isr table Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-6.6] drm/radeon: fix internal display on iMac11, 1 (RV770/DCE3.1) Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18] drm/etnaviv: check MMUv2 status after reset Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-6.6] drm/panel-edp: Add BOE NE160QDM-NY1 panel Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-6.12] drm/amd/display: fix max dispclk_khz/dppclk_khz double 1000 Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18] drm/panel-edp: Add BOE NV116WH2-M30, BOE NT116WHM-N21, BOE NV116FH1-M31, BOE NV116FH1-M30 Sasha Levin
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-5.10] drm/rockchip: dw_hdmi: Use resume_early pm ops for system suspend Sasha Levin
2026-10-19 15:06 ` sashiko-bot
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-5.10] drm/amdgpu: Gate debugfs MMIO access on kernel lockdown Sasha Levin
2026-10-19 15:09 ` sashiko-bot
2026-10-19 13:50 ` [PATCH AUTOSEL 6.18-5.10] fbcon: Fix KASAN slab-out-of-bounds Read in fbcon_prepare_logo Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18] drm/amdkfd: use node XCC count for v9 CRIU control stack restore Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18-5.10] drm/amd/pm: Validate OD DPM triples before mutating tables Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18] drm/virtio: abort virtqueue wait on device removal to avoid hung task Sasha Levin
2026-10-19 15:24 ` sashiko-bot
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18-5.10] drm/amd/pm: Validate Tonga PowerPlay state array bounds Sasha Levin
2026-10-19 13:51 ` [PATCH AUTOSEL 6.18-5.15] drm/amd/pm: Guard VBIOS AC timing table walk Sasha Levin
2026-10-19 15:20 ` sashiko-bot
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-6.1] drm/amd/pm: Validate pp_table header before reading size Sasha Levin
2026-10-19 15:31 ` sashiko-bot
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18] drm/msm: Fix barriers accessing ctx vm Sasha Levin
2026-10-19 15:27 ` sashiko-bot
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-6.1] drm/amdgpu/atomfirmware: WARN() rather than BUG() Sasha Levin
2026-10-19 15:24 ` sashiko-bot
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18] drm/amdgpu/gfx12: set KMD_QUEUE for kernel gfx queues Sasha Levin
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18-6.12] drm/amdgpu: Guard reads in pcie state readout Sasha Levin
2026-10-19 15:24 ` sashiko-bot
2026-10-19 13:52 ` [PATCH AUTOSEL 6.18] drm/amdkfd: Fix signal reset event Sasha Levin
2026-10-19 13:53 ` [PATCH AUTOSEL 6.18-5.10] drm/radeon: avoid double free in r600 DPM cleanup Sasha Levin
2026-10-19 15:33 ` sashiko-bot
2026-10-19 13:53 ` [PATCH AUTOSEL 6.18-6.1] drm/amdkfd: add sanity check in svm_range_is_valid Sasha Levin
2026-10-19 15:36 ` sashiko-bot
2026-10-19 13:53 ` [PATCH AUTOSEL 6.18] drm/amdgpu/gfx11: set KMD_QUEUE for kernel gfx queues Sasha Levin
2026-10-19 13:53 ` [PATCH AUTOSEL 6.18-5.10] fbdev: platinumfb: add error checking for ioremap calls Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-177366@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=sashal@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox