Received: by 2002:a05:7412:1e0b:b0:fc:a2b0:25d7 with SMTP id kr11csp1431279rdb; Fri, 16 Feb 2024 16:22:25 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUVE4lkevOsQM7p3slX7QiUvVbe6QQlTGk9b/mswjoiXfroTMSAdPb2Oui4AzFQSruuw8enXP0yJw2VRN9huSRwBm5EPDXtkV0erX23+Q== X-Google-Smtp-Source: AGHT+IEHPZ+OfEfPFQA0hJFkf5m29w0XpYas/Om+f0EoI8pO5X/opc6dschQ3+K3yMR16V5Gu2LJ X-Received: by 2002:a81:574a:0:b0:607:899a:7fb8 with SMTP id l71-20020a81574a000000b00607899a7fb8mr5886308ywb.14.1708129345425; Fri, 16 Feb 2024 16:22:25 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708129345; cv=pass; d=google.com; s=arc-20160816; b=F/YhGZP7iRUSxwxCFIrrbKxkktSjgdeNyf8NVyovab+lkqeumBlkW3w+eE4bTiJ/Nv qKbOUeg8HMzBZV7HkA/3y8zda3pDEjLEsLKDsGO6gUPz3IeRe+tPEGqRSmofFkUkLWLI z0i3lhFQKzxS7ACNY8yzFvlOkOWxZOnGDA4KCuwIL7+N0YjyjOGw1JSc9N1RZZ2FRFgV syU1mrMutNB9AHn4ncos7IQ3JqUbxAwPlqRQZCh/xdlXfK/kXBnFWGgC4Q+yl8kX5tFD sVnpHjsTfIyoLIDilyq40Du7kbn4eL+Wjv26Wp9FW3TLVF5nZ8LBbK6OMQk8ndlTzSGD FRCA== 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=VKrp0Y7I/+wT36BfKZ6oI/4N9BIwFCn9zerObkOrgGw=; b=AU8EZCaY9WuRGQHrcUXO9cYlhyS61pTDJon9A9aQAdIbtbPX4DTh3lPBqxhoLQrlhy 1nm9CkaPY+5gcclJ5KMy0//rrg6FE2UbZHEgwvXQ9xzs3UfDSrKpUGEB6fXEIDEXwbMx s+CgQkBodm2mS6R3+31GKQQunSAap0kZxojCrnlO3QMmy4FNBAB8oy1V2T5MA0ZBEF7B 6BeUk9N2lV6gn68rpkb21SiufC1JDrOiT7Hrhav3MdS15iZqxL3+0U4bH2vHX/vv+xVD s1KgcrFY392DRTe+g/euMhLx+B6eviGQFd0MdY+Cl+gBCIBS2IEjhAIH8rofZ/fseoov HblA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=T4i9tmjK; 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-69548-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-69548-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id r4-20020a05620a298400b00786a45280casi1247995qkp.591.2024.02.16.16.22.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Feb 2024 16:22:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-69548-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=T4i9tmjK; 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-69548-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-69548-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 06E661C22EF0 for ; Sat, 17 Feb 2024 00:21:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9489078B61; Sat, 17 Feb 2024 00:11:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="T4i9tmjK" 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 F1A414F21F; Sat, 17 Feb 2024 00:10:58 +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=1708128661; cv=none; b=LeBpxQRfaBtRO8UVfjTkxCCcfzQmBXpJ8dOoIaR4O/MXlTcPndAaPOClg68Gs9LFeQECbyz+lxlN5ywImtPZ4IxFpgqn8R0dBeoRhxyUiIXout+RWtHHrmJJqsAiLMyawxX9r/dzqZqf4k26KPex3VwJGuqhbAFX6oodnUJ9ybw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708128661; c=relaxed/simple; bh=ll3bM8W65ssD2pTrAO71Y/JwHnf2e4H+4kMrMYL4OGE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ePS9ukTcUbgVN3bY9aoIBbeaii2AGYjINPwTr/ZqXsMZ8tI/TIcfRDg8DSXwkuz+wCwGavaoy/GZAvwGv9CxVpmInewWGXir9DHyLSQ1sHB6KdDR8ehYaPl/qCFhIYr6JpLqJ5WYTEwfZgPuCg10w43JWKSGtsj99JMDlZBLNms= 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=T4i9tmjK; 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 (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41GNQOvb024100; Sat, 17 Feb 2024 00:10:41 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=T4i9tmjKp471YpE2ZN6pLz6gTePn0UvbkWxC PSStZn2UrFf8rC9wGB2QSxZ20hGwSuqPi/FsW7Y96gdDiZ3tS/6zSj/g57W21An+ IEF13A7OmKrEKzIb8LtkgqtC5lEf+yFg3ERiZc2j2umHPtgdUF6ZqZMuO5FS7WEz 0UY5Qynps0hrGz720cbiKKhyI8vL6wiXD+oG8pzOdxuRCfE0lQdJObZlOEkxQ1wI CNA5+r2EV++KtntLrltwqt+15uJs2HziVHk+T9g8ZoQ8oXBn4SoOFIk5/UaAkVf4 FNRC4iALA6roJbKRedY86FSScDtbcbeVLYJTnYULfvKZD0t6KQ== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3wa51xhkew-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 17 Feb 2024 00:10:40 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 41H0AdJ0012938 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 17 Feb 2024 00:10:39 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; Fri, 16 Feb 2024 16:10:39 -0800 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v17 34/51] ALSA: usb-audio: Do not allow USB offload path if PCM device is in use Date: Fri, 16 Feb 2024 16:10:00 -0800 Message-ID: <20240217001017.29969-35-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240217001017.29969-1-quic_wcheng@quicinc.com> References: <20240217001017.29969-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: yNQ9nEEzD3bXAe59Rfo3L0NtGQOvfuzz X-Proofpoint-GUID: yNQ9nEEzD3bXAe59Rfo3L0NtGQOvfuzz 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-16_23,2024-02-16_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 impostorscore=0 mlxlogscore=999 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2401310000 definitions=main-2402160189 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: