Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3518797pxf; Mon, 15 Mar 2021 11:20:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyUs1zoIgdTLqyaT/+2T0gFN63/QxmiAWY2xhrONl2oJtpgkh1hLK2n9scBr39sQnz0CXIo X-Received: by 2002:a17:906:8593:: with SMTP id v19mr25225207ejx.32.1615832430094; Mon, 15 Mar 2021 11:20:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615832430; cv=none; d=google.com; s=arc-20160816; b=F/r7wFtphVV3tw++QtTHn5Ouxb3GAJL4ykv+VQLtHZWYy5ApF4bmk99nqbUclUhx73 D7VP0uYzaNsWS/eiTOG8umvHaj2dmyzaNosSdFBVUjKHQADZGnXcBoFYtWrJdGThcJK3 UT9w6TmPhCU0DWWFIGbJV9XE1Btv+LaSoz9O/dKUN1YMmpYrrZl3TXcne/+bfS6e9Xtg D01Yi/OA7W4y1ms6+D7kWyWOThx4xZ6g34QEF7uIeh2TNP1BiHjOMFn6b/UYGZoYky6I jh+C2bpS4QbM964Mh1WWBF5jZn5ju3lyiyXFof23PwNRnQL/OjqF8ZMyY5T+2Muz8HRa 5qZg== 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=NcaVCsaDw3Quy0pwKXL9381dB3d9Vxgq8i8OPnFgzuU=; b=M7TmJQ0Ev7mFanm7XgQcIun71PN4pL8VCSvYIo72XkZCDEH7PpF4AsWs9k0jSo9ozD E9N7loofKX7OH6ThvZhPv7ZnLwrTj2DsUeaOh0jTBPbWOokagr9o2N0V6C0CKuhaJTzk Btjsvp5B7qH+YyzWF7+MOGYOW/JBi7gDeV9CHUJXiovSig+1ftG0KZS22bgYd7AtNLLI IBUPxq71laAjc+rZiR2WW5TVVciq4HoN+JrLw9/y827m0xcD+jwBD4YcevRHhWLx/SrC YiqoritFPXjd2z5uoNEunxWlTJNAKzVNdXMy8HvqaYpnuGBzFXVic/wfUY8uo4w5XFPw SVnw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ELbJ7OzM; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ss27si11698919ejb.322.2021.03.15.11.20.07; Mon, 15 Mar 2021 11:20:30 -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=@linuxfoundation.org header.s=korg header.b=ELbJ7OzM; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237227AbhCOOR3 (ORCPT + 99 others); Mon, 15 Mar 2021 10:17:29 -0400 Received: from mail.kernel.org ([198.145.29.99]:37500 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232728AbhCON7h (ORCPT ); Mon, 15 Mar 2021 09:59:37 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 62E5664F00; Mon, 15 Mar 2021 13:59:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1615816758; bh=IhRo2aG6u3S+g0gy0hObN/Dzc3l7rDISghhTeGSH9tQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ELbJ7OzMFvnqKlJULWOQpouZ85h94a5A1sSc3RBsjBDZWyQaypn1KlckBiLyw44DK BRxE4J8ktzsbG1CKqKEpogwcTBSk8e0GB3oci8MTe7uEuN6JEjnfwLeYdG1zTaDxSk DCCBiItBt1a44wQW5ki83EcExcY9ZTdL7tdGpk/o= From: gregkh@linuxfoundation.org To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Takashi Iwai , Abhishek Sahu Subject: [PATCH 5.4 089/168] ALSA: hda/hdmi: Cancel pending works before suspend Date: Mon, 15 Mar 2021 14:55:21 +0100 Message-Id: <20210315135553.303747535@linuxfoundation.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210315135550.333963635@linuxfoundation.org> References: <20210315135550.333963635@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: Greg Kroah-Hartman From: Takashi Iwai commit eea46a0879bcca23e15071f9968c0f6e6596e470 upstream. The per_pin->work might be still floating at the suspend, and this may hit the access to the hardware at an unexpected timing. Cancel the work properly at the suspend callback for avoiding the buggy access. Note that the bug doesn't trigger easily in the recent kernels since the work is queued only when the repoll count is set, and usually it's only at the resume callback, but it's still possible to hit in theory. BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1182377 Reported-and-tested-by: Abhishek Sahu Cc: Link: https://lore.kernel.org/r/20210310112809.9215-4-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/hda/patch_hdmi.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -2382,6 +2382,18 @@ static void generic_hdmi_free(struct hda } #ifdef CONFIG_PM +static int generic_hdmi_suspend(struct hda_codec *codec) +{ + struct hdmi_spec *spec = codec->spec; + int pin_idx; + + for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { + struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); + cancel_delayed_work_sync(&per_pin->work); + } + return 0; +} + static int generic_hdmi_resume(struct hda_codec *codec) { struct hdmi_spec *spec = codec->spec; @@ -2405,6 +2417,7 @@ static const struct hda_codec_ops generi .build_controls = generic_hdmi_build_controls, .unsol_event = hdmi_unsol_event, #ifdef CONFIG_PM + .suspend = generic_hdmi_suspend, .resume = generic_hdmi_resume, #endif };