From nobody Mon May 25 05:12:53 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 B842231F9A1 for ; Mon, 18 May 2026 10:07:12 +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=1779098835; cv=none; b=DtOzrhejOeMCXk+g9czuVz+/oUlcKSbQ+KpCINn5L+7vemo3FUvASfpQanF07CGn1HMoFY/bhTv9sx22PfvLtZPj5nPM3BHDGKjmsgLl1URHBRRw+wpvVEWa3vH28PLOxWXW/hZ1+S8ARMKLAa4oT27ZmVFDZP47bLumG8JfcI8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779098835; c=relaxed/simple; bh=kItwfnF8TSLRgrCFXfJWAqvgmBxpb/zPSrYis6Gt18I=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=YmZyZm8rIbxK1v+zTyT4AfOi1D0SBv3Rxa4GrJvIjzP6iyXwR9obqUY3cnGK22PRlMkXsKKODLVQc7cAoYPNWFJ1ewvJjM4pC9BCKgQzcrX6AMWIRhhA18HSJh6lIqofjojBDhMdTfFCHNjy3IkgAKaJmtDKdaNMeI0U/nTiKoc= 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=E+mFykxb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hf8ZRBO+; 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="E+mFykxb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hf8ZRBO+" 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 64I7ds3g2891887 for ; Mon, 18 May 2026 10:07:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=QWzJIIjJ+geDV6i4FDTcxztjwUzatxE0cuY IpW+2aa0=; b=E+mFykxbGJ/68W9+Y6y5BIaNUtLK2NlK0dfSxMbNh3gBSxTF5Dn ki2uHJfdyBkyFpNQd76YWptL9y7nk9sW7ZF7tE+oB1gsyjj36wFdTenzHLuU97tv 6men0eloUNx5c6HhRNUKjVLwIYL8UmFCUFvWoqVc82qQL0cz2ayUtGygTqOq8adf 8Uv+uFW+0pjp+yCh4uIR2/K773n9bhcjZP5bDt8kS3RLQfN6goBPIlD8C18RQWCj Hysm2sm7AORjjNqXg6bfM6q8uN5I1iSEyYyHbvxVNDRgTwC8z64g8QZXGC7Ke8Lx Oq1cKdShdJbnbW+A+Bdn258Ocm09pwwLsdQ== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e7xk18mp8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 18 May 2026 10:07:11 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-50d812c898cso58823951cf.1 for ; Mon, 18 May 2026 03:07:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779098830; x=1779703630; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=QWzJIIjJ+geDV6i4FDTcxztjwUzatxE0cuYIpW+2aa0=; b=hf8ZRBO+VqY2lnsoe+6CruXcRiRcQYYp4bTOUDJp3OnbfNt9pG0AKO4tTiQ23pVOOO eXNFSzDbX5dZBN/kGgItlHN9t94+biujZwVlJj3sc3t0XUwqwOXBhqC7fEF7qlTrZIg/ FlyDNapMJ77hjvgohlRa8Li0PcDVku1576NZxDroXK//pLej2GYYB0txTweJwx6QK3RI VjdPjnJ1UIJn45zKIrj80Xw4NpOtqwKDtm0YyBt/4ZiDYYzSK7JnELEY2STdwdUv9vmY DN+V/1id+P2iX+Cs+SZNgH+eDwiKrb/bouxF/hzAhInkxZmcynPAWnu7+aC88TSqVpQT GcgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779098830; x=1779703630; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QWzJIIjJ+geDV6i4FDTcxztjwUzatxE0cuYIpW+2aa0=; b=GJjCl3VuyvmvI5zLpCK3ylLlSNkDsvF5tH1ktlKzSXlCtPMzRBeC0L6nvgTxpMfMVM s/WPUFnD8dxH6PTZwcVEIVJWfQO4xYHhVsCjk8x2/qETySAixw7wu8YrDp+J0oUcpv4e oFWu4zByYgzcKcZHhtgeCx/4S9NPDXy0y+J7ysLtYGcDwqERxy9JMwmcV5ChBJvt3ADx Jvbw5r7fC9JLvzE4BY35ZDZPCi93TuADgEowaODOhjh+5frS989GK7tGzx2csoQKLeku z3rMrcKOFhNZNIuzQLUoSqMV8jzamxCL3PSVZqA3NODX1TYz5STd7Hc/W+Tdd42rOThR 7pBA== X-Forwarded-Encrypted: i=1; AFNElJ8tbNmHPVHIcbuHz6219ULOJ3sQDpY0KbQv3+h5yNBKCaYkA0asMLy90RwwQJl3YmCnN8YjEs8VEDiDOEo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzt/uvD4XAYlvVghsCGUh2CXhjUC+jzW4+/oHbKfh95Zj/pHFlx +yel+XjXQ5A4wa2flwbPsWQbUzAFP8fv7Ei9+YwuD+QPb0wIXymI414cUpSoNHv/3oQpOkaN3ah +KvaKq54g/PG075A2g87amVJRxLZFNf+NJ3oZZj6wbMEzju+wkuvNSQtpo9c3sxUY+0Q= X-Gm-Gg: Acq92OGJRYJLbPxfAzVEDypvLVWznQv9JG4BKgRuGV2QPGJ6nBYuHJx5PvD+az0eYJB HkHoGDljFRWpT20Cjw6KU0Jo1FFibooBi1NS7ux0peIbHKT+8lNvaG4hJaE1/qM+X3KUH8lJnkJ HAGz9Fkndh+OQTu0csuv8PFW3Mg5HBuqEj+XKCpuFHw+O21TawKlcVDpYE25ANHuVnkphUCuMUe ly8DlsM+S6Vv/G6ZscIKEcLTzD0agixHq7vn3Ybb+baNSmCuS5YTF7yDtHWhPGiQZy3XGYWxeWW TDeiwkOgQlUNj9QVtnUQs0vN+kPtYudQIrvvdoQSlxj/75uwLZnG2ycFqDX+PcLM+hh1wyM6FD/ zwcqRh+nq6PWJFdsk3cAlOAgi6bKtRKg98R1UXJug7cP50K4t X-Received: by 2002:a05:622a:4a0f:b0:50e:60b7:bb3f with SMTP id d75a77b69052e-51659e9e188mr193853131cf.0.1779098830254; Mon, 18 May 2026 03:07:10 -0700 (PDT) X-Received: by 2002:a05:622a:4a0f:b0:50e:60b7:bb3f with SMTP id d75a77b69052e-51659e9e188mr193852701cf.0.1779098829846; Mon, 18 May 2026 03:07:09 -0700 (PDT) Received: from brgl-qcom.home ([2a01:cb1d:dc:7e00:1337:b6d0:456:372c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0a19a0csm34322951f8f.20.2026.05.18.03.07.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 03:07:09 -0700 (PDT) From: Bartosz Golaszewski To: Bartosz Golaszewski , Manivannan Sadhasivam , Bjorn Helgaas , Krishna Chaitanya Chundru Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH] PCI/pwrctrl: lock device when calling device_is_bound() Date: Mon, 18 May 2026 12:07:00 +0200 Message-ID: <20260518100700.47581-1-bartosz.golaszewski@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: XgmSVSGS7b1bBYDYI7yeSm4_7sPKLygN X-Proofpoint-ORIG-GUID: XgmSVSGS7b1bBYDYI7yeSm4_7sPKLygN X-Authority-Analysis: v=2.4 cv=BICDalQG c=1 sm=1 tr=0 ts=6a0ae4cf cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=MXdN1EfwqQqHdsfe83gA:9 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE4MDA5NyBTYWx0ZWRfX6odR0J9W0luE jcNO5GXmTG7kXpWSET238cvn9iGlHtUz9+YcWvJfuvLiy0uZ1jiO47KjyxMpCYr3onej9GMYYyM ytgFpVbznNNQfKupABCSf+QbEy7S14qD2ycr1Q+mOku1ozcfUdXAiiEXSecBhmjH7Rurn7qRY/T 11dY1XWPa7R80iEpLQaRpOBBO2rVtpo9geHyMXjZWbZyicXTxlbG/6kGV2xO2Foi4SaN6DTV4rS z9c3BZqAvVY5hisdKP4yK+o+y9ClqDdgeOHOx0L9T/Kq/gWiZbyGFO8KqB/8+amKbGS6tWW/dz+ YbdIErWw+ufuokRregNb/tul2KqTmMOU5HAo5nKc7+RijiiVzwAtb2rY2UXjuNDFpcU1rwl7xfv QxaRjhpAl1iyR5+OGxxDAmj+iQwZhXOSs0cN3I4SPfoIhojjWoLcyHq/06Q1be/2R0qenVZkA+k rxOECxHRnkTwIt7bHag== 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-18_02,2026-05-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 priorityscore=1501 impostorscore=0 phishscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605180097 Content-Type: text/plain; charset="utf-8" The kerneldoc for device_is_bound() states that it must be called with the device lock taken. Synchronize the two calls in pwrctrl core. Fixes: b35cf3b6aa1e ("PCI/pwrctrl: Add APIs to power on/off pwrctrl devices= ") Signed-off-by: Bartosz Golaszewski Reviewed-by: Manivannan Sadhasivam --- drivers/pci/pwrctrl/core.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/drivers/pci/pwrctrl/core.c b/drivers/pci/pwrctrl/core.c index 97cff5b8ca88..cd08d590483b 100644 --- a/drivers/pci/pwrctrl/core.c +++ b/drivers/pci/pwrctrl/core.c @@ -161,10 +161,12 @@ static void pci_pwrctrl_power_off_device(struct devic= e_node *np) if (!pdev) return; =20 - if (device_is_bound(&pdev->dev)) { - ret =3D __pci_pwrctrl_power_off_device(&pdev->dev); - if (ret) - dev_err(&pdev->dev, "Failed to power off device: %d", ret); + scoped_guard(device, &pdev->dev) { + if (device_is_bound(&pdev->dev)) { + ret =3D __pci_pwrctrl_power_off_device(&pdev->dev); + if (ret) + dev_err(&pdev->dev, "Failed to power off device: %d", ret); + } } =20 platform_device_put(pdev); @@ -205,7 +207,7 @@ static int __pci_pwrctrl_power_on_device(struct device = *dev) static int pci_pwrctrl_power_on_device(struct device_node *np) { struct platform_device *pdev; - int ret; + int ret =3D 0; =20 for_each_available_child_of_node_scoped(np, child) { ret =3D pci_pwrctrl_power_on_device(child); @@ -217,12 +219,14 @@ static int pci_pwrctrl_power_on_device(struct device_= node *np) if (!pdev) return 0; =20 - if (device_is_bound(&pdev->dev)) { - ret =3D __pci_pwrctrl_power_on_device(&pdev->dev); - } else { - /* FIXME: Use blocking wait instead of probe deferral */ - dev_dbg(&pdev->dev, "driver is not bound\n"); - ret =3D -EPROBE_DEFER; + scoped_guard(device, &pdev->dev) { + if (device_is_bound(&pdev->dev)) { + ret =3D __pci_pwrctrl_power_on_device(&pdev->dev); + } else { + /* FIXME: Use blocking wait instead of probe deferral */ + dev_dbg(&pdev->dev, "driver is not bound\n"); + ret =3D -EPROBE_DEFER; + } } =20 platform_device_put(pdev); --=20 2.47.3