All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alison Schofield <alison.schofield@intel.com>
To: Markus Elfring <Markus.Elfring@web.de>
Cc: kernel-janitors@vger.kernel.org, nvdimm@lists.linux.dev,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Dave Jiang <dave.jiang@intel.com>,
	Ira Weiny <ira.weiny@intel.com>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Vishal Verma <vishal.l.verma@intel.com>,
	cocci@inria.fr, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] nvdimm: Replace the usage of a variable by a direct function call in nd_pfn_validate()
Date: Fri, 14 Apr 2023 08:22:34 -0700	[thread overview]
Message-ID: <ZDlvunCNe9yWykIE@aschofie-mobl2> (raw)
In-Reply-To: <d2403b7a-c6cd-4ee9-2a35-86ea57554eec@web.de>

On Fri, Apr 14, 2023 at 12:12:37PM +0200, Markus Elfring wrote:
> Date: Fri, 14 Apr 2023 12:01:15 +0200
> 
> The address of a data structure member was determined before
> a corresponding null pointer check in the implementation of
> the function “nd_pfn_validate”.
> 
> Thus avoid the risk for undefined behaviour by replacing the usage of
> the local variable “parent_uuid” by a direct function call within
> a later condition check.

Hi Markus,

I think I understand what you are saying above, but I don't follow
how that applies here. This change seems to be a nice simplification,
parent_uuid, is used once, just grab it when needed.

What is the risk of undefined behavior?

> 
> This issue was detected by using the Coccinelle software.
Which cocci script?

> 
> Fixes: d1c6e08e7503649e4a4f3f9e700e2c05300b6379 ("libnvdimm/labels: Add uuid helpers")

This fixes tag seems to be the wrong tag. It is a tag from when the
uuid helpers were introduce, not where parent_uuid was first introduced
and used. I'm not clear this warrants a Fixes tag anyway. Is there
really a bug here? Perhaps I'm missing something in the previous
explanation of risk.

checkpatch is WARNING on the tag format:
WARNING: Please use correct Fixes: style 'Fixes: <12 chars of sha1> ("<title line>")' - ie: 'Fixes: d1c6e08e7503 ("libnvdimm/labels: Add uuid helpers")'
#17:
    Fixes: d1c6e08e7503649e4a4f3f9e700e2c05300b6379 ("libnvdimm/labels: Add uuid helpers")

checkpatch is also WARNING on the commit msg:
WARNING: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#5:
    nvdimm: Replace the usage of a variable by a direct function call in nd_pfn_validate()

Also, possible only my pet peeve, the long commit message spoils my
pretty 80 column view. Please trim it to not wrap here:

$git log --oneline pfn_devs.c
52b639e56a46 nvdimm: Replace the usage of a variable by a direct function call in nd_pfn_validate()
c91d71363084 nvdimm: Support sizeof(struct page) > MAX_STRUCT_PAGE_SIZE
6e9f05dc66f9 libnvdimm/pfn_dev: increase MAX_STRUCT_PAGE_SIZE
81beea55cb74 nvdimm: Drop nd_device_lock()
4a0079bc7aae nvdimm: Replace lockdep_mutex with local lock classes
322cbb50de71 block: remove genhd.h

Alison


> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> ---
>  drivers/nvdimm/pfn_devs.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/nvdimm/pfn_devs.c b/drivers/nvdimm/pfn_devs.c
> index af7d9301520c..f14cbfa500ed 100644
> --- a/drivers/nvdimm/pfn_devs.c
> +++ b/drivers/nvdimm/pfn_devs.c
> @@ -456,7 +456,6 @@ int nd_pfn_validate(struct nd_pfn *nd_pfn, const char *sig)
>  	unsigned long align, start_pad;
>  	struct nd_pfn_sb *pfn_sb = nd_pfn->pfn_sb;
>  	struct nd_namespace_common *ndns = nd_pfn->ndns;
> -	const uuid_t *parent_uuid = nd_dev_to_uuid(&ndns->dev);
> 
>  	if (!pfn_sb || !ndns)
>  		return -ENODEV;
> @@ -476,7 +475,7 @@ int nd_pfn_validate(struct nd_pfn *nd_pfn, const char *sig)
>  		return -ENODEV;
>  	pfn_sb->checksum = cpu_to_le64(checksum);
> 
> -	if (memcmp(pfn_sb->parent_uuid, parent_uuid, 16) != 0)
> +	if (memcmp(pfn_sb->parent_uuid, nd_dev_to_uuid(&ndns->dev), 16) != 0)
>  		return -ENODEV;
> 
>  	if (__le16_to_cpu(pfn_sb->version_minor) < 1) {
> --
> 2.40.0
> 

  reply	other threads:[~2023-04-14 15:22 UTC|newest]

Thread overview: 189+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-09 18:30 [cocci] Checking pointer dereferences with SmPL Markus Elfring
2023-04-09 18:41 ` [cocci] Reconsidering pointer dereferences before null pointer checks (with SmPL) Markus Elfring
2023-04-09 18:45   ` Julia Lawall
2023-04-10  5:25     ` Markus Elfring
2023-04-10  6:25       ` Julia Lawall
2023-04-10  7:33         ` Markus Elfring
2023-04-10  8:00           ` Julia Lawall
2023-04-10 12:10             ` Markus Elfring
     [not found]               ` <alpine.DEB.2.22.394.2304101415040.2875@hadrien>
2023-04-10 12:48                 ` Markus Elfring
2023-04-11  7:15                 ` Markus Elfring
2023-04-11  7:40                   ` Julia Lawall
2023-04-11  9:47                     ` Dan Carpenter
2023-04-12  9:15                       ` Markus Elfring
2023-04-11 13:36   ` [cocci] [PATCH 0/5] drm/amd: Adjustments for three function implementations Markus Elfring
2023-04-11 13:36     ` Markus Elfring
2023-04-11 13:42     ` [PATCH 1/5] drm/amdgpu: Move a variable assignment behind a null pointer check in amdgpu_ras_interrupt_dispatch() Markus Elfring
2023-04-11 13:42       ` [cocci] " Markus Elfring
2023-04-11 13:59       ` Felix Kuehling
2023-04-11 14:45         ` [cocci] " Markus Elfring
2023-04-11 14:45           ` Markus Elfring
2023-04-11 13:43     ` [cocci] [PATCH 2/5] drm/amd/display: Move three variable assignments behind condition checks in trigger_hotplug() Markus Elfring
2023-04-11 13:43       ` Markus Elfring
2023-04-11 15:04       ` Christian König
2023-04-11 15:04         ` Christian König
2023-05-16 16:40         ` [cocci] " Markus Elfring
2023-05-16 16:40           ` Markus Elfring
2023-04-11 13:46     ` [cocci] [PATCH 3/5] drm/amd/display: Delete three unnecessary variable initialisations " Markus Elfring
2023-04-11 13:46       ` Markus Elfring
2023-04-11 13:48     ` [cocci] [PATCH 4/5] drm/amd/display: Delete a redundant statement " Markus Elfring
2023-04-11 13:48       ` Markus Elfring
2023-04-11 13:50     ` [cocci] [PATCH 5/5] drm/amd/display: Move an expression into a return statement in dcn201_link_encoder_create() Markus Elfring
2023-04-11 13:50       ` Markus Elfring
2024-01-05 19:21     ` [PATCH 0/5] drm/amd: Adjustments for three function implementations Markus Elfring
2024-01-05 19:21       ` Markus Elfring
2024-01-05 19:21       ` [cocci] " Markus Elfring
2023-04-11 16:38   ` [cocci] [PATCH] drm/msm/dpu: Delete a variable initialisation before a null pointer check in two functions Markus Elfring
2023-04-11 16:38     ` Markus Elfring
2023-04-11 16:43     ` Dmitry Baryshkov
2023-04-11 16:43       ` Dmitry Baryshkov
2023-04-11 16:44     ` Abhinav Kumar
2023-04-11 16:44       ` Abhinav Kumar
2023-04-11 17:43   ` [cocci] [PATCH] qed: Move a variable assignment behind " Markus Elfring
2023-04-13 12:10   ` [cocci] [PATCH] ASoC: SOF: topology: Move a variable assignment behind condition checks in sof_dai_load() Markus Elfring
2023-04-13 12:10     ` Markus Elfring
2023-04-13 13:02   ` [cocci] [PATCH] perf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp() Markus Elfring
2023-04-13 15:49     ` Ian Rogers
2023-04-13 15:17   ` [cocci] [PATCH] tipc: Reduce scope for the variable “fdefq” in tipc_link_tnl_prepare() Markus Elfring
2023-04-13 19:10   ` [cocci] [PATCH] gfs2: Move a variable assignment behind a null pointer check in inode_go_dump() Markus Elfring
2023-04-13 19:10     ` [Cluster-devel] " Markus Elfring
2023-04-18 12:51     ` Andreas Gruenbacher
2023-04-18 12:51       ` [Cluster-devel] " Andreas Gruenbacher
2023-04-13 19:44   ` [cocci] [PATCH] video: au1100fb: Move a variable assignment behind a null pointer check in au1100fb_setmode() Markus Elfring
2023-04-13 19:44     ` Markus Elfring
2023-04-13 20:20   ` [cocci] [PATCH] media: atomisp: Move a variable assignment behind a null pointer check in atomisp_cp_general_isp_parameters() Markus Elfring
2023-04-13 20:20     ` Markus Elfring
2023-04-14 17:13     ` Andy Shevchenko
2023-04-16 13:12       ` Hans de Goede
2023-04-16 18:01         ` Markus Elfring
2023-04-16 18:01           ` [cocci] " Markus Elfring
2023-04-19  7:49         ` [cocci] " Markus Elfring
2023-04-19  7:49           ` Markus Elfring
2023-04-19 15:50         ` [cocci] [PATCH] " Markus Elfring
2023-04-19 15:50           ` Markus Elfring
2023-04-14  9:16   ` [cocci] [PATCH] scsi: hpsa: Move two variable assignments behind condition checks in hpsa_scsi_ioaccel_raid_map() Markus Elfring
2023-04-14 10:12   ` [PATCH] nvdimm: Replace the usage of a variable by a direct function call in nd_pfn_validate() Markus Elfring
2023-04-14 10:12     ` [cocci] " Markus Elfring
2023-04-14 15:22     ` Alison Schofield [this message]
2023-04-14 16:50       ` Markus Elfring
2023-04-14 16:50         ` [cocci] " Markus Elfring
2023-04-14 19:14         ` Alison Schofield
2023-04-15  7:52           ` Markus Elfring
2023-04-15  7:52             ` [cocci] " Markus Elfring
2023-04-14 17:15     ` [PATCH] " Andy Shevchenko
2023-04-14 15:02   ` [cocci] [PATCH] media: adv748x: Move a variable assignment behind condition checks in adv748x_hdmi_query_dv_timings() Markus Elfring
2023-04-18 10:00     ` [cocci] [PATCH v2 0/3] media: adv748x: Adjustments for adv748x_hdmi_query_dv_timings() Markus Elfring
2023-04-18 10:02       ` [cocci] [PATCH v2 1/3] media: adv748x: Delete a null pointer check in adv748x_hdmi_query_dv_timings() Markus Elfring
2023-04-18 10:04       ` [cocci] [PATCH v2 2/3] media: adv748x: Move a variable assignment behind condition checks " Markus Elfring
2023-04-18 10:06       ` [cocci] [PATCH v2 3/3] media: adv748x: Improve a size determination " Markus Elfring
2023-04-14 16:30   ` [cocci] [PATCH] media: adv7604: Move a variable assignment behind condition checks in adv76xx_query_dv_timings() Markus Elfring
2023-04-18 17:42     ` [cocci] [PATCH v2 0/4] media: adv7604: Adjustments for two function implementations Markus Elfring
2023-04-18 17:43       ` [cocci] [PATCH v2 1/4] media: adv7604: Delete a null pointer check in adv76xx_query_dv_timings() Markus Elfring
2023-04-18 17:45       ` [cocci] [PATCH v2 2/4] media: adv7604: Move a variable assignment behind condition checks " Markus Elfring
2023-04-18 17:46       ` [cocci] [PATCH v2 3/4] media: adv7604: Improve three size determinations Markus Elfring
2023-04-18 17:48       ` [cocci] [PATCH v2 4/4] media: adv7604: Reduce scope for the variable “info” in adv76xx_query_dv_timings() Markus Elfring
2023-04-14 18:30   ` [cocci] [PATCH] media: mediatek: vcodec: Move a variable assignment behind condition checks in vdec_vp9_slice_single_decode() Markus Elfring
2023-04-14 18:30     ` Markus Elfring
2023-04-14 18:30     ` Markus Elfring
2023-04-17  7:44     ` AngeloGioacchino Del Regno
2023-04-17  7:44       ` AngeloGioacchino Del Regno
2023-04-17  8:01     ` Hans Verkuil
2023-04-17  8:01       ` Hans Verkuil
2023-04-17 12:40       ` [cocci] [PATCH 0/2] media: mediatek: vcodec: Adjustments for vdec_vp9_slice_single_decode() Markus Elfring
2023-04-17 12:40         ` Markus Elfring
2023-04-17 12:40         ` Markus Elfring
2023-04-17 12:41         ` [cocci] [PATCH 1/2] media: mediatek: vcodec: Delete null pointer checks in vdec_vp9_slice_single_decode() Markus Elfring
2023-04-17 12:41           ` Markus Elfring
2023-04-17 12:41           ` Markus Elfring
2023-04-17 12:44         ` [cocci] [PATCH 2/2] media: mediatek: vcodec: Move variable assignments behind " Markus Elfring
2023-04-17 12:44           ` Markus Elfring
2023-04-17 12:44           ` Markus Elfring
2023-04-14 19:10   ` [cocci] [PATCH] media: au0828: Move a variable assignment behind condition checks in au0828_isoc_copy() Markus Elfring
2023-04-17  7:58     ` Hans Verkuil
2023-04-17 17:00       ` [cocci] [PATCH 0/5] media: au0828: Adjustments for four function implementations Markus Elfring
2023-04-17 17:01         ` [cocci] [PATCH 1/5] media: au0828: Delete a null pointer check in au0828_isoc_copy() Markus Elfring
2023-04-17 17:02         ` [cocci] [PATCH 2/5] media: au0828: Move variable assignments behind condition checks " Markus Elfring
2023-04-17 17:05         ` [cocci] [PATCH 3/5] media: au0828: Return a status code only as a constant " Markus Elfring
2023-04-17 17:06         ` [cocci] [PATCH 4/5] media: au0828: Delete an unnecessary return statement in two functions Markus Elfring
2023-04-17 17:09         ` [cocci] [PATCH 5/5] media: au0828: Use common error handling code in au0828_init_isoc() Markus Elfring
2023-04-16  9:30   ` [cocci] [PATCH 0/9] GPU-DRM-nouveau: Adjustments for seven function implementations Markus Elfring
2023-04-16  9:30     ` [Nouveau] " Markus Elfring
2023-04-16  9:30     ` Markus Elfring
2023-04-16  9:33     ` [cocci] [PATCH 1/9] drm/nouveau/debugfs: Move an expression into a function call parameter in nouveau_debugfs_pstate_set() Markus Elfring
2023-04-16  9:33       ` [Nouveau] " Markus Elfring
2023-04-16  9:33       ` Markus Elfring
2023-04-16  9:36     ` [cocci] [PATCH 2/9] drm/nouveau/debugfs: Move a variable assignment behind a null pointer check in nouveau_debugfs_pstate_get() Markus Elfring
2023-04-16  9:36       ` [Nouveau] " Markus Elfring
2023-04-16  9:36       ` Markus Elfring
2023-04-16  9:38     ` [Nouveau] [PATCH 3/9] drm/nouveau/debugfs: Use seq_putc() " Markus Elfring
2023-04-16  9:38       ` Markus Elfring
2023-04-16  9:38       ` [cocci] " Markus Elfring
2023-04-16  9:40     ` [Nouveau] [PATCH 4/9] drm/nouveau/debugfs: Replace five seq_printf() calls by seq_puts() " Markus Elfring
2023-04-16  9:40       ` Markus Elfring
2023-04-16  9:40       ` [cocci] " Markus Elfring
2023-04-16  9:42     ` [Nouveau] [PATCH 5/9] drm/nouveau/bios/power_budget: Move an expression into a macro call parameter in nvbios_power_budget_header() Markus Elfring
2023-04-16  9:42       ` Markus Elfring
2023-04-16  9:42       ` [cocci] " Markus Elfring
2023-04-16  9:44     ` [Nouveau] [PATCH 6/9] drm/nouveau/clk: Move a variable assignment behind a null pointer check in nvkm_pstate_new() Markus Elfring
2023-04-16  9:44       ` Markus Elfring
2023-04-16  9:44       ` [cocci] " Markus Elfring
2023-04-16  9:46     ` [Nouveau] [PATCH 7/9] drm/nouveau/pci: Move a variable assignment behind condition checks in nvkm_pcie_set_link() Markus Elfring
2023-04-16  9:46       ` Markus Elfring
2023-04-16  9:46       ` [cocci] " Markus Elfring
2023-04-16  9:54     ` [Nouveau] [PATCH 8/9] drm/nouveau/pci: Move an expression into a function call parameter " Markus Elfring
2023-04-16  9:54       ` Markus Elfring
2023-04-16  9:54       ` [cocci] " Markus Elfring
2023-04-16  9:56     ` [Nouveau] [PATCH 9/9] drm/nouveau/therm: Move an assignment statement behind a null pointer check in two functions Markus Elfring
2023-04-16  9:56       ` Markus Elfring
2023-04-16  9:56       ` [cocci] " Markus Elfring
2023-04-17 16:25     ` [PATCH 0/9] GPU-DRM-nouveau: Adjustments for seven function implementations Karol Herbst
2023-04-17 16:25       ` Karol Herbst
2023-04-17 16:25       ` [Nouveau] " Karol Herbst
2023-04-16 15:47   ` [cocci] [PATCH] drm/bridge: it6505: Move a variable assignment behind a null pointer check in receive_timing_debugfs_show() Markus Elfring
2023-04-16 15:47     ` Markus Elfring
2023-04-25 13:30     ` Robert Foss
2023-04-25 13:30       ` Robert Foss
2023-04-25 14:15       ` [cocci] " Markus Elfring
2023-04-25 14:15         ` Markus Elfring
2023-04-27 15:10         ` Robert Foss
2023-04-27 15:10           ` Robert Foss
2023-04-27 19:34           ` [cocci] " Markus Elfring
2023-04-27 19:34             ` Markus Elfring
2023-04-28 11:49             ` Robert Foss
2023-04-28 11:49               ` Robert Foss
2023-04-28 15:55               ` [cocci] [PATCH resent] " Markus Elfring
2023-04-28 15:55                 ` Markus Elfring
2023-04-28 17:27                 ` Robert Foss
2023-04-28 17:27                   ` Robert Foss
2023-04-17  9:42   ` [cocci] [PATCH] drm/mm: Adjust input parameter validation in DECLARE_NEXT_HOLE_ADDR() Markus Elfring
2023-04-17  9:42     ` Markus Elfring
2023-04-19 16:48   ` [cocci] [PATCH] iwlegacy: Adjust input parameter validation in il_set_ht_add_station() Markus Elfring
2023-04-19 17:30   ` [cocci] [PATCH] iwlwifi: Adjust input parameter validation in iwl_sta_calc_ht_flags() Markus Elfring
2023-04-19 18:12   ` [cocci] [PATCH] usb: dwc2: gadget: Move a variable assignment behind condition checks in dwc2_hsotg_handle_outdone() Markus Elfring
2023-04-21  5:09     ` Minas Harutyunyan
2023-04-19 18:54   ` [cocci] [PATCH] ASoC: SOF: Intel: hda-stream: Move three variable assignments behind condition checks in hda_dsp_iccmax_stream_hw_params() Markus Elfring
2023-04-19 18:54     ` Markus Elfring
2023-04-19 19:03     ` Pierre-Louis Bossart
2023-04-24 14:56       ` Markus Elfring
2023-04-24 14:56         ` [cocci] " Markus Elfring
2023-04-20 10:54   ` [PATCH 0/4] staging: rtl8712: Adjustments for process_link_qual() Markus Elfring
2023-04-20 10:54     ` [cocci] " Markus Elfring
2023-04-20 10:55     ` [cocci] [PATCH 1/4] staging: rtl8712: Delete null pointer checks in process_link_qual() Markus Elfring
2023-04-20 10:55       ` Markus Elfring
2023-04-20 10:57     ` [cocci] [PATCH 2/4] staging: rtl8712: Delete two variables " Markus Elfring
2023-04-20 10:57       ` Markus Elfring
2023-04-20 11:00     ` [cocci] [PATCH 3/4] staging: rtl8712: Reduce scope for the variable “sqd” " Markus Elfring
2023-04-20 11:00       ` Markus Elfring
2023-04-20 11:01     ` [PATCH 4/4] staging: rtl8712: Simplify the usage of an expression " Markus Elfring
2023-04-20 11:01       ` [cocci] " Markus Elfring
2023-04-21  5:32     ` [PATCH 0/4] staging: rtl8712: Adjustments for process_link_qual() Philipp Hortmann
2023-04-20 14:26   ` [PATCH 0/4] staging: rtl8723bs: Adjustments for rtw_set_802_11_bssid_list_scan() Markus Elfring
2023-04-20 14:26     ` [cocci] " Markus Elfring
2023-04-20 14:28     ` [cocci] [PATCH 1/4] staging: rtl8723bs: Delete a null pointer check in rtw_set_802_11_bssid_list_scan() Markus Elfring
2023-04-20 14:28       ` Markus Elfring
2023-04-20 14:30     ` [PATCH 2/4] staging: rtl8723bs: Return directly after a failed initialisation " Markus Elfring
2023-04-20 14:30       ` [cocci] " Markus Elfring
2023-04-20 14:32     ` [cocci] [PATCH 3/4] staging: rtl8723bs: Delete an unnecessary variable initialisation " Markus Elfring
2023-04-20 14:32       ` Markus Elfring
2023-04-20 14:34     ` [PATCH 4/4] staging: rtl8723bs: Move a variable assignment behind a condition check " Markus Elfring
2023-04-20 14:34       ` [cocci] " Markus Elfring

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=ZDlvunCNe9yWykIE@aschofie-mobl2 \
    --to=alison.schofield@intel.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=Markus.Elfring@web.de \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=cocci@inria.fr \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=ira.weiny@intel.com \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nvdimm@lists.linux.dev \
    --cc=vishal.l.verma@intel.com \
    /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.