From nobody Sun Feb 8 23:58:51 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 E1FD02248B0 for ; Sat, 15 Nov 2025 03:43:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763178183; cv=none; b=h1J3JcOIOOwRd2b8TNmFsrKpvIams2mZPbfNiuoivpvs4zV1HdlBxKy5OjIfEYbRGTwMgJZl+Y2dPcqFs8vnZqV5Weut6d7gNtS6IflN4kiM85YEXNmF7I1qsYn5q4oUDTUg5rgALlxEkcbwafAJzU8pdwVPXIMyob74OJbGz5g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763178183; c=relaxed/simple; bh=sd03B0iyMcZ4bRpYzJ8B3NHXcAQ+vhzF9Y936LF4/JE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ilQ6LLjRFdBed6L3qlB4s7F5b7zrsqRHc6j6hEuI5GdYhA2uOZjwjywg8uP4ePYbe1xSGlsMOrA76gPpvfOfkuEE3+y4MsvWWWwV+1m1Be/CUbcG2LblA1x6SJvNzaBVu+iEip87cG8oGvxefv8inkgil5+2ad+Z0djmShSuXUE= 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=nPE3C7Y+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=EElIRMdV; arc=none smtp.client-ip=205.220.180.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="nPE3C7Y+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EElIRMdV" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AF2poKP1501969 for ; Sat, 15 Nov 2025 03:42:55 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= wT7UUFJeF9mn5pIiD4ANC//sSw0eeZrazvonDtQ2l5k=; b=nPE3C7Y+WwNMxcDd VcbZKN5pGId/FkrF6+8vtv7H3aALmWVblX5ADLOEleC1tyLU4nTpc3n733hPzqE2 Hegi9dIm9GzULEqdeznUfSkU9Uru2ZkXkPRRIWDArLoawL8Wnx6pYbCKxEHxAVnu Eu0BkP7yF6YaKC+LCVG63cG1SjyHDLT47NWHgpCfs25YwNuSwr2/HftYVR8ZMIoE NuHcf9oid7pLwSLCUKBy5qY+s9M1G9qTOZTkRcVA5sN//DnsM1eEUOGbMXGApC6c sf9QdYlA4px4T3QXm1/KbQPvNdY/yJyBUwf6DYpB8GR2GO4H9zQSqNCQJr7Cvv8t HivNpw== 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 4aeh3x82ma-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 15 Nov 2025 03:42:55 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4ed6466f2baso76588031cf.0 for ; Fri, 14 Nov 2025 19:42:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763178174; x=1763782974; 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=wT7UUFJeF9mn5pIiD4ANC//sSw0eeZrazvonDtQ2l5k=; b=EElIRMdVdBdePuVkdwR8wb/+2Opa+cWyUSSYBs0lOYwtTSQ5RR+P250hqbAaL2Dzhc IPS5n0m1Il4D5EfX68KIRPkXUXJpMR8lhvf0gufzicCjVFb+es6u54pysuEMlA/YVxA2 EyLTmdfYZ/CFkwP+aouHbFo6HhnJt2LIxWDv6gOQBxklpRBeQ/sJAatdJsF72j6Eyh3I jrem9zO/8Ay550j261mJdzxb8OYkS7YyJWABXKyR+K4a5wWBsIG/Xa9hlUE5VBFr2xdw 1TFtGJZ8yj22DW43D6vO+wzv1eS/pPEDbuz07gT88EFf7FhGumKx0l79+H3Hxu2qWdBR Q6BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763178174; x=1763782974; 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=wT7UUFJeF9mn5pIiD4ANC//sSw0eeZrazvonDtQ2l5k=; b=rlOd3u0GzqwzagU+Nhg+bzfWClI+7KFDoO6DUufzP3IRuvvsggY7CePYmNLBa8DgN8 mfUGziGD+xW1tXJJ6DMqfgetE7egqylKOXkawbGBfaSRl4OIl95KEtur1gUxh29WQJ5x AM0bJ25OV6jz2lCMFrewrIG6kL+IEUbOPn/ULR4ycVzw4mX2rLTmo/UiL7lNOaGJCPN/ mnvdbweIeSdlCbmMQpPO2yBbPuMfV1WGEJ5/yhGuV5/VeM2DJi7vKyvmgap27N3bMHXY Vv5hQoGZyZ0qDkLcPzHRCb/Fab9JvsIqqcdS7XXM9QPrRpo233raTzIibkA4g6s6ZtTV hGsQ== X-Forwarded-Encrypted: i=1; AJvYcCURhTcBSxXJ8n8S8Hz41wpYRytDNf/tcpoLq5bejAok9PsYBJ/3IQoEx7/j0Sa93cOqS1mB26u4nhWbKD0=@vger.kernel.org X-Gm-Message-State: AOJu0YyT07ByJA7u0zBZx9A/xbqO2sBoiWPWMAxJIaVRMTl+0i2q1gPa 1uFjvySOfiKbeGT1usuIJjBbpWEOchdgp5t0AwoPJAVDqKpwkxlfuLwyqwJgXKQWKvuHZsX4jG0 WHBU8i4uLsRStF9KMaWtke7oFbF4GtPvKiCrzPMrzh7vPqXxmJS6NIv8VacKDkemOGfg= X-Gm-Gg: ASbGnctR38QkapeUqleXVU8iHLyPULVirZpFhgJQnUm/Efcdk0Y92w8qEDP2XKwW4lO bU7omf2DTymw4hUZg40MWGwQe9BWbh2C/kn9QZlrvKR8FXHVTqJp8tP8TzegVih/nJbCYb6xGAN r2X6VaQlZRfWC4KXgJqqVfUapkaib0U0BI5hZBKkwxqFXlpWv4KLcljDylw0+0Jjl9nLqTnky3Y zCGPRDxtpQS2f7Ik9Ab27EXk3tWl5HPbGQAtxY/ihqv5F4sH4pUHg1AiFmLJVtG/fpl9560+Vkq /Q4kQ9v1d228cve/j9oTFAT71fONJPyZWxSBBfvgPTSbiXhhqz2jwgplGDR3BXN2TZdPIJhH54k jFj23tEbl2FxKDFOwrzrxLf9J30AvpX1hpo0/hXc2jczmjAmMaGjRU+Siu5Pu8TFPtApxe5KxEU 32J3+ZjkyvVIA8 X-Received: by 2002:a05:622a:3d2:b0:4ed:b4d2:bb1f with SMTP id d75a77b69052e-4edf215d86amr74148501cf.61.1763178174358; Fri, 14 Nov 2025 19:42:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IFRpgJMMIbQfXn2B+yE5Q7cHj+2bp0JKnB91uXEQcxd0UHF9SIgkPuJeRO0IpkL2Q1fqtnrUg== X-Received: by 2002:a05:622a:3d2:b0:4ed:b4d2:bb1f with SMTP id d75a77b69052e-4edf215d86amr74148291cf.61.1763178173856; Fri, 14 Nov 2025 19:42:53 -0800 (PST) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5958040578fsm1475880e87.78.2025.11.14.19.42.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 19:42:53 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 15 Nov 2025 05:42:49 +0200 Subject: [PATCH 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: <20251115-drm-fix-lut-checks-v1-1-3586f5855bc7@oss.qualcomm.com> References: <20251115-drm-fix-lut-checks-v1-0-3586f5855bc7@oss.qualcomm.com> In-Reply-To: <20251115-drm-fix-lut-checks-v1-0-3586f5855bc7@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.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2786; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=sd03B0iyMcZ4bRpYzJ8B3NHXcAQ+vhzF9Y936LF4/JE=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpF/a7Q390bzLrXrqU/SiCZtrKXA/1yNIqEBHBm UicFYwms5+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaRf2uwAKCRCLPIo+Aiko 1a+aB/9LsO4ku/AA5NaGv9eaRTylr7bCF2cfqDSP28cQvEKbRuHYL/zAI1nU7Phf3vrpt04ZOzI HlM9PzrgvLuFvAyJewHxiIiDhdY1pVZqN70kwtvCnddMJ6Zf2H/qAfkENJepxI2+R1RhUzlJ+Lr WdX/8Vzjv6AWTLp/ixLnQHuqHV3YwbVEYHe1xGJk24qmO4Ulnnk3U+kE1VYMhNf9VCxM5X4ugbs DEMnNX2sbV/PC+Z/ATLY2MM11yDGMUIjnPlDplDSu8WDDINgQALCWoB30iLuriU1SoykBaZttCY iRK5t1YD9/lKGYFwyddW1sHFPpTim1NxZ0gbvfDU4puEa0On X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=Fek6BZ+6 c=1 sm=1 tr=0 ts=6917f6bf cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=uUhA93nX2LN1thLMeo8A:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: f1vrtOCP43y4KyMMJ7Scv_obY19tpFD7 X-Proofpoint-ORIG-GUID: f1vrtOCP43y4KyMMJ7Scv_obY19tpFD7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAyOCBTYWx0ZWRfX8MMgRaR9hBOu Ku1DLkUYK5DkJWlDVkhJ3muBJFlMAoIe+BI3+8DckltNMw7VIsTDNxz9hix0lVnTQTsYI0kaQnz suqO9ZqURiyG9nr7RA2V3i1SJW6mjUr/vRe/ZvecE/H+u6zQXOvOWCZ34JlWaGyTTvzb0KPj+RQ DI00sjS/cVsi8UANfnVRq695nnpHxDrVn4MpOuW8WTDVVWVrwhgD+Un50mtI2Ou+z19Z5gZF0bI q2x3xTb8gMVTz8Eibga1IMkWXRXwS+NZv7Ojo6HAKtVT6IebkMFfltc6dkYf9dq0Bg9/HSDYDkl jGD4OuZSj4tEMANg056S7VZF/zUdnmwCiIFe/LML2NTqrjfoSsNrqI7zORpcAfMo5nIbp9oIAKx RrsKAl7NF+Kyd7ZHczaCvIZMR+WVpw== 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-11-15_01,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 malwarescore=0 spamscore=0 bulkscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511150028 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 e943205a2394cd9c0d64b940a5e15ccff7f35246..ead8eeafd0126ee2028efc3ba74= 7d37307e8d72b 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 c68edbd126d04d51221f50aa2b4166475543b59f..44a0d6f8d01fbcd9db3dc2d6d37= 4f185459ae879 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 Sun Feb 8 23:58:51 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 1CBC820E023 for ; Sat, 15 Nov 2025 03:42:58 +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=1763178180; cv=none; b=ZsC4CQJq8Pln0kKhF9+BgFeoeKtAz1u7Mx3f28EOOXxHduTzQDvgREZpzKs5TS6OxmlYGTHdESupwJXY3UUwYPI5471/FL34BCuVnYbhYCl+tUnZKfCtLPP1hCNgEHbuxJ1kru5QHcjMzzmhboxU4cJGzq5Rr+tmZ3pYJ+fDrQ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763178180; c=relaxed/simple; bh=Zrx3F7zYvNugK1FdTfV6C4jbMJzk2pb6chyouaUp1/k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UcEYEmoa1vY+f73pSPYJfUoRkCP2Tvb1Tmd0V1YYXI1TuVyK50/32DQuagUCMhC90ykDrfhec5LO0tUC1JNJu/OqoFbMJtRlNvaK4Bu1jyb2LSAvqGiuMLacQsy2e95TPdLc1VYGsuiTpfEpoUmrLEwBLYH/Gs4xKSxlhMjD4ts= 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=Z5/ZteZQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=EZ/eTzYe; 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="Z5/ZteZQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EZ/eTzYe" 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 5AEIQGK2043361 for ; Sat, 15 Nov 2025 03:42:58 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= BhpfJLji6/fhtqDCZ24EK575S0ON8OrjNodLzdYi1t8=; b=Z5/ZteZQFnfcvd9H zhmucCCTPYkD59BYzuozHbarBemxmP65bY/oVvwto7naAdmTmiPK8mOC9RWfu2Kl OVdSCVXOEQqCyWT2z44jvH1G2DWfTwwyMxwzG4BWjy1TxCGTA3ufSpLbm3JAZEa/ dtSpIACUTz/yDcXAg6p7yH7fO183Mn0dWtB1fi+akEMJC0Wda/7YochzrqNfckIR xkJjg3ePCXJ9g5y0/qxg9t8BSUKXG27yGCKE54BpQNQu5glSWtdilRhMMKtT0/PK Oe+d7SDAqzqIxOBf6UWciFuaBK45AEiEzI6xNeQeUOZHNamQRuf5yQ6qEziMFX+P gsjiFA== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ae3t9ta38-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 15 Nov 2025 03:42:58 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8b24383b680so221584185a.0 for ; Fri, 14 Nov 2025 19:42:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763178176; x=1763782976; 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=BhpfJLji6/fhtqDCZ24EK575S0ON8OrjNodLzdYi1t8=; b=EZ/eTzYelLudBhdiVPRDnMU4Chg9rw013ZFBCaOuPba8EU33Vlg0TOFs/mxIpIcjzK hlr5ggwngKi5zd7zJ8ehS8S6QjlfWUUCLnFeyQPohHEraVMd8LyocrtRaj4iIXZMUTgn njv2Ii+M0UX0JdrKusR7zVchcoqyX2bhNyH/Fwnp5SMLbw1aVMjOJE22ZQ4oz+OcrSFp pxpcNQ0guhmfV0ZS4qH9KnpYncWH+ds8Pe7dgx6mtXath9NCr5qHKIdJKAPxrvMYLPfF KidM75QAYn84B0E3738FcVV3EvYOuQ+4LQfhhcqIsRVlLQs1KUzn2edDlEnHqScLxG9P 0J2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763178176; x=1763782976; 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=BhpfJLji6/fhtqDCZ24EK575S0ON8OrjNodLzdYi1t8=; b=C0U0igHO041ekzaN3Fe8MeER9xVqE6zqk9LwQUAYtL1GUa/EtOS7S6EaEuDx6lmvdO zKWHClkJ2KOr5S1lH63+z7R+7YtYg7dFN/qLlxM1P3+bSH6PsS8LeZIqIhtOjJDf4rQf PdI2QMQnfBQ/Q4cdJaa/ItT9Cbz5+88sRjQ/3Rl4sVRKJGHvjJjXrxXI6g+u+oZjnHZC sWxMT0MF++5IUlsoQawL/L6aJXQml4LnsRWEw7ICCU05TzPHYvQSsgdGy2FvmY7TYNSx cqTiUvr49nO9kswhVHK7Z3Sb5nIb4BZp/cOVWvQIOAW6Eo8IbS5NE6tBgAXwt1hyF9PZ F+Ew== X-Forwarded-Encrypted: i=1; AJvYcCVela+vrIXziicefXwIb0fF5njj3Q3t7eIukKpdhvUefb9O54JADpYCXO6opioZyqkzitX5hkFIfvl8GGA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4cbwTLXGmAEa3wKEM5kRl+K0I1uKQeXjF5cOZhyaT1802NE8a mvPpPHq18gA1fbGT2beP4fzNYW3iIIpT+Ci5iSjr06ovVQO6d9AiDkgt7tDqOWAhqWiEiyec1Sx fIoTNSXtVH5f5OIuipvpEj5ojqAMz7zDCSxmqOQh6jdqNDhBWHQt2zLfqFXrdtYtxLZ8= X-Gm-Gg: ASbGnct6jIDiv9Q0Ho3sADlywof8Ht9bpJ47H/IIDzD+9pfYsdbWCMfTeZjr2pu4m/j 8QlXc1fsx4KzTqS+MSoRjezKP7ocD9Wyj6fE0GfEQAoEHlLbGrCPiZeFfY6QURjK3miJy17fTjK KEyiVJfDDC1oaEoceB3vFJL5D9U1kBTqEukYu3HpEz7lld3E8UFueXfzh0zbbci51Rm+eODCkdq 9E7nmNgRioJ2ae+r5/h3Or7tVZ+bMOQRYcWqnvii4BS8HF+elYv8taRGc8kWcz8NWGqIo5mLOCm lgXJwIGvaVNatgKIv2Cn6sOmUn+nz9meEYplNnTHSVRBrHNessfiE1aQB8gGBY2cwuU/eYv1+6g acgBqlpbNz+GOh9M3uwDXlPtY5QP72zBCQCUy0a56Sgcuo6lU8ORDMsXgmTR7+yt2OMQgKtW8xi Vaoh2F/ZPWkk0d X-Received: by 2002:a05:620a:390e:b0:8b2:77aa:73d3 with SMTP id af79cd13be357-8b2c31409bamr724153685a.2.1763178175563; Fri, 14 Nov 2025 19:42:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IFv7gCdw6HKgZhMlZOXjPB0By0UhngBMETBduc0VjgNYn8qw6cDgmC2imheV8we/zNyBowEOQ== X-Received: by 2002:a05:620a:390e:b0:8b2:77aa:73d3 with SMTP id af79cd13be357-8b2c31409bamr724152685a.2.1763178175004; Fri, 14 Nov 2025 19:42:55 -0800 (PST) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5958040578fsm1475880e87.78.2025.11.14.19.42.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 19:42:54 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 15 Nov 2025 05:42:50 +0200 Subject: [PATCH 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: <20251115-drm-fix-lut-checks-v1-2-3586f5855bc7@oss.qualcomm.com> References: <20251115-drm-fix-lut-checks-v1-0-3586f5855bc7@oss.qualcomm.com> In-Reply-To: <20251115-drm-fix-lut-checks-v1-0-3586f5855bc7@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.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6345; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Zrx3F7zYvNugK1FdTfV6C4jbMJzk2pb6chyouaUp1/k=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ6b4t931fGVRZn/3KBwu59oo42C+gumWghjbqshfKxv/v E5w+Da9k9GYhYGRi0FWTJHFp6Blasym5LAPO6bWwwxiZQKZwsDFKQATqchn/6fsMXPfam13vxMS koJqp88Gds9Qf9x8YWls8jHXysM3lnnHKSbt6jyfe+X6wVs3nK5t/Kuz+4ct3/Mduw6c2GxvWs7 fF/LjQVussV4le+OepIdaZ1r9jYNE7Ctn1cq6OxvuDvRVz6zp7pScfYh76e3DJ7uZY3rXplboby v2ZmqL0HtanNX7//KCs4mcMlG1ylGclsIBsr6dqzJTmVUOBxgGPfwu8Hvi1n/2LQJROpnLdvUdC HGbdNhV8Wcaz70+zsnbxKs/mBXL3nvcsi47/Ha8hFfNYaPnbnFL167fekjkoMB+W831a31/uhdt ELRLb5hnZFp07TQrg82hE0sdlN9uVJjdWPiqRaeRaUc9AA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=IOAPywvG c=1 sm=1 tr=0 ts=6917f6c2 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=GF-90_O6f30kfN1CyEYA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAyOCBTYWx0ZWRfX9l3g42pnJ1pi 7Z/47yzctj5bJRLe3gfa2WU3tMV7ipKtOtg3t6Ia+RQiPgDFUcaO5iml9TW8OTFf69qZ0TdQs+L i/C2IfYiwaCmln5OUoPGanHhblXmuEaZ19cdzppeX12p7ClyY33Ffk4wKsu630wSLUuNoSNBIHe nfD6Bv/4xyZsps8mqFvNDJKC92PKL1rOA4dCQLVkIW0LXo0hiue4k3wahWm21qrXfuXHq2adBpU MYgWtonoBLUqs7PKetFwI1+uKiEvF58Na1i5HleTzlfRoOiL1KGQdJ+Na5uKqGibz5Wc/OtMT4m kv5/1YhARkhLOHq/oSRPYDpS7Zvm7VzNGGTIdXSultAfS3rasvGGdmwqhj5Ybt2eGih7lennVJL 2CF08ICvYVXNZYCSgnyVCEs8fxBtOA== X-Proofpoint-GUID: rybvVQAcoR91n1gVQlDaFbDSWjwx-9gp X-Proofpoint-ORIG-GUID: rybvVQAcoR91n1gVQlDaFbDSWjwx-9gp 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-11-15_01,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 bulkscore=0 malwarescore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511150028 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 e027798ece03226338a4ff6ca9e06eb77436bac4..d19631b5d9e1237849e081b156d= 23b933848faef 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 85dbdaa4a2e25878c953b9b41539c8566d55c6d9..7d2076f1006e976de73c898a838= ceb4b5c4370e4 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 596272149a3599130186a470e5a5a3c1150b377d..5befe443135d3861289183d1b6f= a1ac0e5e46515 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 082f29156b3e3fd2de0d6a3864022388cd61e17d..aa49b5a42bb56d9331d8d3397b1= 50e33aae67451 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 Sun Feb 8 23:58:51 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 2F45C2264D4 for ; Sat, 15 Nov 2025 03:43:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763178183; cv=none; b=Sp4HoOKIY5cwcvxIzvcrpcO0QzCZcWp2oaj/ZoZIta2Pyje7L99ziVBC/q3SjI6Y+/nLbosIfr1lAkZktJcufyAGb+Tkp4YtVGsfQ9s8OvRhbPpLa+mzUYWkbdhn99di4WckvgbNC5HtNCuCK+R9+v5yh9i1Uw24zjpnNOfK7n4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763178183; c=relaxed/simple; bh=4P1wMVl+cr5YuoK0uLDDF4U6r3t4wXggB06NKtuqjxQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OMqH07tsSgjXsIXm9pOnOqGEaFTmMd/E0kJGF4ANj7YsmvHcS2pEGWk9xHpETGh7eh8+rm6TyeJxexR5RgY3upP3kg0InhrPMMaswPOkglzntoMrHNCp611Gv9f+wAglWd004KXomgBSQ4Dd76mWdLWR3HV/+CBawgoUgGSkddI= 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=HboKQy1y; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gpzYfyXv; arc=none smtp.client-ip=205.220.180.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="HboKQy1y"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gpzYfyXv" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AELDsFl669164 for ; Sat, 15 Nov 2025 03:43:01 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= aamIlscdOZY2NtMNmIDW1DpTwPFXcWriH5eM+ZN8CSY=; b=HboKQy1yA7vhgXyT P1ia12JurKgStGgWb6jbJ4jftC9Uz4xPMG0FfCZ+xi8gG1lwxVQg7zReFC8weKGM erZsILtU3/ib4bpGndhO/ubNd3uU1Qwb2GqPvT+w16xjxEySW3Irj6+oJxLpP8Hx NMQQFIr6LT/xrzIMB9nWfUK40SrZNsT1DAppakH7D7Z1LtZNBLMvoMu/wXqYC7uT +2ZjxSOkQGwn2jh/EI5yllCZtC/gwyp91jUqRE6CLwQN8mzC639r/4HKIyMKgVrv BPaS0/nHk+NEa1O6o1E3f65EX+wGR/98n/DnSorOoZc3JiFm2nVUig9XxiJXGYfa 06gEWQ== 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 4aec5d8ngq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 15 Nov 2025 03:43:00 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-880444afa2cso39153946d6.1 for ; Fri, 14 Nov 2025 19:43:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763178180; x=1763782980; 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=aamIlscdOZY2NtMNmIDW1DpTwPFXcWriH5eM+ZN8CSY=; b=gpzYfyXv4yfLiI4k0S3RqSfcuS9288wcNy/vqXCNZt5miPn0t3ghIcK8vJ7qgEIv6g PHPZ6GL4ac1TP6HSWoMKR6inD3L4vrkr+SKpvGcPpM1heT1LYM/tdg63mkCZx127DHjg p32OMXEiuqQrpor5KA0V6UU/LEPX4WwEZg3XXzoeRhcl/HtcdydxJw6BWYKMb/hm7fQW uHVD0P80k/jdGpyQfYtk5uinNy+sNlknP9o2WgpawOw/JZYJwyrMRYKZ85UKbwajnJMA YAoi5SFFWzTVaWYJKw1vPLOzscKLTsmVc9TR+CwKxltxT5NiGcIzeLP/fd50JEI+QQAN 18Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763178180; x=1763782980; 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=aamIlscdOZY2NtMNmIDW1DpTwPFXcWriH5eM+ZN8CSY=; b=KuDaa6jTSG6Ou6uKGmnzS9BySIcB1+CTq2+uNAvHjzSHX8rj+HZZ8HZ0YTLv4Ndxd/ lOW3gJnGVtH0qPykdJQ7m6SnLtKqfgI2t5GYIfcZsuJN0kResLi1oWkc2HcYZ7qDrFcS mxFJOnpJr3GTjXaOqPULXDyoKCtvdaI/VncQb8n74cu+vdFP5iCivsOsnsfEmwxq6Fk0 2Xb5OdDiaC0EofRtX9Ixj+p/YnQDfCDVoCFbRjFV9y03wii/ePCDopOMYbxhDWKlxIDL CxE6klNENARW56OWma/Ki+O5NjxnjTE0jAWpnC/aCQQmP/zxtAjXKsBkSrbauibxaZAB +qQQ== X-Forwarded-Encrypted: i=1; AJvYcCWPMY6yHJZ6TpDLk2I2rrVBRXv6Ypm7k25yz3oQMwMLAZY0Ega4pe0ja7qAclkAtBkhD14mW1wCO7rR5bA=@vger.kernel.org X-Gm-Message-State: AOJu0YxgUhsjfeDWSIesH82Vo80XAcSqQFHPAI9Hc2K+l/5ueDvdlyQS SPPVhebhoSYAa3CMILyjZcErkFEQzhFygFP7SuwCBhfeM8Jd4N0M8X46dB21QtfRfnSl/cCVX4B 7k84M6F7XnbhR7tbArxIpROxGpkMjEMEmVwFjZuVpNWEiad6BgU30uTqAi4UXMFSENok= X-Gm-Gg: ASbGncuwTs3mEFiJ1xsEuVcPP2j7QJvff4ZIFx7k6ixpl3223fsVNZYC6nVVyoiW2YV GcROwvJjVatglbNB9RjvyBw1RGOKJXzGPVJCZeSfnUCYs75TZomMLw8qqMf7Zz0M1kNdfyoAZv3 1F+0xRQtd1jBzivUVi168wvwKEDfdcNJGIqMyDjczWofAUnmi/ZJK3A0hI9QsE+fcb6/yTAPE0t RLhTpJNaa80pFuENKS9rtAfifboXRcNelsFHny4r9PSGggxycLuWnfegC2zRri77s97eF4cd1Nn ORaZoFrNTGtVhgAmYNUp6ayQlYzIpW8Df5JKItZ7Ln1+u7YwXdmwrhsXG+6jrISwADQW0ruupNj xGdLtXo/mxM8WiPKPU8zLuhJxmjfKsEI2xC6iHWP1bF15aThjZ4lw4YGMRQr9PW9fXN02ZLOrMx tnWqO/IwUs0VWN X-Received: by 2002:a05:6214:248e:b0:882:3453:8248 with SMTP id 6a1803df08f44-882925f67a9mr77232066d6.28.1763178180280; Fri, 14 Nov 2025 19:43:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IHhVxtE2vzDpCPxpniykwzQn02uMaRseK9nYWsrY16MxhuNwjNND/ElPUxOxZWzG5XyLWKoMQ== X-Received: by 2002:a05:6214:248e:b0:882:3453:8248 with SMTP id 6a1803df08f44-882925f67a9mr77231846d6.28.1763178179750; Fri, 14 Nov 2025 19:42:59 -0800 (PST) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5958040578fsm1475880e87.78.2025.11.14.19.42.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 19:42:55 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 15 Nov 2025 05:42:51 +0200 Subject: [PATCH 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: <20251115-drm-fix-lut-checks-v1-3-3586f5855bc7@oss.qualcomm.com> References: <20251115-drm-fix-lut-checks-v1-0-3586f5855bc7@oss.qualcomm.com> In-Reply-To: <20251115-drm-fix-lut-checks-v1-0-3586f5855bc7@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.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2089; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=4P1wMVl+cr5YuoK0uLDDF4U6r3t4wXggB06NKtuqjxQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpF/a7T5WnPS0+6Tv496xy0Hm3V4HUcepWVOh7+ VCvXzZ0ycWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaRf2uwAKCRCLPIo+Aiko 1YkmB/wPsLc6KEvkV424vpLAEbHyA6xjgnMKZ8tD9uJ/+MD6hxhPqfREqsSyl+MQ5pLR3IceAoS /kRCvgLGHirkV2I4x1xAwX+1Huqe2X8PL9InneIHyOgtV+G6Tm+sOxSeroduVzfJ/878dKw2rdh +6MQwO5CGzxmegoJ1uwt+cmQFi5ZQIRso9+YbQNSZUqw9m/54fgaZsDYyZ1CRTTNtRUkOBGBSTy jtzW9mSXfn4oeivRipQEgsOXmacKBxIU2LgE3wcFCEdbZoEd5dgrBG/MzM8Ll+XI/WbUm0+0pfd oUmsdaraNAe8qLgCznpVkSLyzHlVcKwODR9r6MfIPXGnNohi X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: JlcOwSTUGVTKvAkLp4gnGQhRR2yMshcK X-Proofpoint-GUID: JlcOwSTUGVTKvAkLp4gnGQhRR2yMshcK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE1MDAyOCBTYWx0ZWRfX2z3qzJYqgj3S 6uY4Og9Pl94TsN8auG1Gk2jOz3CaAQVX+dRw1Hop30ZRUOp+z11QUXGiVF9i1VjNA0n77E61Xe3 j06BUazJOltm6VkLlWEdfnLf7eys1b0FbWI1ZFUL3vxd2aZFeGEiRw85bE3GYYdQW5QDnPUFLQP W4kzZdqQfTiB4z8t/zRJFwf69OyeFRfAqWzDTJETpmUsnPq2ktvLVsCAg4L2GncmeJaxIuBTSkw uluxlvzh0Es7PZjJRetcC7I71thQUr2HbwOCuAW4SMk3kYVqoPVZ8RH3dwxB+oJnbVWil0L40CW oLQB5m7tFQPmuoAs2qwm61c7tOtp+GnskJ0rTeqV5i3gpGX5ibLb7Mw3oG89ehXmtAP+6v9tdiq FWQwHDL+oipEF3cxqIuTBgVbLC5pIA== X-Authority-Analysis: v=2.4 cv=KYnfcAYD c=1 sm=1 tr=0 ts=6917f6c5 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=_v5trmpiMvKuf-VRmTkA: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-11-15_01,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 malwarescore=0 suspectscore=0 priorityscore=1501 adultscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511150028 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 7d2076f1006e976de73c898a838ceb4b5c4370e4..178d983b2378e1910a8afff4da2= 4e090f02f3bd4 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