Received: by 2002:a05:7208:9594:b0:7e:5202:c8b4 with SMTP id gs20csp2295770rbb; Tue, 27 Feb 2024 18:19:56 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWZ4CtG5OKJItz5MJ3R/dvsv2QAy4yQo7zwBjq6sJhaOU0SBdiu9Rz3heiu9FtU5fb7dweHZaCxJoaCj/DD2S79WJEnZNaO1HvvOrhWBA== X-Google-Smtp-Source: AGHT+IG+j6xD3kvkTtgipTUnIn9nqydJxU6jNfRu8Jot7FQ71c2N2T8VlQBpVaZU0P9r0tCxHOyf X-Received: by 2002:a05:6870:b016:b0:21e:a892:fc17 with SMTP id y22-20020a056870b01600b0021ea892fc17mr13370216oae.17.1709086796383; Tue, 27 Feb 2024 18:19:56 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709086796; cv=pass; d=google.com; s=arc-20160816; b=zDnd/X+x0woWOLspfNhq4EypGJ9+LOj1BtIETu/WSt4jd7YaDJBJ/jS6Opq5GJRXv+ GtmQsiCEAA7vg6Bgefpraumt68bj4Xb5akNLAwFM71x/TB2H7ZrpxoyF5b2jplQ46Mfl 3wYzldqjguI8mC8VWWJfWyJs5f+k44D3AE37i46VOmR9aqqasIo3yXTq/UJ/s49EADU6 VDFAVnROgjo0HT4dB3dbogGYvUOD/oz84G4pk/VNBm+oWFVZDGkhAoAlzZdSy3Xkp5E8 Y4XUzzyH0f/rKKQfnp/+azBDDxZiIKr5zJpFvddNTi3q6LXXDbeVBKtM8akigQZDnzgT Majg== 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-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84364-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. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id y3-20020aa78543000000b006e45fbc402asi6394394pfn.373.2024.02.27.18.19.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 18:19:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-84364-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; 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-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84364-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 304EFB27858 for ; Wed, 28 Feb 2024 01:47:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C579853811; Wed, 28 Feb 2024 01:37:07 +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 Content-Type: text/plain 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 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: