From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-480203-1516750555-2-9616282610656586715 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no ("Email failed DMARC policy for domain") X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='uk', MailFrom='org' X-Spam-charsets: plain='UTF-8' X-IgnoreVacation: yes ("Email failed DMARC policy for domain") X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1516750555; b=VTgg3x+/FjfPBA9BPxGHJ8+55GrXoSM4/uUtyahHHwW3Tvo B5r22QwdKgDucIOz8KQUULpQ7QoS09TC5S/vnTXDBTUQ/NdFMkeQXyqu81AXQPyZ O1eSPu46bs2ehQqObmmz3+OJA4hpiovn/U1m1bjEQgLSj3aOVdB8JLHjDIlseqBc +Mvj5pC6PttV2DCZjVUUVOGex9VAGaXcj1IO9qlWZHsVdTUdxYNtMEg5iU63SaQD FLeAs6M1qx3f5i5b8bjz71jx+HC8qkoLn6s6asFirQRhNXo4rcrU0eXvtGvHyZAS 1zKGzCrKkqHBOvTsxJTYlrihksTXk0efX1dtjWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=message-id:subject:from:to:cc:date :in-reply-to:references:content-type:mime-version :content-transfer-encoding:sender:list-id; s=arctest; t= 1516750555; bh=SYXGOvU5eZBpjOmqq2yps8ZSoSnDSKsIHcgAF2i0sQ8=; b=r AEyKalhYNoW8oUygFuv8zlOxZ9JEoTN8L9zdoAI5IoLP2vJamBZ3CEPr9qp+o7i2 Pi2AHzhg9iMeI3v8xv24bh2fzMZEvYsqARpk4EEJtnfy02KgFVmbwwUtI8RZbwLV 7XCFzyth6Lx1cFJZwGL6DZpsW/GoSL4PmaPfPsf1P9Im41vK8Cb+UBbHsUTQ9Zyq WyvP4J/m6kBgf+AlVpJhL6UmWNxElhIncnZSE4F6ZC44ZhPcZjhDOA7eqIPsxCF3 QvRZo+7VTaQrbjmpK4rzjCNjYzbM7i8SlpRAVVr3wCYgWq0g9/x+/K+OCiDhtElF 3M5EBka2V+b1+cw31Qs0g== ARC-Authentication-Results: i=1; mx4.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=codethink.co.uk; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=codethink.co.uk header.result=pass header_is_org_domain=yes Authentication-Results: mx4.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=codethink.co.uk; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=codethink.co.uk header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751901AbeAWXfx (ORCPT ); Tue, 23 Jan 2018 18:35:53 -0500 Received: from imap1.codethink.co.uk ([176.9.8.82]:42726 "EHLO imap1.codethink.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751807AbeAWXfx (ORCPT ); Tue, 23 Jan 2018 18:35:53 -0500 Message-ID: <1516750548.3417.34.camel@codethink.co.uk> Subject: Re: [PATCH 4.4 20/87] ALSA: pcm: Allow aborting mutex lock at OSS read/write loops From: Ben Hutchings To: Takashi Iwai Cc: stable@vger.kernel.org, Greg Kroah-Hartman , LKML Date: Tue, 23 Jan 2018 23:35:48 +0000 In-Reply-To: <20180115123351.309626066@linuxfoundation.org> References: <20180115123349.252309699@linuxfoundation.org> <20180115123351.309626066@linuxfoundation.org> Organization: Codethink Ltd. Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Mon, 2018-01-15 at 13:34 +0100, Greg Kroah-Hartman wrote: > 4.4-stable review patch.  If anyone has any objections, please let me know. > > ------------------ > > From: Takashi Iwai > > commit 900498a34a3ac9c611e9b425094c8106bdd7dc1c upstream. > > PCM OSS read/write loops keep taking the mutex lock for the whole > read/write, and this might take very long when the exceptionally high > amount of data is given.  Also, since it invokes with mutex_lock(), > the concurrent read/write becomes unbreakable. > > This patch tries to address these issues by replacing mutex_lock() > with mutex_lock_interruptible(), and also splits / re-takes the lock > at each read/write period chunk, so that it can switch the context > more finely if requested. [...] > @@ -1414,18 +1417,18 @@ static ssize_t snd_pcm_oss_write1(struct >   xfer += tmp; >   if ((substream->f_flags & O_NONBLOCK) != 0 && >       tmp != runtime->oss.period_bytes) > - break; > + tmp = -EAGAIN; >   } > + err: > + mutex_unlock(&runtime->oss.params_lock); > + if (tmp < 0) > + break; >   if (signal_pending(current)) { >   tmp = -ERESTARTSYS; > - goto err; > + break; >   } > + tmp = 0; >   } > - mutex_unlock(&runtime->oss.params_lock); > - return xfer; > - > - err: > - mutex_unlock(&runtime->oss.params_lock); >   return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; >  } [...] Some of the "goto err" statements in the loop are conditional on tmp <= 0, but if tmp == 0 this will no longer terminate the loop. Is that intentional or a bug? The same for snd_pcm_oss_read1(). Ben. -- Ben Hutchings Software Developer, Codethink Ltd.