All of lore.kernel.org
 help / color / mirror / Atom feed
From: Janne Grunau <j@jannau.net>
To: Julia Lawall <julia.lawall@inria.fr>
Cc: Asahi Lina <lina@asahilina.net>, oe-kbuild-all@lists.linux.dev
Subject: Re: [asahilinux:bits/240-isp 22/52] drivers/media/platform/apple/isp/isp-drv.c:183:1-23: WARNING: Function "for_each_child_of_node" should have of_node_put() before goto around lines 197. (fwd)
Date: Wed, 2 Oct 2024 22:37:51 +0200	[thread overview]
Message-ID: <Zv2vHxEpumLBorr5@robin> (raw)
In-Reply-To: <9e433f24-c9e5-6d28-4a77-8d6014a8301@inria.fr>

Hej,

On Wed, Oct 02, 2024 at 09:34:09AM +0200, Julia Lawall wrote:
> Please check whether lines 197 and 201 need of_node_put.  Maybe you can
> alternatively use for_each_child_of_node_scoped.

These were false positives since the called function isp_of_read_coord()
calls of_node_put(). It was documented but is still surprising /
unorthodox. I've replaced the loop with for_each_child_of_node_scoped
anyway and added __free(device_node) cleanup for np to  avoid the goto.

Thanks for the report. Despite being a false positive it still pointed
to code which was more complicated than it needs to be now.

Janne
> 
> ---------- Forwarded message ----------
> Date: Wed, 2 Oct 2024 13:55:07 +0800
> From: kernel test robot <lkp@intel.com>
> To: oe-kbuild@lists.linux.dev
> Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
> Subject: [asahilinux:bits/240-isp 22/52]
>     drivers/media/platform/apple/isp/isp-drv.c:183:1-23: WARNING: Function
>     "for_each_child_of_node" should have of_node_put() before goto around lines
>     197.
> 
> BCC: lkp@intel.com
> CC: oe-kbuild-all@lists.linux.dev
> TO: Asahi Lina <lina@asahilina.net>
> CC: Janne Grunau <j@jannau.net>
> 
> tree:   https://github.com/AsahiLinux/linux bits/240-isp
> head:   2eb812826ec58e3b803055a8aa0fd857f1675f14
> commit: b4d2b4922ce8a77666206a64314192e08c1aca0a [22/52] media: apple: isp: Working t602x and multiple formats and more fixes
> :::::: branch date: 2 weeks ago
> :::::: commit date: 2 weeks ago
> config: arc-randconfig-r062-20241002 (https://download.01.org/0day-ci/archive/20241002/202410021337.EQ74x7c7-lkp@intel.com/config)
> compiler: arc-elf-gcc (GCC) 13.2.0
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Julia Lawall <julia.lawall@inria.fr>
> | Closes: https://lore.kernel.org/r/202410021337.EQ74x7c7-lkp@intel.com/
> 
> cocci warnings: (new ones prefixed by >>)
> >> drivers/media/platform/apple/isp/isp-drv.c:183:1-23: WARNING: Function "for_each_child_of_node" should have of_node_put() before goto around lines 197.
>    drivers/media/platform/apple/isp/isp-drv.c:183:1-23: WARNING: Function "for_each_child_of_node" should have of_node_put() before goto around lines 201.
> 
> vim +/for_each_child_of_node +183 drivers/media/platform/apple/isp/isp-drv.c
> 
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  154
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  155  static int apple_isp_init_presets(struct apple_isp *isp)
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  156  {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  157  	struct device *dev = isp->dev;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  158  	struct device_node *np, *child;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  159  	struct isp_preset *preset;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  160  	int err = 0;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  161
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  162  	np = of_get_child_by_name(dev->of_node, "sensor-presets");
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  163  	if (!np) {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  164  		dev_err(dev, "failed to get DT node 'presets'\n");
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  165  		return -EINVAL;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  166  	}
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  167
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  168  	isp->num_presets = of_get_child_count(np);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  169  	if (!isp->num_presets) {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  170  		dev_err(dev, "no sensor presets found\n");
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  171  		err = -EINVAL;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  172  		goto err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  173  	}
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  174
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  175  	isp->presets = devm_kzalloc(
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  176  		dev, sizeof(*isp->presets) * isp->num_presets, GFP_KERNEL);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  177  	if (!isp->presets) {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  178  		err = -ENOMEM;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  179  		goto err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  180  	}
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  181
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  182  	preset = isp->presets;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24 @183  	for_each_child_of_node(np, child) {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  184  		u32 xywh[4];
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  185
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  186  		err = of_property_read_u32(child, "apple,config-index",
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  187  					   &preset->index);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  188  		if (err) {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  189  			dev_err(dev, "no apple,config-index property\n");
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  190  			of_node_put(child);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  191  			goto err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  192  		}
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  193
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  194  		err = isp_of_read_coord(dev, child, "apple,input-size",
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  195  					&preset->input_dim);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  196  		if (err)
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  197  			goto err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  198  		err = isp_of_read_coord(dev, child, "apple,output-size",
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  199  					&preset->output_dim);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  200  		if (err)
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  201  			goto err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  202
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  203  		err = of_property_read_u32_array(child, "apple,crop", xywh, 4);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  204  		if (err) {
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  205  			dev_err(dev, "failed to read 'apple,crop' property\n");
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  206  			of_node_put(child);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  207  			goto err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  208  		}
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  209  		preset->crop_offset.x = xywh[0];
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  210  		preset->crop_offset.y = xywh[1];
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  211  		preset->crop_size.x = xywh[2];
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  212  		preset->crop_size.y = xywh[3];
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  213
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  214  		preset++;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  215  	}
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  216
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  217  err:
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  218  	of_node_put(np);
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  219  	return err;
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  220  }
> b4d2b4922ce8a7 Asahi Lina 2023-09-24  221
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2024-10-02 20:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-02  7:34 [asahilinux:bits/240-isp 22/52] drivers/media/platform/apple/isp/isp-drv.c:183:1-23: WARNING: Function "for_each_child_of_node" should have of_node_put() before goto around lines 197. (fwd) Julia Lawall
2024-10-02 20:37 ` Janne Grunau [this message]
2024-10-02 20:43   ` Julia Lawall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zv2vHxEpumLBorr5@robin \
    --to=j@jannau.net \
    --cc=julia.lawall@inria.fr \
    --cc=lina@asahilina.net \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.