From patchwork Wed Feb 28 01:36:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 207608 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp3080204dyb; Tue, 27 Feb 2024 17:50:09 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUOJP4Z98v/NBIJIJDUyGphMHJZVijmVDpQRNKTSR0R6OpsUW+V7jmA7/ZoiYzLv2XKyN8b5PLgNePMbEdcQpbhUc4DIQ== X-Google-Smtp-Source: AGHT+IHnKI1ZGhyfgv/jf2JGFBqq9DrwgY8Vqg5xRWa1yVFNeBldL2c2qkivu26PxnTXVhJA6alQ X-Received: by 2002:a05:6808:298d:b0:3c1:945a:c33b with SMTP id ex13-20020a056808298d00b003c1945ac33bmr3628633oib.27.1709085009359; Tue, 27 Feb 2024 17:50:09 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709085009; cv=pass; d=google.com; s=arc-20160816; b=uFEojS+/zuUVvBqSBBn9dbvHrJvkFbkxWx6kLK8OSW3klTpgymdnAlGHhYHXThjKcU kD9iMYlWspiBgAXhrwPJGAXk5lf/Aa+lBWW5hyCozfoUHz4gsrcO6rWGGX1a1zwOFOAe atGg/e5/9dtpV+jw4tcMmaW91m2PylM/JYYfPcezmNtJ+e9HNeWbXqPLqFr0Q8kcSN0L An2daSEs/cCPgXDx87yXm7VjoJzVjRVztZMY4/TWAiy9OvzSCGDZRlz6jBVNIHFKOnVi 9KwQq70Rjcu53uWFQ8pXQanq7rzIUdKxIk4dD/40NRlNfS7i3cjMGYPCP7Q+XKcjZQnm ujJQ== 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=JR6CA9fFTGrMAXBbCADxodXgu9+CI7m84tHNnr+Hg6LZpX8lhpYCg3HkYmkC3Mk2sP yHr3npo51UvMlbmIAmTxZfnBpZrudPQACwXrrJ+OWi99+VDoGucWXDpBlrE+1wbpQi5U FVCThiJqSZCrNnwVmF3fVHetOOWBkHyqmao+0LM9MC/qCwMnlTwkpue9LZA6COorEH/H ZcSBo2vMw7NfIby4KlBnhvZprI3iUU/GqEG6iQErkP0rtkBI6dinuU/nRklT8zIazKeW 6s04Bx9tKdl2PqxIYY1D/Yp0QBWryRAA9kkouEU8ghhkXEHmmm8OQjlav++tWfpAMajt XMyw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b="HVhB3A/U"; 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-84364-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84364-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 kr17-20020a056a004b5100b006e48649bbe3si3124684pfb.343.2024.02.27.17.50.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 17:50:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-84364-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="HVhB3A/U"; 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-84364-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84364-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 167342858FF for ; Wed, 28 Feb 2024 01:49:33 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 16B935820D; Wed, 28 Feb 2024 01:37:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="HVhB3A/U" 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 0BB7625626; Wed, 28 Feb 2024 01:36:57 +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=1709084220; cv=none; b=cwRiYTY8FMzlEBM9NHjBE8KoTD+uOwHtmXKoPWKeChuy1pYUYWy5+P5Gv/tsylBe69URGkrEAqIVzX5HgnwYWUleO3Y8XZlo96yY15MX1CSTRIrbti2uZEBfnTxClOFHVBL0ap6SBUGSDNQvha+wZdqEu6EILlMm2WgTcgxIwe4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709084220; c=relaxed/simple; bh=ll3bM8W65ssD2pTrAO71Y/JwHnf2e4H+4kMrMYL4OGE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=N8Lm4srNZmDY7WeeYH9XcHb67YACoMO5mqzlNfb1q7REC39CvuRh+S6Y4tLumGA8u4Uqvg3nXubLICVpG4Cv5XrE0u9NVtUdotErhqQZZHy2uY5RLgtNGJ8MTgwoF3bUzuYUcnaWeZf3Evn1W4J8F0WvOZvQ8gtcfXBH72GYeIQ= 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=HVhB3A/U; 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 (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41S0f2Ui024043; Wed, 28 Feb 2024 01:36:37 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=HVhB3A/UjkQVENTTt+dMkYnvpJEpm6AqT2BT uJoYV24SK2D/GB/AxovI3UUkjvyA4TDsWotkXR55mJnPaZ68TwRJ36+hzZdcUVVk KcBgRBdnx+YSqDkUqK74aoolQDd5/jKNka/B8x9bCsaFK6MjUZS+j/cEEeCREnLx eVxVv/D+xrv56RdRtSM7kz/vqsQykJwEZBp3+b9FN9X9K23dKjc8xJbwnJE5BCm2 FRnpxG+HDOx4lyl5xzszOwW6J+xZBuVLLNYlRVPCQhd1ZOTPNksUaSaTORBoCyka SsOH8pYtft9Qw1jDAdjw5IlRI/pcxxu9O05jONyxvUIfM06ICA== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3whp65rmgd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Feb 2024 01:36:37 +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 41S1aau5025319 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Feb 2024 01:36:36 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; Tue, 27 Feb 2024 17:36:35 -0800 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v18 25/41] ALSA: usb-audio: Do not allow USB offload path if PCM device is in use Date: Tue, 27 Feb 2024 17:36:03 -0800 Message-ID: <20240228013619.29758-26-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240228013619.29758-1-quic_wcheng@quicinc.com> References: <20240228013619.29758-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: nalasex01b.na.qualcomm.com (10.47.209.197) 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: HSlQPESYFu2y2bAuzG2iAMIegpzjryX1 X-Proofpoint-ORIG-GUID: HSlQPESYFu2y2bAuzG2iAMIegpzjryX1 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-27_11,2024-02-27_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=999 clxscore=1015 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2402120000 definitions=main-2402280011 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792105522372009536 X-GMAIL-MSGID: 1792105522372009536 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: