From patchwork Mon Feb 11 19:51:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brendan Shanks X-Patchwork-Id: 10806743 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 40EAC13B5 for ; Mon, 11 Feb 2019 19:52:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 31ECB2B168 for ; Mon, 11 Feb 2019 19:52:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 25BD02B1D8; Mon, 11 Feb 2019 19:52:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7816D2B1C7 for ; Mon, 11 Feb 2019 19:51:59 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id F0FA3267483; Mon, 11 Feb 2019 20:51:57 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 3CEDD26751A; Mon, 11 Feb 2019 20:51:55 +0100 (CET) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by alsa0.perex.cz (Postfix) with ESMTP id 7A2BD267468 for ; Mon, 11 Feb 2019 20:51:52 +0100 (CET) Received: by mail-pl1-f193.google.com with SMTP id y10so67662plp.0 for ; Mon, 11 Feb 2019 11:51:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=teradek-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=6s3RxTtB/xFXyscsUotO5lwzQPhvIG7c666YJ5teVPA=; b=F1SDKStHoDtVnMZFzmy90RRVX+W8vSEchq/VBaXOnayh3YPwMhkzqnm9ZH5Lk+QYJH U0lTe65C7cRcJeGkwQeYPnSVbvBalqDUa8P/CdFDfcFhF8MUobh4Kzn/V4pTPbsEHtNJ 1JmoV1qiL+NvYVpwaejjeVBpY+tC//hQsgnCAkT0EB25bNQD9o5Jl4gw9UHBPtTm70JG AAXdhD4dSuYIL8kOqwoGWfAzFir7eVMUPqjIVWCMVf71bmvFfzoivEDBq0jdz0IvgZ+6 dqybV5h66wxYekLvtS031ERVIMXvdZRVAPitXbrxy6MRKc2fKlsJuUYaag9kzdksLkSU 4ZnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=6s3RxTtB/xFXyscsUotO5lwzQPhvIG7c666YJ5teVPA=; b=nAmpPWZIotA499uO814WJ2G2mik5l358OGFJbB+VO6cnAWGGgkGmpat5zhozq/k5YW K09Wk0nFIguC17BiuFlbnUVHMwnOwCxdPJQ8i9yAipDtsPHoNQTNEqQe1MSKNY29FeHR pHFbiC9zMPV7RxqTLMIeh2umbNZDEkMfXbhDN3IX5TiAqvszJm+YCWRYcIy45d5pX2d7 gws+GSKq1k8skqVzuFnO9+74W9eemZcjG2sGlj6N/H3lSIDHfyPlo0fq0VSeeGZyb4+l wbwK8CT/XDOrpPD4SO3WIil8rmogbgpWPTYX/zOZaR7s5RvFCdJ2pI+35OHhHCIC52SK ONxg== X-Gm-Message-State: AHQUAuZsIKV6aqFucHNCVbQRzsTOQj+SeKTXSMgvCqav90Zmh83JhYaG olPt43Z4x/iBmGvGQ4O34ju1xw== X-Google-Smtp-Source: AHgI3Ib98W3dNiFA/aKwWXAzxLxMg0uFBTm+SJIuaeqYG5rsjm/9ZjrHtqThFEzsfvRvvDc8Q7pVTg== X-Received: by 2002:a17:902:2867:: with SMTP id e94mr39664679plb.264.1549914711137; Mon, 11 Feb 2019 11:51:51 -0800 (PST) Received: from brendan-desktop.teradek.net (wsip-70-165-42-2.oc.oc.cox.net. [70.165.42.2]) by smtp.gmail.com with ESMTPSA id m13sm13728489pfi.32.2019.02.11.11.51.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Feb 2019 11:51:50 -0800 (PST) From: Brendan Shanks To: Takashi Iwai Date: Mon, 11 Feb 2019 11:51:26 -0800 Message-Id: <20190211195126.29651-1-brendan.shanks@teradek.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Cc: alsa-devel@alsa-project.org, Brendan Shanks Subject: [alsa-devel] [PATCH] pcm: dshare: Fix overflow when slave_hw_ptr rolls over boundary X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP In snd_pcm_dshare_sync_area() when 'slave_hw_ptr' rolls over 'slave_boundary', the wrong variable is checked ('dshare->slave_hw_ptr' vs the local 'slave_hw_ptr'). In some cases, this results in 'slave_hw_ptr' not rolling over correctly. 'slave_size' and 'size' are then much too large, and the for loop blocks for several minutes copying samples. This was likely only triggered on 32-bit systems, since the PCM boundary is computed based on LONG_MAX and is much larger on 64-bit systems. This same change was made to pcm_dmix in commit 6c7f60f7a982fdba828e4530a9d7aa0aa2b704ae ("Fix boundary overlap”) from June 2005. Signed-off-by: Brendan Shanks diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c index 2bb735fe..f135b5df 100644 --- a/src/pcm/pcm_dshare.c +++ b/src/pcm/pcm_dshare.c @@ -121,7 +121,7 @@ static void snd_pcm_dshare_sync_area(snd_pcm_t *pcm) */ slave_hw_ptr -= slave_hw_ptr % dshare->slave_period_size; slave_hw_ptr += dshare->slave_buffer_size; - if (dshare->slave_hw_ptr > dshare->slave_boundary) + if (slave_hw_ptr >= dshare->slave_boundary) slave_hw_ptr -= dshare->slave_boundary; if (slave_hw_ptr < dshare->slave_appl_ptr) slave_size = slave_hw_ptr + (dshare->slave_boundary - dshare->slave_appl_ptr);