From nobody Mon Feb 9 02:15:46 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 B695621D590 for ; Tue, 6 Jan 2026 03:10:01 +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=1767669003; cv=none; b=S5WtoZJUUwqHy1nIXM1c0WlMIw/nYsgKaOlD/VWhP1h5aXEY1YzdluBp81Cp1YIKpMjO+39gQTS0uVvAgY87qdLzH3zOyvrA2CxheA5HvpnfGFirFtdCiyFsj0/AWMI5oz+PPcc93KcHCv87BOIRXmo9qKRSKo4Dqhc+/kLljTg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767669003; c=relaxed/simple; bh=OHanLuFuc76947yU3WzGXKL8IflDYvhJa4SYngSj/Nw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t7IYl97XU8Wr2tyDnDos50+/VvQZlTOeItUOeyQmW0U+h6wXK1ZhJFq0BSnlYlsFj85n6udWoN95txxwANoaBixq9tUBPnHduXsTrhhAQcqLuPaaCYHZdqSEKnkYEiXIF/+VpBXrMgxmGN9S81Q2BwE4t35Rfp3BaKoOOx+goMQ= 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=ONFjEibD; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=R3+KLN6x; 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="ONFjEibD"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="R3+KLN6x" 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 6060nMO32943633 for ; Tue, 6 Jan 2026 03:10: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= 1uGVNstsP/UQQcLwdrzkGVSuVG5G5/ESRhIQYzvPwck=; b=ONFjEibD5yK5fUZy O5ag6J+2m/+8CBwmtvt4LSZU9L5KntQcAK5CVDHinePnOYXiYO2YS3lrETDyHRnA E1olvjB6uj87vvQDLg9RylNdvo2dcVM+Mqvr4PiH324NOVtV7oUU8EHa9UHq/0Kh cKGupaPsGx0P+AjPLbvFZpuLffSuSXr/yPCLQUWfRc14/pSZBMFu5xCkgH41F1vU ts2nh+n7RlzxlxJ9Lgnb3RS5Ve++IFvyY07EAcEoO8o5W+tW2clCGHzwwtqni9hk 3h9ct+ernGUnS++aewPRtYZjEL0VrZVthuoxqZL5jpVYI7iUfznjgcICgICzU154 2uRy+A== 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 4bgfv01rsq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 06 Jan 2026 03:10:00 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4f183e4cc7bso10564571cf.0 for ; Mon, 05 Jan 2026 19:10:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767669000; x=1768273800; 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=R3+KLN6xgeX1nBEST1uqzWU87Qmk86WDebvtG8afB/s19sxFdy+unJurGFstPYJRIX j/fNbvQKAzomHOAm4ndeTxqfTsEVLgBt47rHtF5ptYUCmT/Rg9QJ1Lu0JIPR40F0g/e+ OlzdgZYEYs8s8Fu5mDRoLotOFBjaIlCsJTWkONgfYqZTbnx00hoZrKtE7vatLXX0Q81F NaN7ONDcmUlM14l3Q/+rBF5ECJ7oFEmFD5svra3zcnUHFzrikmHPbepGY0Z0iMGButaJ 40/rMGtrLyjpHNR8gie7opZCND9x48yTm4oUMBklwTPg7Wi8LTohqGS7kOPY2KTBsJAU RaEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767669000; x=1768273800; 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=C/s3+44KzuzspDqaAZPpLA/H7aOQtsSgWlDeAXqMJm7GxZeD67SolZmB1fG5DCgwtS Z7VxJXfkNWhxv+fizDRoIkCwDRRoXbpESfJy+CB+384i28saKKcyDXNMflegfuBM5Ew1 qK/tG9WK6jYdlAfGSaAvhSf6phqGHgxV/Fv8NaLbVXAHdwAN10iq/cirQG4oKJhooHOx lXjQ1plsQ7L4AocsUG7B5b4jYWuIulfHWICHmmr7/MNjgOBxsLVfuFqjCdUQw632pXwX VLiF+rXQb4y+t8ms7122IofCjIMIToV9w+klUd1mChz9RmeEB3dhYh1NEVK8ZVXYe0Ky LaEw== X-Forwarded-Encrypted: i=1; AJvYcCVXKvPyGzi+zYvaidVbymel5L4Adb3ft1T6N8/1LeJQ40g3wL6BWRCTyE2hIrD3zgrn0SAgN5RTSwBg1Ko=@vger.kernel.org X-Gm-Message-State: AOJu0YyhTDY/Jlc71OaUfeWFVOxqeaU3UpWryN5bCs359XNlqebvjSKx HDKFuDLymm2aejI6GWxeE9LDp46RSfLuS/Zc5huXS88vipr8HchAvVqARt6kuOsDAg+rV92xtT0 CF/ugpqXa+w0z07dx7nQsyVx/VPC4bx87HBMgjbiLeszzXFR3ZIRB2kfKiF20ZvhR0BE= X-Gm-Gg: AY/fxX7wMO8F48DWNfdMZvxrvLwi/aBdAB3UffDtAvH6qdAyB7k54Fq0NNsF7Pa2q3Y i9vPZmfWa2TGmu6Zz7zfryad/Dp+10gekHhr++0g0c7M0GxlhNd8wdxSfkktSf+6cIiE29F32nW LZdHvS8333h9BOpAJJLpDq+k65N3jhOCQ7PIU7RxA5sEdgBvWvJOagmJdspaUn4Ex6NQxdiLadZ xVc3dnOHViRmSI7TlJeNZC1vKOpMtg6t04gMCnwQneUa5ZsN5p/bF6dFwDh42atgI9Rwcstm4aW 0AT5mUST4ihLZdNG60m8sLGqs6Pg7krXjFaibHkGJobD2AaPm123lfdRHsYprwq/2G0Fw0gxtG5 5UTcyR1N8WGVo9XH4gJvs/AWmp1hkUWnw9b/7xX6j+W4Rz7uGQtZb/YiZvEil9CuYCjvEHNjdWK k4C5jAe2ORs6JgMikEaO62RuE= X-Received: by 2002:a05:622a:5c98:b0:4ee:15af:b938 with SMTP id d75a77b69052e-4ffa7819d0cmr23555491cf.70.1767668999913; Mon, 05 Jan 2026 19:09:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IH6gVe9gCbUT6aZzLT7RdSvNX2QeKy9mu54pHXwxlm6rpJqOM6kkyLcNKbwzAr7F+zpdY6IDQ== X-Received: by 2002:a05:622a:5c98:b0:4ee:15af:b938 with SMTP id d75a77b69052e-4ffa7819d0cmr23555291cf.70.1767668999498; Mon, 05 Jan 2026 19:09:59 -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-59b65d0d22csm242869e87.37.2026.01.05.19.09.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 19:09:58 -0800 (PST) From: Dmitry Baryshkov Date: Tue, 06 Jan 2026 05:09:55 +0200 Subject: [PATCH v3 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: <20260106-drm-fix-lut-checks-v3-1-f7f979eb73c8@oss.qualcomm.com> References: <20260106-drm-fix-lut-checks-v3-0-f7f979eb73c8@oss.qualcomm.com> In-Reply-To: <20260106-drm-fix-lut-checks-v3-0-f7f979eb73c8@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/pANAwAKAYs8ij4CKSjVAcsmYgBpXH0DlMWQWECsl/rW26AE+Le0PH4Z89ea3vpjg tWGIWCs/zGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVx9AwAKCRCLPIo+Aiko 1SAyCACnEjzdAMzpyfkO6PvtCf+G3DKX8uG1K088anOusXdpHWWFhRk3GtMnCS5LCYqNRKYUYwJ Ytbagn9GTFUuoGQLESfr2Tf0CnjUDMKiTEXwNiGZysydZrW9zBqnJUMnRn8pOvinh4vXvVFKhrf 6c+WcZ0aSoNz54T/S0liD47Zhs5bMoJKvlMVLXP0qYjiceK3dPFRaSc2sl857rTvfCxxPa0WG6R OzStJU50ourr5HiMlCX49zusfzqsjkfF0jgbMblI1D6b3Db2/VRobXLtfeQOstro5PjC+ijLS0K GuxXxLdYyF0BZq5TUBES6CyaTl9+jrINf+WW2rxJAkB3imVF X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=e9YLiKp/ c=1 sm=1 tr=0 ts=695c7d08 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=uUhA93nX2LN1thLMeo8A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: 8_gjHiHYw0d1Zq2yRt3tcd4dX098-r9u X-Proofpoint-ORIG-GUID: 8_gjHiHYw0d1Zq2yRt3tcd4dX098-r9u X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDAyNSBTYWx0ZWRfX+f6Aso7SCjz1 Ih+YdrCkwUzDxEwagFzh5A1Tlk6mq2wNmEgKdTQGliWG6t3s5cvbLcr2ELZAX+Y4yqfuw8nbLuR 0ZDmax9qGseWtOsqo+Y9d8f1DyLTJic/NZDAn6orI09hVAm0Gk/rGjcHDkYmGFSE2eMSCEtTquJ yyA0pTU1IA1C02/jvJA7PmB+mkwjq6jvvVWzuklzXYYg9UZPmGE4F3R2vpeM92ttxxmQG/FkgIc 9BKhv4mu2lxyn2w6XRJgSmMHhYWlyq1W0L1uTdIQYOF7eni4YjXOYSY6z2t7hRDXk0UuGW2vISD z1TcZYhhUAZ6Fuyt36B3Sl99HTfZ0SJfFtB9KDLrrr6GdI9j7v+qu4ucY4wDaG2587DEj+fbRUh 0heUUY34yRULrUQPrc+RPdSwW1ikHRYBh4Kb6yqsbDV9Ws5mqz8SaoIxG5THbNvu5gGzdQz7orr 8HRT2Sx2dHayT5a54MA== 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=2026-01-05_02,2026-01-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 priorityscore=1501 phishscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 spamscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601060025 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 Reviewed-by: Thomas Zimmermann --- 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 02:15:46 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 A6ED922FDEA for ; Tue, 6 Jan 2026 03:10:05 +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=1767669008; cv=none; b=HuW6IwyzFqkMnS9iLP2KG81Yo9NvLIN7iAV+x6YL7d5UpUadE1T9WlgGZGkBTNLjAhPt8xHfCbyutCESA8YXqJtbbWBVD7r6poKxn2bxa9bwudLPDWDGUhmJs8n01UQwZwfflQOaok8AP98xeXZATkdgbX3E+3bdIza7lcWmbLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767669008; c=relaxed/simple; bh=UkO7gGzz204YJlbpHl9qFMBJirNFYawZoOhKgADqEnM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TgKz46trZMP5pJbTNQk1SS4RZgo64RpA4r46Z+vjbPAKz8NNroV3SAlKbNDGbBlmHgccGEuzBaBzXjzgMuGC2goy4Vkhm2mWNkD/CzzEGuI9Hh8yO+IMxhF28MLUaiFOCqP2hqBt3pNrt3dPeUaz9GuvJ6m/KEMkahVczsAV5r0= 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=iqVmyjmv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=L5cNIwuQ; 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="iqVmyjmv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="L5cNIwuQ" 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 6060nKoT2886390 for ; Tue, 6 Jan 2026 03:10: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= i/ZE9RtLemTsfDhGA7S/TMDUgGHbHWM5z3Ovm2RpDnU=; b=iqVmyjmvarYskCET XopyhP7TvNVn+OSDbG75jjQMwgINvVjmVIEzP8R0yFt8oespgYd4BxiLUIjfVRdX 7N8QWATyHpn8Xct5g2HUw/gN3pLSEvg1PsbohufeiLNb4ZUjWlepY0ZMy6NGZHLp d0XXh7r1cYFKd1oK/2o27lnWm4jCfd3vtQTKMCYBEWKvAEjWsE1280BIFqLmlJf2 0QneHyHIemY8FmNpixW6Ze0gTLOrCpM3UfYlmHpETmxqxGAoTzeQEn0tJi3pMoTX K4wp6fWf44KSu7E5HRKeQxWMo1qaRIZRwYyHoP/XFv8GbWG/pe7fqQWsCL39/gbn ni4LpQ== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bgpnd8h5s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 06 Jan 2026 03:10:04 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-88a2f8e7d8dso15962586d6.1 for ; Mon, 05 Jan 2026 19:10:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767669004; x=1768273804; 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=L5cNIwuQoiKyatEx6nxkkbaFdht7fPW6NTE+eXTelQtUytjwQmCAE2M3QesOf27GXK S1S/6XoothjAW6lV5MR7G6IHvMgrr23NM9A7XeJbj6chvpb5S9T9NfXuyyndgt5gvcax 0mbbSfznT1QYkSOz+ATrp61wlBqZ82lw29o/OqPMwNx/lJC/Hn9zW9VM9hGddWIcuE4Z 2xx/Q6oulM5G93251tJXt7ohL5WzsUq4KdtAG2xzi9lIjUeE21g7cc6hfOCSh9UkLEFp o6cm8EPppC1YdD/y0P9Bi1pzgPhqB2Qo2LK6KuGr8iYqGp3VMmBIf5EFdKLhSVDiEck9 mN0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767669004; x=1768273804; 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=Yr7AG0e6gXUj2eYPbE2eRmmuD2PLDQuPD6aUNQ96kHr0a535nN6giWg0ztL6fOCphX Kk2K8zsrpWNAk89Iu6v1tDgyxtHw3ghU6wjwVFs91NdJwJr+StyUVvigoRxYfWvjTZxs g6DmCPc117W4wvcSZnohJcbU4sjMjt4fTMGb4ABaoFrA47zWXlkM/znSO/OHJGPOtGwd /fU4qgllRM6Wyj0b/NUIRNANxRP/k9/pIYKcBFEJv+2OsTOtjdHtNI4NTckuXi9y63GO PbE612fEYDvK7VVFL4hrgIap0HqQYZsbOW1F857iMh/lZQUKmL+pNEcPJf8sWmBgoqr6 C0ZQ== X-Forwarded-Encrypted: i=1; AJvYcCVP+bQJASE9Y2Nl42mBKSmSGzJbeKqec/ppuYTWT0GQGg8RSgHm1lmrEGBqNsR0+DW+S33aXadRIfxSbfg=@vger.kernel.org X-Gm-Message-State: AOJu0YxERlOjYErxDGF5dsP3FsXkFDyzb6WmxrgMsbkn6EXd9zLHMAMF d/Z1WgE1wSOrSA/3l8R8Sv291gWcrA+LvBR1QeDiEN5BCjH24LrOz/gPfqIy3F9QWvg0XWmgZEU EUwsYuiXka+PPU+mRCLnNku6ggUVDKcHUA6i5mo8CaR4gTF/0lWt1/02TteUbDuSUeeo= X-Gm-Gg: AY/fxX6r2sJmGeycdRYmKGRfKL1q0KMpapuK0ME33HhDqrgA/Xwr3/zvxC3rYw99FYS lOXoSqos4nkPf8wrz1RdYCFVYzbVMOV9hfVLBTbjP1Xep3fqbHlrI1396szpPdEGYMaeDVDf8mD Md6IoIY9e+C5VE9640AZtlDiAhvGQoWAcVLf2ROfrXqBkqJvQ3BfirtB+hRIPt4YNj+4aDI6Lj6 0Eavl/iO6ZA9kPamb1tYgr2kmf1XRHGDVb+fze/Gn64u8dqAvk9MSGeNf26GKGvCqtZO3DwukJA eiLbkfQDZ0kReBUrCUuNE4nAUxDrjoSvAZtjmHPoPnOtPRHiNvwVtX8UoJSr4XHfvZ5h+X/yJtt ZGcgs+YO1zMKWGsRiOkcnOnfHA9pMitG7pxvml7t7h0cd/1xpF3FOtOqX7GIaMMAzMqi7EkBWFL rbjQ5qFy9XpHvqX897H4TvTAc= X-Received: by 2002:a05:6214:cc1:b0:88a:2444:36e9 with SMTP id 6a1803df08f44-89075edfd93mr23664656d6.67.1767669003708; Mon, 05 Jan 2026 19:10:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IEUbEw4dDpAlA+E/+QDVLYJVJTnPodAKfEcOQtXRN1eWx9cl9lcmjGvedKs7jPeUnxVSlp1Pw== X-Received: by 2002:a05:6214:cc1:b0:88a:2444:36e9 with SMTP id 6a1803df08f44-89075edfd93mr23664366d6.67.1767669003155; Mon, 05 Jan 2026 19:10:03 -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-59b65d0d22csm242869e87.37.2026.01.05.19.09.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 19:10:01 -0800 (PST) From: Dmitry Baryshkov Date: Tue, 06 Jan 2026 05:09:56 +0200 Subject: [PATCH v3 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: <20260106-drm-fix-lut-checks-v3-2-f7f979eb73c8@oss.qualcomm.com> References: <20260106-drm-fix-lut-checks-v3-0-f7f979eb73c8@oss.qualcomm.com> In-Reply-To: <20260106-drm-fix-lut-checks-v3-0-f7f979eb73c8@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/pANAwAKAYs8ij4CKSjVAcsmYgBpXH0DDblUwoI2UVGbb37850iZL6ICDxF3WSFiv X6LDbNRXU6JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVx9AwAKCRCLPIo+Aiko 1dUSCACM5JnNkCjR7xv/Iuq1XrLGYxgx6TKOoOFudll5tDxgBqKKQbb4mlfGqVgBeUlvty1GBEJ KlkklAdBYvQwbJYewszXD4vGy66zGeW+Q+wLwyEcVd1LCJ/TGyS2JFikJpN05fyvGx6W276Lrzy iTzFiz5t5JsZ+Rj3N8J88N4qLN2MAle90PBMUYHKh++9hm64hfasrUn6u73XwnIjMyjkFg9dWIV 6YpwNU7C7ypvOkgpjEDQN8CcZU5IqbVAcPwPj24N+Z8/0+5QbxdVM9r608Oreb6VgpwOfVy/uUG 4NjwGCpUQGKAw6Q/w54N4SK2nT5JPprx60ZIVRbJ1cHSZoye X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: duFC3adBKpRCkJ5Hz2XWC2ERvwXdNxNN X-Proofpoint-GUID: duFC3adBKpRCkJ5Hz2XWC2ERvwXdNxNN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDAyNSBTYWx0ZWRfX5RZewTFRzSUD T7qeKV0twnRKAuflCk2kxIklWhDa6s9XoMxFVY9MiJ324HmkH/oqXGq8fMvLnk3Kukxv9NBdM7q 7fzwtqbvxD1Yq4aIEOD8STbWaStZ9PMDD4TdqBqlKjXDrljgsfMV+Xs0IRYp9/f4NrswM2oMt/5 UrJXgfghFFwp/0u7RJg6l9zz6fxlvkj1GjOPPXZqRuS0pzLKgg/b/Vpvv2S0JQGWEbN7N6PIw9B V6VrULpyMg5vF+nD5Pb5nwnzE2vM4QS3PzCUzlkHCoDdjBny6HOGrq+o44cAWV2ziaZbshru6Nn ewsOxD/dl/FkcM6Yd1SYhXZcT6GjZ9JIas2XnWHMnUBCsMI5fPhlsrMNHjZShtvW8wDNOfBg6Qx frMjknS/WjStgmT/JnwiuymUWiK2gcRbB2Dg7iHiWMb0EGxb8q2/GOQLoVQ1BePjFlgBgbrCslD ekCXf1q3n/1JP/56iPg== X-Authority-Analysis: v=2.4 cv=Jpz8bc4C c=1 sm=1 tr=0 ts=695c7d0c cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=ySEUILROmfWDjamXepEA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS: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=2026-01-05_02,2026-01-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 phishscore=0 suspectscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601060025 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 Reviewed-by: Thomas Zimmermann --- .../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 02:15:46 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 DF60823EABF for ; Tue, 6 Jan 2026 03:10:07 +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=1767669009; cv=none; b=JovRa6LPgF1uMex2VyA5l2f2xE/oCGg/hYC73/sWswPPRDwhhr/ljOEls8a+2p/AtjK5q8iJLqwSOWV4lhZKsiuPRjue/j97ovQ76Ml1lDNo4aByt5gAiJQiysQ2vMAAxkI0aOlOaFL9Gft7eK6bH/4/SC8xVwsD1xEf62CZiVo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767669009; c=relaxed/simple; bh=CQUkj+reftSe9Iid1OhLuxp7qZp+MAIvsJPwVl+a6RY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pKXiI6U4s3tCmBybfru6C0ytHORBtSLgZlhGGDD6AyMOMtK/WGRv4ZZDSzD3yOxBPknoIUqg7oV4xfkyaW6qgIKHeBROjvk/YPY7mdvKpDpGn/Q1beivt4QXkBzbbh2FvZ5JfFvmRUIevzrDmGeD4VxkRsC+tn2T7xAZhg/6bcg= 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=lwUUksny; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Jebe/dW9; 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="lwUUksny"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Jebe/dW9" 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 6060o6Uh2888454 for ; Tue, 6 Jan 2026 03:10: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= Kxx8tCQDWmw4x8+Q9ke5IQIT8BfxOOcptitDY8TgftM=; b=lwUUksnycBGhL7QM V7gx5qNFpCeiw+Cna0vJBDJK68qs4bZ8FgpYN2vvSxqr48Jwi+fn9yBdAVrBFEoE O4aFpKBK3flnHCxiJ0GH1BqkaubH7c9a53awgHWdIsahx+IbK6TiDNGpLW1c7w+8 Vy5/6B2aI2NqKSXUgvuEjgHTgRPfq36QkxCf7iJAZ4ERtP45bL9OFhLOqe7hrRnC JYzb+tUQU3J0HFSseBUBFsjKwk3NA0jJ5gHeR0AmHiVqpcTHnjWnEeyv7w/P25be XNXQbV3jNWWB/vJ6/gKGB7LnJofobF3QDBJpIqUYDyLqvtQG8Kc9dinFdY4k2GUc mOsoFA== 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 4bgpnd8h5x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 06 Jan 2026 03:10:06 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4ee416413a8so6730261cf.1 for ; Mon, 05 Jan 2026 19:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767669006; x=1768273806; 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=Kxx8tCQDWmw4x8+Q9ke5IQIT8BfxOOcptitDY8TgftM=; b=Jebe/dW9G3SyLX2nkhoIu4XS0obsaG09ncTGrbCYOQqXCW5Ti60E7SdUM/aEVLPNJt qOgXLlbU0sK1Qft006ecFXQLc82ZXervABl3Crd8jATSl1CUSL0uRdAUo+NmevI4Uz5G unhIH2DCICUGttSkpu39s+edjbGVVy4f0qhNQRs3jA7q4cpkR1uvKDtqghPFR4AC6PQY 64bC+q4o+Qu1jQRGB3jdAL4x8NGxv/yp+mid+IH88jYXAKrzWLWUMcoHOW0TMOb7o/an gVR16swSxC6iPBeRzXqOLwbkabc6oP72mpN8j0hYs91HFxxg0ZvuAuo1I8lRJDRbsekK FeYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767669006; x=1768273806; 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=Kxx8tCQDWmw4x8+Q9ke5IQIT8BfxOOcptitDY8TgftM=; b=Hbp6JqKChlnUr7wsZiQY3uc/+/IAp3VuP2KaDnhOueVbB06x99Oct7Yp0zH9oT+wT2 H4W5xLoViMTBl3e3MVZy+tLsOhWEMHg+kPZw2x19Ek4Sb14xB26QsgAdLjByrBanfZTR 3UFV5hfMs0IOOSbf2OXFlIN+ksJGIOMVosFpkU0Sd68Mt43Vev1T7h3VDcsCOLW6f3Ah GbTnlKJTU1Xmfq2ILAf2WpuYx8Y4I3IHqwdUn9ps25WpLq2PYc2EeMQ0TUhRAlGzJuHE RI7jc5o3ePtF0wN/+KnQJkCYxWEc49hqhigUVr6/BTQxqKAWdD1XXwQzpzk0H0Qb0+vZ UHMg== X-Forwarded-Encrypted: i=1; AJvYcCVxKKnveEMBvu9CncKx2uIYwlj8qgoNCQSneSJf1q4vaPRjWgsi+wvXnq8J+0y2YKDStvmHrVp0ZgojoD0=@vger.kernel.org X-Gm-Message-State: AOJu0YymWQJfCNmkVzmvJkeO4k3YXaDhltEx4/cZLcoyPf2XSdpFRM5m AE1lVesApfbURpVuJGqt5i9+WCzQN0IvD71pPLM44SvqYV7zDI3gkChuka6LRWAklJN4tVi0QoR k9biaEkxGxuf2fDzXdbvp+cGiFDpU/L3YiFPhg+WtIsiraoAoonYmOuxDhALz9K+H1iI= X-Gm-Gg: AY/fxX6Fg28MaOlE2lZjsF+HYRFT6J4lGht8jvTcCC3QiuLUz4ZVDwGCxQJiHp12fiR /J1ysKZ4GjLARMXFMtL0cQC90EZ6ZM0L6+LIyRkBDy27BZivwMduHhXV+rgrKgLou5fBGVKXhQj o6M3vHZtivsyMpIIfvUcTzLa0fRt06meW0mdbsntANaT1cDNSP6XiPKD0oa+m51bPvBhVALFHvD CLaPwt9pBZMR2EALicS/ouk/PejmOZrwZBja5QDmZHx2P0F7XPIFuSZT7AkY/wYEFKr9IIYV9bg FI55Spa12BZXa1QULuy1RfljAZS2zg+61tunKamxbIkrd3WHbHnaOnfpWNeImuV2tLdgp53j86N mDnzAumPVcxK0IkV7mbOygJe+8efABL4FV2fMAcBnX5o611wcnfes+LHx/PKU2X51S0+5MJV016 S7Au7YHaaZJsxXSgGObtLUHYg= X-Received: by 2002:ac8:5a49:0:b0:4ee:1903:367b with SMTP id d75a77b69052e-4ffa76a1174mr27538921cf.5.1767669005977; Mon, 05 Jan 2026 19:10:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IEUYnowTv6MsozrIb8LDtbiyw94oAdi29kas9IpHmTtL4k6cthbrQfc1CLNz0JLTyR/dDvm0A== X-Received: by 2002:ac8:5a49:0:b0:4ee:1903:367b with SMTP id d75a77b69052e-4ffa76a1174mr27538641cf.5.1767669005516; Mon, 05 Jan 2026 19:10: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-59b65d0d22csm242869e87.37.2026.01.05.19.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 19:10:04 -0800 (PST) From: Dmitry Baryshkov Date: Tue, 06 Jan 2026 05:09:57 +0200 Subject: [PATCH v3 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: <20260106-drm-fix-lut-checks-v3-3-f7f979eb73c8@oss.qualcomm.com> References: <20260106-drm-fix-lut-checks-v3-0-f7f979eb73c8@oss.qualcomm.com> In-Reply-To: <20260106-drm-fix-lut-checks-v3-0-f7f979eb73c8@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=2133; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=CQUkj+reftSe9Iid1OhLuxp7qZp+MAIvsJPwVl+a6RY=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpXH0EwOmRyu9Cnxu6D/YykRTPVffVqbMsthR9k 9TD4SOlAxWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaVx9BAAKCRCLPIo+Aiko 1V/0B/9FfTKkq3SbmSHXtswAti0IbUrsa8ReI/ywGQd5c497iNP8yFMbfaCFlF1iHUVlyYY2o6+ uA33c0tVXM/epG/henHRiaSdzoHTVkmhbIQ1if8GnDD4Wbo/t9P6Vn67MPf/e7POjuXlpMw4IkV 6yO3M2fYtLv8dL9fQLg1Mj3LUyqYqaUPgoYVAu6TfcOapTs+Gl+eySbYzVYqX8ab5/NOtHn9YLF /DLHinUl/NmfbfDQ2voVT/EvGt7mrelzzYvYAYHNJbR8o8x9namlclukOvEg5oTqElL+h7xUN4j WA9Gh7hoQ2qV8iEkYsCUzBKczr0ifWgWpniuQ5iAxYG7Q/XZ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: 4TOlFVFv7hqcZ9Sy3phEn-fUm6acQtnE X-Proofpoint-GUID: 4TOlFVFv7hqcZ9Sy3phEn-fUm6acQtnE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDAyNSBTYWx0ZWRfX4jAOC30hAWAI +MiwQ+9vDbn0i06GkcRnP+/L5WmgkiGnxchcpUvbSmjXGg10pZ3eAV+a75eKH4hC1QWSM1NwqKv ec+L/fNI9LcqSSZR0JWWvOaxYvyMSB2cmUcHZUMLqLijEq2fjiuEGRPBtd5nUWuwZvfjLt01xk9 vDRzsCLcNg3smUtkYHOddDUD4gjq/NaaX2TLEfIs9DyPI7qgDD1cc+CpRTeXXavbi5sb+i/89Mf T4Mr6hwdVtdkRm6nLtRLG87aZMBTBZaH1YKcbmo17rZ5/s+jzSM7Eb2LH84FfOfDSStk7+5Thko 5k/lQPwURCfgBXepg/ZMGI7HpnTE2ZJMFR7AbJi2pE9ZAqXTBG0AHHPshqH2m1tGpFc7TVcVrca dKdZ4TcwgmqtA017gjtMj2B0i+ZkyltDjmC0eZPhv6QMY2kLngtSc9o9WpnDyivG97ngOrl2bW8 +b5gfIXu0z8KToBCGGQ== X-Authority-Analysis: v=2.4 cv=Jpz8bc4C c=1 sm=1 tr=0 ts=695c7d0e cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=ZkoTrUv0hqWFqrPu6skA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG: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=2026-01-05_02,2026-01-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 phishscore=0 suspectscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601060025 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 Reviewed-by: Thomas Zimmermann --- 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..dc013a22bf26 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 size_t 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 size_t 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