Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1222224pxu; Thu, 17 Dec 2020 05:18:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJxBkRzuxsvEKunvxp0iIQGW7PNB+gVVFxh9R2fuQjJH1d5FjEGyugX9cApQWccMX1QuBW+u X-Received: by 2002:a17:906:dc1:: with SMTP id p1mr35959299eji.9.1608211126401; Thu, 17 Dec 2020 05:18:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608211126; cv=none; d=google.com; s=arc-20160816; b=HhTOytXe8w6wAhGSL5jt/tK+SjqAMrOay+SsK3VVc74RQDPgsnnjw2zDk14aUNSccM ig2tvk3aCEshqaYXCjX0+C52wilbIgDgF+/szsYkI2OQeNWyAqLr3cumKs/gjSk5c+RJ EKYJtmJOsNIAfhhzsNTGcmHtCfVFyJ4gMaZqb7q0uFxFjHYLSSIr9r7C4a8S7mNRkPHo MkNvg+QR1Zbrm5/wnt4awEi/QOWnKBmj4TOSNpAB+pOLg2xuza8owKdVgbWrLHXCCUAX sDHWEql0YB00pExUwdtW37zv2X84O83SBYY+1qtqorjdpVRlkThlYr5oO01q1kUUlqCx PT+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=LZKbUafPeuQov+HIZ4OeOAVqPXc+101ssRAdpyGpviM=; b=qzo6sMKL7Km5wEyghHg2wR4Mv32+d+dKwBVpRQL/c5v0PO6/5L+bjQMlriqlepyKK4 LUgnDp0pgjw4eJeYPUxL83d5QNq1rA1bA73mFwf3Fd748TRt+fykmxhE4T+CNYls6YIZ rXsVqSos9bwA74qdE/vc8gn02ozD1liDgQ6ZNyGIpf+beS7x+e6f5FH6vmlgF3LeZwjh gWeJnmfbAFHTeFBO+OGQHXrFfrXr7751eo9ylq7OUfXhK+VC6zZXw/bB2nj0/Gc06G9W gQnve9srz9eqXACtCfAeXy+FxRq7pd9lLxyP8GDj/OUJISfwCE8S8rZtdL04XDrssgnM JM+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@metafoo.de header.s=default2002 header.b="FLw/WgjB"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=metafoo.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v1si2995856ejd.451.2020.12.17.05.18.22; Thu, 17 Dec 2020 05:18:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@metafoo.de header.s=default2002 header.b="FLw/WgjB"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=metafoo.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727185AbgLQNRg (ORCPT + 99 others); Thu, 17 Dec 2020 08:17:36 -0500 Received: from www381.your-server.de ([78.46.137.84]:35830 "EHLO www381.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726291AbgLQNRf (ORCPT ); Thu, 17 Dec 2020 08:17:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=metafoo.de; s=default2002; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: MIME-Version:Date:Message-ID:From:References:Cc:To:Subject:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=LZKbUafPeuQov+HIZ4OeOAVqPXc+101ssRAdpyGpviM=; b=FLw/WgjBHrnMZ99/KqVfG9+LKe 4UaGozdGYtcfUGeVe/Ez+4K8cD4wLXRRWz9bgDipWEA0ySL7UMMj1FMclFWMHXc7wpvg3yr5PvwiN ypXAL0A1mp3/2lxVzYz4PM4d/5i2fy/4D4iyW0bZ9JqdtUWrGiAJKs8CCMNxNxFeZOBy4WDeudha/ RrCkRdofm+Vjt5R/FWcio7j5+dJYsMoXIqJYV+D9vqWJetWC9nMZnSmQGlHtUpmaTMW3d8bkS9nbu q+E7BXtBHrZVauvBj2YH5Lw4G3arEC8PZiYPD+MXBRW5++IyRowWvT5PW9q//CnLUy3szEO9Mi5Gv wMOmjZvA==; Received: from sslproxy06.your-server.de ([78.46.172.3]) by www381.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92.3) (envelope-from ) id 1kpt9F-0001yb-Bx; Thu, 17 Dec 2020 14:16:49 +0100 Received: from [62.216.202.54] (helo=[192.168.178.20]) by sslproxy06.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kpt9F-000D9s-4W; Thu, 17 Dec 2020 14:16:49 +0100 Subject: Re: [PATCH v1 ] ALSA: core: memalloc: add page alignment for iram To: Takashi Iwai Cc: alsa-devel@alsa-project.org, gustavoars@kernel.org, linux-kernel@vger.kernel.org, shengjiu.wang@nxp.com, tiwai@suse.com, pierre-louis.bossart@linux.intel.com, xiang@kernel.org, Robin Gong , akpm@linux-foundation.org References: <1608221747-3474-1-git-send-email-yibin.gong@nxp.com> <05c824e5-0c33-4182-26fa-b116a42b10d6@metafoo.de> <70074f62-954a-9b40-ab4a-cb438925060c@metafoo.de> From: Lars-Peter Clausen Message-ID: <8e103a2b-1097-6d54-7266-34743321efac@metafoo.de> Date: Thu, 17 Dec 2020 14:16:48 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Authenticated-Sender: lars@metafoo.de X-Virus-Scanned: Clear (ClamAV 0.102.4/26019/Wed Dec 16 15:36:02 2020) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/17/20 12:06 PM, Takashi Iwai wrote: > On Thu, 17 Dec 2020 11:59:23 +0100, > Lars-Peter Clausen wrote: >> On 12/17/20 10:55 AM, Takashi Iwai wrote: >>> On Thu, 17 Dec 2020 10:43:45 +0100, >>> Lars-Peter Clausen wrote: >>>> On 12/17/20 5:15 PM, Robin Gong wrote: >>>>> Since mmap for userspace is based on page alignment, add page alignment >>>>> for iram alloc from pool, otherwise, some good data located in the same >>>>> page of dmab->area maybe touched wrongly by userspace like pulseaudio. >>>>> >>>> I wonder, do we also have to align size to be a multiple of PAGE_SIZE >>>> to avoid leaking unrelated data? >>> Hm, a good question. Basically the PCM buffer size itself shouldn't >>> be influenced by that (i.e. no hw-constraint or such is needed), but >>> the padding should be cleared indeed. I somehow left those to the >>> allocator side, but maybe it's safer to clear the whole buffer in >>> sound/core/memalloc.c commonly. >> What I meant was that most of the APIs that we use to allocate memory >> work on a PAGE_SIZE granularity. I.e. if you request a buffer that >> where the size is not a multiple of PAGE_SIZE internally they will >> still allocate a buffer that is a multiple of PAGE_SIZE and mark the >> unused bytes as reserved. >> >> But I believe that is not the case gen_pool_dma_alloc(). It will >> happily allocate those extra bytes to some other allocation request. >> >> That we need to zero out the reserved bytes even for those other APIs >> is a very good additional point! >> >> I looked at this a few years ago and I'm pretty sure that we cleared >> out the allocated area, but I can't find that anymore in the current >> code. Which is not so great I guess. > IIRC, we used GFP_ZERO in the past for the normal page allocations, > but this was dropped as it's no longer supported or so. > > Also, we clear out the PCM buffer in hw_params call, but this is for > the requested size, not the actual allocated size, hence the padding > bytes will remain uncleared. Ah! That memset() in hw_params is new. > > So I believe it's safer to add an extra memset() like my test patch. Yea, we definitely want that. Do we care about leaking audio samples from a previous application. I.e. application 'A' allocates a buffer plays back some data and then closes the device again. Application 'B' then opens the same audio devices allocates a slightly smaller buffer, so that it still uses the same number of pages. The buffer from the previous allocation get reused, but the remainder of the last page wont get cleared in hw_params().