Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2235390imm; Thu, 18 Oct 2018 11:08:57 -0700 (PDT) X-Google-Smtp-Source: ACcGV61LHgplC95QQN6IoSKUr3P90GZOfob35k/w0v9NIbixw5pZpMUcmo85JnM7EM6577yDEGtA X-Received: by 2002:a63:b709:: with SMTP id t9-v6mr28146759pgf.366.1539886137876; Thu, 18 Oct 2018 11:08:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539886137; cv=none; d=google.com; s=arc-20160816; b=DcPyzbs5iZ1qPXqmqQoDsP6seRvLfTvX2ek3rOhGGU/Z9Jb+zi7a7q8kK+MSn3g0N/ Jv+Hj+61e6Gd9gLfIIhx1BfKIm0xupT5HkK2A0Vfae5MaoprdcU7RUT+CWSYIZ469IMZ SQkaer3zrFY5uFW83+MQ1MZSQ8gsJMzRw1rwSMj11729M6NBtLHWrHmggkqxGcty57IS EFO+UDWhkLNqIJde3kfP1tfGyn5aADIkaY4ZLqr2phdFy6HK6WN4vfYMEToVwyiBGNMf ckO7b9uczmbqc4UGFsHCjaukS6rkwoTlZRY9SD+CQ1L+5f8ZNAU266pc6jalu7JacmI3 mKMg== 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=vTSmqot34fU8z4mkJeTJSTpl73szzhnzpXR0xV/4HGk=; b=smStg8yLoq1RprUc7pLui7i5Ky+9fEDoK6Gl29NMUVSHNdb+fKFnn4Cl1XLBxrDw2f vMq5chkjwZm/xEY+bSP/l71M1g58b9O+C2Cg0f1zR4Ix/lp1F759r7fvfnenA8i/Unuz fxb7oAPWyyvH82T1EGIjDf2k1d2cI+pGi/pXIRROZtiFIFsOktfEbhbgsRnighrN9iUV SWLcdTxCg7BVLrNgizDXBUorVHS3jyTLBpdTsptRsD9S4mv9Mm12h0VsOalolgNRxrvE Kj4sTonMLR3JOJxmc2dPRx8u3RXF0fy1ofU6jExF07+iXKLA4lD6Gg+32+i+bo5UgO+w ZbmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BwKvhTeh; 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 d187-v6si22689983pfa.20.2018.10.18.11.08.42; Thu, 18 Oct 2018 11:08:57 -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=BwKvhTeh; 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 S1730456AbeJSCIa (ORCPT + 99 others); Thu, 18 Oct 2018 22:08:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:57516 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726822AbeJSCI3 (ORCPT ); Thu, 18 Oct 2018 22:08:29 -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 76E5221476; Thu, 18 Oct 2018 18:06:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539885982; bh=sO3vaqmTnjG8xaBbATc1TUY1K1gK2EdzAE5WeX+dPpo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BwKvhTehXWfYAlWONXfQ/oz8I963a+MtXEMVqtOaqho/T/H3wUifHG1Hckm381/KE hWvFN+kwuWT6UpL8qQt0Uh0Sa48JzKKFToNeKuns33gKqS+B0jkM4xarwrk5IvV4IZ 0WeKQNi795up961TKlcLuxiHZgXQfO+XmHGMCSLk= 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.4 05/48] sound: enable interrupt after dma buffer initialization Date: Thu, 18 Oct 2018 19:54:40 +0200 Message-Id: <20181018175428.156233663@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181018175427.133690306@linuxfoundation.org> References: <20181018175427.133690306@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.4-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; @@ -377,13 +379,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);