From patchwork Thu Feb 8 23:13:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 198681 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:50ea:b0:106:860b:bbdd with SMTP id r10csp518426dyd; Thu, 8 Feb 2024 15:36:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IFcu8wREkO7PiRYuKs8AFKwHakd1Pc5VRDqC+u/OkqdlRsP4pOAomoDqsU4eEgBdYAiUePO X-Received: by 2002:a05:6359:4c0b:b0:176:9f24:d06b with SMTP id kj11-20020a0563594c0b00b001769f24d06bmr642999rwc.1.1707435360196; Thu, 08 Feb 2024 15:36:00 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707435360; cv=pass; d=google.com; s=arc-20160816; b=m1lvypO4w6hVHp+wireX37rLpxGF1Ws8ADwuPs4WldAKIUk25lhm2tyLieU6rtjs9c 4iCftfo8t2EngBXs8CcsMmw6gUF+qiy/8o/bxbndnVTGzOCQ9LHcvCB7GS6eLC8fXJ2z ijJwri81nvXzBTB04uNv6694G73MHso6Avra7Ot6ZvlNJlDpBjlhQ4f+DZs2cnNHCyjY 2erNWvSWROJ7CdXGCMJe4/M0kyOSq4zViBKOCn3lw3zuBCBL9nHohjaA6I8K9r9uTB+p 4fOzlLUKew91mGp/2Jqz02Oucek2K5xC9Ln3KnNf8eiNbYurb1ui+HFBnpsrDayPXmsP oFZw== 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=wGyjbtwBQ0jltPebsxqOvKMXQoPB3aFFrhoSoalXCkM=; fh=fIsuvBq4ArB9gE46figMQK9f9BUvAuqzvQljDv+3s3k=; b=eScEM1EcUtkG43GlMTw1DzKGwJ78hLTY86vCHO7SF7HG3+DPJt2eYIPUCjzYDIU01Y agYLAsPbHpOaYsi12Gkln1f8yjG9E/mjwxxGQTiGNXvHwleAAJLrmf87YVFFUk8qpiPr Gj14at8icx9sp0vN6lshStCyWwdBwrIHhAWpPYFhe5PbBqfjomgMypm0Ssg0mT/Jvgoh Fo2MetbJpqiuN5J2kuYEDee5AQ20RqFR3cjT8SRMLXpuPDf/7K+BIRf1Qpiy5HuolStG qLiJnugA4ghQclUdW1NlJ9S1khqbJDd3dTqI0jLdYmv9Ok1nC9QwIULWXkuE4unNERjS 4+pg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=oYUUhyMe; 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-58860-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-58860-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com X-Forwarded-Encrypted: i=2; AJvYcCWx/XpNqmpACrNVdUZ7i9T3YchcDTtpyucQD3mUrlROvbtkZnss2ToyrjCpeelZ+Xzl2hHFpKpxvVzBHMLIjq2ZSWF5yw== Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id r144-20020a632b96000000b005c658bf30aasi610401pgr.412.2024.02.08.15.36.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Feb 2024 15:36:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-58860-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=oYUUhyMe; 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-58860-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-58860-ouuuleilei=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 sv.mirrors.kernel.org (Postfix) with ESMTPS id ED8372819E2 for ; Thu, 8 Feb 2024 23:35:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 61BD567C5D; Thu, 8 Feb 2024 23:15:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="oYUUhyMe" 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 D02615C606; Thu, 8 Feb 2024 23:14:55 +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=1707434097; cv=none; b=aLVKyWeLVrQgxgBXmIiKHgWrNY1QyotrWzk1LNDgEu4+Yr+FRSQ/b5J0qNlv8COfgLOxUt+cBWAYdTe5+jeoNLwh4H/tXLpho6wETSO+FsZtRLE3/XSpJtmjtS8lU3v1hR90TV3M/bfpdCWjDAus43WaAD6wURqzjjV7e9hLdkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707434097; c=relaxed/simple; bh=px268WXk+l3B9SlGv+cxMo3ljNfa2rsGXtf1IZjb19I=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PnApPAkjbWm8qTdLaQvm28CABHdutuXeqmamTTog+/G2B/u7DUgJbgJHjDyNk1sFKyEKg71khbMeIHIfwh+ABTEhONR+px24C4XinWxkG6Wo6Mr8VhAts84cDMa3M0jUseiC4MZvZ++F3qQ/orRYTbV3ZpEx7SYzl3fvo9VzPJw= 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=oYUUhyMe; 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 (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 418NBDw9025996; Thu, 8 Feb 2024 23:14:27 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=wGyjbtwBQ0jltPebsxqO vKMXQoPB3aFFrhoSoalXCkM=; b=oYUUhyMeds91Vvnghbc7NvRvHQ/uiK/0XwVM Zm3OR3hyWyGhsdf20g9zLVTWeruwIOrQnP7kgHhyOHAazcbuIxCwRUTGM8kC55IH Oo25YWKimLW1bwz2V7MXzRX6CXYjOguZUpoy7tPVRiw/+eJpAs93gOnBFQ1kNg5t +MH4InxDEBvAys57jHiqiQSXAEMGHnBSeFVv7RtTzkY/eihbQZ5Pti5+IlQ2NmAW bSIQBSb94GJSWPah8svr/kUBHnC5dwLtLVUGxw/HuCql2309vcmO/r9hNA4AX7En PMaAqrQvGhiXdDWpwQm6AR7pG5NTDz/Vm4jIoLrmyIYl3vT4mQ== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3w4hhkbajc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 08 Feb 2024 23:14:26 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 418NEPpo022118 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 8 Feb 2024 23:14:25 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.1118.40; Thu, 8 Feb 2024 15:14:25 -0800 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v14 36/53] ALSA: usb-audio: Do not allow USB offload path if PCM device is in use Date: Thu, 8 Feb 2024 15:13:49 -0800 Message-ID: <20240208231406.27397-37-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240208231406.27397-1-quic_wcheng@quicinc.com> References: <20240208231406.27397-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 X-ClientProxiedBy: nalasex01c.na.qualcomm.com (10.47.97.35) 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: 8tNcLsd4pCiNAPtUa4YmZn_yLZMQo9-V X-Proofpoint-GUID: 8tNcLsd4pCiNAPtUa4YmZn_yLZMQo9-V X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-08_11,2024-02-08_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxlogscore=963 spamscore=0 adultscore=0 phishscore=0 mlxscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2401310000 definitions=main-2402080131 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790375740001680735 X-GMAIL-MSGID: 1790375740001680735 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 af67d219fbec..31c0cf5916a0 100644 --- a/sound/usb/qcom/qc_audio_offload.c +++ b/sound/usb/qcom/qc_audio_offload.c @@ -1448,12 +1448,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, @@ -1475,6 +1480,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) { @@ -1498,6 +1508,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: