From patchwork Mon Jan 20 09:48:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aditya Kumar Singh X-Patchwork-Id: 13944927 X-Patchwork-Delegate: kvalo@adurom.com 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 25A6819995A; Mon, 20 Jan 2025 09:48: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=1737366526; cv=none; b=rZIjn4Wi5yQB+S9nSftXM8LwOS991fSAmAHYeqQTqZxxppEnS67PaVEH93rLe/lZZFMZMgJuxRWPRj9cLgfAt1OvJDYTpYVnFtlevy66VVfRCzlbAQGKywfDXIHWmtK5gK2Dfgig5kSleVhGlSa5iehG3NshA3T9ThFCp0AE6kM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737366526; c=relaxed/simple; bh=3qgfqsNprSfEDdUBdcPgLdCFauhTujp1xSIY7mwNwXw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=rCTJZ4EmUF+sPq9JRODkKIVCzF1SB2DrhjFOd2O8JWsDuhiBfyCW5HpAAQYjTFBpVYBd8LdMZGNfg/3EkgYDC8bFq6XIuSZrUEPpeVgq78TR6t1RuO9jnSpLu95AHge6T8isMEcW/XbkvclY5+HO5kjL4IpwRgSHftr8DNgbWOg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=SCKVmlLH; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="SCKVmlLH" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 50K3gh20005146; Mon, 20 Jan 2025 09:48:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= lEvmFfkiwVitJkPjXQw+hEHrAmWDl/ngaYSf5dywjn8=; b=SCKVmlLHEuOsu3HA GGkdW1owyaOr3ZSQOfpHGKPxLYqHsEbbvC7brGpMpvCLmxFbVFIS75C8zQUo0gkA fByTtC7b4tKtqV8WeB3J23pG8kxROzRGzA7zUrR7PTLOQq720sqdbbtqXAYADLog vNkvVULOQIg2Ttq21JPydiI7RnxD0+QmfAVXdhUowN7QE07/WMxij5xdquGo17dv tNJ9VG7pb3vq5vh/pfv8GFujDbOiW1Smtb4f/mCPP7ImWkf9VgSa/TzG3MH0br6j cXic/2szRAFAsT8vbZHmHiCRkPANG13xhwpCQtOwNwhy95vBkWii/u1AkT6O7CYI z1phOA== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 449etegunq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jan 2025 09:48:39 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 50K9mchV006262 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jan 2025 09:48:38 GMT Received: from hu-adisi-blr.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Mon, 20 Jan 2025 01:48:34 -0800 From: Aditya Kumar Singh Date: Mon, 20 Jan 2025 15:18:21 +0530 Subject: [PATCH v2 01/10] wifi: ath12k: prevent race condition in ath12k_core_hw_group_destroy() Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <20250120-fix_reboot_issues_with_hw_grouping-v2-1-b7d073bb2a22@quicinc.com> References: <20250120-fix_reboot_issues_with_hw_grouping-v2-0-b7d073bb2a22@quicinc.com> In-Reply-To: <20250120-fix_reboot_issues_with_hw_grouping-v2-0-b7d073bb2a22@quicinc.com> To: Kalle Valo , Jeff Johnson , Karthikeyan Periyasamy , Harshitha Prem CC: Jeff Johnson , Kalle Valo , , , , "Aditya Kumar Singh" X-Mailer: b4 0.14.2 X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: YSLGAWRJKYfuPUQifBjbn0_g79x3J6wM X-Proofpoint-GUID: YSLGAWRJKYfuPUQifBjbn0_g79x3J6wM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-01-20_01,2025-01-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 phishscore=0 mlxlogscore=872 lowpriorityscore=0 bulkscore=0 impostorscore=0 mlxscore=0 suspectscore=0 spamscore=0 adultscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2501200081 Currently, ath12k_core_hw_group_destroy() accesses its members without any locking mechanism. This could lead to potential issues if these members are modified by another thread concurrently. Hence to mitigate this, use the available mutex lock. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 Fixes: 6f245ea0ec6c ("wifi: ath12k: introduce device group abstraction") Acked-by: Jeff Johnson Signed-off-by: Aditya Kumar Singh --- drivers/net/wireless/ath/ath12k/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c index 0606116d6b9c491b6ede401b2e1aedfb619339a8..1959c59cb2bb18aeec215b9d309468b7c6716752 100644 --- a/drivers/net/wireless/ath/ath12k/core.c +++ b/drivers/net/wireless/ath/ath12k/core.c @@ -1716,6 +1716,7 @@ static void ath12k_core_hw_group_destroy(struct ath12k_hw_group *ag) if (WARN_ON(!ag)) return; + mutex_lock(&ag->mutex); for (i = 0; i < ag->num_devices; i++) { ab = ag->ab[i]; if (!ab) @@ -1723,6 +1724,7 @@ static void ath12k_core_hw_group_destroy(struct ath12k_hw_group *ag) ath12k_core_soc_destroy(ab); } + mutex_unlock(&ag->mutex); } static void ath12k_core_hw_group_cleanup(struct ath12k_hw_group *ag)