Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp343613pxx; Wed, 28 Oct 2020 06:20:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzN0RMYa3O4N+QMiBUMFnvpNtLjizKR4tJHsEECDV/qIY4orCaJAapUE2cM/6MKgmx6WOqr X-Received: by 2002:a17:906:39d1:: with SMTP id i17mr7310150eje.284.1603891209955; Wed, 28 Oct 2020 06:20:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603891209; cv=none; d=google.com; s=arc-20160816; b=U431AbcqeleCBY/+NlWxr7cLRPmW2/O7WwyNrW0nnuWcJtDQFzbvPdH9W0iClGL0M1 C+MuLDO+FBfjdtHvDa1yqVM270QCTpLDEs3jVslN0cuStoJqtVcPoViJkC6uiLho0Xzo HqTOzpSeX6yYMN/FGdypD1mCnsbqDEFObcNLyfF1xXPzAQl7nxsJAZ6pQHhMU99ieuzf 9ZYdrfEuPDWJrdP8e9Z9HucdDRqmB7GmkyW+cnBcCHWLyenFtdDo5SDY/JF5NKDlRWFQ Z0wYO7dx95EA2DAdE1s+tRhvWYBEWXhr3ZZbLjOYC8T4RyiDSLgdygj/ok1nVF+yKm4R FV/Q== 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=x1QoiOifHvIi68QuZQuCPrMS0F2OBtB0tHB6ulX+vMY=; b=S2l5XUAj91LwvQhwLJ8pRvtKOOKarUciUocX6j8T2rMfQYV59FTknRs0m4T6yqz2LH s9dQ9Dmukxex7CCl3LkY08tPr8xKFXs7/timzuwbRdcy2528cWACKvDQcNbYUgyc0M5T uGY0052UgkEgrIS70ckfheFXtzn0mCR8rf8CYgsMzxXDoNMYTYFnoRe5nRYwPyvhC2rJ 9KT6l8P/tzZL0YX22j1mbxMkbbs7n7C+mozmYiKE5S0CqHDi830pS+hPdkVaBKQC4Svo siOLqmq1T8nRnE4dkI45oq04qw910pCedAxIO+oBiNfnGfhCOLwzdYCpGHue6nHC3HGp X5ZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=NNp4sAbi; 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 p19si2741759edu.169.2020.10.28.06.19.46; Wed, 28 Oct 2020 06:20:09 -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=NNp4sAbi; 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 S1800475AbgJ0Pfy (ORCPT + 99 others); Tue, 27 Oct 2020 11:35:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:50212 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1799698AbgJ0Pcz (ORCPT ); Tue, 27 Oct 2020 11:32:55 -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 AFF8222202; Tue, 27 Oct 2020 15:32:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603812774; bh=1NVx5rLyal8hpuvHe85OB/FAzDsAwKW3xaNGwbHZY2E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NNp4sAbiXOdR5InDqzILYYesInpMxOGQOLw7/FFl2SigRuSyWNdHCc3CZPy1CfaFd 5qZfwEaIXz2HXb+9gNBaSW0312JpXoFHpZ2pvSXWtOC9JQ424Z29juufxXXSSjChsp zbsby4MkFB3k9kdRxTuMq85axnTYhoRzaZjda0jo= 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 5.9 308/757] ALSA: seq: oss: Avoid mutex lock for a long-time ioctl Date: Tue, 27 Oct 2020 14:49:18 +0100 Message-Id: <20201027135505.003866131@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135450.497324313@linuxfoundation.org> References: <20201027135450.497324313@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 c8b9c0b315d8f..250a92b187265 100644 --- a/sound/core/seq/oss/seq_oss.c +++ b/sound/core/seq/oss/seq_oss.c @@ -174,9 +174,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