From nobody Tue Dec 16 16:40:39 2025 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 76B3432A3C2 for ; Wed, 10 Dec 2025 19:43:04 +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=1765395787; cv=none; b=rI9Ush92EypVXiHTM5SpKMisHvNDxP1nN7VvrNPErv2iWCvg6AhaxTmDETewptZXKZqXgGeJjT1nHetbuRqgJCJOh+19ZWUKqLyS5tWpf3W2NeidjM3g1FHp6mPI4qtQkds7kbVk9NhqbrKtEhlutOLb4kQ1b1Av/R2qYt6YCto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765395787; c=relaxed/simple; bh=84spwcC+GgCGcy6iJaQp0NhNe6cV9oQI7NsJIN80HDg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GfdBh8NnyqkIaARwuB6zfVx7+8GX8Xqm7X1X9IyCuLtxUu9qXA/rAJZKGRfIpvtIKlpjhL3nr9ip26B6uPk3icJG+HrcaxdXqo6wnVbn6LQ7/WZ9f2DbfAFpu6mB0dpQg2VOPNRkJ9hRrgUo1i1qfWiFAGdRoFNwfkZy8KFY5So= 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=IfGcGQaF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DX3H7BAF; 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="IfGcGQaF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DX3H7BAF" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BAIRSeu3192563 for ; Wed, 10 Dec 2025 19:43:03 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= ryq28wshLI0oIjJ4PKrZBvj5VmkNPho6G1e6vywuGjk=; b=IfGcGQaFGSoAHFkY +Bdz88h6xLBPeCkhZrACck9CpPp3PcNndJfWJ0cPM2kSMViBgxxaj6ym71aAVqKk IyNnbjWcf/oY0A0oEQE944GqVbHtUizt34we/1UYiTJmuq0qUx81vCqbWw0NOdfn RWyJhZLeBgVUIRnUzXUemroSFfUJObYMTIe+kkIdctpE3nGc7dF7xKOxoLdc1GBT p++oxTOdq6ab4+g0jLCaSJz+7UUeWbJzPgFh+zl0SbVKrOJ5uyOHS6a39SG4wrl8 ICSr7kejZWIxNY2fdlzoi0+BL/S8CT4J4Hv5BSxeh0TLECvZpiVaHJo+1qot9n0w ZKU4rA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ay505j9qx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 10 Dec 2025 19:43:03 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4ed782d4c7dso2559811cf.2 for ; Wed, 10 Dec 2025 11:43:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765395782; x=1766000582; 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=ryq28wshLI0oIjJ4PKrZBvj5VmkNPho6G1e6vywuGjk=; b=DX3H7BAF+Uwrd9t94cOJQJGNm2xT7zpLV+ZvDP8c4qFPla2tef35QHNmCRsU4R/pJi Tgr/XlcEsPB7ZBlf36q2ah4lwybfhWvEhsMAIV2cuYTMTw1+VBNkwfqFnVrNJMTNByJl sS/88RAUEZVrbwJGITE1n5FLPWnOy0+vR5oekvA+02MyegRfFjFH96Oh3xA6/vAmCWJm 7dEE8ctp1VEob0dhZ3Oyr+huqd/Aw3/uopC4PTOjfbZXnHuCNYBllcEAJ3tUbgmoUmJ9 Qn02D61kTyqN7IdpBiLi28UELJD4LH4fcIY0KwTeui8i5t1qSDLq0jjkLRPydkuvTg/V Eo6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765395782; x=1766000582; 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=ryq28wshLI0oIjJ4PKrZBvj5VmkNPho6G1e6vywuGjk=; b=iaBoJU4YSVpNgFPgUENmV4JRF28FNDoRenOyyj0Vfavp3KP+/jhGcfLPSSOyIy5fcf m6u8Niff837Onup5Nrlykvvu8lJEwEJz7tDjnYikh3QP3OAakw22JW3tMT4xj/MXV32Y bq1w2oPzKdDN551ZHtwVNQ04WTAO1Mb5XEOco2R1XdKOD1R5v4eiFA6uABSpZbbbqtaB A6Qv8Mcs0idqkDkL0tIWx9M0ANSZn8aCSvHshWiV60N508ZqVTpwmaBGvKTAZf5hik2j sU6T5R1JhO4oE9kiYISmSuEYYytZmJW+1ze2qeferB4Gy5ht9SRh+kZuZk7j0FdJn2kz u2DQ== X-Forwarded-Encrypted: i=1; AJvYcCWHGiBXSxc+2ZvM9MhV231u7vHbtvCUUU7b9JLGFU2TwyUWpHc2qY33T9b76Fu2IZ8eyZx+HSUUnlV/qfo=@vger.kernel.org X-Gm-Message-State: AOJu0YxjYmswbaFSfGq464kExIwPBmMtHCYIEa3f5HF5wiGGdTFW4MKp sITxylMqwUFxI6QOgpgolkdks47nDR7GpUhukKU9vhrTEoAmRnNLgd7iktf/PgCw9qQP0P3KGwQ XaqYGIzfxvDeLVtnfhDe0eDY5NqeQVO0a7sOBsg/xBo+5Y52oP2v+KV7Vh/V1Q0CJCNqI9ZeHWQ 8= X-Gm-Gg: ASbGncv5rNHQpgU0xFYV6CdXbE8nd/IRbn0h4KC5YlIaocLRzhD1J5Fkw38fmLn0aAS TpUYYGZ+CSHPuxF2qDBCcSw1YUNQewR0PR6ToUlvHBKlRra6a5X+UxW8HsIr4/lT1WXMtZdyDzb oEr8i575DxAZFb4spEJU5RFVjISBUVZC6PZZxSLiJlNO2IYQ1zQd+6OL9QptWPYLGul06m5h6yZ OagihOxPc2qG76XOmijg17cbR0ghprdmOXSu4+i+6RJO6TmRhXRTBF/L6oSWYC8n4WZ8X+hDxZf ecGI6Qq2LtxO8lxDKHE4/2W4vPtUq7rNb2GAPg7xSgte8rKwr3z8hBVS/VipJ/haGk4UDOEaOxQ D9pqvpIlxjoXGfHAR0efoM+/UybaSJ7kgKr3Xn9WHNeFhJlRtHViCCDyZT1b0tgYT3EZolEpMqg TXFepDek6Acg+SI0Hks+RBKyA= X-Received: by 2002:a05:622a:4d8d:b0:4ed:df82:ca30 with SMTP id d75a77b69052e-4f1b1a4441fmr44110961cf.13.1765395782092; Wed, 10 Dec 2025 11:43:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IG8Leq08Gnm+xIOjQRDoPg4jQIGdReNJ5+WQmPnyY2bqpauNc4t6EMMxDDUIMcGNH0IxdK3MA== X-Received: by 2002:a05:622a:4d8d:b0:4ed:df82:ca30 with SMTP id d75a77b69052e-4f1b1a4441fmr44110611cf.13.1765395781625; Wed, 10 Dec 2025 11:43:01 -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 2adb3069b0e04-598f3199e93sm104845e87.96.2025.12.10.11.42.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 11:42:59 -0800 (PST) From: Dmitry Baryshkov Date: Wed, 10 Dec 2025 21:42:57 +0200 Subject: [PATCH RESEND 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: <20251210-drm-fix-lut-checks-v1-1-10ae38519f43@oss.qualcomm.com> References: <20251210-drm-fix-lut-checks-v1-0-10ae38519f43@oss.qualcomm.com> In-Reply-To: <20251210-drm-fix-lut-checks-v1-0-10ae38519f43@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=2674; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=84spwcC+GgCGcy6iJaQp0NhNe6cV9oQI7NsJIN80HDg=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpOc1B8K6ZcH9AGxBj1wYCLCUEBFjES9yOWFJCd h15qndfCVCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaTnNQQAKCRCLPIo+Aiko 1eNBB/9mmJa+SoiCqubL6XwCu35MQeMCvsZSyezoTRIFzMWU+RXiMp65olwThsJX30j7QAoE62W 6HeSC5PLSjTYmHU9xDc1knqb8PJsL+9S/kmPBZP8otKlBgPME8uv6PVG9etXNrAz+XEHCyAun+c Sv0N9yK28gVvH+ocJQPTSClSG03fiL1f1NfxljZNKK32G/71jhJiZ+/t9/vMWHbUFvgB0rW8WSd btYC1JzDRwyz6QznNlxhihVta3VR5KZQX1/VPW5MTPCmDOsGZJs01isKALrvIfRXc+UIbsbBIrW gwmKkcyKzx+3BhRkAlORsJmB2xTjzzOM7fuwJIYXxzECRJH3 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: 5ZzvVI3lhcICYsEvReiP9_h7NRfxXrJS X-Authority-Analysis: v=2.4 cv=Bu2QAIX5 c=1 sm=1 tr=0 ts=6939cd47 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==: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=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: 5ZzvVI3lhcICYsEvReiP9_h7NRfxXrJS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjEwMDE2MSBTYWx0ZWRfX8eBNaTpIJ71z RhmmX2hxHZPIKIy33a7XWKQstTokSpjUNjJ8chrAWnmvQGD8GcbFYdavq+4uOBFhcmusvAwTeHD 1owGAVuVPR5x7FaTME3DWr1E205+5SdJUKfMIt94ZmFGBJQScK7DM3MIyQa0F7dO9xfKL8r9LN1 tm2TjrybxlhmuybnXOVMMIudDww5AjcL9svTwVuxmyLS9lNEwIxWiJDHFRoiBB8FfynsczgVbJT jp7NQt5+o7JIz+B/eO3KJPHWuS2fQ/tn3slteorIFDo/vDJEzm9lQ6VZWC9a/xEYRuYikDxXanm 3ucHE1A/LkPQCWOOOqH3bSbChEG4WxF+5oEghHrP3EWqzJyaNCN70HSwnOSjBQRlOhkXvLKolCs T80UIHVLmohIUTyBQ5eeSlu4K/J6AQ== 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-10_02,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512100161 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 e943205a2394..ead8eeafd012 100644 --- a/drivers/gpu/drm/drm_mode_object.c +++ b/drivers/gpu/drm/drm_mode_object.c @@ -384,6 +384,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 softare state of the given immutable proper= ty for the given + * property. + * + * This function can be called directtly by both atomic and non-atomic dri= vers. + * + * 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 (WARN_ON(!(property->flags & DRM_MODE_PROP_IMMUTABLE))) + 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, uint32_t __user *prop_ptr, 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 Tue Dec 16 16:40:39 2025 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 594AD32A3F1 for ; Wed, 10 Dec 2025 19:43:05 +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=1765395788; cv=none; b=pbvpgBMcWqfQNl/a/I64/xoaQnjsT4NOLMbp/OLadw5NHoFBUsV6geti+sl8ogz4zwiKJVxBMrlm5AoBpBGvbPoIlEQzwKvJTg2+QHw4sK7skJxrQV+GE9G5Ruu4jPcsva6kTKFpajePr2cWbzSL++70Fih+7Lx/OzpeUqEPBjw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765395788; c=relaxed/simple; bh=zXvnGnGuLkJqi0K2ojfpmFIykU/bxtYPAL0lpdGu0vw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f1LRh+0TN6XGzpNbIkAXC+9j6lnUa7h3T6YQjUlG2QMLIXG6U3W0Asl/PC7Ye/jPf9rzYKOgWJa4Qbou88IRigbW7fogkkrjYczXSa1ZqUj3NnZA653eOgMsNdap3GMrx2e5V8y9hdVoZklHKRjs7vRr1UBBJkgwcXPqAiGj4PI= 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=lTRSnU1i; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=X7nFPiEq; 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="lTRSnU1i"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="X7nFPiEq" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BAIR2WB2821975 for ; Wed, 10 Dec 2025 19:43:04 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= CJryTvBlX1l57AzfpPj3XJrxYhHGAfPLn56090dAH44=; b=lTRSnU1i0vaTfyq4 3AYYl1nR2GHA0sXeRvnwjbSE8SKEqcdQC0HlsWjN14/H36AUiIEqMQN4UIeZU0iS 3foSkMk9wXr1gT9rfP7N/1hPM+XfkNX48vZ2FC6kBklbEFjWFyyrdHhEK/PYqClu c20UnZyhK2mo6qnl+3RJ/u2pLWS6YXXPruaXYweXDjYfRASMLeDZ8J1VhQ9CvN3O UUVVCSWbFSDks2bZIdFTIkpp6qZeI8bNaAdiCIC4iOF1xegW+vfdWMu2af9q6jzR CVjo80IbOjodSAcuc057xJaXEUNwDdUX0X0HiMdBp8v0GB38B6oIzaYRYlTvnbFB uPEW7g== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4aydea0ete-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 10 Dec 2025 19:43:04 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-4efef582d65so3415371cf.3 for ; Wed, 10 Dec 2025 11:43:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765395783; x=1766000583; 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=CJryTvBlX1l57AzfpPj3XJrxYhHGAfPLn56090dAH44=; b=X7nFPiEqSfpdMvpvBbicFjfX2avS31FnB57V3QKj+4tc+AGju/oGwoIx6IoaCOqyZJ BiO0NtAIDFdMCbwdiWIQyPtWIYF2k3a5r31lzXbUjGiIBtd/V9gA9ir3u5fVJl5Y/NND BcafaEiBMT5gnYCWznPdN1h6LTxFMUFaLpQLdfgB8ewZiLIbn7mL07xCZ+nSIsY7Y/FQ 7Yiaa2EfBRfN60cm6IXzQWa7ruVAo0pdqxMMgYVO2ryBDUCqwnbd5+Y5WUIZrI57XQPS bOITt4l+I46iZlwrhcgFdd8n9uS2FuVAzY6AVzjyo7p40nkDURycmMZ5BarOtKTb4Mk0 JIbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765395783; x=1766000583; 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=CJryTvBlX1l57AzfpPj3XJrxYhHGAfPLn56090dAH44=; b=C6mrtFs98HhJ9W6djz4U8U7KWr0WihsO+9u5dH6dpXl2aRn3/ViK8OP4z/kouj34Ft mrB7Qw7ITabaym7BE9SIgLmZXjQFl+cESDxiG0G4QebqKI3kFUQmqyoWV9/WCqLQp/uJ A23UYAM0PYkyRBs/7LSzyQYtxfyN4nDfAzDywTpDKiSxb/mz0BQ+GdAJU92M9LkgN6sp 2AuiATXrZw84u9XngUPhmv7J0qJ6KwEzHXk9zX0LjpgR9cK8yb7VjafZO8PavCOeQWs4 B0nVwQVCScsK7Ol3eHwFk1ix0eisNJHn08BVK5qUgChIC58pVFh0NjCVppSJh/3YTaPE icvw== X-Forwarded-Encrypted: i=1; AJvYcCXSxT7EDyrdS7WnNjcM8Yziy98EbagvA+pCw2u5nqhP90mT5qe7lnn/8zJZxWvuS7J1D3wNdPYU5syTMqo=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7sNTn5r0kucy1L68T6Y4UvihaEDnw0Sz20zkAtL4UnmocNuwC rG0XwOR1Ay0GAbDIkNgDW26KCB6p4qls37NlcXDgV22QCtP7hJJxrtI13iWUI5IdL3zLXpMsy66 QMh8GoGQthfQCkG4HPvM8V7Xr5n6RkjyqXNe+8fQ5sRU7RiGzIbSJpb5+v3KwutDlEPPSBzm/us k= X-Gm-Gg: ASbGncunlrR6LvV256XDPfuCfySnlxlZr2JkiMzwpdLlnRvNUZJ4nLx1PIQe6Dw/Twe pMscTw7xfk/OyQfIVj0m89VLgHs4qem61we/dsxoDXeCo3PNZ4DMyWtzOXVxrm8kOkZII15Guhf qxFnDKgoD3iAZKexckEMfvW67C2nEOhNJdoqxmGb9Et0FEWM0yLpKyGPoNI3AYHJkW8lgGOecN+ ZbS4Q79Cmu+WfWNbF5Yqsu+2VVRtAqk4AQ4QoWARDtu9eSJMVDaA5OkVzyga5XWaPxfSPfqpMJU 1kkgXuNEZbEVaGXjOPMR7Wwi7azItFSEmTRX50CkBgt+DmGVW37tLr2fZ7umqnYgLAzzpn/jGV8 T/DsCRaqcyVt/NDb9KEGRK6xbEw2BLJhfKbcgO7vnscbLo8MmWDO3MOPNWdULL0RrkQcfiKAQiK YIdd8rzmo5eUmxRZE94ehP+IM= X-Received: by 2002:ac8:7d55:0:b0:4ee:4214:31ff with SMTP id d75a77b69052e-4f1b19b8b5fmr49320531cf.13.1765395783131; Wed, 10 Dec 2025 11:43:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IEQ66cvFY+gHoHakPOhKpYFUXPMD6XwUSTwI51XcWdr5cXocJ30W0NicrfCRBTS4xmf43T1uA== X-Received: by 2002:ac8:7d55:0:b0:4ee:4214:31ff with SMTP id d75a77b69052e-4f1b19b8b5fmr49320261cf.13.1765395782720; Wed, 10 Dec 2025 11:43:02 -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 2adb3069b0e04-598f3199e93sm104845e87.96.2025.12.10.11.43.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 11:43:02 -0800 (PST) From: Dmitry Baryshkov Date: Wed, 10 Dec 2025 21:42:58 +0200 Subject: [PATCH RESEND 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: <20251210-drm-fix-lut-checks-v1-2-10ae38519f43@oss.qualcomm.com> References: <20251210-drm-fix-lut-checks-v1-0-10ae38519f43@oss.qualcomm.com> In-Reply-To: <20251210-drm-fix-lut-checks-v1-0-10ae38519f43@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=6121; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=zXvnGnGuLkJqi0K2ojfpmFIykU/bxtYPAL0lpdGu0vw=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpOc1CmLYcBrr3riLWAvi2Gop6rn00DEG4zQih2 Oc56Y4tzmuJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaTnNQgAKCRCLPIo+Aiko 1XvACACa655mfgnTtUZoUiPqQNxFW6hpO7DVJlW8zUp5qJ0u71eRqIL2M4IUKYoRRuyiBQK4T33 qdS2qMrK9YAuKO4HD9SdrHg/yw8xqt5FgouNRN3IR0+QCk4agYDEmVPyfLHalKHyoM61dwqQ0rN AGwKIz+fNF7ygJnt5ofSDXZlncubwfMUsiZf90wQgFus5onXi/uORPIRPgbFBVyWJe/1uV565vn IUUybaXJgD1+BpX6Fp1pDXAPu8jkgn8aRfiNHu8AmPF7hshFM2fR1dvG+A72JINpVbfv1xt4rNp buRLFAlK+CN7eAxd5yiQkW949nPGHl58puTrqSTcynqNedHn X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: C5CuWn25RPJx8zVE-OLpWvWo6FPIqNW3 X-Authority-Analysis: v=2.4 cv=ZO/aWH7b c=1 sm=1 tr=0 ts=6939cd48 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=L8DPiWb6BhtAijwQbtEA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjEwMDE2MSBTYWx0ZWRfX+ZbrQeWiKsJL yI9e6mD6lZ10Go3i55K6DBL17Zf47um02ogX66D+Y5LnrPxd62nFWMSSD9g3oGa4B0inxYNs4SK ArPq8ZoPXHurnBpfCi7uw0IVaZijvJ7G+Bmkil7Hx0ofXM+Wj7niY0Asckxkrz5PD2dHUN8wmDQ hh49fkTlJoPf37TaQhcOk12Bw25rfanMI9zodTTc7Jxsy3onS5uf4HSnCuSZwdZxbi1xM6/VzPK 2hRWsN/vROBghgfaeM669qosebBZieIpS4KcaihagWyFN51Ncu661rgjhnc/4aDxURli47VrAOx zUqDhiLMZtrxAYyZRKcytY3LP5i7vB5/YX55qFQak3g7wFtP+zNih9baUw4YNH7Yn/3dn46aE9U pK7Y8wEKo4AFrkTuitAqYG0ayyULeg== X-Proofpoint-GUID: C5CuWn25RPJx8zVE-OLpWvWo6FPIqNW3 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-10_02,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512100161 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 --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 5 +++++ drivers/gpu/drm/drm_atomic_uapi.c | 7 +++++-- drivers/gpu/drm/drm_property.c | 11 +++++++++++ include/drm/drm_property.h | 1 + 4 files changed, 22 insertions(+), 2 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 e027798ece03..d19631b5d9e1 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 @@ -1677,6 +1677,7 @@ dm_atomic_plane_set_property(struct drm_plane *plane, &dm_plane_state->degamma_lut, val, -1, sizeof(struct drm_color_lut), + 0, &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; @@ -1695,6 +1696,7 @@ dm_atomic_plane_set_property(struct drm_plane *plane, &dm_plane_state->ctm, val, sizeof(struct drm_color_ctm_3x4), -1, + 0, &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; @@ -1703,6 +1705,7 @@ dm_atomic_plane_set_property(struct drm_plane *plane, &dm_plane_state->shaper_lut, val, -1, sizeof(struct drm_color_lut), + 0, &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; @@ -1716,6 +1719,7 @@ dm_atomic_plane_set_property(struct drm_plane *plane, &dm_plane_state->lut3d, val, -1, sizeof(struct drm_color_lut), + 0, &replaced); dm_plane_state->base.color_mgmt_changed |=3D replaced; return ret; @@ -1724,6 +1728,7 @@ dm_atomic_plane_set_property(struct drm_plane *plane, &dm_plane_state->blend_lut, val, -1, sizeof(struct drm_color_lut), + 0, &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 85dbdaa4a2e2..7d2076f1006e 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -388,6 +388,7 @@ static int drm_atomic_crtc_set_property(struct drm_crtc= *crtc, &state->degamma_lut, val, -1, sizeof(struct drm_color_lut), + 0, &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -395,7 +396,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, + sizeof(struct drm_color_ctm), -1, 0, &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -404,6 +405,7 @@ static int drm_atomic_crtc_set_property(struct drm_crtc= *crtc, &state->gamma_lut, val, -1, sizeof(struct drm_color_lut), + 0, &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -546,6 +548,7 @@ static int drm_atomic_plane_set_property(struct drm_pla= ne *plane, val, -1, sizeof(struct drm_mode_rect), + 0, &replaced); return ret; } else if (property =3D=3D plane->scaling_filter_property) { @@ -741,7 +744,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, + sizeof(struct hdr_output_metadata), -1, 0, &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..5befe443135d 100644 --- a/drivers/gpu/drm/drm_property.c +++ b/drivers/gpu/drm/drm_property.c @@ -759,6 +759,7 @@ EXPORT_SYMBOL(drm_property_replace_blob); * @blob_id: the id of the new blob to replace with * @expected_size: expected size of the blob property * @expected_elem_size: expected size of an element in the blob property + * @max_size: the maximum size of the blob property for variable-size blobs * @replaced: if the blob was in fact replaced * * Look up the new blob from id, take its reference, check expected sizes = of @@ -773,6 +774,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) { struct drm_property_blob *new_blob =3D NULL; @@ -801,6 +803,15 @@ int drm_property_replace_blob_from_id(struct drm_devic= e *dev, drm_property_blob_put(new_blob); return -EINVAL; } + + 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; + } } =20 *replaced |=3D drm_property_replace_blob(blob, new_blob); 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 Tue Dec 16 16:40:39 2025 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 6AC4732AAA1 for ; Wed, 10 Dec 2025 19:43:07 +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=1765395788; cv=none; b=hg49CSkjpCVBPJQ+XWNPmDlttYFnWMrTMs/bSqMafssIcvMP9UhJJHqsDpShzNBScuh5+skwrPxLvqx7hWxdOkEnWzlpMcN6c+xB30IJPHYP6H0khqThSdb9vGVIl9/vlxbR0iRgtflUUYP8/5n5uVW/IoMrQSeMW1+iJztUuVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765395788; c=relaxed/simple; bh=DcbmKAWOVk4DBQnJAwa8CKdQ1Yq3s2UIfNjf/wSOuus=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OTBFcV9rPr2R9Gc82zT7vkU47olVDyKDfkNfE3wGHJYAI1Sr3JoTxytkw1r3XC8WUlZcpe8xz09tT/Wz7C6SeJowTaoDpJkMdMODJsL6YCgwixSVGCovyHqiZ8Wp2+T8c8MklJFT9TZSHml5uc0NYEYt0BoyobQkTsamcwTQvuc= 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=Dw7RkObN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XMxYjVbz; 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="Dw7RkObN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XMxYjVbz" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BAIR00f2821127 for ; Wed, 10 Dec 2025 19:43:06 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= ucvlwZxhUO3+pYRWRBKqgclemaPm9AbJrEzW63oPi/0=; b=Dw7RkObNqH0/JArg Z/G0xdd2MGP8Z+gzWqBxf51kS0nY0viSOr+MbPd9eZyKAe/S2rZPHFLJnZYtbC5Y 96Cj+zHDK6p0EtBtSGPYNTteP81YQSCQG4nQZcuTWEekGMkHBcFIZe8DBUFJzCDf 0MP7Al5ID5YYexklfnJ2AmcIf7jLD+xUXlRZ9FUlOo7SfXAfvWmGPL6OTUCZ85PJ AYgso6wRsfBgSt0w5gF9shnTHrMYbOGhJDXThEb+Sjy4/0g6FkEVoyaMbWrfrpvC lUQTV2n000avc4jmvxZbVsjh2kr+d+PQk6jx7Fgmbg1V96ny3cQpdZYsBcjeyhaq GSJ4Yg== 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 4aydea0etj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 10 Dec 2025 19:43:06 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4ee0488e746so4267901cf.0 for ; Wed, 10 Dec 2025 11:43:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765395785; x=1766000585; 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=ucvlwZxhUO3+pYRWRBKqgclemaPm9AbJrEzW63oPi/0=; b=XMxYjVbzZGeKt1wEXNQlGa+JQuvUwf+DQYbAIfLCngOBxeHBSti1TAFTf7d5M2ZExP 30D5WIDH8TTquD4JAE46gAPJWyxSk+yhfWOPzfSjDktKo6FP9U3K/cyU3Du6NMmojakL GVCb+xDoLIlhHk3Z8t9L0szH/8VMnd+Tp3X6jRrfK84CY1qY6eynPetKSdshjwfXziT5 TCuxxkeBlbrACMdkRA3/yY4vjGrwGRZYTV2xzNILBVX2xg36RlGgQOjqdHNPX/b9i22Q 9XZvc16B/JGNnGBwnJRqdER7kTbmSy1LHJIuXPvxjGgQNOFc6360Uj/Kz6GMpo4SvZ6A yj8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765395785; x=1766000585; 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=ucvlwZxhUO3+pYRWRBKqgclemaPm9AbJrEzW63oPi/0=; b=bgSaGywSRdHwgHeTSCz7bu0viaLnXIUIPqXBt/HCEBFpnavx3v1PgVhYO7XtaiY+aG +qTzyrsbbwM1s1NCp1L/a2QI/ARLEmVgpsOIOgeFO9ZZLBNURJp0Blwqp9jRzEd2SYo1 BO6GJsrfBt5eNfxo4v0j5qeBI9JgTq24xUEQP4Nd8pqF3Sw097N03dE/X65GC9l9KoWv oYmv4GI0kY4vFameBWFit4Ni1AcCrmXtU4FYxyJPq+6l/Sl4+Q99c0mSqGom9fgk38Go fxvjwO0LyLV3odUw1wqliv9Ee8wsvgcrYvLk1OBbTmChTyUAagZQ7+HhJYlrwpC+sl+X tlxw== X-Forwarded-Encrypted: i=1; AJvYcCU/qFHleeutZDL2QXB8BbWXVrzJD11hJYGlO+5lJWTji3K/tyAs3USpaV7mc/CItsAMnHZpXxnaHS/PU+8=@vger.kernel.org X-Gm-Message-State: AOJu0YwOBkFvzrJuU5FwcVEmmhJdPmrvpSVSJ723ypj9dC31E5mBgP2N 4+rsfGyvuWMbWxqU202J++yO5jzQ2SHWn/nytt/kVwdYl/WEOrb6errU9Nel+lC8o0pYGxcOd6j YIS83ShT10+Z3MyjhMYR83IpDD9r3bnJAlpqE3U82LJtU2HBah6vsgIyCwzLAJYQi/4k= X-Gm-Gg: ASbGncunIFyREguaTXbDjb+0Bk91d+owRvOpObogQmJYmk8+qXW8859eDtscev3VDgQ nQk9Ods1MicRUfSCxqD0HHhB1hQqNn+Q72ulHdG2OxO65zLr50YyLE5s9DUezw19/InyiZBLpWF 3RV2F3T33326r8jmDgPcrOCM0S+HUxGDhuybECgCaPEHV8QSLteUeLK8UbvLOwbA8tT3L2IUAzK UJ79DPDrx11uAKgczcIUqvnyXAKUJRohLnV1OOB3GkemBWb1pbbvu5PDwEii+y8Lqu6bRgTcPVY vfzB6pOiGAkj2ijcsKYrHVG8gMjQyNM2M4vLltQBh8WIFaFXCKH5VBLhvaUhNn1ZprYirGVhHkD xKko4vz9xLuM5WOuBYVTXEY/tzzhTiam1UWVLHq/ZaUnCoz437+3GWG2UO7jNSJQqzo5Kv7j80j vWQZp1qTHaAdyIfZSwe+3KSos= X-Received: by 2002:a05:622a:10f:b0:4e8:916f:9716 with SMTP id d75a77b69052e-4f1bbdb9ca6mr10009801cf.36.1765395785455; Wed, 10 Dec 2025 11:43:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IGTGVZDJO7OhmU9jVRqnXNBJECkkrpq7sqjcnTZrOyIk7WxcjjzjnM4z7PCglHDaysmLPP26A== X-Received: by 2002:a05:622a:10f:b0:4e8:916f:9716 with SMTP id d75a77b69052e-4f1bbdb9ca6mr10009541cf.36.1765395785026; Wed, 10 Dec 2025 11:43:05 -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 2adb3069b0e04-598f3199e93sm104845e87.96.2025.12.10.11.43.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 11:43:04 -0800 (PST) From: Dmitry Baryshkov Date: Wed, 10 Dec 2025 21:42:59 +0200 Subject: [PATCH RESEND 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: <20251210-drm-fix-lut-checks-v1-3-10ae38519f43@oss.qualcomm.com> References: <20251210-drm-fix-lut-checks-v1-0-10ae38519f43@oss.qualcomm.com> In-Reply-To: <20251210-drm-fix-lut-checks-v1-0-10ae38519f43@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=2033; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=DcbmKAWOVk4DBQnJAwa8CKdQ1Yq3s2UIfNjf/wSOuus=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpOc1CNBQVt5lVuntwMtvsG9k/gNh7wXlfIuESB sIMSN+2yj2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaTnNQgAKCRCLPIo+Aiko 1di+CAChX+sjkc6W9zAEjAlx5O3DSDT0vvEM/vEgYbtgD/Dms0BzFm6SWNX1DU6BMRju6vqsYHa JQP56xB4W9XhjdjrpX3SrCN0O4ECzuB1+1NVoUaCdjUIk9ZNwrIAGQBcePAyFyq0Rve3BNFAnWd WdnwCXcC2W1AWBVt8jtUqXSCxizsf6gcnVtwqs6a11rDP5pZGHB/cKzTmnL3gOGZK6TDxbjNipT IGYHa5UtHcnuaTUM2nI4bhE32SiQ9iJUvh6nkYpCQfyT4+FNm235+CqQjLUGqTJAn137h4+h0uc NPGL42BqOOgUh471X0NcvJC8tkC51mjyZXVPF9bkD7Ng747p X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: ka914NdmEdk9zRFYjVBdPUPofhTQeVUv X-Authority-Analysis: v=2.4 cv=ZO/aWH7b c=1 sm=1 tr=0 ts=6939cd4a 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=bAolQom50hykzV7YMrMA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjEwMDE2MSBTYWx0ZWRfX1Qlyj31tzprB eyfhHFMdmSthFRqO4SD4gEx5HAFVmxqpvpTJMqDa52XMSTcT3P8zVUWqgZ1abzijugeVTB9K9YV epvrglV4SeZ9pCooES4OtO+7VUNwJxYzVbEtKlQavkFeJZ/oxyZ7Ryog2VnZWwEP6tr5Zh3vUjx Z1oxYt2V06h81ttwQs4P+B90fqhG4FdtqF9qp9s7DmRXH2CPa1sXUbPVd2y6HI24sNAT3VmHJHU bI24orsOVU7XIN2BGPIZvbVOgwbg0DKt7erSkyuetdMK8DfeW6LHe4dV3LfiU6hIepYIBizvQpE Cn58xG5FyT0e6iCdEIcwdAp/vaAajjXAQWcLAFocAHqq5ylreiNIcFrx4mi75pMw8CtSDlnMkIZ VMH5vyJfaXjQMnA9ltJq+2rLQVjLCw== X-Proofpoint-GUID: ka914NdmEdk9zRFYjVBdPUPofhTQeVUv 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-10_02,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512100161 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 | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index 7d2076f1006e..178d983b2378 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -384,11 +384,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) { + 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, sizeof(struct drm_color_lut), - 0, + sizeof(struct drm_color_lut) * lut_size, &replaced); state->color_mgmt_changed |=3D replaced; return ret; @@ -401,11 +409,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) { + 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, sizeof(struct drm_color_lut), - 0, + sizeof(struct drm_color_lut) * lut_size, &replaced); state->color_mgmt_changed |=3D replaced; return ret; --=20 2.47.3