From nobody Mon Feb 9 06:34:30 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 38782311964 for ; Mon, 22 Dec 2025 10:01:44 +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=1766397706; cv=none; b=eqZGdJ6D2sGGkMicVCirCznDR8LNBF928zNfX7awpl/9cnPwUHXoJap3bskEItdpl64jvWDgsUg1qW96ee5MLI8FzumbEx55Az/O2vXJam48Q772thNWVkQmdg2kyJpF9NASzVqYFWmQ11Y/KcTOTQJlnd4tVM/FBCiQBQiiuwM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766397706; c=relaxed/simple; bh=L27WLTZVcxDySo0b2NW2P2T7jkbfMdif5zF3kG4wOsc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bHnefYd/XogUNqbAinNYAKDRbje+wX6EYJhHaSZPGW+7vempqTaoPkJo5MDbWxMOpmM311t413rnrgE5nwny234EoAw2SNST39hCPOyjZBEdmWdxP+or7q9do4IXrJPZR+UFeyKeBmKXraV/Ks8VjXC9+kygKZtJTgL98du+hkA= 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=ZslxVUHS; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iqv7YEBa; 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="ZslxVUHS"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iqv7YEBa" 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 5BM632qS3106883 for ; Mon, 22 Dec 2025 10:01:43 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= 8qQ6b+qsM/QmOJkj60dMJt5f25gnShd+OIyr9ntovX4=; b=ZslxVUHSZj/c9qO9 PVDGjWKJVtkM80YA52leUzCegEg4eT+Ljoe+D+Bx1McHn8S2aZ8WrMG6iZAapiUD lU4cPXmLXfk0h7z6Tk3Hym1hIPCCARxR+c6ZHiMub2LD8l0rii3l7bQt49SlUGw+ fM4neKedLKzuZSR9s0mIQSbzPf2uKqzenfsqqnGH2M4cfh4oRz69MqqFLHXbxDt9 23+3xoiXzsfRCnETb4dqh87enIHm6KbJRuNvl+CPoOsWlK5uKj/hG93220cxxC5P WImag1GumDojCS5u/+L0ZrwV96pOomrTNTRpPmu7aRp7bngbs8PYwheFWGFBbm+9 AppmrA== 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 4b5mvfmjq3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 22 Dec 2025 10:01:43 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4f4ab58098eso80547791cf.1 for ; Mon, 22 Dec 2025 02:01:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766397702; x=1767002502; 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=8qQ6b+qsM/QmOJkj60dMJt5f25gnShd+OIyr9ntovX4=; b=iqv7YEBa0xCPdGhZfR1LZfxAGzBOpcjENm94sG2Rt1HMVHbNigg4bk38IrerEJQLOd rF3n0mSwS1ZpMNYwYprrmKTj7aYAAccmvMLDeGeCaNoAXSng79CtVohONWJpNKda7qRA v5A4QhTZoUBKt9c6yGG0ndhWBRCkMJ+5Vy6wmU5X0zmgStTIOzx1aOCfnEvbUZwIWVET 3W7fknpDQpUOoB1xre5iAXYOFUC3iLDUrG7l2tFlX18U7Q8vsgbjFZaupm+btv0C55eQ 4NtA6/iI+KwTWO2aKLtsWvdqQdkwnYRNm6GNPixLAWc/Trl9B3DgA0WyEI9+7h0voSe6 2ypQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766397702; x=1767002502; 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=8qQ6b+qsM/QmOJkj60dMJt5f25gnShd+OIyr9ntovX4=; b=Ns/ba/SPdpqVszMgxKbo2o07Q2i45aBV8e9XkwsN/3UPvkoUkvargjVP6a1j1tJrQb B9ILc7ChQSRPUydkzhqPqPf23JbqMUac0lBzpROirh3p7dkd3GVDIIWC73rI+4iwwG7g bLx/xqHL7CGn2PiTwWFsSc0msbG5UhPXbvx/dj6oLqlesdtqGXT124mtTQbTbnWCluCC ACwqqO4Mci189keIXRzXtXIdf5tIazFe8U/oIx6hJDlWYPlGZStixSxgpBl98KnTvgtS DhhZCm7LHosGuhUiJ2WEtUghbBzObm/pXsZQQe1GWG4PEEKCjdEqe7CTBY9ACmpzsh6E 112A== X-Forwarded-Encrypted: i=1; AJvYcCVT2vI6d+ft8G5pWN1aB3fAGOJLqTpPs1uQPVYhgDtH2e7Kop6pf5js1cvD6pCp3pvd+ZLNxwEE9CcrCXg=@vger.kernel.org X-Gm-Message-State: AOJu0Ywsbzf+7XMJpqJFnOyO3psLSGiskBD/8QUfmYd0BJw986FSqMel NKEKafr7zVorMj0rpyDWkYed7CmVIZ3YdNgIcJXV2IfhmsT4euensP5ahzRcY2WfLQV2boL0JVN kuWNbPQ7G3viJchggqccd2ipmdL2sNNmqvjjV6fnc3Zd9TC0XLeEbmffpli8zY/XkvDGmL0CGit M= X-Gm-Gg: AY/fxX4NuWmoFySSttdlodsyXnVwuXyOK6EuGrEshGR1Vw4jaC8H7fqqgZb8y4Cf6vu V01/5FCJLxdwTI+DB92/VeGQgo9bGPy9tAv4OgleEL5jZcAm0Ev9XLIrZNS3W2yGXQgVgzHc2Z+ cvO51NKliP1p8AJVeYO+WjMauO1FSnI5u+GwweDSFOUcy75lPo2yKxzFwj/WvHoVBGiX+wsI+q8 ztEGSBguljFEQDUbbd5MBQcZ53N0PjfeeOeTntf6+bvxaWa7IDyS8YPiJV1YJY6AjW2Qjp9iDuE EVOStXshgcXxQxw9sFa5JDURoP32bX+kYvBwoy4ZU7R/vcqDevUr30jKOfI1A9VrhwC6v+eQ28m hHtwgXAVptbTQy6nFYmaOXYJ/IKS+RmjO65mkU8YY X-Received: by 2002:a05:622a:4183:b0:4f1:b3cc:2cec with SMTP id d75a77b69052e-4f4abd756e7mr155738491cf.52.1766397702000; Mon, 22 Dec 2025 02:01:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IH/bZBEaOVW4VHMf7zDTHeEKgEociCIx+WeaLncnMJ1QEoIpoooG+7dH6f5NVOX56v+L7Uslw== X-Received: by 2002:a05:622a:4183:b0:4f1:b3cc:2cec with SMTP id d75a77b69052e-4f4abd756e7mr155737961cf.52.1766397701399; Mon, 22 Dec 2025 02:01:41 -0800 (PST) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:bd86:6812:7564:9961]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432613f7e6esm8174665f8f.21.2025.12.22.02.01.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Dec 2025 02:01:40 -0800 (PST) From: Bartosz Golaszewski Date: Mon, 22 Dec 2025 11:01:27 +0100 Subject: [PATCH 2/3] gpio: shared: verify con_id when adding proxy lookup 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: <20251222-gpio-shared-reset-gpio-proxy-v1-2-8d4bba7d8c14@oss.qualcomm.com> References: <20251222-gpio-shared-reset-gpio-proxy-v1-0-8d4bba7d8c14@oss.qualcomm.com> In-Reply-To: <20251222-gpio-shared-reset-gpio-proxy-v1-0-8d4bba7d8c14@oss.qualcomm.com> To: Linus Walleij , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Linus Walleij , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3203; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=L27WLTZVcxDySo0b2NW2P2T7jkbfMdif5zF3kG4wOsc=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpSRb+dOQL3UpjkCwQ0XPxXcu4Kl7MkZwENnpyn dLMN8kRMbyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaUkW/gAKCRAFnS7L/zaE wzW/EACayoSpEHAfpmWSGlU5tjHpp13nUZI0i4WuERfr5LVZM6YvEZQHVW5vuzoGF5hfqaW4blk AVYfigIdGavjubD2YurqvY2r424PzbhykTLqRowLcietcGPEXcIqm59jWfw+oZzDc+bFJCcdr0o mbxA9WCH0xJMM3lBON3QF19353wF65U+mG5hx0CKaWVS3Z2GMLgWFL7ogmwSfktvkFr+MybJKHY rPvt6UGzArpBZEz6SpBTyGZa6OXwlg3Pdy7OBURkn+BFFDDPXEOsPOoaUb5vvZdb1qQdQjIOWgi 6DmdgPV9x0sZohb6m/xwfoGK6Kdv3UWDmjqrRP4jymM8r6vFiJO020NLanWgkJAIO1KeapAL5Bf zbwpeYDDkISPeIYbi4vdm9ziCQ7PbubOqvULZrz60LgPADxI4ZIvscmIVHbX9iW41HoL9UbKG8w ivMNwJJfKEO7exEaPCCL1IbFpjXF9/f4SA3oozdzFu3tsbHZ+sAh11erzuImpBTXQgje/IcWEMM K+W223PFY/8pwrwi+sFVSJqE2qAXQZPIZlM0XKNnp6+pSVuNmv1vDd/t+4w+5xfZp2F9II3eoF8 9xr46rASfs19t93JNVp5AC2lq/Efs50RqgSFFdRutklo0c+LVtHkMv4eYCFoeaAFSPuC2FKYUUm +C03PuWD6kY96Jw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=H8rWAuYi c=1 sm=1 tr=0 ts=69491707 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=dxZR3yApE9zKbSvtV-kA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: UFoICrbJyH5qf0rq4Tq3mj44bBZAUa2d X-Proofpoint-GUID: UFoICrbJyH5qf0rq4Tq3mj44bBZAUa2d X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDA5MSBTYWx0ZWRfX30GpW+K5pd7J PxflQyqVRFuM8XKGw0QZbWHPRFP57rq5xT5n8mI8lBhsQACW4/1rb87jnIvcX53AgyyqhLXvhO8 cIX82WqT9stYAV2XLdpbR1FoTMmKwiL7fZi8UFnrrEJxkKXEtQfcQfZ+utUA2QBlsx6RQ1hUVlG VyweXQudDsg3S7BCOLQC8pkYYr897s1Hl4z2LTBeWTHLpSrJ39nNcFG38sln/iBGArL9MSq+jtg cj4nERMB46YZgV4P5spPxEV4f+zqhODYX4C2TOcV+Ypx5MKGRFG6L/pAzTZVlqOQy6zEzH2XiGE 6+8U9zbTe9B8zMSxt2k2EdWYXeqbWQjlyOUqmck/tAY12yI1Ew8rqDn8uKLYQbeR8POHCE7Wzwo J9HJ+mPqbvpABdfWBwf47Zlt7gDyBtlVc2b69Ck0tA2NnIPwo5UT1BOt4G+xs9gKexKwttL/BWm YdQy6NvsVJKipLG0c7A== 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-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 bulkscore=0 spamscore=0 adultscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512220091 When matching the firmware node with the potential consumer, we currently omit the con_id string. This can lead to false positives in the unlikely case of the consumer having been assigned more than one shared GPIO. Check the connector ID before proceeding. Fixes: a060b8c511ab ("gpiolib: implement low-level, shared GPIO support") Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib-shared.c | 7 ++++++- drivers/gpio/gpiolib-shared.h | 4 +++- drivers/gpio/gpiolib.c | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c index ba4b718d40a087608fc06f59d242932df1d117e9..f589109590c7c6bc9c0c1828ea1= 5ab9003846523 100644 --- a/drivers/gpio/gpiolib-shared.c +++ b/drivers/gpio/gpiolib-shared.c @@ -365,7 +365,8 @@ static bool gpio_shared_dev_is_reset_gpio(struct device= *consumer, } #endif /* CONFIG_RESET_GPIO */ =20 -int gpio_shared_add_proxy_lookup(struct device *consumer, unsigned long lf= lags) +int gpio_shared_add_proxy_lookup(struct device *consumer, const char *con_= id, + unsigned long lflags) { const char *dev_id =3D dev_name(consumer); struct gpio_shared_entry *entry; @@ -384,6 +385,10 @@ int gpio_shared_add_proxy_lookup(struct device *consum= er, unsigned long lflags) =20 guard(mutex)(&ref->lock); =20 + if ((!con_id && ref->con_id) || (con_id && !ref->con_id) || + (con_id && ref->con_id && strcmp(con_id, ref->con_id) !=3D 0)) + continue; + /* We've already done that on a previous request. */ if (ref->lookup) return 0; diff --git a/drivers/gpio/gpiolib-shared.h b/drivers/gpio/gpiolib-shared.h index 667dbdff3585066b7cbe2ebe476725fe7d683d84..40568ef7364ccbf08b7f583e279= a7d5b572af477 100644 --- a/drivers/gpio/gpiolib-shared.h +++ b/drivers/gpio/gpiolib-shared.h @@ -16,7 +16,8 @@ struct device; =20 int gpio_device_setup_shared(struct gpio_device *gdev); void gpio_device_teardown_shared(struct gpio_device *gdev); -int gpio_shared_add_proxy_lookup(struct device *consumer, unsigned long lf= lags); +int gpio_shared_add_proxy_lookup(struct device *consumer, const char *con_= id, + unsigned long lflags); =20 #else =20 @@ -28,6 +29,7 @@ static inline int gpio_device_setup_shared(struct gpio_de= vice *gdev) static inline void gpio_device_teardown_shared(struct gpio_device *gdev) {= } =20 static inline int gpio_shared_add_proxy_lookup(struct device *consumer, + const char *con_id, unsigned long lflags) { return 0; diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 6d583b3b07bb5c3e5886ced53deca7cd02460890..9ccfb7af67cca61207e8479842b= 78942a22cb919 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -4717,7 +4717,8 @@ struct gpio_desc *gpiod_find_and_request(struct devic= e *consumer, * lookup table for the proxy device as previously * we only knew the consumer's fwnode. */ - ret =3D gpio_shared_add_proxy_lookup(consumer, lookupflags); + ret =3D gpio_shared_add_proxy_lookup(consumer, con_id, + lookupflags); if (ret) return ERR_PTR(ret); =20 --=20 2.47.3