From nobody Mon Feb 9 01:01:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BACFA19DF8D for ; Sun, 28 Dec 2025 03:24:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766892255; cv=none; b=NfLgFgLRDtWlkaWts7v8LXT5HxuNLVV3uYH58SCuGr5c5xusOuctYOdNMM1pP7/J0s2ANIkpO92fvv5FH4t34WexoJgF51BNnJ1Jp1j8CxCesjivcMsqntg5SbekH2k6S085F/SxwwlJiZ/9djcw5Edsj3/gl3h0OelQ0hgtQ1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766892255; c=relaxed/simple; bh=OHanLuFuc76947yU3WzGXKL8IflDYvhJa4SYngSj/Nw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uPWCUhAimlGlLQN/evrbAC8qOU+Z6/RbvxB7JBYwXn8LaSyl1sOmkczJVjU+p8TXdjkeKM00UvK4L4kaEBtQuzzZS0Sto8wbbCXFSFrcsfvc0HDpIJn75YfQHPpwl8N4E1liDjFaJicWXuflKEt2a9Wl3sA/HyzuVcRbcJNxU1k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=LxwRHhAb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bCNpNCtD; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="LxwRHhAb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bCNpNCtD" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BS2wGPU1463480 for ; Sun, 28 Dec 2025 03:24:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 1uGVNstsP/UQQcLwdrzkGVSuVG5G5/ESRhIQYzvPwck=; b=LxwRHhAbR7kpNG1k oms2nloI0pLtwFoQaJmmTFjvFi92tWj8FUVYjz1W+W3NtwXo19okA7TySOiw0ht9 xnpAnoeDIEzUv5rVFqrjg2jw1DkO61hqCa8hvExHqvnpEntFpCKkdMQaF3nTSGp1 3BSwtU0w/xiSSCZofFTW3/eQW7hqZeb+QK/eDGZbCmbCav8D63Eu3KiR810jGSHn Kznsn3ddn8k4OijP3hvtYvXG/pK3YwSHJcax4mMHHv6vNPRhX+vZFwjByPzBfiWk ePcYWAuic3vIkXCJsj1nT6EmPw/ohvDyT8Qt2EAfPEZXOeNC0Ba+GpCz3FF8P5Re Wd5AyQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ba55e1shr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 28 Dec 2025 03:24:12 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-4f183e4cc7bso153619831cf.0 for ; Sat, 27 Dec 2025 19:24:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766892252; x=1767497052; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1uGVNstsP/UQQcLwdrzkGVSuVG5G5/ESRhIQYzvPwck=; b=bCNpNCtDw28Je8D24l7hfpAGj69gfhTj+hdSWJdpGcEPsPedNK1DrjZjSi+/YU9xOQ nUQsYclGZbrlBu39q1KBCG+CKeeNB3f2H9fBQ+NImSrIhmdbOGRb2BHmCFJILf96tHF9 way7szYe02XXslbhm1GX1cwSm1Im/TVM0rRaTYppkb5zKYjccxVuBrZHs3Bs15HlzQEG +xJYLGYfyTsMFPHp1qrbWVy1IS+8NKUpkz8qtmhyg5c0CuZl950W9fB6flEmWR/PtqL8 FPleB3Fr2C7uV/RUamR5edfd15lb3Q3pPJ+SEcbGRSWPqdT+m66jEwhAMx9bgSK2ZfLs nZ3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766892252; x=1767497052; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1uGVNstsP/UQQcLwdrzkGVSuVG5G5/ESRhIQYzvPwck=; b=aRrBrmci6UXbMVvmBvNjmj6q+8bHYAubOvpYD3h34yX9gM4qk61AsBY4a02Seix632 xM/zvSrS6fLO3Lh6/uQpfatfv5yd0E3xCZmySPeiQANW2jeGIdVRQeghBCESuYtyfmvH AHeY740EmyYy0EIGedXN+pWJogbS7ZkTi/HPgySiiQw3hQBMd4Q/OFSoD6RmRRhwDstq qGEb7rXdmb/oZfkM/3V4J0p2Ym44SGBiP5JT35W/j8YKEEYAvoEkblfCcwpZjVjxad4C 7u+FzyRRf34NO1rdn5u0BMKTf7kDHS1I3IReS+5sxAttiG9eW8pMKI2Ka7XSkHHAXxxq 1Atw== X-Forwarded-Encrypted: i=1; AJvYcCX/Sd9Fjhdro/UF3qq9nF4ac9VCqZBJ4hM6ay6jSAEvg1Z/Sw/WBfCUmv8Cr2LZAknsPD9zOlW2bW0x8kk=@vger.kernel.org X-Gm-Message-State: AOJu0Yzds5/+/8XPeeXHRS/z2eM2vZ0mE7HbQd7b9WWRagy0rCzSyAkW QHBuARo2C8U1GS7oOe6Xj2DI/N38/gqtD9b3iuwwd1Dxi6NSJwFHN/PNkSZhhoSt795Zc9Xe4hK x6RVkxDxMskrsgkeO1phixaLIF8koFThowYZcC3DvaZQjep02GOw2Hd2QwpkBgRAizQo= X-Gm-Gg: AY/fxX4Xmtf3EE+b6R8irtX/2npK7S2AM9780kxrVcn0OicziSHJdsdYu1YpmfVjA2P TYxCFLCZ5Lp9XA27YtZ1ySSjmwfDEPbnGyRxLPnVIwb8dgcOF71DZbE2G2/X+xSqUAjOrbQfN1H HhFXU92FaixClF56kkMtJByAk5y5CR9UJZFj2RbC5ZgM/lyJNpNsTog8qhUBnG6Vfet3HbR5YKP 85uJlXHd36gSnTolZI1vfzwKrvElKSOG/zhkGVEa1iYYaoKz5On8pOrB3aGE4NE5ThQcf59DS0x D39EYqcM/t6ThXsBx/pODDBigOZVFlyIRZA9GWp6AxtB6FkPJUhmoz5A2YZQz3Yc3petpb2QsDP /PeZM3nTGyOF4koQHp08RQyvI3idvoATI7y5g8OJ+tUKsjyjvT0lqfcdFokZyrBKjpVaQ9KK4vd DTNk+fZbl5jzhcPtZPuPmr0wY= X-Received: by 2002:a05:622a:52:b0:4ee:2154:8032 with SMTP id d75a77b69052e-4f4abccfbf9mr411437661cf.6.1766892251882; Sat, 27 Dec 2025 19:24:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IHym4jtd6iruY/LtoXO0zkBjy8zwwzIIzsS7J759AFgV3YE7d2JZ9pTxvrevNx5At1xnVelTQ== X-Received: by 2002:a05:622a:52:b0:4ee:2154:8032 with SMTP id d75a77b69052e-4f4abccfbf9mr411437541cf.6.1766892251396; Sat, 27 Dec 2025 19:24:11 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3812262b36dsm72149561fa.30.2025.12.27.19.24.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 19:24:09 -0800 (PST) From: Dmitry Baryshkov Date: Sun, 28 Dec 2025 05:24:05 +0200 Subject: [PATCH v2 1/3] drm/mode_object: add drm_object_immutable_property_get_value() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251228-drm-fix-lut-checks-v2-1-50f5d1a260a7@oss.qualcomm.com> References: <20251228-drm-fix-lut-checks-v2-0-50f5d1a260a7@oss.qualcomm.com> In-Reply-To: <20251228-drm-fix-lut-checks-v2-0-50f5d1a260a7@oss.qualcomm.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2687; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=OHanLuFuc76947yU3WzGXKL8IflDYvhJa4SYngSj/Nw=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpUKLWCqbtmVXnOVqIZM81gDqoe2k/c0O8gLZ0n bForL4+rpKJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVCi1gAKCRCLPIo+Aiko 1WTWB/981hNSUmln3Zng5VlQNM/WADygi9G5h+qTQET3GiZ+0xse3xCVH5B6wPb3tfWauiTsB1V 1SY4OuuxrNu0qppPny8lc0OTl5FmYweB8YbelQeVDQvgZInG4KZiyZcPVJ/lS3jS3rOzOfNwdq8 P/nKrWj56IWQ0hPTuBLCD+DRs33SgtkYHVz0cMgJ607UzUskSmYpnCcIEibsUMFM8LAsv3lWcRc sRoMMjTeLtDhGQj85wzbvKGy9MUlty1R/B0wqUu3om5EW0HUp3fGdjCmqNHlOn41ATNSumjuAMj 1VJEsf9NVOmftK2w6E3K323j39kVG3EWuoESf3hEp6CSOJP6 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI4MDAyOSBTYWx0ZWRfX8CLtj/BcIZuv 8NHfP7Hv5jpJPSlc+Bx+v4NK3ou8WRlNWv9PfJajbkcw2BqN3aa8t02qGqct5DnYlCJ4vVUE7Wd U0yfYNkRCXayFPU1hf2yY28T/JUysiQevWENqu7sVivIMFJn9VMIiflrFPKGxuWSRkP6gjbHA6h 2kQeCQJuUf5g92B2ogUrqKBTb8lyhj0m5f26v0LDi4G3m8dbq7RJa+iJZPgXzDq/Wd8Ld8gvKU4 b+PWFQXatGWWXCYx7r4Q8YfECuWxiA4Vo3PRVxpcFofO8I1UJ8R0YrJW5xl6KOzyKPivNbBV+bY u1gr5gJBdi57ZeUWGNyKYPI9kKZPUonbCEiLYpW+wxrzmYJXrUTT4qyEo/y7Ty75NtiYaSypkBC xnOrbbZUHAnOqneKyz0Ool4IklTI8S1yi8JHuDe/motaMMbRR695DHXY+5kR2QAISui8Jgz2wIH 4NDjIVwJuXBHN4k28/w== X-Authority-Analysis: v=2.4 cv=UMDQ3Sfy c=1 sm=1 tr=0 ts=6950a2dc cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=uUhA93nX2LN1thLMeo8A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-ORIG-GUID: CYcrVtt4c69uTCK-Q31oiGzX7qBKbDxt X-Proofpoint-GUID: CYcrVtt4c69uTCK-Q31oiGzX7qBKbDxt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-28_01,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 phishscore=0 adultscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512280029 We have a helper to get property values for non-atomic drivers and another one default property values for atomic drivers. In some cases we need the ability to get value of immutable property, no matter what kind of driver it is. Implement new property-related helper, drm_object_immutable_property_get_value(), which lets the caller to get the value of the immutable property. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_mode_object.c | 25 +++++++++++++++++++++++++ include/drm/drm_mode_object.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/drm_mode_o= bject.c index b45d501b10c8..2d943a610b88 100644 --- a/drivers/gpu/drm/drm_mode_object.c +++ b/drivers/gpu/drm/drm_mode_object.c @@ -385,6 +385,31 @@ int drm_object_property_get_default_value(struct drm_m= ode_object *obj, } EXPORT_SYMBOL(drm_object_property_get_default_value); =20 +/** + * drm_object_immutable_property_get_value - retrieve the value of a prope= rty + * @obj: drm mode object to get property value from + * @property: property to retrieve + * @val: storage for the property value + * + * This function retrieves the software state of the given immutable prope= rty + * for the given mode object. + * + * This function can be called by both atomic and non-atomic drivers. + * + * Returns: + * Zero on success, error code on failure. + */ +int drm_object_immutable_property_get_value(struct drm_mode_object *obj, + struct drm_property *property, + uint64_t *val) +{ + if (drm_WARN_ON(property->dev, !(property->flags & DRM_MODE_PROP_IMMUTABL= E))) + return -EINVAL; + + return __drm_object_property_get_prop_value(obj, property, val); +} +EXPORT_SYMBOL(drm_object_immutable_property_get_value); + /* helper for getconnector and getproperties ioctls */ int drm_mode_object_get_properties(struct drm_mode_object *obj, bool atomi= c, bool plane_color_pipeline, diff --git a/include/drm/drm_mode_object.h b/include/drm/drm_mode_object.h index c68edbd126d0..44a0d6f8d01f 100644 --- a/include/drm/drm_mode_object.h +++ b/include/drm/drm_mode_object.h @@ -133,6 +133,9 @@ int drm_object_property_get_value(struct drm_mode_objec= t *obj, int drm_object_property_get_default_value(struct drm_mode_object *obj, struct drm_property *property, uint64_t *val); +int drm_object_immutable_property_get_value(struct drm_mode_object *obj, + struct drm_property *property, + uint64_t *val); =20 void drm_object_attach_property(struct drm_mode_object *obj, struct drm_property *property, --=20 2.47.3 From nobody Mon Feb 9 01:01:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DADFD2046BA for ; Sun, 28 Dec 2025 03:24:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766892256; cv=none; b=M7xzvWTq30SUd40bsGwkOeulSzxlIo9qvgeXOMTuEKqcUFd42DNoRb8mzhkeaCHytm4BRx9Dmd/ayL+h0VtNmkbqJJkUoh3TmD0caC11+U7pKmMwQA29kU/d8OAkzVTvdRURHEeq/kC59SDGUpzui0zOBXESSq5/ADppDX/XuZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766892256; c=relaxed/simple; bh=UkO7gGzz204YJlbpHl9qFMBJirNFYawZoOhKgADqEnM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H5gQmFrNox6Bk6Jf4XtIbyUzzti29nDPPjwuuhKRwBIpQZ97qFF/rKeHQ2rcViIXsvgXC8FrR8s9JeffVkZom0FC1U/L6dtzyTdI0n1hO9PiLkGDJoJFzdMqVxbon6pUM8vl03qBNrP3LVKfPOR1QLmCNUe/T1MB7RaJe1deOKU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=nk4YVERI; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=anHwIDHF; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="nk4YVERI"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="anHwIDHF" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BS2wGPV1463480 for ; Sun, 28 Dec 2025 03:24:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= i/ZE9RtLemTsfDhGA7S/TMDUgGHbHWM5z3Ovm2RpDnU=; b=nk4YVERIVG+3upJx ei+/HxEVAlFjbJaZKgC+gi4qrF/RgWbK3OkH8B8FSvCGHk4gIokCNcVPNi5qvSvH s/W9rysqHTb6/hHqf8J/davH8C+JLaGIU6yzm1unSwDOkD3R+33IIYhrM+HBsBrG FcMEoI9i7Gn+qaNODDGfWbGjusapZDMZG0reKOTj4iJuGtZEjOE73dH09obpuInz C2WaqJzQJYzs4hc2V4NJjdHxtILSlOX/7+9kT/7MgVxirr+fNoFBqXm6/9H1AQAO KECpTS0sybHhT8TMPUt3bAlhIChRo1qZAHNX1jWTzUyT/1KCHBnTb+uFTegeOtle 0iaXdg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ba55e1sht-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 28 Dec 2025 03:24:13 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4edb6a94873so159768521cf.0 for ; Sat, 27 Dec 2025 19:24:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766892253; x=1767497053; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=i/ZE9RtLemTsfDhGA7S/TMDUgGHbHWM5z3Ovm2RpDnU=; b=anHwIDHF8E5BYMOnyw/Ka2sGAdqJzd/cnyqRZG8vxq7douihstsgaTaO9VdC/nh2On srP+I8Npne07Es9rYfWXvhvIlBbYmokesBtTcE9aZpSrXs0S97M0cfeq5NCtQRXnAaO+ 67LofFz4scoXjA/RBQhO3HyE+V5MMy92VCzPwXyMQVxDuUddwWEcVwTrhHOwZeeoSX1v 8RtZRMrTBrKn1gTYkcuZh5md7xE2Y0jff8LnlSYUZFc5BlhzUlL2QPTHegdQE3V01q7x /RS2yFflptePK/XXo0N24zG0rQ+IJ/dWgu6hGOICy+TJG7k/PbYqfCO0Gpjace/XyxX/ 5tAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766892253; x=1767497053; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=i/ZE9RtLemTsfDhGA7S/TMDUgGHbHWM5z3Ovm2RpDnU=; b=DfEJD/Xl0/ZyUewqhaRlaFhvc0rhS4/M1lACiA6q75HSbPF4xlu4A7QZwdZSwFqUmZ /A58s2WmAhbvUaDQrCdjJXl/gSnzhuKiZ1GRWegu9Z1elkFSebBnVGKKnva+VjdcdKle QjBTZHkeU+tLLYdbZo3k+yK/qwP4k71X/9sZQ09rz4hy1klcp5UTbqwESshefbS3arhD 0d5pVcK5fHaO6sUxTOkai+Pj0H2nRdnrdyIeaB9uGvWc0MGnOILLcEZ4cQPX0LX1lwZ/ 5IuP0SaZnZRPsjyWLipOyIN0zRnE36qwKxlSdOemXn3BuM0ZhnehbcDpkiZ6BIp1BpS5 FjZA== X-Forwarded-Encrypted: i=1; AJvYcCXn3LZm4LDBo5GwNdNqHD/3jsH6hu4uUoOpnnekwZEjmI2rSMviC0WluW4luKqtZW0elxb/v1m75Yt4as8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0xRilZ2EUhHeWrML1ujMJkwrZP1isba/A0emRjcRiwwntfiId /TQ7Jj2iqtSp4mBWauAUObf6ORFBWODnUZgP6D5nRE8/ABaswWLIcH7aSkOgMTZq74pULA2Yp4M rhbqC1jgexZkH+hH1ETe/2maUBzMRmTfe+aOFrRe24NlrJfOUz51HwmYzfC/OyrSHci0= X-Gm-Gg: AY/fxX640a3nimMYCAZJJhi5tE2pIIkwdOQjhjXFjfhaay0UfINXrL65iKFar4N0CHw QVtOviFOUSt/YVWviyhjg5y/GW+9q/o2k+dKiK/cQBDAZl5MbPVB4xbl8kcPlQ2eYVp93BZe9VB WdAJMPd3xkL7iG0xH2LkPtQs+O0KFpRcizxLhsdoB+7Us8ok9LB/H+X11NQd1c01Ru80sIRmori S18YLj6UOdtmf85y48nJKyk4ZQP8+QuWmpI2blSEh97vm8TT6k2n9ZDd3xTLsDTyzlyyt0gHpUZ ko9370gAbW3Wig7GzAQURpvgap07dYDRUBez6UFPi2g3wjRhdOnLDEt5UjhYhOck54v0HXeWN0P Pa27kXY+gzbX+5vpKWGgrhIqKNqMEzeCFtjL9qn0yXw2qIq6yxUmldcqqtDBZXkS4VgAX9Q2hOF 7Joz47iorJRtjMAFdBQQ2ijag= X-Received: by 2002:a05:622a:5c91:b0:4ed:dcf0:6c42 with SMTP id d75a77b69052e-4f4abd8cb47mr445720531cf.40.1766892252924; Sat, 27 Dec 2025 19:24:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IE7sI66qV0k9krxjZk/aTcw5Gnyitndlxx7LAdj3JhMqT0YeUPsGI0pydm0oPEQLn/B8b/b5w== X-Received: by 2002:a05:622a:5c91:b0:4ed:dcf0:6c42 with SMTP id d75a77b69052e-4f4abd8cb47mr445720401cf.40.1766892252510; Sat, 27 Dec 2025 19:24:12 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3812262b36dsm72149561fa.30.2025.12.27.19.24.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 19:24:11 -0800 (PST) From: Dmitry Baryshkov Date: Sun, 28 Dec 2025 05:24:06 +0200 Subject: [PATCH v2 2/3] drm/atomic: add max_size check to drm_property_replace_blob_from_id() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251228-drm-fix-lut-checks-v2-2-50f5d1a260a7@oss.qualcomm.com> References: <20251228-drm-fix-lut-checks-v2-0-50f5d1a260a7@oss.qualcomm.com> In-Reply-To: <20251228-drm-fix-lut-checks-v2-0-50f5d1a260a7@oss.qualcomm.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7371; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=UkO7gGzz204YJlbpHl9qFMBJirNFYawZoOhKgADqEnM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpUKLWPCn5iT0mGoXdl7QJ6E+apnQ7rMLHMGJk4 G9sECIFLGyJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVCi1gAKCRCLPIo+Aiko 1SctB/9QMqX9xOhN+slQMAqjpgPgfBziS0hh5u1jxZXi7HNFhxc3+/JyQ9eOUwrsExpScvJVr68 x9UzhN+X7/NQcX13Rta3rU4XT2+CFZQSPyf4nTkWfBfwBoLIQrZSRJKMIADXXxvxNCfrgO0DWIB ekeglW3oAcSJkcoAXQgcSy5utQak3jZmais2WMk5ZgsAP7JAbYGMzBoiGJTFoR/Dja1GKM6F0Sz 7Kl07Yxm7TQW+8+GjJXUFZyABXeX+HsXcPusv+eRG/zm6fGYbve5qE+84vzYNO/pUHvEciIjzry q6uIVF/AlSUouUR3hldSUi2smRuPKyCfyiWsvxgqJCh6kjxF X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI4MDAyOSBTYWx0ZWRfXwxrVkrevv00F qvneoQRkN2MzsgUwJ51gXPFyAAcHDtwJalq18U9bGEhemHmfGauqzfYAAamCf4O/sv58rm90QCI 9gbsRpPmv9dk1PMn28wtF2c/0LtHO/S5QyiJTRHODW6d+A+HZ8U0gP0VG8B54oKUkGwhXeidQv6 S4xidmZPhXL1kdIVRYmr6oK0OLfLBJ2NDdZBzo5v/AgjkMd86YH8VUi8W2/mNxu9PVrdePrI/yY Bmowao3Ob808HEXfik1+WGLvUBnBty1Y/RHwTpru/v116YPIgOJK4SVovIzAC8K71FxBF8VxEr5 rbE5PTMcHfZUFIl0LidzwWmV0VuS68berfRMXOeCmF73NmPO5xNG9vxAJF0Lxdvv+s6OpDlt2Yf AcyFSYrV9Wj3P6C4rmEwlhc8VVrQOBGSEDYxTCpmVA6rwZtf1An7V6iBLR2jf3SWqo7L8PLAUPn +HjvYrFWxIKSc9/KTcQ== X-Authority-Analysis: v=2.4 cv=UMDQ3Sfy c=1 sm=1 tr=0 ts=6950a2dd cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=ySEUILROmfWDjamXepEA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: DdrL3R_ebvQGStCo8GUToLEEMcopTN-3 X-Proofpoint-GUID: DdrL3R_ebvQGStCo8GUToLEEMcopTN-3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-28_01,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 phishscore=0 adultscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512280029 The function drm_property_replace_blob_from_id() allows checking whether the blob size is equal to a predefined value. In case of variable-size properties (like the gamma / degamma LUTs) we might want to check for the blob size against the maximum, allowing properties of the size lesser than the max supported by the hardware. Extend the function in order to support such checks. Signed-off-by: Dmitry Baryshkov --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 18 +++++++++-----= ---- drivers/gpu/drm/drm_atomic_uapi.c | 14 ++++++-------- drivers/gpu/drm/drm_property.c | 11 +++++++++++ include/drm/drm_property.h | 1 + 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/driv= ers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c index 2e3ee78999d9..8c5912b59e19 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c @@ -1676,8 +1676,8 @@ dm_atomic_plane_set_property(struct drm_plane *plane, if (property =3D=3D adev->mode_info.plane_degamma_lut_property) { ret =3D drm_property_replace_blob_from_id(plane->dev, &dm_plane_state->degamma_lut, - val, -1, - sizeof(struct drm_color_lut), + val, + -1, -1, sizeof(struct drm_color_lut), &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; @@ -1695,15 +1695,15 @@ dm_atomic_plane_set_property(struct drm_plane *plan= e, ret =3D drm_property_replace_blob_from_id(plane->dev, &dm_plane_state->ctm, val, - sizeof(struct drm_color_ctm_3x4), -1, + -1, sizeof(struct drm_color_ctm_3x4), -1, &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; } else if (property =3D=3D adev->mode_info.plane_shaper_lut_property) { ret =3D drm_property_replace_blob_from_id(plane->dev, &dm_plane_state->shaper_lut, - val, -1, - sizeof(struct drm_color_lut), + val, + -1, -1, sizeof(struct drm_color_lut), &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; @@ -1715,16 +1715,16 @@ dm_atomic_plane_set_property(struct drm_plane *plan= e, } else if (property =3D=3D adev->mode_info.plane_lut3d_property) { ret =3D drm_property_replace_blob_from_id(plane->dev, &dm_plane_state->lut3d, - val, -1, - sizeof(struct drm_color_lut), + val, + -1, -1, sizeof(struct drm_color_lut), &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; } else if (property =3D=3D adev->mode_info.plane_blend_lut_property) { ret =3D drm_property_replace_blob_from_id(plane->dev, &dm_plane_state->blend_lut, - val, -1, - sizeof(struct drm_color_lut), + val, + -1, -1, sizeof(struct drm_color_lut), &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index 7320db4b8489..dff1fdefcbeb 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -416,7 +416,7 @@ static int drm_atomic_crtc_set_property(struct drm_crtc= *crtc, ret =3D drm_property_replace_blob_from_id(dev, &state->degamma_lut, val, - -1, sizeof(struct drm_color_lut), + -1, -1, sizeof(struct drm_color_lut), &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -424,7 +424,7 @@ static int drm_atomic_crtc_set_property(struct drm_crtc= *crtc, ret =3D drm_property_replace_blob_from_id(dev, &state->ctm, val, - sizeof(struct drm_color_ctm), -1, + -1, sizeof(struct drm_color_ctm), -1, &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -432,7 +432,7 @@ static int drm_atomic_crtc_set_property(struct drm_crtc= *crtc, ret =3D drm_property_replace_blob_from_id(dev, &state->gamma_lut, val, - -1, sizeof(struct drm_color_lut), + -1, -1, sizeof(struct drm_color_lut), &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -587,8 +587,7 @@ static int drm_atomic_plane_set_property(struct drm_pla= ne *plane, ret =3D drm_property_replace_blob_from_id(dev, &state->fb_damage_clips, val, - -1, - sizeof(struct drm_mode_rect), + -1, -1, sizeof(struct drm_mode_rect), &replaced); return ret; } else if (property =3D=3D plane->scaling_filter_property) { @@ -717,8 +716,7 @@ static int drm_atomic_color_set_data_property(struct dr= m_colorop *colorop, return drm_property_replace_blob_from_id(colorop->dev, &state->data, val, - size, - elem_size, + -1, size, elem_size, &replaced); } =20 @@ -876,7 +874,7 @@ static int drm_atomic_connector_set_property(struct drm= _connector *connector, ret =3D drm_property_replace_blob_from_id(dev, &state->hdr_output_metadata, val, - sizeof(struct hdr_output_metadata), -1, + -1, sizeof(struct hdr_output_metadata), -1, &replaced); return ret; } else if (property =3D=3D config->aspect_ratio_property) { diff --git a/drivers/gpu/drm/drm_property.c b/drivers/gpu/drm/drm_property.c index 596272149a35..955fa960843b 100644 --- a/drivers/gpu/drm/drm_property.c +++ b/drivers/gpu/drm/drm_property.c @@ -757,6 +757,7 @@ EXPORT_SYMBOL(drm_property_replace_blob); * @dev: DRM device * @blob: a pointer to the member blob to be replaced * @blob_id: the id of the new blob to replace with + * @max_size: the maximum size of the blob property for variable-size blobs * @expected_size: expected size of the blob property * @expected_elem_size: expected size of an element in the blob property * @replaced: if the blob was in fact replaced @@ -771,6 +772,7 @@ EXPORT_SYMBOL(drm_property_replace_blob); int drm_property_replace_blob_from_id(struct drm_device *dev, struct drm_property_blob **blob, uint64_t blob_id, + ssize_t max_size, ssize_t expected_size, ssize_t expected_elem_size, bool *replaced) @@ -785,6 +787,15 @@ int drm_property_replace_blob_from_id(struct drm_devic= e *dev, return -EINVAL; } =20 + if (max_size > 0 && + new_blob->length > max_size) { + drm_dbg_atomic(dev, + "[BLOB:%d] length %zu greater than max %zu\n", + new_blob->base.id, new_blob->length, max_size); + drm_property_blob_put(new_blob); + return -EINVAL; + } + if (expected_size > 0 && new_blob->length !=3D expected_size) { drm_dbg_atomic(dev, diff --git a/include/drm/drm_property.h b/include/drm/drm_property.h index 082f29156b3e..aa49b5a42bb5 100644 --- a/include/drm/drm_property.h +++ b/include/drm/drm_property.h @@ -284,6 +284,7 @@ int drm_property_replace_blob_from_id(struct drm_device= *dev, uint64_t blob_id, ssize_t expected_size, ssize_t expected_elem_size, + ssize_t max_size, bool *replaced); int drm_property_replace_global_blob(struct drm_device *dev, struct drm_property_blob **replace, --=20 2.47.3 From nobody Mon Feb 9 01:01:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F11120E6E2 for ; Sun, 28 Dec 2025 03:24:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766892260; cv=none; b=GG2a2qfVb6PwdOpZlBKh0AMbAOtpZhXaOhlOAs4SjIsS9himmY2vx9UBg4wqBNUZbM+4ZpYJxreSfV7MpkFnzNtwH1HxPSSGTyMhdOBw7OBjb/xJ4nAi2l8UtjyJmumYsQtMPXmSqgtxK3cejGVYrn6r4KA3GPaPqHfGO90tTdc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766892260; c=relaxed/simple; bh=MShYdDKdFUHcrHqdYR2kRbGAF0dVfrFIaZJcWDlIW7g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sdbz38iEFBQesbzL7+lrP02jQW5R1PmleGfssgo1gWtooA4eYPALrgZLzc94jWURaGVFo9C7ouJJtQn3mUWleNq/t20HWJrxuib9Djl3XIAjuoXuH00+jvjPZLfx0g4MqONYGzz1qIEkVMqeC5cJtS7kbXI30GO3pN96qbhPPBg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=k4UPUn6v; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QOxPl99T; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="k4UPUn6v"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QOxPl99T" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BS1b9FV1563672 for ; Sun, 28 Dec 2025 03:24:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 3dHmK4Z0mEQYvLqijWN5ssYQ9ShWJJdkoUufTuuHqek=; b=k4UPUn6vP9bcXK1f rcaBMSgGNPCbld4EE5oJ23m4QoB8mb8LRWVjzK4q1vCegA/YAre4Zl5fY1RJUrJB /QAHePqkVrXSfLHt1CTCzZaHhfzVLuXMnQJmnVU5T466J54c/ULibA/mXau7uxUn V72OIEMHiwpTucSCdfdJUEy0JRmmzw6QEP/UBjYcwMQnyX8xcJFj/cHCh3nhw0e7 FnmNWFZIedaoHs9lWcAJjTYKlS+vHH1W7IytwF0dgWyoQm6PXF6btMafZNbyAe8W rH4QXyeAZ/3OIbZYk2terhg9y04u/ajFblp16GAuOyhY+lGVKAW9PDWzKGGiwdUi fMSUag== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ba87bsjhf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 28 Dec 2025 03:24:17 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-88a3822c06bso235646736d6.2 for ; Sat, 27 Dec 2025 19:24:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766892256; x=1767497056; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3dHmK4Z0mEQYvLqijWN5ssYQ9ShWJJdkoUufTuuHqek=; b=QOxPl99T4om8s2GKighC6dwhL1IcQF6hMBcnzAWv3AHk2vkuF5H0xMftphrTaT2U+s 1DeEp1KjTQ/wCaCUfSO4w6B6dxi43uFSPiYT5lzoijT/CeRW+GJ0AM8BybzQ7/K0Q8dt UPNfmYuPICRgQEaTKsIxUimv5EsL5K1H7hsihrh5KGWJDHyekB9wYAJnWo11WlhDpZio wPLBIp3zI4fv9w6yIxpqW74/4NMmCDJFV7Wc7fuHY9hJEYIzHfDDhF5kKtEDBRX8QIww y+C5m7mOaXqWn6sofI7WR39Uk6QajZW37fF7hpKAP8wMYgJmlMsaewtWNMZGnTMZos2d Y/fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766892256; x=1767497056; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3dHmK4Z0mEQYvLqijWN5ssYQ9ShWJJdkoUufTuuHqek=; b=S2dkFjAvM2F7bzE98typFIHV0fpGEQJfiwYsTVYpuz4BFgXOIK95zmsuapk1PlKEEn HBuDGNHCLQT/NKLxtEYCrFKgqp7FS0BdgEMOH4BrpRpkthS/mqySYUYJojBham0KLPSC 4xQvUa6eD0C78WR8NdH3n6xjUNybbhG/OOvT6tS1//PRjZX9t+4RDIsD1fUdinPV/act hXeoTQItS9tpjCxApYvwFGGcNR8ancUDId/Mv1Z/2UHniQ2p7z5hoYe4HwW0U56mnidj OxJt10OuJ2PPb7pfPHYn1PWnbpph1aIU5hjkP4+ASzBRSmo4jW041jrFen1+xbps/pws jZxA== X-Forwarded-Encrypted: i=1; AJvYcCWNZb14yA3mCPV28ZHLJtEj6/mog9hg0PZWoPRvdZPuBHKUTefNTIPAZd9GfxgU4NyED5UPDIxRe4xYuqk=@vger.kernel.org X-Gm-Message-State: AOJu0Yzgi+BfdL9iji2ctZmGM6lHSWkQcAHVUNS81DqQKNkRVflnaJsM yDnfk80nkR7TgWfLCM3iarKYE+zDIJU0bhOnP5biZ8gHDpMiH4lMupk6G0gDFHyqSkLYS+mYRDT WrcVTMaKy+acFa0IqPTSax/FydiRKDRX0d+pQaY7Afji3EbGX2hE0/ETTM+EhiH4CqqQ= X-Gm-Gg: AY/fxX6Fw+DSiKYyXfNP8ocAnCsOHWoEsZiJMCZu4SPMRqpLUrtpn1lTu68alqm9o77 p4RG3HJ9fdGKpOA/6dR7nZhaMvzoQBLCgY6NZKwIb+HDXxW86XfgTqxwkc6kwCV6knCwvsXVsLr NLYzjhy7dcdMedAk7IRXdVZad9c4DSJ1HG3cjD9tJIBISoaWxWtpfENDl6+2fxGKiOQTeeu/e0p p3WHD5wvirfuJyMaLfzH+bMXpaCrPwNFJZHJXYZsJ2SDl5KuQm68IxIc2mOxLWiirVwhO+vl8/X 4a+bv7IDwyhMqrvxKcb82Ymc1jRCaiRZq3ZJQiVTNvIHiLrjCM8c3G80Cr9B+hUMkfqUkcuYvPe ZlaGDIdZh6WV2AvUd+VBmgbV4eqZNifVvpkjyPmI5kvcIj/f2AN6fSWjNWJKEbkb8clojrMeRbV GurMpIJSZbTTRtu3LJNJv9sv8= X-Received: by 2002:a05:622a:909:b0:4ee:1875:42fa with SMTP id d75a77b69052e-4f4abcd09f4mr411834051cf.1.1766892256459; Sat, 27 Dec 2025 19:24:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IH7rnFmsC4exAxvQSHpB1xuuZUBoYW9vqYfhHAhmTqGWdfrHTe27lOp4ru7Isb9AMlvq7RjTg== X-Received: by 2002:a05:622a:909:b0:4ee:1875:42fa with SMTP id d75a77b69052e-4f4abcd09f4mr411833851cf.1.1766892256029; Sat, 27 Dec 2025 19:24:16 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3812262b36dsm72149561fa.30.2025.12.27.19.24.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 19:24:14 -0800 (PST) From: Dmitry Baryshkov Date: Sun, 28 Dec 2025 05:24:07 +0200 Subject: [PATCH v2 3/3] drm/atomic: verify that gamma/degamma LUTs are not too big Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251228-drm-fix-lut-checks-v2-3-50f5d1a260a7@oss.qualcomm.com> References: <20251228-drm-fix-lut-checks-v2-0-50f5d1a260a7@oss.qualcomm.com> In-Reply-To: <20251228-drm-fix-lut-checks-v2-0-50f5d1a260a7@oss.qualcomm.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2119; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=MShYdDKdFUHcrHqdYR2kRbGAF0dVfrFIaZJcWDlIW7g=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpUKLWgTT7o1EDCbJr87OcCnHW+Vd1tXrMXtG8i AXrXELA0PWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVCi1gAKCRCLPIo+Aiko 1fCHB/49Xr2ORljZCm1hynreogxCv1NqbFHUtI1Iw14YGFMA1Z9EXjf1SXSZlHQ8Sag/qifTS+X avKm3KjwjQGIhqZ+8UGs4RiS3x2hg6lrDzqqOnX9RfH1i0YYvw7WKMyopKqw9b/y7EKQjg9JI2w ToNRi9PgLT6R0RbpDg/0jeSBtcKTD0L9f2/c3qs7yEwWyAOubY4ue9HR5drfOkvSaWUygIEvl15 0Pt0MTj1iJHefu8vS41zFO1I741K456L5hxZhLzcn/fSDbB79eye6ji/QI4a2OwyZeugDnYjSxG 4xbbM431/e2jm0juvpdiipkpq/AlbY85tqyumRP32Egepcyy X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: eRTAWax6NfGj5XJ8RdmrToUbr0m8cvk2 X-Proofpoint-GUID: eRTAWax6NfGj5XJ8RdmrToUbr0m8cvk2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI4MDAyOCBTYWx0ZWRfXzc4/NPXfNvcF c7o02cGbihvyR7sGg1LLHaCRijh5SaRC3fMEOTHm958Ud4LqRby3IT67QK9INBpKJ1p+ewX+Fc5 f5gElu5ncCG/IEn8OJX0PRz+D1jWLnKkdBMayHBQPjgRIKMMIkAeJ0P1G1KrBfMEzU4Rti+P17c hjLDQdFT4PyBgGtWsQbcRjVRcsXHf302AlX06UalQ92uia4v/vdC2InMo+B2chdfaUKesWOQqhW zo5c6MlbcElxS6qyaSTLGHnaMUenmHhkprV2r6L4sQGCmKYkUf7/7iKVypV5Y4rAWVVCTb+0OEb V4K9N8U9S4uLdvHjrcVApYgGaWq+74c/tcmsdx0llt5s9a+UMoO3fkdbhLRpo8xEMknzhHJHlCi 3gIURsrq1JX9TGfJjkQcA8fv7OOGQj9JDFaGS9S7UpvbwnDNIi73XxHR4cCy8gCveiLZbYS3EMX 8xeJDHBvOHJye1Q4q6Q== X-Authority-Analysis: v=2.4 cv=do7Wylg4 c=1 sm=1 tr=0 ts=6950a2e1 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=ZkoTrUv0hqWFqrPu6skA:9 a=QEXdDO2ut3YA:10 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-28_01,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512280028 The kernel specifies LUT table sizes in a separate property, however it doesn't enforce it as a maximum. Some drivers implement max suze check on their own in the atomic_check path. Other drivers simply ignore the issue. Perform LUT size validation in the generic place. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_uapi.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index dff1fdefcbeb..8489823a9773 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -413,10 +413,19 @@ static int drm_atomic_crtc_set_property(struct drm_cr= tc *crtc, } else if (property =3D=3D config->prop_vrr_enabled) { state->vrr_enabled =3D val; } else if (property =3D=3D config->degamma_lut_property) { + const elem_size =3D sizeof(struct drm_color_lut); + u64 lut_size; + + ret =3D drm_object_immutable_property_get_value(&crtc->base, + config->degamma_lut_size_property, + &lut_size); + if (ret) + return ret; + ret =3D drm_property_replace_blob_from_id(dev, &state->degamma_lut, val, - -1, -1, sizeof(struct drm_color_lut), + elem_size * lut_size, -1, elem_size, &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -429,10 +438,19 @@ static int drm_atomic_crtc_set_property(struct drm_cr= tc *crtc, state->color_mgmt_changed |=3D replaced; return ret; } else if (property =3D=3D config->gamma_lut_property) { + const elem_size =3D sizeof(struct drm_color_lut); + u64 lut_size; + + ret =3D drm_object_immutable_property_get_value(&crtc->base, + config->gamma_lut_size_property, + &lut_size); + if (ret) + return ret; + ret =3D drm_property_replace_blob_from_id(dev, &state->gamma_lut, val, - -1, -1, sizeof(struct drm_color_lut), + elem_size * lut_size, -1, elem_size, &replaced); state->color_mgmt_changed |=3D replaced; return ret; --=20 2.47.3