Received: by 2002:ab2:6991:0:b0:1f7:f6c3:9cb1 with SMTP id v17csp92428lqo; Tue, 7 May 2024 13:12:36 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCX4akl0EKJPy+206bdujBuQsRBwXkrPOIIsps4RknPfNZehNQD+c7dQjSqPjSvi0oaCSPsCfm9iZtmrOdeb9/kiWdGuObNiNb0oPtmz/Q== X-Google-Smtp-Source: AGHT+IHlhtfoqir0FYOp2tBl7RHzvqMqIzHoC+4eytsDjwzsRWtoSvcja9B57g56SEewp93WAqfN X-Received: by 2002:a17:90a:e50b:b0:2b1:b6f:e297 with SMTP id 98e67ed59e1d1-2b6169e329cmr639263a91.36.1715112756267; Tue, 07 May 2024 13:12:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1715112756; cv=pass; d=google.com; s=arc-20160816; b=ASCCeHoHCjVNRj1tUHBPL1UDVDWzWXNpQGgtklTMFIdLkPY8s4cWJ6MjmRUba1G0uR eNjg9OFdS2RLA4f9h3MyRAk2UPDWke0fbq5xWH0Fr33vhbubaC2lisNqnxC/NBfNlDRs nZ1zf5AQZclcLlEdRnmuyloWQnqPB+ujO3i2jefxYJ2SLA/F7wlkLTE75dHfjB7e25VP v+/k/4d//TD15t5/wXuv+SFUI1XsGWF08PiPclzCNfQK3CpGcT4WNcZr/1fN57Kh32ve IgJANje33uXQ/8U34Arj8rbPODr7IQcXLjazs7qpqOY3+l2XAvUO9SZeaWk9DlNEqdqx BNfg== 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=LAe3DSaK4AzaJoCeRHjiZexmbH+KMs7/LNqcwt8x4Pg=; fh=tk8sqZoIP78riW3PYc75n3+DQFkqFrW+9GPE0/sstVA=; b=Y702C4jU7zGJhUHD6pAxKrEgU6gON9fHzsoKwhfVnlmuBaT3vxNNIVoNl90z5mU3nn rxViD8saLigb4EhrUkqUrZF9juNTYKIPgW24GbZcezePlrmkguFuhMWSWUc1Gs/0e5I7 ZebsZpzsF9wjBLHnNOHktg6yEFylPQHa8BJPv2aeHZH8LQe8cdZM2qJEtZn/O6qf3mhr iYmqOIeQVaBRpcQ4utiY0yFO/RyPfdV2b+smFyvBIAwPkr+mgc0F147cKf4FbRlBy0/9 HCWluU4bguP5zxHMaScBFGXxvPdauCoj1TmzuTkcUYXqzOne/surBEwt2UZi2BxHljnv ZbFw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ETD3Qupb; 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-172112-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-172112-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id mq4-20020a17090b380400b002a22f4dba43si9981603pjb.17.2024.05.07.13.12.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 May 2024 13:12:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-172112-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ETD3Qupb; 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-172112-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-172112-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 sy.mirrors.kernel.org (Postfix) with ESMTPS id 86FB0B259DA for ; Tue, 7 May 2024 20:04:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CE15F16EC1A; Tue, 7 May 2024 19:52:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="ETD3Qupb" 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 3ED8B17EBAE; Tue, 7 May 2024 19:52:13 +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=1715111535; cv=none; b=J6iYFi4LrGTvpplFTrQhiqIs7RRQhGg9uMeG0jsutrzCFga3/YzcP+t9RWlLqg7oPgBpY96munI2+8nG84lNlpn0aVABdosmujWK/Q1vWRQOiUwVhLp5BN66Va+qLfa0KoNoXliKttz0wfqVL3lT7nn4m8g3ADNZ4A1SJMJUdp0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715111535; c=relaxed/simple; bh=WRZmNuht/RTd8zSsVLQl8vLqCGMpQdxRvAiKQkxLjQA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iAd1DvjLYWsQ6yxUhfVXnECnKFZZVrnNis3EFxAfs7Xx4KWEvDmmm/hFA6rJWY0cFWHGNR1/lYpXTeG/d4SW9uIH4I3fEMJEnLZBUVaStDDKANOqBFTtnDpSLwCjD28sdB3vA+o1WjAfgtT/gh8iRUYtIcMj7W0QAgD+PLKAf80= 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=ETD3Qupb; arc=none smtp.client-ip=205.220.168.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 (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 447ILKtH013964; Tue, 7 May 2024 19:51:35 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=LAe3DSaK4AzaJoCeRHji ZexmbH+KMs7/LNqcwt8x4Pg=; b=ETD3Qupb1Kk3KtdmeVS9oiy4oz7QBq6oX7J1 wUiKRvL0o/cpgyixPdF3ZrS4qtV/vbfFdDcafWhShjT4uSNgPzWjwDMQ5817jvQS v62UA3avSsXZBWv/LitNV+COy1GaOpTWTDpkJMhPeA1jFhw2+GhVwpHvXlf7ameM DVJQu/HJd23HPTMmfk4Y6ShdvBmxX+9IQDPESamqbjlJL7lMLT17xtlxmzluLtR3 AIg5oLQESYKY54JMd6nIysa+Q0W3t0O6FdaRyNKsyB+E6qFYPPNUJ2Hg1bCWpAUW 0/+JmDupZwRR6srSZ8sp0LBfAJwGJbi6X7uNmBTUQB4Q3c155w== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3xysgc85rd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 07 May 2024 19:51:35 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 447JpY0B007205 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 7 May 2024 19:51:34 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; Tue, 7 May 2024 12:51:33 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v21 23/39] ALSA: usb-audio: Do not allow USB offload path if PCM device is in use Date: Tue, 7 May 2024 12:51:00 -0700 Message-ID: <20240507195116.9464-24-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240507195116.9464-1-quic_wcheng@quicinc.com> References: <20240507195116.9464-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-GUID: P2BYTIdhIcCNWxgQOraPoi349mhBRx6s X-Proofpoint-ORIG-GUID: P2BYTIdhIcCNWxgQOraPoi349mhBRx6s X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.11.176.26 definitions=2024-05-07_12,2024-05-06_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 impostorscore=0 adultscore=0 bulkscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2405010000 definitions=main-2405070138 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 eda16d6df0d7..648b97aeae1d 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: