Received: by 2002:a89:48b:0:b0:1f5:f2ab:c469 with SMTP id a11csp1412428lqd; Thu, 25 Apr 2024 15:06:26 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUQu4gZDliBAWA8gR6vqhIr6IBu7eqH45cyibtanNwTiwcbs7LAX0OqCMKydPRdcSsicl0o5HRHb6Xijzm2YB65SCCsURJiTBcnr19BwA== X-Google-Smtp-Source: AGHT+IGw0EUWsTM8C21ehr6pM4fecSgnQvlSm/k09HG7AZAs76kH+2tZ/7EaRvSIkbzEK2eEF3Hc X-Received: by 2002:a17:906:dfd9:b0:a58:7edb:f4be with SMTP id jt25-20020a170906dfd900b00a587edbf4bemr555337ejc.46.1714082786183; Thu, 25 Apr 2024 15:06:26 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1714082786; cv=pass; d=google.com; s=arc-20160816; b=BLXtdZ2f1YWVYPRv0qEjzXfXRm9jliPmHwh2DqJsDpAfGVgIWlKPC5Qp/kIVR7hdsQ MXIVZ1yQwuW94IFOBRGxLKgx/hk/YUAU5Qe1uM9bFeSjyhOZYddmNnGSRrufJPrK6HQO KIN2+NkManEzZc5M0mbrPbz5E0gsVFwUtIcjfyMig2kFW3BxgKLAQa5dWglfvvkGZXWf HdiOOH8m8n9YcIxaBhxdXTM7dLZpAA0PRdvGHYd3bSnmbaMVj77CmhIeBwy0haXp3+te Qb8I6b5dBAtWwR0vM1KyV+/W0BI3+7bG3O2MGDWMvsIXQHUcIn6zE/Q9lhcB+lQzStE2 iIiQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+a1bbe6m7p4YGsoX3439MqFb6jCt29YaVQQwigHVfv4=; fh=usWEz1eJjYCle08WABmDyuqCrJGq9m48/LVlmybnzRs=; b=GZ9S4IdU7K3cKpyV09bwAL+aUBi0sYYe15/AuXFsjSKE78YiaARgFod3UVqUGWalFz iVDzeNdM6/7gkvx95U4bJdOfCGceu/5+L29k22nShePaTrkCqYKAt9AeA+bH1s55cJYX pKemb/vbXbRtgSoJE9KSKP3N7zDSf5sumssytd9BXWw5NIM+3el28QDCjrnsHHg6vbQi oxboqiGVO9FOI635KJc/cC7sdjoBfsjfzlxX3Il9Rw5Gx03Edpv+bldXp9/pIiM5STEg MmupaIV8T+ddpPu6QuwNmNLDf6p0uK20MXxyVeoPhDHqg2fCDuGExoJRPRnePayh6RVj SvTw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=GfPbcGeI; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-159273-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-159273-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id gt33-20020a1709072da100b00a5892a10eddsi3009775ejc.562.2024.04.25.15.06.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Apr 2024 15:06:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-159273-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=GfPbcGeI; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-159273-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-159273-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 475E51F25D1F for ; Thu, 25 Apr 2024 22:03:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6C6CF1C231D; Thu, 25 Apr 2024 21:52:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="GfPbcGeI" 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 093C8180A96; Thu, 25 Apr 2024 21:52:19 +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=1714081942; cv=none; b=PECm4Px8p3JzyfYolDwyzOBq8+fRK9AIoZmIoEP1xuACvz8v1uubczxvBwcWXONqNulB40nkItoktgfDVp4ny0LevFiImmNVn7w8qy0htOPRL9q+gGCc23CeAI1GLpIa2mdnDfMSJXz41z9C2vE6Pht4KzRu3Tf0uFWzFsowzkU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714081942; c=relaxed/simple; bh=ll3bM8W65ssD2pTrAO71Y/JwHnf2e4H+4kMrMYL4OGE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FhJlGQXBpwzoA210HLvbcFQwVuzWanSDx1xZx3hUV0mb4G2ha4DkQeaC6SzJFF6doJrLutTtcDbJrE4e9SKSMAW6VcxAQnVgJSQQjZhHu3kMo3qbr3qe5h2ypFInMnFtue7xRFmr5yuNhSmtPRFy2UoNCv9UacKcG9rfjIqBghU= 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=GfPbcGeI; 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 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 43PGFwae017320; Thu, 25 Apr 2024 21:51:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=+a1bbe6m7p4YGsoX3439 MqFb6jCt29YaVQQwigHVfv4=; b=GfPbcGeIMhhy44JndV5ZTOBWrGt9zzDBMwy8 p9E2bD0wTc3SOUyCWCsGQm7wbaQpib1gWVTOpH46EhOXSJTg/OzU/nY7YqJPX9Mw XrtbRGJs/ciOOzoc7NxzQAVEbz51NVbo+FFLxK7sQzZVGUd7eZBhvhlnFOnvUs3+ XEoxUTy8QG9XNsUqQ7no6h3htZIqU9S422Cc2Hm7InHXAs1L4NC45nKD2YzslRwu A1WbsANn3M2zZh10QqgpslR45en2nwCX2WV6esYCYjY26G2/wSPsMcVMP/RV0jLc 6w9BK1VfSrc9hdUXFgy277O4XaMsSySJ0LZpsu//f7g9tSEbdA== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3xqthv0nv7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Apr 2024 21:51:45 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 43PLpiZ4008037 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Apr 2024 21:51:44 GMT Received: from hu-wcheng-lv.qualcomm.com (10.49.16.6) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Thu, 25 Apr 2024 14:51:43 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v20 25/41] ALSA: usb-audio: Do not allow USB offload path if PCM device is in use Date: Thu, 25 Apr 2024 14:51:09 -0700 Message-ID: <20240425215125.29761-26-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240425215125.29761-1-quic_wcheng@quicinc.com> References: <20240425215125.29761-1-quic_wcheng@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: nalasex01a.na.qualcomm.com (10.47.209.196) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: 10B7oJ_thytrcyiI5Y2pUUvzYNdz9xpO X-Proofpoint-GUID: 10B7oJ_thytrcyiI5Y2pUUvzYNdz9xpO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.650,FMLib:17.11.176.26 definitions=2024-04-25_21,2024-04-25_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 phishscore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 adultscore=0 mlxscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2404010003 definitions=main-2404250159 Add proper checks and updates to the USB substream once receiving a USB QMI stream enable request. If the substream is already in use from the non offload path, reject the stream enable request. In addition, update the USB substream opened parameter when enabling the offload path, so the non offload path can be blocked. Signed-off-by: Wesley Cheng --- sound/usb/qcom/qc_audio_offload.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sound/usb/qcom/qc_audio_offload.c b/sound/usb/qcom/qc_audio_offload.c index 3b7780cb288a..db68c6c605eb 100644 --- a/sound/usb/qcom/qc_audio_offload.c +++ b/sound/usb/qcom/qc_audio_offload.c @@ -1460,12 +1460,17 @@ static void handle_uaudio_stream_req(struct qmi_handle *handle, goto response; } + mutex_lock(&chip->mutex); if (req_msg->enable) { - if (info_idx < 0 || chip->system_suspend) { + if (info_idx < 0 || chip->system_suspend || subs->opened) { ret = -EBUSY; + mutex_unlock(&chip->mutex); + goto response; } + subs->opened = 1; } + mutex_unlock(&chip->mutex); if (req_msg->service_interval_valid) { ret = get_data_interval_from_si(subs, @@ -1487,6 +1492,11 @@ static void handle_uaudio_stream_req(struct qmi_handle *handle, if (!ret) ret = prepare_qmi_response(subs, req_msg, &resp, info_idx); + if (ret < 0) { + mutex_lock(&chip->mutex); + subs->opened = 0; + mutex_unlock(&chip->mutex); + } } else { info = &uadev[pcm_card_num].info[info_idx]; if (info->data_ep_pipe) { @@ -1510,6 +1520,9 @@ static void handle_uaudio_stream_req(struct qmi_handle *handle, } disable_audio_stream(subs); + mutex_lock(&chip->mutex); + subs->opened = 0; + mutex_unlock(&chip->mutex); } response: