Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp600187pxx; Wed, 28 Oct 2020 12:06:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXZVNNZVD/d92G9J5LE2g0V9IGlu4P432z/cW3RZ+4KZ3asdSMD19B5h0I8dLGKI06l86c X-Received: by 2002:a17:906:a444:: with SMTP id cb4mr574612ejb.416.1603911966763; Wed, 28 Oct 2020 12:06:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603911966; cv=none; d=google.com; s=arc-20160816; b=DGq12mgXu5LuBRwLxIae1lTKDpTv9V0VpqbMLnMFbYZIc4cfda2RzQeqZQR5yqZ9GY wYQF8qMHs31YSTpN/kFM9StJh9NJrQITQPa+4Y+ozwOMCMr6827VcdRVlfJ2Vi9sNhIW CIVgfTPMR5EOrErTwR1oLj2+0MDBHUHmuq7AL0nWeCjTmbS76g2ZNUW/OUo+9fbjWKQN DrpE0G+EdO+4ttFPmiLEr4m+zVV4YazSoOiuW9DpcghgggZGYfAHVIGhuTYdkqYURcCQ X9Q7b/zJuYuz6rCUQyiU01eQ9M0UTjS2oP+zw2iMDuWpWE2oA2PPV4Ay3x7tyDUu8mLi 1PUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ie1DBq1eQnRTgT2raka3UvADzbbo3s9xEUxjz8Ng/qY=; b=ukUTUzygUY7FJETu3KNJvtrym/tGIRrUFxhufxI0JA7g+KRbtq8CDRUpRtwVJXPtDj 2FzWMYuh4JFxwelrzhtc2PONxgxYVWRgt1g9WCIHFB6mIytXh/c5aZTFfbQJCeVeXqIM MIvCoLAq6lag/fgFb2athx0w9uwIsUljGNyojdYAmWzdcw6/COF6hrCWOVlJs8opG597 s/uHlS9zj1xoldBCqAVclBnSspkIDUpMZn/FVnZAjDPG/D4xkM8FzsvT5jiDBGaoi0wV ndIPwBU4xeq+0F3L09+O9yleaWc0lEYVNykN5L1FOhUgV1q8KK4f3R9cobxo2H5+MLZE /eSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JquJ6FN9; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y1si30775edp.57.2020.10.28.12.05.44; Wed, 28 Oct 2020 12:06:06 -0700 (PDT) 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=@kernel.org header.s=default header.b=JquJ6FN9; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1826252AbgJ0SSF (ORCPT + 99 others); Tue, 27 Oct 2020 14:18:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:60632 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754288AbgJ0OLW (ORCPT ); Tue, 27 Oct 2020 10:11:22 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 95B34218AC; Tue, 27 Oct 2020 14:11:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603807881; bh=i9oJ/VJPFfBpsXI5rxMAoa8OBIlBSDzFD9FLvmBU3xs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JquJ6FN9f86ZFAJzdBAAUZiKry4Q83ODJG9682GNuwChA2KCWMIOw/k0z788z6OSt b7fFb/uVi2bf5wgmMM79uhQQGu82q0NKv7PHj/TRfKsMOq8hIYDPzFslgyco8Ypu78 CNJGT0gn055o2bTpHfnTzWmbGOlo39vBFcR2JPbU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Machek , Takashi Iwai , Sasha Levin Subject: [PATCH 4.14 068/191] ALSA: seq: oss: Avoid mutex lock for a long-time ioctl Date: Tue, 27 Oct 2020 14:48:43 +0100 Message-Id: <20201027134912.996324616@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027134909.701581493@linuxfoundation.org> References: <20201027134909.701581493@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Takashi Iwai [ Upstream commit 2759caad2600d503c3b0ed800e7e03d2cd7a4c05 ] Recently we applied a fix to cover the whole OSS sequencer ioctls with the mutex for dealing with the possible races. This works fine in general, but in theory, this may lead to unexpectedly long stall if an ioctl like SNDCTL_SEQ_SYNC is issued and an event with the far future timestamp was queued. For fixing such a potential stall, this patch changes the mutex lock applied conditionally excluding such an ioctl command. Also, change the mutex_lock() with the interruptible version for user to allow escaping from the big-hammer mutex. Fixes: 80982c7e834e ("ALSA: seq: oss: Serialize ioctls") Suggested-by: Pavel Machek Link: https://lore.kernel.org/r/20200922083856.28572-1-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/core/seq/oss/seq_oss.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sound/core/seq/oss/seq_oss.c b/sound/core/seq/oss/seq_oss.c index 4b78979599131..ade880fe24a41 100644 --- a/sound/core/seq/oss/seq_oss.c +++ b/sound/core/seq/oss/seq_oss.c @@ -187,9 +187,12 @@ odev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) if (snd_BUG_ON(!dp)) return -ENXIO; - mutex_lock(®ister_mutex); + if (cmd != SNDCTL_SEQ_SYNC && + mutex_lock_interruptible(®ister_mutex)) + return -ERESTARTSYS; rc = snd_seq_oss_ioctl(dp, cmd, arg); - mutex_unlock(®ister_mutex); + if (cmd != SNDCTL_SEQ_SYNC) + mutex_unlock(®ister_mutex); return rc; } -- 2.25.1