From nobody Sun May 24 21:37:40 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 7824831A575 for ; Thu, 21 May 2026 08:42:23 +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=1779352944; cv=none; b=aJafUYs+FrrEqsDwAUzSyLSP3oVII4WT3je2pc6DnFoVOwu5xwtALgSti/PERjxImbKLlveEOuGe8YCX2XujI+uUZkL1bnIrD2OVA/5tpa+y3TaEKg/8vR0M+x2dYVVWXm2NwDTLqnxXTPa7pQJRkl6lb0ykuxx+VEkAw13/svU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779352944; c=relaxed/simple; bh=1wENxyeqEXO+rchcvtUpNp9xquaNvODpYXNg/V0yxUo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=XqNjLxFrwRhMdEnwyo4D5j6GqyNcHe6XD14h7JdMD2jYW0ToII2P6m77W3pv4z2G8Nw6ANI2Gn8QQS8rIT2rdAlWeVGotAko7Yrt0QHOOJKs5zIqet8GNwui+QHT9YDQsL2fMK+GrpVMVvasHzkZ3ACQ/0znwURwK29j3+D40SM= 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=A+TtssKW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=L9XVmql6; 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="A+TtssKW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="L9XVmql6" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64L88k5p2072188 for ; Thu, 21 May 2026 08:42:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=eXAQUe6zvGar7mzqa+2Xqa o6fuugeMgP7Vx/7oxKPyY=; b=A+TtssKW7NA2X+RUTxEkkVAr2wbzqXKGHC5CrE MkxhxyBnAjrZURjjZKHacmpzqewmg3rhXJ9XhIgNXyzvdCU8Zig+ibU4hY8WlD0l iOlKhcMDNbanZiR0LhzhHObuXT0d4Ds1io7HY9ZKVxlvJHE7qzSsXlG2D1rvnpow dWrX1iVlYkUOEvd4C0DQPjAHyKZnJeVvCGzIco8t4fUZPMZAGgFLX//hE8cC15w7 8qPuNR2I4TUj1Xah7KCZuuxx1nmpSeu5CimB4fsXDf4YBga7hNv2Uok4wVO4TqdN yFX074po8b04ddad8dMalYds03vIEevNpao8s2PrQTMjP0jg== 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 4e9r961gxd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 21 May 2026 08:42:22 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-516cadacf92so3108981cf.2 for ; Thu, 21 May 2026 01:42:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779352942; x=1779957742; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=eXAQUe6zvGar7mzqa+2Xqao6fuugeMgP7Vx/7oxKPyY=; b=L9XVmql666dN2s/NGmu9WR+bS8bDXzLEBdck2X0lXQcQ7Be219H7XF3RtXdkQomzMI shB970emy4cEazdyOXjxspYJFxPcuxzhvSVwlv39qL6ZOu4+GLg7J71K8R9ppOnUaVMN 1Rep6r3vUI6Ho+4RwR/4KrcTySw4blTHgOtOU+to9f7syGDFRskxdkEb2GAahqpiZPT0 hB+DGJi1cYHk5zD4e6bb9J8RZ/MVsfuo6uXOQbPyPHAmdbjjgmtvgALKxyik6hUx2J2K CDX5IjOedX/QK+UrdTFuvUsB86G2HvmP5/kimS7lXqQod1LTpNomds+fyT4dJZQEZHAy ExVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779352942; x=1779957742; h=cc:to: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=eXAQUe6zvGar7mzqa+2Xqao6fuugeMgP7Vx/7oxKPyY=; b=Xg4jbZiLj5ncdYRBPNOz4xkp20zVEK0PDLqGyxU3m6LtOVMbRpTkD0wtwFsLu5K4If 1SyBV+wc4ujmQMh2KO/aYp2SXzC1p3GBAykELq7+Dxv0ja8xQPZqpP8sPIgY4WRemGoP bmXM6jtVRM6yKKlhcIIbakAkEy8Hdqe2py17smFRAtzItWHf9t1hn7lQX6a8kambuyvM 8R1yjBR5Ogj6oCEYvMi+BIPRyd57u0X1Z9KLsV4XTm6dygwy6fsu4HaamPRRfcqw/pL/ oDF5K99OCOS3+9pMv+0zgJrDE5yKezYTeFK2hTWEIvTYy61eWaHnElwq709mybgiJP3M q/+w== X-Forwarded-Encrypted: i=1; AFNElJ8THEGOnNYKYuY+VY5BdO3V05BNKKx8efxmy2Q+p0ZUzu8Wypuic3FmDWWe5LpatAkAmKIaRNx/Ik9DuH0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+y9m8dgRb+KVo5U8MYzWyCubDQigKaW/IN6orPt5emFP/lyAl wVe8Kgu+CqYpX5vorEHgsdt33zoaKbku86VUwvwN6O3cy+2yZOfS/rO23BPMZ3/C5RH/NvVecy5 IObdco92sHUKJqbrJqy5CqGQxpq4lu77MhRrqxKRRpnHlMBhpAvoaZFy4a7AUuXVoL/A= X-Gm-Gg: Acq92OGKQfRz46iV+xxpaBXr8q1etjdLuio5O7mGJ2Sme2g1uY6SGaJUjlmWDtxOPb5 N9rZZD5qmzu/nAEotg88WbCx1E7Vg8Jtbw0DBEM/BQJZEIWKEJ36Q+80XqmRqtUSNihJAo9IUcU zV9m5/2Ndc954LmwVOYZ/6aXRDkaVPEDjsBP6L7WOxZFVfFM1/YOM1TU18W5dGweVmysG+3isrQ cfXeRp6CJd6y/PnuSXGh6DS2Og43rixBCcfmB6PH5oFZN/mg0wgg6jm9xn3Kf2p+0i/iJDi2Epg 1bB/DDFLH1u+p9/EwGq4xIRoqh6nDquKixlc++t6os0I/ItIppe5xkMiSGNiIEq6OYeVzsDZCIA QwRP3p8bFbyqHsWGNwlQVbI1hg4Z+FhvAi0woFNZTQ20uxjoaPKg= X-Received: by 2002:a05:622a:a19:b0:50d:8e2c:6a68 with SMTP id d75a77b69052e-516c55f29a2mr25399271cf.51.1779352941911; Thu, 21 May 2026 01:42:21 -0700 (PDT) X-Received: by 2002:a05:622a:a19:b0:50d:8e2c:6a68 with SMTP id d75a77b69052e-516c55f29a2mr25399021cf.51.1779352941399; Thu, 21 May 2026 01:42:21 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:bb10:ae82:b7c3:d15a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4903caede9fsm10916595e9.14.2026.05.21.01.42.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 01:42:20 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 21 May 2026 10:42:16 +0200 Subject: [PATCH v3] gpio: cdev: check if uAPI v2 config attributes are correctly zeroed 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: <20260521-gpio-cdev-attr-padding-check-v3-1-ec3bcbe2e358@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIAGfFDmoC/43NTQ6CMBCG4auQrh0yLfLnynsYF7UdoFEotthoC He3sHJhoptJ3lk838w8OUOeHZKZOQrGGzvEyHYJU50cWgKjYzOBosCc19COxoLSFEBOk4NRam2 GFlRH6gol5ULVlcw0lSwSo6PGPDf+dI7dGT9Z99rWAl+/f8KBAweJqtB7WdTVpTla79P7Q96U7 fs0Hrb6QXyYAn+YIpqIHLVsKszrb+ayLG8Nu76oIwEAAA== X-Change-ID: 20260519-gpio-cdev-attr-padding-check-7e52c98a3de7 To: Bartosz Golaszewski , Kent Gibson , Linus Walleij Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2384; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=1wENxyeqEXO+rchcvtUpNp9xquaNvODpYXNg/V0yxUo=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqDsVqGFP4uttboBZlKQiCwCf6qFCvSjcSc2vol gi9b5kt+FeJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCag7FagAKCRAFnS7L/zaE wyHjEACjgUitYuoJC+3KPobizdIzsm7bxWrkbcFmZuVARUlQgr5fVkDvcaUR9hZoqltB9k/VQj9 sF4S+kRG7VEfzxRyd556dDKnmayT4FN67pmXmInoFhKK9XWIHHzqz7Jn5hkl1Ed/Sk7hJcaZYwC jW+MQOqza7BusB6AVPPhT3J739KdscANlBRpQZtyGzUemKcDVnNckH6N8/qjTTQht8ISVV63Srf Ryxf/xjPmN88UTxKU5I16W6ar36j9VIwJuzhHY0IYUvBWW0/gYtce0IqxI0H0sNllCGBLYIHswC /jilFhRFwzGaiHOAipjM/nmN3TTN/M2Qy0OgK52Cgnm7FRm2IU9kD7RUtqD0YshQdJLhPBiE+dp awv+TRIK7Vw4ioiEIxTfGYFjWd2OI91r60RsRWMokTWltE4pDW8uTI3RCB2ttP7omcBHFbEnDLK E5oSUItDlB9xSLLQ0FDDWwScsWUug2HZnm1eAAPosyLKM3bIdjoTuZmm3KJiLFt/53y5oxMzi34 11H/nQ+8TfsY/W/fg9WKR1SYO8hYvnMLAba4UlOJtz184QjZhlpXZB3A5NoBItdHcq/dS/aRMtp dnxlQHGiREl7VHpjE8z+U1FiCBYuH/stH7TZKBFD/wrZL2YcS1eTgwpT+nRdGTbS+wFxX8Q8upo Z21vvjWWk0Ncp7g== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: s6Xybs0aWf1cF9bVAmTIMiqDYThPlPyc X-Proofpoint-GUID: s6Xybs0aWf1cF9bVAmTIMiqDYThPlPyc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTIxMDA4NSBTYWx0ZWRfX6IiKX2iAgdTp VX9xeWldX9XVkmbAH4X2zUXWFneqZufF0htSuA1c4/iywdDPq7A08KgVrE/+HW7RPAeOMN1zhDG ti34JlfAsOq/FCck8eA+8csChSceN/CGIw7krJRu9kMk7+3zo9cEGs8dvoAizY8dR3jd6HzF72B YMaSD0Us4ZmKrIst3eKGRlomq8Am9aHD7LGewrUzMTKztMNOJHTy7XssrKg8dT7v+b/ei2ia+wl GSnWViK4fOLTqmX+3pXojBlI2jEesPXfFD9/JFfKD3ZH6xnPMu0PJdQUKKR7Pe/MeyBo0GPfvg3 pQ+a2+PHLgBYi0rN8CGQsxzQDYZCHehJizWwDJps6xnVWKtiyN6UZ9TpnAcEGuIyPgnnCA9/Hfc nTtFXuSgXxNvJmHfJ1MZw+whbi0pSD20lB+TFGv3chTloo4B76S9mksvhaJRSELJLSAwJVTK5Pg 5EGVCMnOvOLeEuKrPuQ== X-Authority-Analysis: v=2.4 cv=GqFyPE1C c=1 sm=1 tr=0 ts=6a0ec56e cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=bC-a23v3AAAA:8 a=EUspDBNiAAAA:8 a=lMDd1n3YxiPGw5vM6oUA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=FO4_E8m0qiDe52t0p3_H:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-21_01,2026-05-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 spamscore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 clxscore=1015 impostorscore=0 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605210085 We check the padding of other uAPI v2 structures but not that of line config attributes. For used attributes: check if their padding is zeroed, for unused: check if the entire structure is zeroed. Fixes: 3c0d9c635ae2 ("gpiolib: cdev: support GPIO_V2_GET_LINE_IOCTL and GPI= O_V2_LINE_GET_VALUES_IOCTL") Signed-off-by: Bartosz Golaszewski Reviewed-by: Kent Gibson --- Changes in v3: - Don't try to check unused attributes if there are none - Don't reuse the loop iterator from the attribute padding check - Link to v2: https://patch.msgid.link/20260520-gpio-cdev-attr-padding-chec= k-v2-1-0010daf8059f@oss.qualcomm.com Changes in v2: - Make checking even stricter: check if padding is zeroed for used attributes, for unused ones: check if the entire struct is zeroed - Link to v1: https://patch.msgid.link/20260519-gpio-cdev-attr-padding-chec= k-v1-1-a0c6d4a698bf@oss.qualcomm.com --- drivers/gpio/gpiolib-cdev.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/gpio/gpiolib-cdev.c b/drivers/gpio/gpiolib-cdev.c index f36b7c06996d70b2286edbd181899e4c572b9086..82f27db0b2304679eae4c4f2830= 2e9845d7cbaa3 100644 --- a/drivers/gpio/gpiolib-cdev.c +++ b/drivers/gpio/gpiolib-cdev.c @@ -1184,6 +1184,7 @@ static int gpio_v2_line_flags_validate(u64 flags) static int gpio_v2_line_config_validate(struct gpio_v2_line_config *lc, unsigned int num_lines) { + size_t unused_attrs; unsigned int i; u64 flags; int ret; @@ -1191,9 +1192,21 @@ static int gpio_v2_line_config_validate(struct gpio_= v2_line_config *lc, if (lc->num_attrs > GPIO_V2_LINE_NUM_ATTRS_MAX) return -EINVAL; =20 + unused_attrs =3D GPIO_V2_LINE_NUM_ATTRS_MAX - lc->num_attrs; + if (!mem_is_zero(lc->padding, sizeof(lc->padding))) return -EINVAL; =20 + for (i =3D 0; i < lc->num_attrs; i++) { + if (lc->attrs[i].attr.padding !=3D 0) + return -EINVAL; + } + + if (unused_attrs) { + if (!mem_is_zero(&lc->attrs[lc->num_attrs], unused_attrs * sizeof(*lc->a= ttrs))) + return -EINVAL; + } + for (i =3D 0; i < num_lines; i++) { flags =3D gpio_v2_line_config_flags(lc, i); ret =3D gpio_v2_line_flags_validate(flags); --- base-commit: 6a50ba100ace43f43c87384367eb2d2605fcc16c change-id: 20260519-gpio-cdev-attr-padding-check-7e52c98a3de7 Best regards, --=20 Bartosz Golaszewski