Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2422254imj; Mon, 18 Feb 2019 05:50:13 -0800 (PST) X-Google-Smtp-Source: AHgI3IZfRHUAX2dDY913IaCcMS9ZSPfA46iN9xp40AvL7JQXLJ+BPawrZ9q7owHVSYhEXS+gyDzP X-Received: by 2002:a63:535c:: with SMTP id t28mr19189376pgl.128.1550497813765; Mon, 18 Feb 2019 05:50:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550497813; cv=none; d=google.com; s=arc-20160816; b=nfZx+NIRLI+AZiI7HFvYtIogE0op8mJBy8nWLRDT6kD7+FtanLq2c/xUNAptVlKn97 In+pXzUsc4SY5OE5SA1jtbJpHhiUMfffTGnoG2Wx+wJQJYSX5lVrCcXDeYYAdWt3OJ2f PImYPv5FKQQ+5RTm8Kcl5if4rLWzS8P+nyV4MwUHJinkugUSHzMp5j52WQtWOICSxlOq 2tcSc+yTLrM4VHcttp7KRRaGg+fOnopK0AxXSMyZnFLxwd+eqgKGXpGi1YgdE8v2rbk1 uIR/3FN+lT0QbdsiSyq2XMwGDrrwmavTVExPtGqrRerO4dX9LpaRqvBCNgX++atoHWnJ DsgQ== 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=NqHCQaKq0SVmjfTK4OSQYOsaTSNrGGbwGklBeD4mtLU=; b=ic9osEh595fB6MeYw/kio+cwPwtH0Cs3M0cTbSgMlhX8n2dwOHzSu9/KsPnO3/jC0h /OkOqSL/n+/6JV68zjMHoSIjXkCEYh9jHcjrTxFBtsDuzoQxNxfz2G5RGaLa4LazfH24 i+w3UvEsMfUMo1hY8cq4rM8aJsiFijoRfLiU6JFQ4yocYG1KEURR95WR5CmYHEpwoclR VTGiNgQirgpr18Q9aqX4HbtT1OACQF2GrkYtQbDAkI2sfXEdsTk622IpVF/aAWdGci32 T6ZsPRT06nzO6zPtNs+qmfAbO/+qSWPcw/5C5d/x4rp+zGQoTEn0KH2jZiuu+Ee0+Q1A PPYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=lxRSTRsn; 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 l93si14510116plb.433.2019.02.18.05.49.58; Mon, 18 Feb 2019 05:50:13 -0800 (PST) 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=lxRSTRsn; 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 S1731314AbfBRNsY (ORCPT + 99 others); Mon, 18 Feb 2019 08:48:24 -0500 Received: from mail.kernel.org ([198.145.29.99]:55190 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730301AbfBRNsW (ORCPT ); Mon, 18 Feb 2019 08:48:22 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (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 0C93D21901; Mon, 18 Feb 2019 13:48:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550497701; bh=PuPGrBJzCNvJnrrNSzHWR2kp2tQqAFa4XMoqjEu+Z5U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lxRSTRsnj76Vu+AXs9e5Dj+bGr6bLa+k41u4x99yAzbpjUJVcscwisxDE2PCJ43xH 7arp3vYyJCJTD4obWUaIEOZMl+6SR5ZRplSb415W9wu9P3AQILoly5wlerr4Iz7fkw kiJK3PPnqQ60/BnbBWWTXeeKL8zPZGtJ8Iwwegqw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Russell King , Mark Brown Subject: [PATCH 4.20 59/92] ASoC: hdmi-codec: fix oops on re-probe Date: Mon, 18 Feb 2019 14:43:02 +0100 Message-Id: <20190218133500.377401228@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218133454.668268457@linuxfoundation.org> References: <20190218133454.668268457@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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.20-stable review patch. If anyone has any objections, please let me know. ------------------ From: Russell King commit 0ce23d6d42147a692768e6baaaa3db75c44f4235 upstream. hdmi-codec oopses the kernel when it is unbound from a successfully bound audio subsystem, and is then rebound: Unable to handle kernel NULL pointer dereference at virtual address 0000001c pgd = ee3f0000 [0000001c] *pgd=3cc59831 Internal error: Oops: 817 [#1] PREEMPT ARM Modules linked in: ext2 snd_soc_spdif_tx vmeta dove_thermal snd_soc_kirkwood ofpart marvell_cesa m25p80 orion_wdt mtd spi_nor des_generic gpio_ir_recv snd_soc_kirkwood_spdif bmm_dmabuf auth_rpcgss nfsd autofs4 etnaviv thermal_sys hwmon gpu_sched tda9950 CPU: 0 PID: 1005 Comm: bash Not tainted 4.20.0+ #1762 Hardware name: Marvell Dove (Cubox) PC is at hdmi_dai_probe+0x68/0x80 LR is at find_held_lock+0x20/0x94 pc : [] lr : [] psr: 600f0013 sp : ee15bd28 ip : eebd8b1c fp : c093b488 r10: ee048000 r9 : eebdab18 r8 : ee048600 r7 : 00000001 r6 : 00000000 r5 : 00000000 r4 : ee82c100 r3 : 00000006 r2 : 00000001 r1 : c067e38c r0 : ee82c100 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none[ 297.318599] Control: 10c5387d Table: 2e3f0019 DAC: 00000051 Process bash (pid: 1005, stack limit = 0xee15a248) ... [] (hdmi_dai_probe) from [] (soc_probe_dai.part.9+0x34/0x70) [] (soc_probe_dai.part.9) from [] (snd_soc_instantiate_card+0x734/0xc9c) [] (snd_soc_instantiate_card) from [] (snd_soc_add_component+0x29c/0x378) [] (snd_soc_add_component) from [] (snd_soc_register_component+0x44/0x54) [] (snd_soc_register_component) from [] (devm_snd_soc_register_component+0x48/0x84) [] (devm_snd_soc_register_component) from [] (hdmi_codec_probe+0x150/0x260) [] (hdmi_codec_probe) from [] (platform_drv_probe+0x48/0x98) This happens because hdmi_dai_probe() attempts to access the HDMI codec private data, but this has not been assigned by hdmi_dai_probe() before it calls devm_snd_soc_register_component(). Move the call to dev_set_drvdata() before devm_snd_soc_register_component() to avoid this oops. Signed-off-by: Russell King Signed-off-by: Mark Brown Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- sound/soc/codecs/hdmi-codec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c @@ -795,6 +795,8 @@ static int hdmi_codec_probe(struct platf if (hcd->spdif) hcp->daidrv[i] = hdmi_spdif_dai; + dev_set_drvdata(dev, hcp); + ret = devm_snd_soc_register_component(dev, &hdmi_driver, hcp->daidrv, dai_count); if (ret) { @@ -802,8 +804,6 @@ static int hdmi_codec_probe(struct platf __func__, ret); return ret; } - - dev_set_drvdata(dev, hcp); return 0; }