android_kernel_msm-6.1_noth.../drivers/gpu/drm
Kees Cook 467d3baa5d BACKPORT: overflow: Introduce overflows_type() and castable_to_type()
Implement a robust overflows_type() macro to test if a variable or
constant value would overflow another variable or type. This can be
used as a constant expression for static_assert() (which requires a
constant expression[1][2]) when used on constant values. This must be
constructed manually, since __builtin_add_overflow() does not produce
a constant expression[3].

Additionally adds castable_to_type(), similar to __same_type(), but for
checking if a constant value would overflow if cast to a given type.

Add unit tests for overflows_type(), __same_type(), and castable_to_type()
to the existing KUnit "overflow" test:

[16:03:33] ================== overflow (21 subtests) ==================
...
[16:03:33] [PASSED] overflows_type_test
[16:03:33] [PASSED] same_type_test
[16:03:33] [PASSED] castable_to_type_test
[16:03:33] ==================== [PASSED] overflow =====================
[16:03:33] ============================================================
[16:03:33] Testing complete. Ran 21 tests: passed: 21
[16:03:33] Elapsed time: 24.022s total, 0.002s configuring, 22.598s building, 0.767s running

[1] https://en.cppreference.com/w/c/language/_Static_assert
[2] C11 standard (ISO/IEC 9899:2011): 6.7.10 Static assertions
[3] https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html
    6.56 Built-in Functions to Perform Arithmetic with Overflow Checking
    Built-in Function: bool __builtin_add_overflow (type1 a, type2 b,

Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Tom Rix <trix@redhat.com>
Cc: Daniel Latypov <dlatypov@google.com>
Cc: Vitor Massaru Iha <vitor@massaru.org>
Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-hardening@vger.kernel.org
Cc: llvm@lists.linux.dev
Co-developed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20221024201125.1416422-1-gwan-gyeong.mun@intel.com

Bug: 279506910
(cherry picked from commit 4b21d25bf519c9487935a664886956bb18f04f6d)
Change-Id: I20aff9de6b82a2f5203367d30555f904681a5b7b
Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
2023-05-16 20:35:28 +00:00
..
amd drm/amd/display: set dcn315 lb bpp to 48 2023-04-26 14:28:40 +02:00
arm
armada drm/armada: Fix a potential double free in an error handling path 2023-04-20 12:35:09 +02:00
aspeed
ast drm/ast: make ast_modeset static 2022-09-26 09:11:47 +02:00
atmel-hlcdc
bridge Revert "Revert "pwm: Make .get_state() callback return an error code"" 2023-05-11 05:22:29 +00:00
display drm/display/dp_mst: Handle old/new payload states in drm_dp_remove_payload() 2023-04-13 16:55:37 +02:00
etnaviv drm/etnaviv: fix reference leak when mmaping imported buffer 2023-04-06 12:10:55 +02:00
exynos drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags 2023-03-10 09:33:14 +01:00
fsl-dcu drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid() 2022-12-31 13:33:06 +01:00
gma500 drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
gud drm/gud: Fix UBSAN warning 2023-03-10 09:34:33 +01:00
hisilicon drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
hyperv hyperv-next for 6.1 2022-10-10 13:59:01 -07:00
i2c
i810
i915 BACKPORT: overflow: Introduce overflows_type() and castable_to_type() 2023-05-16 20:35:28 +00:00
imx drm/imx: ipuv3-plane: Fix overlay plane width 2023-01-12 12:02:27 +01:00
ingenic drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init() 2023-01-07 11:11:57 +01:00
kmb
lib
lima drm/lima: Fix opp clkname setting in case of missing regulator 2022-11-14 19:08:21 +08:00
logicvc
mcde
mediatek drm/mediatek: Clean dangling pointer on bind error path 2023-03-10 09:33:17 +01:00
meson drm/meson: fix missing component unbind on bind errors 2023-03-30 12:49:27 +02:00
mga
mgag200 drm/mgag200: Fix PLL setup for G200_SE_A rev >=4 2023-01-07 11:11:57 +01:00
msm drm/msm/disp/dpu: fix sc7280_pp base offset 2023-04-06 12:10:36 +02:00
mxsfb drm: mxsfb: DRM_MXSFB should depend on ARCH_MXS || ARCH_MXC 2023-03-10 09:33:09 +01:00
nouveau drm/display/dp_mst: Handle old/new payload states in drm_dp_remove_payload() 2023-04-13 16:55:37 +02:00
omapdrm drm/omap: dsi: Fix excessive stack usage 2023-03-10 09:33:55 +01:00
panel drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags 2023-03-10 09:33:14 +01:00
panfrost drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path 2023-04-13 16:55:35 +02:00
pl111
qxl drm/qxl: drop set_prod_notify parameter from qxl_ring_create 2022-09-23 13:16:37 +02:00
r128
radeon drm/radeon: Fix eDP for single-display iMac11,2 2023-03-10 09:34:33 +01:00
rcar-du drm: rcar-du: Fix setting a reserved bit in DPLLCR 2023-03-10 09:33:57 +01:00
rockchip drm/rockchip: vop2: Use regcache_sync() to fix suspend/resume 2023-04-26 14:28:40 +02:00
savage
scheduler drm/scheduler: fix fence ref counting 2022-10-25 13:14:36 +02:00
shmobile drm/plane: Remove drm_plane_init() 2022-09-20 09:37:12 +02:00
sis
solomon drm/ssd130x: Init display before the SSD130X_DISPLAY_ON command 2023-02-09 11:28:02 +01:00
sprd
sti drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid() 2022-12-31 13:33:06 +01:00
stm
sun4i drm/sun4i: fix missing component unbind on bind errors 2023-03-22 13:34:00 +01:00
tdfx
tegra drm/tegra: firewall: Check for is_addr_reg existence in IMM check 2023-03-10 09:33:16 +01:00
tests drm: test: Fix 32-bit issue in drm_buddy_test 2023-04-26 14:28:36 +02:00
tidss drm: tidss: Fix pixel format definition 2023-03-10 09:33:09 +01:00
tilcdc drm/plane: Remove drm_plane_init() 2022-09-20 09:37:12 +02:00
tiny drm/cirrus: NULL-check pipe->plane.state->fb in cirrus_pipe_update() 2023-03-30 12:49:16 +02:00
ttm drm/ttm: Fix a NULL pointer dereference 2023-03-22 13:33:56 +01:00
tve200
udl
v3d
vboxvideo drm/vboxvideo: fix repeated words in comments 2022-09-17 15:01:24 +02:00
vc4 drm/vc4: hdmi: Correct interlaced timings again 2023-03-10 09:33:11 +01:00
vgem
via
virtio Merge 6.1.21 into android14-6.1 2023-03-24 08:47:17 +00:00
vkms drm/vkms: Fix null-ptr-deref in vkms_release() 2023-03-10 09:33:09 +01:00
vmwgfx drm/vmwgfx: Do not drop the reference to the handle too soon 2023-02-22 12:59:47 +01:00
xen
xlnx
drm_agpsupport.c
drm_aperture.c
drm_atomic.c drm/connector: print max_requested_bpc in state debugfs 2023-03-17 08:50:15 +01:00
drm_atomic_helper.c drm/atomic-helper: Don't allocate new plane state in CRTC check 2022-12-31 13:32:01 +01:00
drm_atomic_state_helper.c
drm_atomic_uapi.c
drm_auth.c
drm_blend.c
drm_bridge.c
drm_bridge_connector.c
drm_buddy.c drm: buddy_allocator: Fix buddy allocator init on 32-bit systems 2023-04-26 14:28:36 +02:00
drm_bufs.c
drm_cache.c
drm_client.c
drm_client_modeset.c
drm_color_mgmt.c
drm_connector.c drm/connector: send hotplug uevent on connector cleanup 2023-01-07 11:11:56 +01:00
drm_context.c
drm_crtc.c
drm_crtc_helper.c Driver core changes for 6.1-rc1 2022-10-07 17:04:10 -07:00
drm_crtc_helper_internal.h
drm_crtc_internal.h
drm_damage_helper.c
drm_debugfs.c
drm_debugfs_crc.c
drm_displayid.c
drm_dma.c
drm_drv.c drm/drv: Fix potential memory leak in drm_dev_init() 2022-11-10 18:49:01 -05:00
drm_dumb_buffers.c
drm_edid.c drm/edid: fix parsing of 3D modes from HDMI VSDB 2023-03-10 09:34:33 +01:00
drm_edid_load.c
drm_encoder.c
drm_encoder_slave.c
drm_fb_dma_helper.c
drm_fb_helper.c
drm_file.c
drm_flip_work.c
drm_format_helper.c drm/format-helper: Only advertise supported formats for conversion 2022-10-31 09:50:44 +01:00
drm_fourcc.c drm/fourcc: Add missing big-endian XRGB1555 and RGB565 formats 2023-03-10 09:33:08 +01:00
drm_framebuffer.c drm/framebuffer: convert to drm_dbg_kms() 2022-09-28 10:43:30 +02:00
drm_gem.c Revert "Revert "drm/msm/gem: Prevent blocking within shrinker loop"" 2023-03-30 12:23:03 +01:00
drm_gem_atomic_helper.c
drm_gem_dma_helper.c
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c drm/shmem-helper: Remove another errant put in error path 2023-03-22 13:34:00 +01:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c
drm_hashtab.c
drm_internal.h drm: Fix potential null-ptr-deref in drm_vblank_destroy_worker() 2022-11-10 18:49:02 -05:00
drm_ioc32.c
drm_ioctl.c Merge 9f4b9beeb9 ("Merge tag '6.1-rc-ksmbd-fixes' of git://git.samba.org/ksmbd") into android-mainline 2022-10-12 09:19:11 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy.h
drm_legacy_misc.c
drm_lock.c
drm_managed.c
drm_memory.c
drm_mipi_dbi.c
drm_mipi_dsi.c drm/mipi-dsi: Fix byte order of 16-bit DCS set/get brightness 2023-03-10 09:33:14 +01:00
drm_mm.c
drm_mode_config.c drm: Fix potential null-ptr-deref due to drmm_mode_config_init() 2023-03-10 09:33:08 +01:00
drm_mode_object.c
drm_modes.c
drm_modeset_helper.c drm/plane-helper: Provide DRM_PLANE_NON_ATOMIC_FUNCS initializer macro 2022-09-20 09:42:31 +02:00
drm_modeset_lock.c
drm_nomodeset.c
drm_of.c
drm_panel.c
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F 2023-04-20 12:35:11 +02:00
drm_pci.c
drm_plane.c drm/plane: Allocate planes with drm_universal_plane_alloc() 2022-09-20 09:41:06 +02:00
drm_plane_helper.c drm/plane-helper: Warn if atomic drivers call non-atomic helpers 2022-09-20 09:42:31 +02:00
drm_prime.c
drm_print.c drm_print: add _ddebug descriptor to drm_*dbg prototypes 2022-09-24 15:02:02 +02:00
drm_privacy_screen.c
drm_privacy_screen_x86.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_syncobj.c
drm_sysfs.c
drm_trace.h
drm_trace_points.c
drm_vblank.c
drm_vblank_work.c
drm_vm.c
drm_vma_manager.c drm/drm_vma_manager: Add drm_vma_node_allow_once() 2023-02-01 08:34:42 +01:00
drm_writeback.c
Kconfig drm: Disable dynamic debug as broken 2023-02-22 12:59:46 +01:00
Makefile Driver core changes for 6.1-rc1 2022-10-07 17:04:10 -07:00