From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-cys01nam02on0097.outbound.protection.outlook.com ([104.47.37.97]:28800 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751919AbeDIAQu (ORCPT ); Sun, 8 Apr 2018 20:16:50 -0400 From: Sasha Levin To: "stable@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: Marek Szyprowski , Guenter Roeck , Sasha Levin Subject: [PATCH AUTOSEL for 4.15 005/189] hwmon: (ina2xx) Fix access to uninitialized mutex Date: Mon, 9 Apr 2018 00:16:47 +0000 Message-ID: <20180409001637.162453-5-alexander.levin@microsoft.com> References: <20180409001637.162453-1-alexander.levin@microsoft.com> In-Reply-To: <20180409001637.162453-1-alexander.levin@microsoft.com> Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: From: Marek Szyprowski [ Upstream commit 0c4c5860e9983eb3da7a3d73ca987643c3ed034b ] Initialize data->config_lock mutex before it is used by the driver code. This fixes following warning on Odroid XU3 boards: INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. CPU: 5 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc7-next-20180115-00001-gb= 75575dee3f2 #107 Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [] (show_stack) from [] (dump_stack+0x90/0xc8) [] (dump_stack) from [] (register_lock_class+0x1c0/0x59= c) [] (register_lock_class) from [] (__lock_acquire+0x78/0= x1850) [] (__lock_acquire) from [] (lock_acquire+0xc8/0x2b8) [] (lock_acquire) from [] (__mutex_lock+0x60/0xa0c) [] (__mutex_lock) from [] (mutex_lock_nested+0x1c/0x24) [] (mutex_lock_nested) from [] (ina2xx_set_shunt+0x70/0= xb0) [] (ina2xx_set_shunt) from [] (ina2xx_probe+0x88/0x1b0) [] (ina2xx_probe) from [] (i2c_device_probe+0x1e0/0x2d0= ) [] (i2c_device_probe) from [] (driver_probe_device+0x2b= 8/0x4a0) [] (driver_probe_device) from [] (__driver_attach+0xfc/= 0x120) [] (__driver_attach) from [] (bus_for_each_dev+0x58/0x7= c) [] (bus_for_each_dev) from [] (bus_add_driver+0x174/0x2= 50) [] (bus_add_driver) from [] (driver_register+0x78/0xf4) [] (driver_register) from [] (i2c_register_driver+0x38/= 0xa8) [] (i2c_register_driver) from [] (do_one_initcall+0x48/= 0x18c) [] (do_one_initcall) from [] (kernel_init_freeable+0x11= 0/0x1d4) [] (kernel_init_freeable) from [] (kernel_init+0x8/0x11= 4) [] (kernel_init) from [] (ret_from_fork+0x14/0x20) Fixes: 5d389b125186 ("hwmon: (ina2xx) Make calibration register value fixed= ") Signed-off-by: Marek Szyprowski Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/ina2xx.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c index 62e38fa8cda2..a55823b52b2f 100644 --- a/drivers/hwmon/ina2xx.c +++ b/drivers/hwmon/ina2xx.c @@ -438,6 +438,7 @@ static int ina2xx_probe(struct i2c_client *client, =20 /* set the device type */ data->config =3D &ina2xx_config[chip]; + mutex_init(&data->config_lock); =20 if (of_property_read_u32(dev->of_node, "shunt-resistor", &val) < 0) { struct ina2xx_platform_data *pdata =3D dev_get_platdata(dev); @@ -467,8 +468,6 @@ static int ina2xx_probe(struct i2c_client *client, return -ENODEV; } =20 - mutex_init(&data->config_lock); - data->groups[group++] =3D &ina2xx_group; if (id->driver_data =3D=3D ina226) data->groups[group++] =3D &ina226_group; --=20 2.15.1