Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp5470857imm; Tue, 16 Oct 2018 10:43:50 -0700 (PDT) X-Google-Smtp-Source: ACcGV61HgzNrWbVeYj4Dk3lk/0tcABsFZWzo+1itQsU298VmvKiFWsmZDnm/F7uHr7Y4HJgaWCi+ X-Received: by 2002:a63:8343:: with SMTP id h64-v6mr19956844pge.368.1539711829936; Tue, 16 Oct 2018 10:43:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539711829; cv=none; d=google.com; s=arc-20160816; b=o+j1e2RwpxDNJGaAXQsZO4ExOvQYAXDy0+QWrwPqFmT3k5ZiWITBpwXNSkoiEXf/lP wlrl5c6BIbhDDCzbBa74qj3ni0ct6te7TMMc5yzgrcRVKBrirBzFxwQ0esLegIxt95Wm cEEFqBV93Qwhaki4gSIM69pAOZtDLdcAIMpATy0Kg7jISQXqJzT0QHHpeS1f9x/+X+WM hBO/GdFZKgrbcdj1YVrhNWdp/a4P0hldBsBH5Wrr4Gos4FUhv7lGITipmJmU3M9k/4mt HhO9oCefLxjQHlW70lQSZZ7cwPJ4cL0eTiAE6bElQRbXX9Z9eDSrQm9QLqcbh3ypbxnc avng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=zExiuTSo+3ZDql+KVyW/Cx9lFWC278KQkw6w+D3ssS0=; b=PLb5OY1ueklMcEkMBOHDhzyHt1X7QQ27MZ/96THVfR7YlvVpFPHDvCTSRX10DRUGrw O9Cb3TN9Aw5ST38WZBF8c0TAn1Le69nUGD6mQRTgCEQAUoVFTFtI145O3zB4Fp69rKIN dM6JtPW+vGxcmRayOVuAr6f0tCItWyKqGXqyPED8v8RSpmva4Vcog7vzNdqfMOZcMzdn saPhPgY5Lo3iApoIHfbbKHXzTkztMZQfEzZpbNoO3lImlnpFT6cO/nLCKO4eEK5BOJ2/ Yjnf9l7C5dOGyWdITrbmAdg8nDYWE/2f34xspL++eZ5PxE3WslEN2wyrRrYuZXJl2IeW TM0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="EEhYW1s/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a7-v6si14730112pga.322.2018.10.16.10.43.34; Tue, 16 Oct 2018 10:43:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="EEhYW1s/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729088AbeJQBFf (ORCPT + 99 others); Tue, 16 Oct 2018 21:05:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:49042 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727280AbeJQBFe (ORCPT ); Tue, 16 Oct 2018 21:05:34 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 D4B3D2098A; Tue, 16 Oct 2018 17:14:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539710051; bh=3mKniZz0VdZ52+ka5ehjdSjAZutOgqjFf+NSzSQf40o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EEhYW1s/sZftTql5FW7gptcHfmLRT0v8BxVVk1zRG/6roUD59wMWZxvPEngUgSwqH wONN9lcxsVlblx0xfg8M70MngmHf0NhzlF6PhTICw4D6JOYrOOGNFpMPYrY9jZpiSL piWOi85270qlOb9HeYGra7rUNzzTNHro4bo4jCbc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Takashi Iwai , Yu Zhao , Mark Brown , Sasha Levin Subject: [PATCH 4.18 089/135] sound: enable interrupt after dma buffer initialization Date: Tue, 16 Oct 2018 19:05:19 +0200 Message-Id: <20181016170521.518322703@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181016170515.447235311@linuxfoundation.org> References: <20181016170515.447235311@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Yu Zhao [ Upstream commit b61749a89f826eb61fc59794d9e4697bd246eb61 ] In snd_hdac_bus_init_chip(), we enable interrupt before snd_hdac_bus_init_cmd_io() initializing dma buffers. If irq has been acquired and irq handler uses the dma buffer, kernel may crash when interrupt comes in. Fix the problem by postponing enabling irq after dma buffer initialization. And warn once on null dma buffer pointer during the initialization. Reviewed-by: Takashi Iwai Signed-off-by: Yu Zhao Signed-off-by: Mark Brown Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- sound/hda/hdac_controller.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- a/sound/hda/hdac_controller.c +++ b/sound/hda/hdac_controller.c @@ -40,6 +40,8 @@ static void azx_clear_corbrp(struct hdac */ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus) { + WARN_ON_ONCE(!bus->rb.area); + spin_lock_irq(&bus->reg_lock); /* CORB set up */ bus->corb.addr = bus->rb.addr; @@ -479,13 +481,15 @@ bool snd_hdac_bus_init_chip(struct hdac_ /* reset controller */ azx_reset(bus, full_reset); - /* initialize interrupts */ + /* clear interrupts */ azx_int_clear(bus); - azx_int_enable(bus); /* initialize the codec command I/O */ snd_hdac_bus_init_cmd_io(bus); + /* enable interrupts after CORB/RIRB buffers are initialized above */ + azx_int_enable(bus); + /* program the position buffer */ if (bus->use_posbuf && bus->posbuf.addr) { snd_hdac_chip_writel(bus, DPLBASE, (u32)bus->posbuf.addr);