From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 804B0C04A6A for ; Fri, 4 Aug 2023 15:39:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231613AbjHDPjO (ORCPT ); Fri, 4 Aug 2023 11:39:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229654AbjHDPjL (ORCPT ); Fri, 4 Aug 2023 11:39:11 -0400 Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3F74171D for ; Fri, 4 Aug 2023 08:39:08 -0700 (PDT) Received: by mail.gandi.net (Postfix) with ESMTPSA id C8FEA2000A; Fri, 4 Aug 2023 15:39:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1691163547; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9eqVdQmb69nE6gA2ZPZcqVY0YmH//5Gzc/TTIiSEFwA=; b=DjNRsXa/WlgfoqNCGgY6+APxCq0EOnlVc08V72+fG9DtrH+cyl5N3VVyjH67xKXQiiXKp1 YXzesO5t8jit/8LAo6/UUirgqRChhhmnJEMA2k+z9hSJ8TZ975BLFwrF/b5c9BDKP46J0Y Tza755a7UyMi0VPj5frZweZAwfpGUD4uOAZlCz46eA+SlSpxSmbT6FHFuvOGU/y5skVCre 3DPcFjkqfTM7qAn3lGj4s+Baf22Y+nJmyeDot+LuF/fExQslDyX1SsG/NstdH5GBbsykHS zwuzSJMQD4FPaOl4wk9p5nxqrvxXsUPU/r0xSKAGaJrmJLb27s1Sy7oXiAigPw== Date: Fri, 4 Aug 2023 17:39:03 +0200 From: Miquel Raynal To: Dan Carpenter Cc: oe-kbuild@lists.linux.dev, Srinivas Kandagatla , lkp@intel.com, oe-kbuild-all@lists.linux.dev, Greg Kroah-Hartman , Thomas Petazzoni , Robert Marko , Luka Perkov , Michael Walle , linux-kernel@vger.kernel.org, Randy Dunlap , Chen-Yu Tsai , Daniel Golle , =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= Subject: Re: [PATCH v7 5/7] nvmem: core: Rework layouts to become platform devices Message-ID: <20230804173903.2b298cd3@xps-13> In-Reply-To: References: <20230801182132.1058707-6-miquel.raynal@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-GND-Sasl: miquel.raynal@bootlin.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dan, dan.carpenter@linaro.org wrote on Thu, 3 Aug 2023 13:13:04 +0300: > Hi Miquel, >=20 > kernel test robot noticed the following build warnings: >=20 > https://git-scm.com/docs/git-format-patch#_base_tree_information] >=20 > url: https://github.com/intel-lab-lkp/linux/commits/Miquel-Raynal/nvme= m-core-Create-all-cells-before-adding-the-nvmem-device/20230802-022331 > base: char-misc/char-misc-testing > patch link: https://lore.kernel.org/r/20230801182132.1058707-6-miquel.= raynal%40bootlin.com > patch subject: [PATCH v7 5/7] nvmem: core: Rework layouts to become platf= orm devices > config: x86_64-randconfig-m001-20230730 (https://download.01.org/0day-ci/= archive/20230803/202308030002.DnSFOrMB-lkp@intel.com/config) > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 > reproduce: (https://download.01.org/0day-ci/archive/20230803/202308030002= .DnSFOrMB-lkp@intel.com/reproduce) >=20 > If you fix the issue in a separate patch/commit > (i.e. not just a new version of the same patch/commit), (Nice addition, a lot of newcomers would always add these tags otherwise.) > kindly add following tags > | Reported-by: kernel test robot > | Reported-by: Dan Carpenter > | Closes: https://lore.kernel.org/r/202308030002.DnSFOrMB-lkp@intel.com/ >=20 > New smatch warnings: > drivers/nvmem/core.c:1003 nvmem_register() warn: 'layout_np' is an error = pointer or valid > drivers/nvmem/core.c:2130 nvmem_try_loading_layout_driver() warn: 'layout= _np' is an error pointer or valid >=20 > Old smatch warnings: > drivers/nvmem/core.c:761 nvmem_add_cells_from_fixed_layout() warn: 'layou= t_np' is an error pointer or valid > drivers/nvmem/core.c:802 nvmem_layout_get() warn: 'layout_np' is an error= pointer or valid >=20 > vim +/layout_np +1003 drivers/nvmem/core.c >=20 > 266570f496b90d Michael Walle 2023-04-04 1000 =20 > 00d059fd6702f0 Miquel Raynal 2023-08-01 1001 /* Populate layou= ts as devices */ > 00d059fd6702f0 Miquel Raynal 2023-08-01 1002 layout_np =3D of_= nvmem_layout_get_container(nvmem); > 00d059fd6702f0 Miquel Raynal 2023-08-01 @1003 if (layout_np) { >=20 > So, ugh, of_nvmem_layout_get_container() return NULL on error or error > pointer if either CONFIG_NVMEM or CONFIG_OF is turned off. I feel like > that's a mistake. Normally when a function returns both error pointers > and NULL then the NULL means the feature is disabled and the error > pointers mean there was an error. Here it is the opposite. >=20 > I have written a blog about this: > https://staticthinking.wordpress.com/2022/08/01/mixing-error-pointers-and= -null/ Nice (besides the huge spider which stared at me unexpectedly :-) ) > At first I thought that this was to do with CONFIG_COMPILE_TEST but > actually that is disabled. The issue here is that CONFIG_OF is turned > off. So this is a genuine bug, we're compiling a module which will > always crash. >=20 > So I guess the fix is easy that this should return NULL if either > CONFIG_NVMEM or CONFIG_OF is turned off. That was a long explanation > which is no longer required now that it's not a COMPILE_TEST issue. :P I wanted to disable CONFIG_OF to make the test, I totally forget, I'll handle this case and return NULL when this happens. However I don't understand why you mention CONFIG_NVMEM, because if it is not defined, this file will not compile at all? > 00d059fd6702f0 Miquel Raynal 2023-08-01 1004 rval =3D of_plat= form_populate(nvmem->dev.of_node, NULL, NULL, NULL); > 00d059fd6702f0 Miquel Raynal 2023-08-01 1005 if (rval) > 00d059fd6702f0 Miquel Raynal 2023-08-01 1006 goto err_remove= _cells; > 00d059fd6702f0 Miquel Raynal 2023-08-01 1007 of_node_put(layo= ut_np); > 00d059fd6702f0 Miquel Raynal 2023-08-01 1008 } > 00d059fd6702f0 Miquel Raynal 2023-08-01 1009 =20 > 25c9b5d3aa24a0 Miquel Raynal 2023-08-01 1010 mutex_lock(&nvmem= _devices_mutex); > 25c9b5d3aa24a0 Miquel Raynal 2023-08-01 1011 list_add_tail(&nv= mem->node, &nvmem_devices_list); > 25c9b5d3aa24a0 Miquel Raynal 2023-08-01 1012 mutex_unlock(&nvm= em_devices_mutex); > 25c9b5d3aa24a0 Miquel Raynal 2023-08-01 1013 =20 > f4853e1c321edb Bartosz Golaszewski 2019-02-15 1014 blocking_notifier= _call_chain(&nvmem_notifier, NVMEM_ADD, nvmem); > bee1138bea15a6 Bartosz Golaszewski 2018-09-21 1015 =20 > eace75cfdcf7d9 Srinivas Kandagatla 2015-07-27 1016 return nvmem; > 3360acdf839170 Johan Hovold 2017-06-09 1017 =20 > b985f4cba6dbb3 Bartosz Golaszewski 2018-09-21 1018 err_remove_cells: > b985f4cba6dbb3 Bartosz Golaszewski 2018-09-21 1019 nvmem_device_remo= ve_all_cells(nvmem); > fa72d847d68d78 Bartosz Golaszewski 2018-09-21 1020 if (config->compa= t) > ae0c2d725512f3 Srinivas Kandagatla 2019-04-16 1021 nvmem_sysfs_remo= ve_compat(nvmem, config); > 3360acdf839170 Johan Hovold 2017-06-09 1022 err_put_device: > 3360acdf839170 Johan Hovold 2017-06-09 1023 put_device(&nvmem= ->dev); > 3360acdf839170 Johan Hovold 2017-06-09 1024 =20 > b6c217ab9be689 Andrew Lunn 2016-02-26 1025 return ERR_PTR(rv= al); > eace75cfdcf7d9 Srinivas Kandagatla 2015-07-27 1026 } >=20 Thanks, Miqu=C3=A8l