From nobody Fri Dec 19 13:25:50 2025 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 AC067286422 for ; Sat, 6 Dec 2025 11:54:51 +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=1765022093; cv=none; b=kfieBKNxNrekGH4wR0Bo3mkkFUQ2RUf/pg9DehFoyEp+Eea2hu0gbegWo8Zti90xJbk9Lebx8heCgauvr+vUaNSrxqiZBvSWQIz56+Fc0JGOpyVna46qKjkRUdDvkpGmRY2WJbfplrizdoSinP1ZwNO/tjXkLKQ2ANO6xAdEL9Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765022093; c=relaxed/simple; bh=VVTbU2/dKOMjXoAYN3lqrHZtM/yHfOchcOh6hjJZWJ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B5iq3To6OEgrr9LJPj1sk/zEIiLPV08VVyhwsHscrghMmZ0fn+40odIXf2kSZbIMkCaQtcaMhLbt37myFtryAlMJn772m11MBIeUjGo9k33/3X9Bzlbky5hO2Uhm0pIRBZNpCKjik7iv6COww2oOebDRmfWFoMYHkNDS38gEed8= 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=Sq884JSS; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=krcskO5O; 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="Sq884JSS"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="krcskO5O" 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 5B65Y6mM2824999 for ; Sat, 6 Dec 2025 11:54:50 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= my6o8tFWviNzCsYhrZ7kIra5fNR2z4ZFuE065YnIe/A=; b=Sq884JSS2p56JIkI ySPiDULuQeE3GujoBrjeYhgXZuvim6kerdWwS/g5kEkdWBGHcnZu0uFGMlY9Rrhf A11RHJi9dA6MXdYNdWjzgrVnlY9VdE32t16/C7s1WSc3GfBlkdXTCtv/WWARW17d sG1dgGm8jIU3JZwL1srLBmj+6NV4eDtLjf29t/3as/Zq98LBgHwEFLXXhipqAARO ew+LjQ/cLkUHSGlyETFdj78C3IHQMlJz07TSQ/FrFrBXImtm8VTYU1PugwZCKBE1 jDGc0eNkJBDfbBzOITFJdiVLsEp+XbnYer3lwTWoWjh5sx11+9H89AzbXlZZlCY5 nunmCQ== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4avcjv8nun-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 06 Dec 2025 11:54:50 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8b2dbd36752so595954385a.0 for ; Sat, 06 Dec 2025 03:54:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765022090; x=1765626890; 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=my6o8tFWviNzCsYhrZ7kIra5fNR2z4ZFuE065YnIe/A=; b=krcskO5OdLxRN58jcc0eZnpuIXUICYqsD/iauMU3mwEOSw6rq3/DI6tctWFUjVaoeq B41QvoPgTqeeiH71t5N/sWROkkVnQ1UnegeJQ2mQmZWLLZ9Hl2Y56qoiXPfPJ5MJgx77 w3i5Zeh2cEk4tplWIGwDdIJNEY+4NavEkDoGU+3co2lqTgziUmSoLxgbmsA5kcTeSqNg xKH9hUa8goo+wN3TiVlk4RsJZENeQwlvJsCoZIis2Wl0zbdIkT2f9h2o9an6JdwHNDYK SXEgJ6BxIfuV3yLBzjWSebgr1neQRVC6ceQQzqR70NHZQwhDlLI0QxedmirLWyAGppYX XZcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765022090; x=1765626890; 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=my6o8tFWviNzCsYhrZ7kIra5fNR2z4ZFuE065YnIe/A=; b=ghmfzgENnYFbdiUQ/DR5YhUH9M66vkOjDjetKuYl3RgfcuqPBd2ghOe6jEUTxar6sp Yf7Mrb2CSrhthP3hpK/vLe86cP3K7ogU3yM2WnaMXSsHhvBp9WHURyQenyajVhe+ohQc 3hcey7Edw7zIdytnSNtk9BXXvo+tjat4Y4jQ1nIANTBfhrm0y4x3axKPOdDG/eg+z1Vb xCMkUdY+ftkCH/ULZ7mV4W8hJAV9S1P6PWpaKxtqR2SKGqmDjPepEFeHibs4xeOIHwy7 EnoXaYC4ByogeDzZPjWifclS3ivqsluCHWdt5nKwRqs7T78JAOvN+g4UIC6hLS5Ysvcn FjTA== X-Forwarded-Encrypted: i=1; AJvYcCUDmV9zandbesoFzN5LeM9ARRDN1MK3qagGj8TPmGBDLWrSQUCEE+GWFlIfeQXUikiJOSIQEMSrzHVYPyc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywb8BqeQ057w9Id1x8z7Xq0b1+c3GO8WgahfP/1c3bkWzOcdFPj 4F/QNGFvm0NAQTTxRB0OToq7pgwXqWdSEs76ypNiAMtYzz4gIAb67wUk4yvNOkdnIIJ4fjRsHVl K4sQFhOgoAF8qncxI+Yw4MyCvejUPq6LU3RyjjVxg0JsiaX8+FM3Q7aMcs3y0OLBykeM= X-Gm-Gg: ASbGncvg7qkhzIkhk6dtDeuMiqttouJTbZh/FVVYyLHITQgQqrAmWPsOE3ws6MKHDRh XNzz9cp5zmFY4ucLRYyN+prnOteRxGFE1lFYE1ByLRK4yW2Wx5fPSocj+0iN39FPYxD6o9GivbV iZAjofUpFmb3YiOEy6sXH2T2SOBhlvm6PS0PL0HrL14b0LW+RUj5SULh6jf27hkdAPt/mN2VLYJ LV/uPVmdvmx6JIzmRu1NXvAO1HoaKZyi86uS6MiHqXnNzTEaOMr8dZWw1uDJh7ZUaukISfQqeQ/ dVv9vcrHJLe/J6SVMMYooOYsT8ZQxmKOoaV+J0AKcUw7H8ClHow1MZEy1q4bG1ZPFnO/M7ZBawL /UKX5Jmj6Rrv6m1qu8s1/KlKNJD5lAyEPxy5nRnw7x9zvaRFqEzY= X-Received: by 2002:a05:620a:25cb:b0:8a1:21a6:e054 with SMTP id af79cd13be357-8b6a23fc401mr240683185a.4.1765022089983; Sat, 06 Dec 2025 03:54:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IF95adHo6eCNveLY76R241pMtfsAs9bVaJnGPnIV2dWAw3M1wpOsNFJAjwHVugWsrz+I4c79g== X-Received: by 2002:a05:620a:25cb:b0:8a1:21a6:e054 with SMTP id af79cd13be357-8b6a23fc401mr240682185a.4.1765022089589; Sat, 06 Dec 2025 03:54:49 -0800 (PST) Received: from [127.0.1.1] (75.13.23.93.rev.sfr.net. [93.23.13.75]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7cbfeb38sm14027048f8f.12.2025.12.06.03.54.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Dec 2025 03:54:49 -0800 (PST) From: Bartosz Golaszewski Date: Sat, 06 Dec 2025 12:53:53 +0100 Subject: [PATCH 1/4] gpio: shared: fix NULL-pointer dereference in teardown path 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: <20251206-gpio-shared-teardown-fixes-v1-1-35ac458cfce1@oss.qualcomm.com> References: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> In-Reply-To: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> To: Linus Walleij , Bartosz Golaszewski Cc: Linus Walleij , 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=1017; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=VVTbU2/dKOMjXoAYN3lqrHZtM/yHfOchcOh6hjJZWJ4=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpNBmEjkPbGvf73+QQQ5R4Tj/m1Tat0SmNArotD J9u/KH9pJmJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaTQZhAAKCRAFnS7L/zaE w7AxD/9Sc2406YKevUMnKAdlcHwNa/yIBzEvm21YjDOOwF+VAji3u3ASfFnurRmLi4y9YiayLHX 5kP1kMeCFKM7w/f+VHvySwid3VtnmqSC/+5FKEk2tirWmTr030jtspDLjfTNSooQwvg4TK1QZs3 4nNHnSqfC0gjrX34Ko5qHNoWzH+R3wGeop/oWaDTVBumHXF4TV700H8D/npzE1eHU0OeJNlZB7L c3ClrrZJhbmy4YLKFwAY8f3J391CHFSbU3jbzFSSVmRJnELERpfBa/bwBPNdLklv9QNLO5qR2fM OGrZtn5np6iR4GDkXo9UAkFvPLcdZzbGyJGO9q1sK0Thw1UMYFh0TYvU/g2X252qh6JQqkW/Bh7 xvCrhscNn+wkQCYDnrEP4dXLdn7kHMbSFYiOIaSuX2ZKzLYPRfA5JorMWH5TdQRXZG2lVz4Icfn VkzVkr2rtCjutOoPCcmFkqDPL6XGT8DtYPRVYqoWCT4f/5N85/tI/FZ2EK+BtzrMyqoQS+qjSnW SY7doAo5ZmgquO8AhUYvYHzxkHnXoWZtkBATpQDJjHoiUlWdyVRYF3LbNdnLS6uPGxo+UUpbmVB KJEQVTPhQ8nWB19urHaPF8JwMlmFMjbidFLTvtNKRTvUMnZ7B7xmgPlWY1fMq+FrrySUrJDr0Iu Kn4R8VGSVsscTHw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=Dccaa/tW c=1 sm=1 tr=0 ts=6934198a cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=OJCUNAs2RTwferbJ40Rlvg==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=5g9cdEO9-2RChXZdgEkA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjA2MDA5NiBTYWx0ZWRfX9pD4DOE/a5r3 JXefEAKKxyO5YdPr4yGr1TFPfonuG2Z3pkqCbBtaeOdtbLK/n49+fAFWsWfe+f58Rh6x1hYGwSV UcUV/aijedDyX86aSGBakgBVuHozMlf+TW3d9wrDWKjA51bgw0KIFBJHCNmJHrWylndyIm+wt4m G55aqiOhvPdcOQga6IO+w3novDBn7G7eP4TTawTrUFBd6x9Af0F0Wle5JdGoSnfN/or8+S/R1mL rlWoVp2QLQNip0rdEjMH4XBCWGocCeJISA96HIgVTnhT7rfEiQBVLp+OXiPVgs8mYiiQ5+Y+0jP wuLVTjy71EK9jcV1r593bP9WZDZJD7wWWdOKACvA/FGIHreROhGk1iOv5kVMejbDYGhs3+3y/ln tKfv0D2S/e/10QTQRdEaxs/Jyz674Q== X-Proofpoint-ORIG-GUID: vCNVRunGwWmLMTYTKp8oniYrmaCamOSo X-Proofpoint-GUID: vCNVRunGwWmLMTYTKp8oniYrmaCamOSo 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-06_02,2025-12-04_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 suspectscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512060096 We need to actually store the address of the GPIO lookup table in the reference struct before we try to free it or - worse - dereference its members. Fixes: a060b8c511ab ("gpiolib: implement low-level, shared GPIO support") Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib-shared.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c index 5d15675d61ea52b21a8181ef9a93123774b8e7c3..17da15c1075f97f4ebed969b381= 97ac155141406 100644 --- a/drivers/gpio/gpiolib-shared.c +++ b/drivers/gpio/gpiolib-shared.c @@ -399,7 +399,8 @@ int gpio_shared_add_proxy_lookup(struct device *consume= r, unsigned long lflags) lookup->table[0] =3D GPIO_LOOKUP(no_free_ptr(key), 0, ref->con_id, lflags); =20 - gpiod_add_lookup_table(no_free_ptr(lookup)); + ref->lookup =3D no_free_ptr(lookup); + gpiod_add_lookup_table(ref->lookup); =20 return 0; } --=20 2.51.0 From nobody Fri Dec 19 13:25:50 2025 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 D7DC02E1C57 for ; Sat, 6 Dec 2025 11:54:52 +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=1765022094; cv=none; b=EZafvOb9J7mS4mVD7FSRjBYrNtruV/EhAL6y8LR1MsSSsBQnFd4IxuM4/S7zeaZAwiwNwDM1u++M15O4ZKL9QXlJGKkrFNYE8QyApekFWwLnihc+MyYIYO139jzCLGa3Bp/5OEi6t7N1wDOtGzcCuk6KEaOuWkFe4iYrAe/ysU0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765022094; c=relaxed/simple; bh=uIrarfK4jgXXr+NR+ffSBIsyZqiC6vtwPuFwfYlHqmg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AVDelw+F5LT28gm1xnRXu2fLxWDpZAqIqqThQfPgb9eGk7UKUE5/7csanJFPhmy0/mo590sdfFZAzJQDiJOGLnn+RscH7GdKc+3EjvwDVfjMmd/wfvrUvWXxNTSw1TrJaAzxikohrHVy2iZAdaOnGRv01PuHwgEBqz502P1iLgI= 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=YIWUEK92; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=j8PzW0uX; 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="YIWUEK92"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="j8PzW0uX" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B6Bb8ta3542760 for ; Sat, 6 Dec 2025 11:54:52 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= c3u5yo4Df03bHNQPkwona9TVXnQQlzvzXlqMLvEOyEg=; b=YIWUEK92NemeiRvb bJYwpesZdvVR4AY9wYQJL30wwz99ScAreIsz0kWPs/V67/ZMxsRgFu8cQ8uJ6C6/ 1w8Hg6WyH1qJWW+Ur9X4ecBrYksPd6rw5b2qfftg8gKLgyAXm3gny32z4VezUxtj BoWIyjUh2+P6rLVK6GQGdLPh1PjySY5XG4GpY3SfcvxnZqjC7ey/6zQ/jM4Rcnez iyGCP1+22WbFdlAFcwR9lRG9fPzi1+lJfLcSY/MiRo1LoGPAxUH1WMwZ61whSBJX B/7+PQj3KEhf+xMZvsGdzMkeiCTtlHUbZy29rACOGqxXcElgsJMWKiet/aY0iVR2 lOEAVg== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4av9upry8k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 06 Dec 2025 11:54:51 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8b259f0da04so634197485a.0 for ; Sat, 06 Dec 2025 03:54:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765022091; x=1765626891; 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=c3u5yo4Df03bHNQPkwona9TVXnQQlzvzXlqMLvEOyEg=; b=j8PzW0uX5sLId+MbgQmLufSImysmSUiWbsCD2LEATsxJ6/8PbnubLlWg+UlkGUlbRg pYyCZnCPpYAThywNPB07EmWvxFZVuDV1Y5E7XzoMjggQ6JchrUnTz5vY1XnEIOsany72 oP6YMk+JW8r/HAz/BtkKTi/zoHkJ8vcJPCAZnF5RHNZFUf4BPjDJDsna1n1vUOPjFR0o skvFXVY2eaqCt7XVE3Nac1vg4LnVbu/kQtJZBJoqwWd+1ivxIN4QI41xOKctWzSL82VF +hlbpeT4unRgHl2G/fOhb0OLy0lK52Pfock+u7TcwjSCuikBT37HWD0Ki8JPTkERzuOh JAQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765022091; x=1765626891; 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=c3u5yo4Df03bHNQPkwona9TVXnQQlzvzXlqMLvEOyEg=; b=Ih0ddZoBtmHRK1C4t0nqRRelObqQp3nkmJOSgHqR/ugZdUEMOevMVT0lO7L40RGAJm YR5z8PA68+8YzFo6edVOUt9KS3RpzNYR+bie0oZ4+JB672kk9PjMCfeu+jjLokw5aBog xtlTZ5S2j6JNlvrJDymwKaiClMPHRnoZIHB5le9biJFXeCnR7d2pbmuEc1rG10PaAwam 7PvSohkd1HLx8ZiwNelFcSyWRu9ptE4CKVwBb0f7hq6NpYjJMASEes35kyCNR5jsUEJE IG5Pn3qHOaDg1bHIq/x7UulXnUvYue7UJe6qAw73iOFsNF9KW3GB6cXOFBCdi0B2uYVr WtXw== X-Forwarded-Encrypted: i=1; AJvYcCVXYWZH4g7nJ5ThyBirPRxqEpFb2VGkCGHgbnKXbSp1PoVB3VhYmTQJ0q+EhoUWJfgs3CCE0rQZXeYznTw=@vger.kernel.org X-Gm-Message-State: AOJu0Yzx3NEDEEwNUfknHlnyrlr9ywSH2yLl9cb2jxMxQyoJ+nMmj/u4 Y+WxUZt33wNaBOisHIzwCJN/y/eGm03cmf5WdUI4jbvJJgCRsxuP8TEFKZDSLEfinCCqy6uFjsO qfha4DT8Q2coRNwgRmGssPwY4ALvvKb/9dXgdaxzFUi9Dz/LKa0EiUTHANWIHqU/zqyU= X-Gm-Gg: ASbGnctqeCACOd35nTvD9CEZlnDsoIJ5xZLEEXLDSmbJ5O204fWra8e0izT07I0uaEU Q/7+uexomRm2HKZBjIHttm3TiDz1HaAFLC93uDJerDBPawC48PjBrWYZqeh83xqgkd1N0W3Ydah XVm0nWcCNIXWIrtdpHsZS8jBwGynnw0/WxfZTIIZHn6hfGgDacBaJgeXMVoeXPCz1I287DcSHHf njIZAkxJ9I84ONjeL1hK0SkFvFZzGjh73QbRRiw7jN/QOnszWM1Y38hfoK995uBWgAWyAJsJ9FY WyiIYhFymxw6qTJvlExmGy+1JC95lPMmBJhAp80Opn5HuhtDrbyfkOrJI2SkQwbsr6/uJ1KiKAr O7rooqZuAG9LAsiGitoKqFhfQLO+bLI6V2XH0guskcIAoL42nz0c= X-Received: by 2002:a05:620a:28c2:b0:8b5:222d:ce3b with SMTP id af79cd13be357-8b6a25a9527mr318171285a.52.1765022091270; Sat, 06 Dec 2025 03:54:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IEaT3kRv70fXmev5flwo2Ss2eHBTAciT1pUtMwvrC9XHWatCHPoJzv5n0BuoaTsgH6GxabDLw== X-Received: by 2002:a05:620a:28c2:b0:8b5:222d:ce3b with SMTP id af79cd13be357-8b6a25a9527mr318169685a.52.1765022090880; Sat, 06 Dec 2025 03:54:50 -0800 (PST) Received: from [127.0.1.1] (75.13.23.93.rev.sfr.net. [93.23.13.75]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7cbfeb38sm14027048f8f.12.2025.12.06.03.54.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Dec 2025 03:54:50 -0800 (PST) From: Bartosz Golaszewski Date: Sat, 06 Dec 2025 12:53:54 +0100 Subject: [PATCH 2/4] gpio: shared: check if a reference is populated before cleaning its resources 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: <20251206-gpio-shared-teardown-fixes-v1-2-35ac458cfce1@oss.qualcomm.com> References: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> In-Reply-To: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> To: Linus Walleij , Bartosz Golaszewski Cc: Linus Walleij , 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=1269; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=uIrarfK4jgXXr+NR+ffSBIsyZqiC6vtwPuFwfYlHqmg=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpNBmFsmO7/LHJtIldE2l0Ccw456dwSb/k2wyKW gDyxxHzQ3GJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaTQZhQAKCRAFnS7L/zaE w6Q/D/9bJrIH2mXGQPjeLTBePZgzQ4zazPoptHAvdSakXSoode0XlPfad218JnhgP0aOX/wP7Vl kNhEFKZCq71HUYRHo7NZTy+avcx5hOGHs20/+5VTSyhiL71LSIGfQgSYo/26DObo7NzwscqKDq7 9eGlhu0bPzhX3n6reGnu7JEgJsUi2CwQP0/rf92atIBbb/AaojmFDktWGiaCJf+VSAiHMIDzmam wSlfcT/DZ7tli4KxVwHe1efVjHNuT5FgjNJOglX/c6E7xMbLNR9JhUSk38cVTFiJiyTN0jNfgTM bbISnhf3UFuU1uT8U4wtiDO2GHcNgXOUpJJtGksdPoW0RclRcqfzbrw09LCK2J1eMvJ3XD5OS5c w37jm8luaAh7tm82F9mmHWaeJJZIucmhv/eUEE2KWdgQ3elY2g8TpcUZ2LZkSdVNGaeDdneEEWQ vSqktjRZebVpeS2/pGkDmNJFkya18WoaOlUl7xgGQI3OeqzxsKPaXob/BsT3lQwh3G6pvOCXhtO CzVER0IRHeBYHk7iZhjkoINV6t4DaviDAEoiBlgPIAL6ES6HVKuKU5a/Ox3vJIhS+JycEGul6ma GgkL++ssnJ5A/bHAy0YvREab0xnf0DSFcdIUPD7zNhdAdfmCRWQBQLn8vl1eATTc/bqjJdpX6O4 fwpuizYyB9Vij9w== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: tppq5s_EwQvJhFmmrG1bZGdz92CC2Om4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjA2MDA5NiBTYWx0ZWRfX2gSl3Y0HmTuG MIgjRydvmmbYf7mjKQeyBdB0YGiPPrtrGil+Pvf4i6paUNKbQhjaCExOei9LV01r0lI+1LhZWbv wz64Q4cXoLFIKpk0UDTcxXWJSxH8ou6nfvbx9f0Q4h5NOtFUTxh9fPHbXFJVRQ8sLL9uFQnyZx4 ZCkP7SbRJdpwBKcLzcM/sMcx87uGMiclnZMddxHADjR+lTqGxhWD7aYelRcXgvr4KAIi8BKECeK 7TufUUiDDna8FLPr7uMImChtn77qvMKjpv0z2/YUB6kgJDHGfYsFzqoM6Tx/ZjAXEKX4HShqNrF tDGDcNU764dO68XCR3G/WQ8OUuYXA/HvzuAkw5HVJFVBdbCs2XWClB4G5pa+m7fkZFdRAtJbmTb JlF2oQNjFXHcd3Q1OLJUjmabdG+E0Q== X-Proofpoint-ORIG-GUID: tppq5s_EwQvJhFmmrG1bZGdz92CC2Om4 X-Authority-Analysis: v=2.4 cv=NsHcssdJ c=1 sm=1 tr=0 ts=6934198b cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=OJCUNAs2RTwferbJ40Rlvg==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=1wcC7Ly_4S32lYx0NjMA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O: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-12-06_02,2025-12-04_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512060096 It's possible that not all proxy entries will be set up when the device gets removed so check if they are before trying to dereference members which are still NULL. This can happen if some consumers never requested their shared GPIOs. Fixes: a060b8c511ab ("gpiolib: implement low-level, shared GPIO support") Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib-shared.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c index 17da15c1075f97f4ebed969b38197ac155141406..4084a28a953a7c9f4b04cbf867b= 05a1a74b557ca 100644 --- a/drivers/gpio/gpiolib-shared.c +++ b/drivers/gpio/gpiolib-shared.c @@ -491,10 +491,13 @@ void gpio_device_teardown_shared(struct gpio_device *= gdev) continue; =20 list_for_each_entry(ref, &entry->refs, list) { - gpiod_remove_lookup_table(ref->lookup); - kfree(ref->lookup->table[0].key); - kfree(ref->lookup); - ref->lookup =3D NULL; + if (ref->lookup) { + gpiod_remove_lookup_table(ref->lookup); + kfree(ref->lookup->table[0].key); + kfree(ref->lookup); + ref->lookup =3D NULL; + } + gpio_shared_remove_adev(&ref->adev); } } --=20 2.51.0 From nobody Fri Dec 19 13:25:50 2025 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 519DB2F0C69 for ; Sat, 6 Dec 2025 11:54:54 +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=1765022096; cv=none; b=gCm1ktvCmSszbxKUclDhbWFQI30f76qALGK7bhRMxSgopgOBFHHATJRDIo0g91McKnbtKKrUpJIzf0vrz02MX9GvwPqqRihfY8dln/fEzQwNXLTTFzrCbkQlQ8AD6XgsUZx7rtfGlGryKQ45MLIgDLHV192f+/PSPErfJtE5jzk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765022096; c=relaxed/simple; bh=4+8MUdLIGwmgJQ5ZTCJ32TvVumfGVbi42uKMZ0IhBsA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g3AsZEiUk15Tk4EV8XleSAZA5LD2PQi3A2QpO5MaKM0bJ7R4wPDd7EVt4ledvFmVL1d6fV2uulrEByzc7cxG/0qe8gVVabAZzOSRfgdZLTdjjQWgXcQHzCLiFj1U5ARRX25AXkcFwawMDssPR/R6XI67IPfMM2KhuUmQ8MowknQ= 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=ENCKqptc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HTv2yX1V; 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="ENCKqptc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HTv2yX1V" 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 5B6Bs7QY3523734 for ; Sat, 6 Dec 2025 11:54:53 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= HNZE3UbWIN17adEbRhpz6115KJRPJxsdK+D8hjXuU/k=; b=ENCKqptcFRTK3hmo dRFxy8dnauqFs89h2Q1gqnJXFayY+cUjz5kUwKMFec7Sw/LzzLofemVBfqf0iEiy iOCnGWaHjdFpfcoANVVbo5+xj1cEKbJ0po2NaaGOcV6rOczm0qj91OESn5rJQomB cbp2puoU6N5kBXhYPB7fdU6Zmr+v8XR0DVvz1kYY6RiPJY9xdwoz46JvzRNmc7y/ 6piNHR74gHIJMq69Fqva8mwAr6NEA12GrG8dkU05W1FH/h0mNVn3DE97RCOSn9Jw nin8chTHh/jnOcrMqZpf4l7+OqmxHYAzRGF1z5f5bX7p88XmUOwnIH34uvXqdQmm BiRB+A== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4avcv80mtm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 06 Dec 2025 11:54:53 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8b2e4b78e35so587873785a.0 for ; Sat, 06 Dec 2025 03:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765022093; x=1765626893; 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=HNZE3UbWIN17adEbRhpz6115KJRPJxsdK+D8hjXuU/k=; b=HTv2yX1VviDt9hkvOoeRzywcSlM3oTlwQMabEF3X1HKpCkO97sK16waTYfU9dzH77e BDa515j6t+2OxcI5A/ENKZr3uGP6bLpvdUvoh2/fOLPXr4mtTcFvSw3o4JL/lHKO8xs/ Db0xmbanvzyyeT2d2weqxE6Zg7iFPkI6ZnVFfUtzya92n7OlnOjyllKkiSukVITlfFJo eFjaPbZo3YiYC+3MBdolVPNOnl6pzFHqvb2L4LBzrMg6ZJyaNxw4LCPDRsVrQPC9a10w /SzRizv7Ja5E4vp4ZKnDKCEJx0kpL0HRGW/yd3DYqXS+7sWKjtI55/IKH5TBugm9a2mx 1k4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765022093; x=1765626893; 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=HNZE3UbWIN17adEbRhpz6115KJRPJxsdK+D8hjXuU/k=; b=jSPSmAmPUwtXb8KwJe+AbywIhbBosdjqShg3lpuLqDkqHJofZM5XWXFpJUDnI1bmTX ijW5KSDg24seFnYCH75uTeyOERPtb44Bs7Ocbt+aRCIgwrnL0BRbtBqpryhV/+IQJIzh rzw2RcTqInOW/QfXYp6TZ6fhfEFXchs6abBNR0X1nHZ4WkVLEh2rQ1TnGoNPSY+NtBvD CXFI0BNGzgUH1eqdFXqgMC5u2ihnwS5NnO2srLr70+BWTPUKXH5/0YlXAjCJftaMflJU rptZkS05HT3nNoMv/GxebLEzVZBmbuiXWo15Af16uYyBKUYscyOe02zNn8vha2yMYOAd 3I9A== X-Forwarded-Encrypted: i=1; AJvYcCUq7Pki986STjNBhV83SPHEdRXVHgco8b4acsuKG5598EcF9qDJ1czVJkbwsDivk/fP19yFKQG7cslnk8s=@vger.kernel.org X-Gm-Message-State: AOJu0YzR8W2+s7uLYMzj8zU5RHH6BFvp2PCjUEDUxx9IhiSlmMXd3VOL oOotgrq+XQozTaNGpvZSZtvAZEHxOIqRmxBtVSepvHnia47R5k4yCT7H/Ctz9lb1dBSnKU2ixA/ ZudLk6/2vZz7uDqACUZ9p2+DsEF9D4ZVa3lSyYrdk7iJvdkfTuZas6NIO7eUYm0fNQPg= X-Gm-Gg: ASbGncvB4jk0X/dA1z5iN0oicjVl3HGGdUEdTyoEiOTShcjQnlRam/1aZinpNtH+2s8 WojDTk87JSI+WQmTwv7WYk9rpYJiFZdzDhhyWHHhT1Yj+zntZlGdQL63LcBgsojA60DFBceXp99 YbIYWQ4F/qriELvHfWPVnRn5fBTPvqf62VhI+ZNZ+KcEJROI+TBhVraIihSe+qAnIr4YXObO/fA DhZWIypgRwYbn4BUzymVN+nDYcZJYslpkh9tkdIgWCOlPXVLHzk7764VlyteYsLSOX1CnjKDmsP UGDKLWmUuy6A9K4PkIsSgpwir2URZZ6aLiOVLCkjHlWZqMKQ/0s6IpzT4ZqzZYq8tzm9JSkZkli zH1gsueGzFsqoM/4QSh3JWXhV5DX51ke+6I3MCO0y/83PBxV2Trs= X-Received: by 2002:a05:620a:4086:b0:8b2:eaf3:5cd8 with SMTP id af79cd13be357-8b6a2351927mr271617385a.29.1765022092660; Sat, 06 Dec 2025 03:54:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IHiKtFvNiqym970oi+EC6rZhOwDHFLJ+652T/aWbJxEKq3u0T/98ycOO0NG6EXe5XvTeRrJSQ== X-Received: by 2002:a05:620a:4086:b0:8b2:eaf3:5cd8 with SMTP id af79cd13be357-8b6a2351927mr271616285a.29.1765022092183; Sat, 06 Dec 2025 03:54:52 -0800 (PST) Received: from [127.0.1.1] (75.13.23.93.rev.sfr.net. [93.23.13.75]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7cbfeb38sm14027048f8f.12.2025.12.06.03.54.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Dec 2025 03:54:51 -0800 (PST) From: Bartosz Golaszewski Date: Sat, 06 Dec 2025 12:53:55 +0100 Subject: [PATCH 3/4] gpio: shared: fix auxiliary device cleanup order 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: <20251206-gpio-shared-teardown-fixes-v1-3-35ac458cfce1@oss.qualcomm.com> References: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> In-Reply-To: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> To: Linus Walleij , Bartosz Golaszewski Cc: Linus Walleij , 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=994; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=4+8MUdLIGwmgJQ5ZTCJ32TvVumfGVbi42uKMZ0IhBsA=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpNBmFR9HlMikVMs4YkDtBVQrSOmJJKLYemY/Rd +SahGJtQ5WJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaTQZhQAKCRAFnS7L/zaE w/X/EAC5fqE6rLr6oi1Mt1joGL03kzKX0PnZ1flL9xXm4I/DnLkIRVHbnDmR2TmtoB4Exz+K31y mZXAvpWz6kgFdb4IlKoRjeW55qxeLcHM2goLgaMDN6stOjOXaKz84fIqTIU5xTsWuSEi5ewLDjD +tzBHpfKBnaXbsRQ5Qo/rhC9JpM4eoB1yINXCVfDgoTFyzZ7pclR21oopRPffN6RaB6r2srdPuZ awFNEcW+8hnGo+wXLJK1Z9dpYnON44zX561l+9Siwtd/gzWQRyuAaMFKihxIc2zO5Uvp4Mn67IU UiK6pvLqT0dIVakbWDnkOifwR4ZkFtcXI7BVByoYK86YTYW/+0rQVa+4zg6QNjqQ+gSpJy0wjqI odq/U8IBaxFXXJCq1nufqdgMuLKlSle1YHZ/dAFGidY7ze8b+ttSvyjfE7Sq/MMZzB5KQrhUfS4 qa8yryqPZ14CVW6/i06bojLBsDMGsjiNZVXQlB1q0nTTNMjSs31nZ4LUCtCyBqyNpEOSlpbHU1E gLxnwJ/cez56Tt0RdEOcF5fQWxUzGBXIoGgZJV016i+RvatZ5nlxJPmWhRa4TK3zZQJr5veRMqz dSpm5jNkaGe6TYxRIg9nqeRnI7EpFnxr34MIC1iG+H6fOKlvBKoQX6w81FnaX5UQ4ZY6qgdDvVI N2kO+ySldNN3MtQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: nSf1Tnbo0Yo8MHxeKbBz4waRWyTo8Fwj X-Authority-Analysis: v=2.4 cv=KL9XzVFo c=1 sm=1 tr=0 ts=6934198d cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=OJCUNAs2RTwferbJ40Rlvg==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=jr7MYwWF2ZE4U8-iONEA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjA2MDA5NiBTYWx0ZWRfXxRIehlD1qkJ2 wniwvNric7RM25iKEDMIU/7yLqs55rXzQcI9N5Aoz6+0wFtW4ZD5skJULWdH6v3vnMDgyi6NCNB 6MPvsGiyut9MLu20fhJ7tbx/JgUzFXpuXUxRk4FeIHsSkOkeNd6d8F3rfDTEk4veNTDupiTXM9S JFNYxDxbfxZBORO0M/jxoJUdVQIFZh7XlZlQAGch1jH/RtG2rUCjov5gQ3IoJ/k5Tag3mE8MxHi 5kYdw9atUSi5y1NUZgw81S1c2D+fV4kxrRAWsS5tYKZx89CnSkPlQfYRqdrbqZqe2NgMNm3Ik0Q R36/hx0NKJJ5f3jNREYM45CUtE3ojuHxm7wJw7l3W3wXBdCjqiOUHvX3P1/EsrUsxrFXSKALVp6 M1ZjXZYJNFodJnj8nBKSTBfwU6TF5w== X-Proofpoint-GUID: nSf1Tnbo0Yo8MHxeKbBz4waRWyTo8Fwj 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-06_02,2025-12-04_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 impostorscore=0 spamscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 malwarescore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512060096 Dropping the last reference to the internal struct device should be the last thing we do so delete the device first and then uninit it which also involves the final put_device(). Fixes: a060b8c511ab ("gpiolib: implement low-level, shared GPIO support") Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib-shared.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c index 4084a28a953a7c9f4b04cbf867b05a1a74b557ca..2d3b0c3460e56941af8415af698= 9914104060bf7 100644 --- a/drivers/gpio/gpiolib-shared.c +++ b/drivers/gpio/gpiolib-shared.c @@ -415,8 +415,8 @@ static void gpio_shared_remove_adev(struct auxiliary_de= vice *adev) { lockdep_assert_held(&gpio_shared_lock); =20 - auxiliary_device_uninit(adev); auxiliary_device_delete(adev); + auxiliary_device_uninit(adev); } =20 int gpio_device_setup_shared(struct gpio_device *gdev) --=20 2.51.0 From nobody Fri Dec 19 13:25:50 2025 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 6D4B22F12C0 for ; Sat, 6 Dec 2025 11:54:56 +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=1765022099; cv=none; b=KolNUYHeD38y+hq3z6hCbnvXSa0sTkAtR1anoIzPoQS7Hq4OQXG02xRM89fERt6bU7tIREP4cAptc+p5Sj3VlV+yf4RkoUvJ/fwAYI0UlbH035/TVQedGNThVPfvJtV/hjOZXD5IavouOHsLNcQCZ9KtPaickVcguYwmYhMrc6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765022099; c=relaxed/simple; bh=8aLPxI+qOg1Mqf3CpgVi0eSUBN8J5jmH1hgiR1sjyM4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n2xZkCtDzl4iFtKqPlasCnD0aasi5qI1BECa/f6EEaZGnnlSZ0IwA4OSvQ34E3Zp0qO6NKvtUq1cLNM7WGR5CU61NIYOIo7QWTKcKGwH1FxVAwceXMFsv+o1b2wuJC6Syeqtj5w4rKnUG9lvBSsLeXjkZRnnyu+xLD36A3y658g= 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=mgHuzie9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=B/l//y3F; 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="mgHuzie9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="B/l//y3F" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B6AU9EO3409662 for ; Sat, 6 Dec 2025 11:54: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= zgMaxXIMAsnKLbG0ODAeG9yEejuvHdWNA2/k3eU9H2M=; b=mgHuzie9mlNM5wh9 RMczdJzeYIRRVbVKFXJgzSJYnDyeCd0OuFU+OUvWFlSXTCVKmxI+xgD2tuX9oesZ k8xFo2cEgdhbeRCJqhQ96Q24vEyvK60eXZC71nzfnNv6DHVcd9g6eJh4HtCzd9GA Y7qUbZgSTuP2uIGiC5fAnQWqiYZCK2Ge+ORDBMCIbEtzZUPxVccjODGViL705Kov a/2PEuQoj3X/On4tsn+l7LJ6j0In/4GkmqMDep0CdNzJYcv3/WI9KT00qaihW8nb MPDOp5JYwXWvNhuBA2ftXeBGwRjhq0jfBq1DHkChfbISdPDdXGTQ/pQZeCOuoq67 8q0o7A== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4av9upry8q-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 06 Dec 2025 11:54:54 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8b22d590227so380489685a.1 for ; Sat, 06 Dec 2025 03:54:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765022094; x=1765626894; 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=zgMaxXIMAsnKLbG0ODAeG9yEejuvHdWNA2/k3eU9H2M=; b=B/l//y3F1sbVgeloUF3yhuMrtXZfsjfPqqfxdyDErAIb1XrY2uobVbqH0kvwq8m+UJ 6ALD0pZNwCQOLTNmvfAYR9SgnxLAsrTanr0uKexI0mSYYXT0W9mWmxH0HSVRK57Ee20h DTj5SEpjgiT2k5j7O07aF2PGSZfygKwB1kLSVKJnPQQlBBATDEshXbKovK8wAYfy7UpG taD7druH6IkaS54HRY5Q+vjTgOqBtpj5px6guf6n/6KQZ5z5uTdwidMv2pref/VhDt/V AyE23hp4qRjiu2AdtsqAnhQAY+q4ZlGvYj0RYCjeaej9kEI4jkP8WpOYOjbnnNIN2Fo+ BEQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765022094; x=1765626894; 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=zgMaxXIMAsnKLbG0ODAeG9yEejuvHdWNA2/k3eU9H2M=; b=V4Ae2SoElx4/FIj6fFyo1blzzL93xnPY0LOj6gJW2/ExtbTqjkAi0P5h6Ve3XsMy5P nmLSBY4isnFQ9gRmJDnjrxWnVAFzp6a0d3z4RxQAWPQOE01SeqhjCfuRnJ+LcD4Bi1Wr pVE00VtQHUyaZo65xshDFKfC+P1NDFA4RPZqrcq8Vy5q2yPON28JPPpX1DLYgEkV8Lu5 Z+UbDk+FLOfp4eGPXi634e/hXpwKoH8ADVIFn/P4azbCyAofcp1bvB4m5fL6c9weHl4l t2Um9ypyR3K3CaiJ/20+sUWlCnEbQOId8cI0zat94+3N5Coe4oMRxjH7x+RjfNeA26+s 84xg== X-Forwarded-Encrypted: i=1; AJvYcCVxZeAy9DNRxw6D4mf5YYf5Q7iukBN0dPrghnf51elWXlgSgFoDJhC/HBWPuN1cAy4k87DQggghAeTFQGQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3n5vdO9Yzby53SCpfBaIgrhRNoUJ6M3LWmCB0ayWHpeooiCkI xf9CPWm93FsCouI0Bnlj6tdezFxcddYoSuWwxKtf91FcfiwNq9YpU40tuZkrXuY104OwxI2gyJB DlKoqRxX8yebtx3aw6U9xGJnwh2mKO7Xu2DgYFHMZ5+YxRc8YsuF3FKFL2fnQPSuLCyY= X-Gm-Gg: ASbGncvjNDWVV5kZXUv5PVtrM9kok3AkXzwe5xgJwZwbfhJsP2OWiMfrIdk11JbDgPZ IrrziQ947ZEKCqqZ2NKQ4r7iyHjTixkk77S9GavruZgvpn3LFbzB63JImou2GBal1+GOj7Cxl0m mDytbhrKIe2G2EirQCGUXVPNCmRVKrINQTfW9zV1lKpPvARI5lw3G34LAd67vRzL0zwda4RbraU x+54VVQVKx03zx/23qN88bAyKEHuaZ8pbKt/ra2PouKm8gx1VdXCWZnAxswpeXgQHuUpGKeEAAD v1JRJPxZ0tWRY2LPDLgMyYffiejUUxe8K9ItFQCTMkO7JH/w/qKRAvIRpDZ7pBAWEpwQjtqkVtF 3cvnBCxWspNL//koVIeDF8xWl3qwKjegzORza/GMpGRlojsanzYk= X-Received: by 2002:a05:620a:6cc1:b0:8b2:1568:82e8 with SMTP id af79cd13be357-8b6a2351898mr271179785a.35.1765022094347; Sat, 06 Dec 2025 03:54:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IGfSVq6y4QRn/qaLx3GCHVDNEzvuyqVJVA48ihUiUq+yb/aJZMtUS5mjDrhtJR9e2H6c/M9pg== X-Received: by 2002:a05:620a:6cc1:b0:8b2:1568:82e8 with SMTP id af79cd13be357-8b6a2351898mr271177485a.35.1765022093729; Sat, 06 Dec 2025 03:54:53 -0800 (PST) Received: from [127.0.1.1] (75.13.23.93.rev.sfr.net. [93.23.13.75]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7cbfeb38sm14027048f8f.12.2025.12.06.03.54.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Dec 2025 03:54:53 -0800 (PST) From: Bartosz Golaszewski Date: Sat, 06 Dec 2025 12:53:56 +0100 Subject: [PATCH 4/4] gpio: shared: make locking more fine-grained 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: <20251206-gpio-shared-teardown-fixes-v1-4-35ac458cfce1@oss.qualcomm.com> References: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> In-Reply-To: <20251206-gpio-shared-teardown-fixes-v1-0-35ac458cfce1@oss.qualcomm.com> To: Linus Walleij , Bartosz Golaszewski Cc: Linus Walleij , 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=5361; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=8aLPxI+qOg1Mqf3CpgVi0eSUBN8J5jmH1hgiR1sjyM4=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpNBmGdw/CpHc3NdjctUHp+gQ2eD0aIIKB0O65l u/2aKW6G5WJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaTQZhgAKCRAFnS7L/zaE w3FYD/9Z/trMqRnnmD3n+td14xD06w+oEbFr6KqYCmzwmiK6vVjPo41quQdILLgUAYnKf5aa+Sv jRf6U3xghzX7BPBFD7pL1L6sZ+XQV+YBZLlIEK8Oqxd9K5k68qXXG5P538yM132TQGm9A4kbkd+ vAfCLth4lSvRVeIj4oeTVTfDkzmq9WE+PjylFz0foHtWHdTZK1ntHmYk3gu1Yo4WBri7GztHD7o Y30P5uxNHH9rcP/F4N7JGnZAGKi+tQIRcrtrcOI7LkfxIgNt+1KWJnxj7XkSF+BtVCatzzQK+Lt jrKB/ScrAUiRTyuvkbcy9Do852tJA+7QbMxOY6BCMMUwok6Zygxx8MiGh17h5NpJizBxYlD36iA iS5YNMymbjBbRrBdtmQMC4gqYboZsGSST1leGL8sr29hCDsj6EBtqmuLBSZjO/aS3LFG0wib3rX TIRfMl2iwwF76PniUNTKSXVdwfoWqnjuonDeuL9oueUEBgpxzQ2sRBDt0MjxuiaD0wepBZStPTD j1Xik4PdO0eVsiep9NmshUQxt2pp48wzPBM95VuHvqptjigAfSFeUC2OMM6Z6YlCqMil5tdoZrE zWJof1oqymzxHnbpVyUDK7peuOg3rtS7gKBhUqCrPRFbXO9BwE8IecLz8NZoCX9nC9Bd9o5zx1O V2+1EdQIPvJmAWg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: PTCGvEss4nSYh7HacJJNeJ4GZXHK7uac X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjA2MDA5NiBTYWx0ZWRfX76x2eQGGSdvS JxclT4f2gKTv1OlPJPvC2p23q8ngvwJi+Ax5BqwG6OpLrgsFggFNP5wK0QSg4j5jEvt6kD7l9wc zTYrJRDgWcXPiYM3yzuCGmscJ7qz4n97AizCr4D51QrHoTMw/BJHK7TBx0eBZ53mgTAlXPGY0MJ W9w6hiCVHHdanDYiFcJwDpuyfdKd0NdK4gXT95Cg7M3dFHT0yxSAtrdfknkcpPvaTVFF6M8YNjf jtXasuVaC2S7dmgQ3sCwIFtLpC6t8G80INf6QPPW/2IJkk9hTez9LQg7N3iN2HRYU35H8KNMvvA DsFcMgwovW0SZ3P7JItij3AK9/bSQeKqFeQbn1z5jlkiozaRZ1jPGc65G2KbQncHGpBj4XcY2q7 JW4Ll7Uis9ZRr/mTnnkj6yIl1sYeYA== X-Proofpoint-ORIG-GUID: PTCGvEss4nSYh7HacJJNeJ4GZXHK7uac X-Authority-Analysis: v=2.4 cv=NsHcssdJ c=1 sm=1 tr=0 ts=6934198f cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=OJCUNAs2RTwferbJ40Rlvg==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=4uwEqWdDE5ZWJF26yDYA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW: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-12-06_02,2025-12-04_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512060096 The global gpio_shared_lock has caused some issues when recursively removing GPIO shared proxies. The thing is: we don't really need it. Once created from an init-call, the shared GPIO data structures are never removed, there's no need to protect the linked lists of entries and references. All we need to protect is the shared GPIO descriptor (which we already do with a per-entry mutex) and the auxiliary device data in struct gpio_shared_ref. Remove the global gpio_shared_lock and use a per-reference mutex to protect shared references when adding/removing the auxiliary devices and their GPIO lookup entries. Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib-shared.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c index 2d3b0c3460e56941af8415af6989914104060bf7..ba4b718d40a087608fc06f59d24= 2932df1d117e9 100644 --- a/drivers/gpio/gpiolib-shared.c +++ b/drivers/gpio/gpiolib-shared.c @@ -36,6 +36,8 @@ struct gpio_shared_ref { enum gpiod_flags flags; char *con_id; int dev_id; + /* Protects the auxiliary device struct and the lookup table. */ + struct mutex lock; struct auxiliary_device adev; struct gpiod_lookup_table *lookup; }; @@ -49,6 +51,7 @@ struct gpio_shared_entry { unsigned int offset; /* Index in the property value array. */ size_t index; + /* Synchronizes the modification of shared_desc. */ struct mutex lock; struct gpio_shared_desc *shared_desc; struct kref ref; @@ -56,7 +59,6 @@ struct gpio_shared_entry { }; =20 static LIST_HEAD(gpio_shared_list); -static DEFINE_MUTEX(gpio_shared_lock); static DEFINE_IDA(gpio_shared_ida); =20 #if IS_ENABLED(CONFIG_OF) @@ -187,6 +189,7 @@ static int gpio_shared_of_traverse(struct device_node *= curr) =20 ref->fwnode =3D fwnode_handle_get(of_fwnode_handle(curr)); ref->flags =3D args.args[1]; + mutex_init(&ref->lock); =20 if (strends(prop->name, "gpios")) suffix =3D "-gpios"; @@ -258,7 +261,7 @@ static int gpio_shared_make_adev(struct gpio_device *gd= ev, struct auxiliary_device *adev =3D &ref->adev; int ret; =20 - lockdep_assert_held(&gpio_shared_lock); + guard(mutex)(&ref->lock); =20 memset(adev, 0, sizeof(*adev)); =20 @@ -373,14 +376,14 @@ int gpio_shared_add_proxy_lookup(struct device *consu= mer, unsigned long lflags) if (!lookup) return -ENOMEM; =20 - guard(mutex)(&gpio_shared_lock); - list_for_each_entry(entry, &gpio_shared_list, list) { list_for_each_entry(ref, &entry->refs, list) { if (!device_match_fwnode(consumer, ref->fwnode) && !gpio_shared_dev_is_reset_gpio(consumer, entry, ref)) continue; =20 + guard(mutex)(&ref->lock); + /* We've already done that on a previous request. */ if (ref->lookup) return 0; @@ -413,8 +416,6 @@ int gpio_shared_add_proxy_lookup(struct device *consume= r, unsigned long lflags) =20 static void gpio_shared_remove_adev(struct auxiliary_device *adev) { - lockdep_assert_held(&gpio_shared_lock); - auxiliary_device_delete(adev); auxiliary_device_uninit(adev); } @@ -426,8 +427,6 @@ int gpio_device_setup_shared(struct gpio_device *gdev) unsigned long *flags; int ret; =20 - guard(mutex)(&gpio_shared_lock); - list_for_each_entry(entry, &gpio_shared_list, list) { list_for_each_entry(ref, &entry->refs, list) { if (gdev->dev.parent =3D=3D &ref->adev.dev) { @@ -484,13 +483,22 @@ void gpio_device_teardown_shared(struct gpio_device *= gdev) struct gpio_shared_entry *entry; struct gpio_shared_ref *ref; =20 - guard(mutex)(&gpio_shared_lock); - list_for_each_entry(entry, &gpio_shared_list, list) { if (!device_match_fwnode(&gdev->dev, entry->fwnode)) continue; =20 + /* + * For some reason if we call synchronize_srcu() in GPIO core, + * descent here and take this mutex and then recursively call + * synchronize_srcu() again from gpiochip_remove() (which is + * totally fine) called after gpio_shared_remove_adev(), + * lockdep prints a false positive deadlock splat. Disable + * lockdep here. + */ + lockdep_off(); list_for_each_entry(ref, &entry->refs, list) { + guard(mutex)(&ref->lock); + if (ref->lookup) { gpiod_remove_lookup_table(ref->lookup); kfree(ref->lookup->table[0].key); @@ -500,6 +508,7 @@ void gpio_device_teardown_shared(struct gpio_device *gd= ev) =20 gpio_shared_remove_adev(&ref->adev); } + lockdep_on(); } } =20 @@ -523,8 +532,6 @@ static void gpiod_shared_put(void *data) { struct gpio_shared_entry *entry =3D data; =20 - lockdep_assert_not_held(&gpio_shared_lock); - kref_put(&entry->ref, gpio_shared_release); } =20 @@ -562,8 +569,6 @@ struct gpio_shared_desc *devm_gpiod_shared_get(struct d= evice *dev) struct gpio_shared_entry *entry; int ret; =20 - lockdep_assert_not_held(&gpio_shared_lock); - entry =3D dev_get_platdata(dev); if (WARN_ON(!entry)) /* Programmer bug */ @@ -598,6 +603,7 @@ EXPORT_SYMBOL_GPL(devm_gpiod_shared_get); static void gpio_shared_drop_ref(struct gpio_shared_ref *ref) { list_del(&ref->list); + mutex_destroy(&ref->lock); kfree(ref->con_id); ida_free(&gpio_shared_ida, ref->dev_id); fwnode_handle_put(ref->fwnode); --=20 2.51.0