linux-yocto/drivers
Guenter Roeck 1c532dd246 drm/i915/backlight: Return immediately when scale() finds invalid parameters
commit 6f71507415 upstream.

The scale() functions detects invalid parameters, but continues
its calculations anyway. This causes bad results if negative values
are used for unsigned operations. Worst case, a division by 0 error
will be seen if source_min == source_max.

On top of that, after v6.13, the sequence of WARN_ON() followed by clamp()
may result in a build error with gcc 13.x.

drivers/gpu/drm/i915/display/intel_backlight.c: In function 'scale':
include/linux/compiler_types.h:542:45: error:
	call to '__compiletime_assert_415' declared with attribute error:
	clamp() low limit source_min greater than high limit source_max

This happens if the compiler decides to rearrange the code as follows.

        if (source_min > source_max) {
                WARN(..);
                /* Do the clamp() knowing that source_min > source_max */
                source_val = clamp(source_val, source_min, source_max);
        } else {
                /* Do the clamp knowing that source_min <= source_max */
                source_val = clamp(source_val, source_min, source_max);
        }

Fix the problem by evaluating the return values from WARN_ON and returning
immediately after a warning. While at it, fix divide by zero error seen
if source_min == source_max.

Analyzed-by: Linus Torvalds <torvalds@linux-foundation.org>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Suggested-by: David Laight <david.laight.linux@gmail.com>
Cc: David Laight <david.laight.linux@gmail.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250121145203.2851237-1-linux@roeck-us.net
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-10-02 13:39:14 +02:00
..
accessibility
acpi ACPI: processor: idle: Check acpi_fetch_acpi_dev() return value 2025-08-28 16:24:33 +02:00
amba
android
ata ata: Fix SATA_MOBILE_LPM_POLICY description in Kconfig 2025-08-28 16:24:32 +02:00
atm atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control(). 2025-09-04 14:28:45 +02:00
auxdisplay auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common" 2025-06-04 14:37:57 +02:00
base x86/vmscape: Enable the mitigation 2025-09-11 17:17:17 +02:00
bcma
block drbd: add missing kref_get in handle_write_conflicts 2025-08-28 16:24:16 +02:00
bluetooth Bluetooth: btrtl: Prevent potential NULL dereference 2025-05-02 07:44:09 +02:00
bus bus: mhi: host: Detect events pointing to unexpected TREs 2025-08-28 16:24:32 +02:00
cdrom
char ipmi: Fix strcpy source and destination the same 2025-08-28 16:24:25 +02:00
clk clk: qcom: gdsc: Set retain_ff before moving to HW CTRL 2025-09-09 18:50:25 +02:00
clocksource clocksource: mips-gic-timer: Enable counter when CPUs start 2025-06-04 14:38:01 +02:00
comedi comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl() 2025-08-28 16:24:35 +02:00
connector
counter
cpufreq cpufreq: Initialize cpufreq-based invariance before subsys 2025-10-02 13:39:10 +02:00
cpuidle cpuidle: governors: menu: Avoid using invalid recent intervals data 2025-08-28 16:24:16 +02:00
crypto crypto: octeontx2 - add timeout for load_fvc completion poll 2025-08-28 16:24:24 +02:00
cxl
dax
dca
devfreq PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() 2025-08-28 16:24:17 +02:00
dio
dma dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees 2025-10-02 13:39:04 +02:00
dma-buf dma-buf: insert memory barrier before updating num_fences 2025-09-09 18:50:23 +02:00
edac EDAC/altera: Delete an inappropriate dma_free_coherent() call 2025-10-02 13:39:01 +02:00
eisa
extcon
firewire
firmware firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES 2025-06-27 11:05:11 +01:00
fpga fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable() 2025-08-28 16:24:34 +02:00
fsi
gnss
gpio gpio: pca953x: fix IRQ storm on system wake up 2025-09-09 18:50:22 +02:00
gpu drm/i915/backlight: Return immediately when scale() finds invalid parameters 2025-10-02 13:39:14 +02:00
greybus
hid HID: mcp2221: Handle reads greater than 60 bytes 2025-09-04 14:28:48 +02:00
hsi HSI: ssi_protocol: Fix use after free vulnerability in ssi_protocol Driver Due to Race Condition 2025-05-02 07:44:06 +02:00
hv Drivers: hv: vmbus: Add utility function for querying ring size 2025-07-10 15:57:36 +02:00
hwmon hwmon: (gsc-hwmon) fix fan pwm setpoint show functions 2025-08-28 16:24:28 +02:00
hwspinlock
hwtracing coresight: Only check bottom two claim bits 2025-07-10 15:57:33 +02:00
i2c i2c: Force DLL0945 touchpad i2c freq to 100khz 2025-08-28 16:24:24 +02:00
i3c i3c: don't fail if GETHDRCAP is unsupported 2025-08-28 16:24:24 +02:00
idle intel_idle: Allow loading ACPI tables for any family 2025-08-28 16:24:16 +02:00
iio iio: light: opt3001: fix deadlock due to concurrent flag access 2025-09-09 18:50:22 +02:00
infiniband IB/mlx5: Fix obj_type mismatch for SRQ event subscriptions 2025-10-02 13:39:10 +02:00
input Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table 2025-10-02 13:39:02 +02:00
interconnect interconnect: qcom: sc7280: Add missing num_links to xm_pcie3_1 node 2025-08-28 16:24:03 +02:00
iommu iommu/amd: Avoid stack buffer overflow from kernel cmdline 2025-08-28 16:24:37 +02:00
ipack
irqchip irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode() 2025-05-09 09:39:42 +02:00
isdn mISDN: Fix memory leak in dsp_hwec_enable() 2025-09-09 18:50:18 +02:00
leds leds: leds-lp50xx: Handle reg to get correct multi_index 2025-08-28 16:24:23 +02:00
macintosh
mailbox mailbox: Not protect module_put with spin_lock_irqsave 2025-07-10 15:57:32 +02:00
mcb mcb: fix a double free bug in chameleon_parse_gdd() 2025-05-02 07:44:31 +02:00
md dm-mpath: don't print the "loaded" message if registering fails 2025-08-28 16:24:24 +02:00
media media: i2c: imx214: Fix link frequency validation 2025-10-02 13:38:59 +02:00
memory
memstick memstick: Fix deadlock by moving removing flag earlier 2025-08-28 16:24:34 +02:00
message
mfd mfd: max14577: Fix wakeup source leaks on device unbind 2025-07-10 15:57:32 +02:00
misc misc: rtsx: usb: Ensure mmc child device is active when card is present 2025-08-28 16:24:26 +02:00
mmc mmc: mvsdio: Fix dma_unmap_sg() nents value 2025-10-02 13:39:07 +02:00
most most: core: Drop device reference after usage in get_channel() 2025-08-28 16:24:35 +02:00
mtd mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer 2025-10-02 13:39:02 +02:00
mux
net i40e: add validation for ring_len param 2025-10-02 13:39:14 +02:00
nfc
ntb ntb: reduce stack usage in idt_scan_mws 2025-05-02 07:44:36 +02:00
nubus
nvdimm libnvdimm/labels: Fix divide error in nd_label_data_init() 2025-06-04 14:37:55 +02:00
nvme nvme: fix misaccounting of nvme-mpath inflight I/O 2025-08-28 16:24:01 +02:00
nvmem
of of: module: add buffer overflow check in of_modalias() 2025-05-09 09:39:41 +02:00
opp
parisc
parport
pci PCI: vmd: Assign VMD IRQ domain before enumeration 2025-08-28 16:24:33 +02:00
pcmcia pcmcia: omap_cf: Mark driver struct with __refdata to prevent section mismatch 2025-10-02 13:39:05 +02:00
perf perf/arm-cmn: Initialise cmn->cpu earlier 2025-06-04 14:38:08 +02:00
phy phy: ti: omap-usb2: fix device leak at unbind 2025-10-02 13:39:09 +02:00
pinctrl pinctrl: STMFX: add missing HAS_IOMEM dependency 2025-09-04 14:28:43 +02:00
platform platform/chrome: cros_ec: Unregister notifier in cros_ec_unregister() 2025-08-28 16:24:32 +02:00
pnp
power power: supply: bq27xxx: restrict no-battery detection to bq27000 2025-10-02 13:39:07 +02:00
powercap powercap: intel_rapl: Do not change CLAMPING bit if ENABLE bit cannot be changed 2025-08-28 16:24:03 +02:00
pps pps: clients: gpio: fix interrupt handling order in remove path 2025-08-28 16:24:18 +02:00
ps3
ptp ptp: prevent possible ABBA deadlock in ptp_clock_freerun() 2025-08-28 16:24:16 +02:00
pwm pwm: mediatek: Fix duty and period setting 2025-08-28 16:24:36 +02:00
rapidio drivers/rapidio/rio_cm.c: prevent possible heap overwrite 2025-06-27 11:05:33 +01:00
ras
regulator regulator: sy7636a: fix lifecycle of power good gpio 2025-10-02 13:39:04 +02:00
remoteproc remoteproc: core: Release rproc->clean_table after rproc_attach() fails 2025-06-27 11:05:27 +01:00
reset reset: brcmstb: Enable reset drivers for ARCH_BCM2835 2025-08-28 16:24:18 +02:00
rpmsg rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send() 2025-06-27 11:05:15 +01:00
rtc rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe 2025-08-28 16:24:26 +02:00
s390 s390/pkey: Prevent overflow in size calculation for memdup_user() 2025-07-10 15:57:37 +02:00
sbus
scsi scsi: lpfc: Fix buffer free/clear order in deferred receive path 2025-09-09 18:50:21 +02:00
sh
siox
slimbus
soc soc: qcom: mdt_loader: Deal with zero e_shentsize 2025-10-02 13:39:05 +02:00
soundwire soundwire: stream: restore params when prepare ports fail 2025-08-28 16:24:10 +02:00
spi spi: tegra114: Use value to check for invalid delays 2025-09-09 18:50:25 +02:00
spmi
ssb
staging media: imx: fix a potential memory leak in imx_media_csc_scaler_device_init() 2025-08-28 16:24:29 +02:00
target scsi: target: core: Generate correct identifiers for PR OUT transport IDs 2025-08-28 16:24:25 +02:00
tc
tee tee: fix NULL pointer dereference in tee_shm_put 2025-09-09 18:50:17 +02:00
thermal thermal: sysfs: Return ENODATA instead of EAGAIN for reads 2025-08-28 16:24:18 +02:00
thunderbolt thunderbolt: Fix copy+paste error in match_service_id() 2025-08-28 16:24:26 +02:00
tty serial: sc16is7xx: fix bug in flow control levels init 2025-10-02 13:39:08 +02:00
uio uio_hv_generic: Align ring size to system page 2025-07-10 15:57:36 +02:00
usb usb: core: Add 0x prefix to quirks debug output 2025-10-02 13:39:10 +02:00
vdpa vdpa/mlx5: Fix oversized null mkey longer than 32bit 2025-05-02 07:44:02 +02:00
vfio vfio/type1: Fix error unwind in migration dirty bitmap allocation 2025-06-27 11:05:13 +01:00
vhost vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put() 2025-09-04 14:28:44 +02:00
video fbcon: Fix OOB access in font allocation 2025-10-02 13:39:14 +02:00
virt
virtio virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN 2025-06-04 14:37:54 +02:00
visorbus
vlynq
vme
w1
watchdog watchdog: iTCO_wdt: Report error if timeout configuration fails 2025-08-28 16:24:23 +02:00
xen xen/gntdev: remove struct gntdev_copy_batch from stack 2025-08-28 16:24:08 +02:00
zorro
Kconfig
Makefile