Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp57889pxb; Mon, 8 Feb 2021 15:09:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJwVt7nryqLvcgSxA4zANt6x3ByLjsVSFh3BXcvE9mqOW+ID5S5lAPRaYLpqk8v0M/VVVRAt X-Received: by 2002:a17:906:9717:: with SMTP id k23mr18698476ejx.207.1612825787047; Mon, 08 Feb 2021 15:09:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612825787; cv=none; d=google.com; s=arc-20160816; b=P32S+zOhbQX7HkrzOjT9upj803D4RyZSKWvuvz5aRCAlL01gZPAfCirryDLQ/EwKCn /FExbR+NxUt/8YuVZDiDTF/q02gj9WW5efgnCLyaAdS/sNNbfjENgsz3AwheJU6qe6Lo +Loaxgty3fbjE2iUZubeQMvNbfHDaQeO5XcqLek3djEkU9/TbZkhUN2nDl9It1Kb+0El 2M7mjCNxVoGoEyKmx2xuCSKrgazp2Ptvz+KG3MU5hHc53hoykGCYX4pG+4B1sYo/PYsT nu2yvjHojlx7cY1EL8N/PxIPILybkfwHt9xDqHEFIn2zRdqgQ5ixWfJ4JyRV14X0+wk4 dm+A== 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 :message-id:date:subject:cc:to:from; bh=haxAD+AyBwsF5XIKWKZ/9iIlmbHpCMRAiKSWOSoDkXk=; b=I/O3NkHaWuDAdPx9TIEn/Nun+20gEDI5++QaZyUDRU5RTSZq5Ui4otG1JgsvOx5r8Q cd1UrZ6r4Yv4wONHhR+Ts0Hoy81ZbqjM6ycD6w7xGB3itzcx0Og4JdlYeZDuYwBHGgbD Gqyxh1xM0FAQt1REzeE0eTgc49pSLIuSPEZm2uLko9yOo37iopRBoM0xkL1TP8JKfC3l DRZPwKQ18Z1YsD/GReIBNz/pXrhtJGL9mDUz2QvK59Ow6W1v1CgcvvO8RT3tUvoBBYYK CG1vpzro/IdIv2rTwtfoskw79+Hr9Pc5/oKqo1avvoazaTZ7kl48CV/XISysgMTuu0mi Y1Fg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h15si11259815ejd.725.2021.02.08.15.09.07; Mon, 08 Feb 2021 15:09:47 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229888AbhBHWmD (ORCPT + 99 others); Mon, 8 Feb 2021 17:42:03 -0500 Received: from smtp-out.xnet.cz ([178.217.244.18]:48479 "EHLO smtp-out.xnet.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229623AbhBHWmD (ORCPT ); Mon, 8 Feb 2021 17:42:03 -0500 Received: from meh.true.cz (meh.true.cz [108.61.167.218]) (Authenticated sender: petr@true.cz) by smtp-out.xnet.cz (Postfix) with ESMTPSA id 77D793ADE; Mon, 8 Feb 2021 23:41:17 +0100 (CET) Received: by meh.true.cz (OpenSMTPD) with ESMTP id f7b814b6; Mon, 8 Feb 2021 23:40:59 +0100 (CET) From: =?UTF-8?q?Petr=20=C5=A0tetiar?= To: Tomasz Duszynski , Jonathan Cameron , Lars-Peter Clausen , Peter Meerwald-Stadler Cc: =?UTF-8?q?Petr=20=C5=A0tetiar?= , stable@vger.kernel.org, Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] iio: chemical: scd30: fix Oops due to missing parent device Date: Mon, 8 Feb 2021 23:39:47 +0100 Message-Id: <20210208223947.32344-1-ynezz@true.cz> 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 My machine Oopsed while testing SCD30 sensor in interrupt driven mode: Unable to handle kernel NULL pointer dereference at virtual address 00000188 pgd = (ptrval) [00000188] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.96+ #473 Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) PC is at _raw_spin_lock_irqsave+0x10/0x4c LR is at devres_add+0x18/0x38 ... [<8070ecac>] (_raw_spin_lock_irqsave) from [<804916a8>] (devres_add+0x18/0x38) [<804916a8>] (devres_add) from [<805ef708>] (devm_iio_trigger_alloc+0x5c/0x7c) [<805ef708>] (devm_iio_trigger_alloc) from [<805f0a90>] (scd30_probe+0x1d4/0x3f0) [<805f0a90>] (scd30_probe) from [<805f10fc>] (scd30_i2c_probe+0x54/0x64) [<805f10fc>] (scd30_i2c_probe) from [<80583390>] (i2c_device_probe+0x150/0x278) [<80583390>] (i2c_device_probe) from [<8048e6c0>] (really_probe+0x1f8/0x360) I've found out, that it's due to missing parent/owner device in iio_dev struct which then leads to NULL pointer dereference during spinlock while registering the device resource via devres_add(). Cc: # v5.9+ Fixes: 64b3d8b1b0f5 ("iio: chemical: scd30: add core driver") Signed-off-by: Petr Štetiar --- drivers/iio/chemical/scd30_core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iio/chemical/scd30_core.c b/drivers/iio/chemical/scd30_core.c index 4d0d798c7cd3..33aa6eb1963d 100644 --- a/drivers/iio/chemical/scd30_core.c +++ b/drivers/iio/chemical/scd30_core.c @@ -697,6 +697,7 @@ int scd30_probe(struct device *dev, int irq, const char *name, void *priv, dev_set_drvdata(dev, indio_dev); + indio_dev->dev.parent = dev; indio_dev->info = &scd30_info; indio_dev->name = name; indio_dev->channels = scd30_channels;