From patchwork Fri Dec 15 21:49:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 179562 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:3b04:b0:fb:cd0c:d3e with SMTP id c4csp9599993dys; Fri, 15 Dec 2023 13:56:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IED1YXAhKJwGPcydYCDTdL8qyxh+SheaowbPJ2L37ceuAzEiy0EoyJfd+xRFeyBr52rc9+s X-Received: by 2002:a05:6808:1443:b0:3b9:f151:776e with SMTP id x3-20020a056808144300b003b9f151776emr16299319oiv.10.1702677411512; Fri, 15 Dec 2023 13:56:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702677411; cv=none; d=google.com; s=arc-20160816; b=c1hA8PQs3slZH2VnyV5c121x2RE8EnppBxVt80PlJSlW73MbH7XLc3pNR06o8XKv4N 9bCtp2dfrgIeYyQqEZvi2vo9zULGk+qGR7QqPh202EpoxOwb8K/YG3agX8KqkFtQVJNB i2mbfh7srqrBUZeXbmZ+E8bzYmf5uSoQ0rO+LS+7cKdSbEzyqfbjLBL24+wv5BNqKCYv xm/JmdGFsGGCPir5L0t00M2zQJo4pbGQGAQjK8AbD41TA7TirewyM3Xa8BQeopNUo079 xJ0zVg1DaVXJWaFZ/01E7BPfE9h9p9NRmNQ2smqJxi4UFBDorY9Yv2mb1C2czcC9le/r yzfQ== ARC-Message-Signature: i=1; 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=W1QR+0ygIJnmHyx39F8bsEZBn4lVbm3UtqAqif9j3C0=; fh=0KzismZj+xI0Z//ZGdqKIH/FO9LtSZM7Yj4P0VtrCz0=; b=bLEBGQgJfuoqawkuT5zLcgQfzlV6yC1ASZERpxnAcZAzcRBVxUrCmVfNOwxRWp7tLN YQBf8WD/PztZo+/wZTdZatv6gekxXbM9sxbaCHvOAfui/jAVU2TJY5bs3f5olLo2g8hD DVrbqZReoJ2BVfp38ur7GCbRb42GL7hdS4zy5oTPsyTEJlGrhy+zNJ1GXn1VoS7RakZW jolyePKHX0WiKnvlSe+m4mdcWWJLIVPTJAFjSeGGQ6P7/8gJenSFBSd01krr8XZrf8xZ s/ndtaOdH6IJvVSqREtZSWcvnqRrsygL37UlWsht0VtFWjloxFYtq6T6ZKUEp5sWRB67 NK0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ObglBKLL; spf=pass (google.com: domain of linux-kernel+bounces-1688-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-1688-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id fj17-20020a056a003a1100b006d08c480130si9347058pfb.214.2023.12.15.13.56.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Dec 2023 13:56:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-1688-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=ObglBKLL; spf=pass (google.com: domain of linux-kernel+bounces-1688-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-1688-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 43E55281884 for ; Fri, 15 Dec 2023 21:56:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id ED09577B58; Fri, 15 Dec 2023 21:50:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="ObglBKLL" X-Original-To: linux-kernel@vger.kernel.org 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 7D24249F7E; Fri, 15 Dec 2023 21:50:27 +0000 (UTC) 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 (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 3BFLEq6G032642; Fri, 15 Dec 2023 21:50:14 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=W1QR+0ygIJnmHyx39F8b sEZBn4lVbm3UtqAqif9j3C0=; b=ObglBKLLRNRwbMWTbqdQy/9d9YYx19jf8H/e xuPkfueka5xH5ddn1zcbTLd2lHv/QP4P4hZIqOz+CIQigQ9ZTNuM/dGNwali6/YC RlKbE3r7JHH/qjj/i4Ml0y3HPAZrIOl6W4ocBfoqS41QXr+i1DcwIkGJcD0HqCUj lswwCSp9wC/Np3sVolOQA+QxOQWqR1ZJXEChiB7pwxqnX2Yua1gN5xdsRp/6am1W ITUzGU2xDN7RD8lG19Fgbp1TImR1+Qtr8tMKqttuNBzqTb8lLcz8XdFmv9NFzGjG /71ul6KGO0yRnKMjtCQ+TOvQh1pxmJs+PmbbYHeoxaW1NX4fMg== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3v0up20gj8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Dec 2023 21:50:13 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 3BFLoDxX008351 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Dec 2023 21:50:13 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, 15 Dec 2023 13:50:12 -0800 From: Wesley Cheng To: , , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v10 24/41] ALSA: usb-audio: Do not allow USB offload path if PCM device is in use Date: Fri, 15 Dec 2023 13:49:38 -0800 Message-ID: <20231215214955.12110-25-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231215214955.12110-1-quic_wcheng@quicinc.com> References: <20231215214955.12110-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-GUID: mHZBTJmk4gF-TRIEV0LIU7J3GaEOHnpt X-Proofpoint-ORIG-GUID: mHZBTJmk4gF-TRIEV0LIU7J3GaEOHnpt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-09_01,2023-12-07_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 mlxscore=0 phishscore=0 adultscore=0 suspectscore=0 mlxlogscore=933 impostorscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2312150152 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785386669416229899 X-GMAIL-MSGID: 1785386669416229899 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 114a7ba34e1d..754c4242f8bc 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: