Received: by 2002:a05:7412:3b8b:b0:fc:a2b0:25d7 with SMTP id nd11csp599517rdb; Thu, 8 Feb 2024 15:34:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IGceTn23xAXoFKjlTniw4CQGTTKIkEgs3cqRUIXYuJlRqBGdYXjMcemSZzVDD+lJZnDObNQ X-Received: by 2002:ae9:e017:0:b0:785:6208:653c with SMTP id m23-20020ae9e017000000b007856208653cmr1344qkk.41.1707435296809; Thu, 08 Feb 2024 15:34:56 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707435296; cv=pass; d=google.com; s=arc-20160816; b=nj8eo1LUPQOPaHZG99JpBIuU8h6Ravf/H/IvN4ohP9aWJEKjJ08FFC2Dc5yBmUkoGA dynZpIM13MOca8L50C+XL4A8HK3hc20IDOhuZw6FxTrvaW5QtmQwlcpWu0LfB0oQePeK sMu6tQWNiNqVHMkb0iOoit7zFpX+kGxgq+ZKCUxrRq7vNKJuaw5bgzfTVL2V19BiLsHJ yUBESwTQgeMhDjQV4+0QmfF0HSkRsNkeOnp+GSrKzG5NG9mN2IBGWTJS28GxkSshqH/P vsBInVyznAdQz3YAM1WffLpYFHjNRhvuNt+5wWuwNt1ru3FEf7bPFEFEwkOq5V9cE7+J a40g== 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=X8ewUJPH+Npm1cxGLiLQfjuug1kSRSTz/vmZIMFwn8Y=; b=T2pvfMowOs8HyHGopcy4nMNvL7zNbTwK5OZdRZxP80dApEyMnqo41kDwYWukxZnOl0 hWbcRnt/S01uzsL/8MA902zCB7baV96xScrjbz/C8Q6DNPCFwOfYr23z4mYXnr4Oew/0 6BeOZDvtSuSdpKu1ZqjHLjhMZ5gyMAfexFWXelUYZM6uMAtul65Jl0Wj69zBiggpakWG b3YQ4qWUs2cuW4VIDhfnjGyf0zmtdD1KyXNZB/6Cd4J2Zq28DGnxL2c8lgPbfLBW7AZw Xv7TeXhUJZTQfm4hbSDa+h55IC2xDkKulD/9pGwveMa40VceRMkdfzBfbhl8b9IvfwDW 75VQ==; 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-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-58860-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com X-Forwarded-Encrypted: i=2; AJvYcCVa89F8blhnXMYxMToF9E2uxr0oqn90YkNBWqAiiUjVbGaV8g+iS1mMcUPxl8uxPu/+kGJtJqitFH8pKw++RZZmOxDbpmLwIK5FzHiY7g== Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id h14-20020a05620a21ce00b00785a70fabb3si685782qka.637.2024.02.08.15.34.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Feb 2024 15:34:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-58860-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; 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-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-58860-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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 8EB441C22B27 for ; Thu, 8 Feb 2024 23:34:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 51EFF65BAC; Thu, 8 Feb 2024 23:15:14 +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 Content-Type: text/plain 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 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: