All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Philipp Stanner <pstanner@redhat.com>
To: Dan Carpenter <dan.carpenter@linaro.org>,
	oe-kbuild@lists.linux.dev,  Hans de Goede <hdegoede@redhat.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	Bjorn Helgaas <helgaas@kernel.org>,
	Sam Ravnborg <sam@ravnborg.org>,
	dakr@redhat.com
Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev,
	 dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	 linux-pci@vger.kernel.org
Subject: Re: [PATCH v5 02/10] PCI: Deprecate iomap-table functions
Date: Thu, 04 Apr 2024 09:15:16 +0200	[thread overview]
Message-ID: <cd60599bee1b857ba069e25a8adb41ee2bc25699.camel@redhat.com> (raw)
In-Reply-To: <c59ff5c5-7551-41ca-a5cc-9c214051a20d@moroto.mountain>

Hello,

On Thu, 2024-04-04 at 09:29 +0300, Dan Carpenter wrote:
> Hi Philipp,
> 
> kernel test robot noticed the following build warnings:
> 
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
> 
> url:   
> https://github.com/intel-lab-lkp/linux/commits/Philipp-Stanner/PCI-Add-new-set-of-devres-functions/20240403-160932
> base:  
> https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
> patch link:   
> https://lore.kernel.org/r/20240403080712.13986-5-pstanner%40redhat.com
> patch subject: [PATCH v5 02/10] PCI: Deprecate iomap-table functions
> config: i386-randconfig-141-20240404
> (https://download.01.org/0day-ci/archive/20240404/202404040920.QIxhNe
> Mu-lkp@intel.com/config)
> compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.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: Dan Carpenter <dan.carpenter@linaro.org>
> > Closes:
> > https://lore.kernel.org/r/202404040920.QIxhNeMu-lkp@intel.com/
> 
> smatch warnings:
> drivers/pci/devres.c:897 pcim_iomap_regions_request_all() error: we
> previously assumed 'legacy_iomap_table' could be null (see line 894)
> 
> vim +/legacy_iomap_table +897 drivers/pci/devres.c
> 
> acc2364fe66106 Philipp Stanner 2024-01-31  865  int
> pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
> acc2364fe66106 Philipp Stanner 2024-01-31 
> 866                                     const char *name)
> acc2364fe66106 Philipp Stanner 2024-01-31  867  {
> 34e90b966504f3 Philipp Stanner 2024-04-03  868          short bar;
> 34e90b966504f3 Philipp Stanner 2024-04-03  869          int ret;
> 34e90b966504f3 Philipp Stanner 2024-04-03  870          void __iomem
> **legacy_iomap_table;
> acc2364fe66106 Philipp Stanner 2024-01-31  871  
> 34e90b966504f3 Philipp Stanner 2024-04-03  872          ret =
> pcim_request_all_regions(pdev, name);
> 34e90b966504f3 Philipp Stanner 2024-04-03  873          if (ret != 0)
> 34e90b966504f3 Philipp Stanner 2024-04-03 
> 874                  return ret;
> acc2364fe66106 Philipp Stanner 2024-01-31  875  
> 34e90b966504f3 Philipp Stanner 2024-04-03  876          for (bar = 0;
> bar < PCI_STD_NUM_BARS; bar++) {
> 34e90b966504f3 Philipp Stanner 2024-04-03  877                  if
> (!mask_contains_bar(mask, bar))
> 34e90b966504f3 Philipp Stanner 2024-04-03 
> 878                          continue;
> 34e90b966504f3 Philipp Stanner 2024-04-03  879                  if
> (!pcim_iomap(pdev, bar, 0))
> 34e90b966504f3 Philipp Stanner 2024-04-03 
> 880                          goto err;
> 34e90b966504f3 Philipp Stanner 2024-04-03  881          }
> 34e90b966504f3 Philipp Stanner 2024-04-03  882  
> 34e90b966504f3 Philipp Stanner 2024-04-03  883          return 0;
> 34e90b966504f3 Philipp Stanner 2024-04-03  884  
> 34e90b966504f3 Philipp Stanner 2024-04-03  885  err:
> 34e90b966504f3 Philipp Stanner 2024-04-03  886          /*
> 34e90b966504f3 Philipp Stanner 2024-04-03  887           * Here it
> gets tricky: pcim_iomap() above has most likely
> 34e90b966504f3 Philipp Stanner 2024-04-03  888           * failed
> because it got an OOM when trying to create the
> 34e90b966504f3 Philipp Stanner 2024-04-03  889           * legacy-
> table.
> 34e90b966504f3 Philipp Stanner 2024-04-03  890           * We check
> here if that has happened. If not, pcim_iomap()
> 34e90b966504f3 Philipp Stanner 2024-04-03  891           * must have
> failed because of EINVAL.
> 34e90b966504f3 Philipp Stanner 2024-04-03  892           */
> 34e90b966504f3 Philipp Stanner 2024-04-03 
> 893          legacy_iomap_table = (void __iomem
> **)pcim_iomap_table(pdev);
> 34e90b966504f3 Philipp Stanner 2024-04-03 @894          ret =
> legacy_iomap_table ? -EINVAL : -ENOMEM;
>                                                              
> ^^^^^^^^^^^^^^^^^^
> Check for NULL
> 
> 34e90b966504f3 Philipp Stanner 2024-04-03  895  
> 34e90b966504f3 Philipp Stanner 2024-04-03  896          while (--bar
> >= 0)
> 34e90b966504f3 Philipp Stanner 2024-04-03
> @897                  pcim_iounmap(pdev, legacy_iomap_table[bar]);
>                                                                      
>               ^^^^^^^^^^^^^^^^^^
> Unchecked dereference

I think this is fine because `bar` can only be larger 0 if at least one
mapping has been created, thus, when it was possible to create
legacy_iomap_table, which is then valid.
So the second for-loop only executes when it's not NULL.

I guess we could silence the warning by doing

ret = bar > 0 ? -EINVAL : -ENOMEM;

Would even save one line of code


P.


> 
> 34e90b966504f3 Philipp Stanner 2024-04-03  898  
> 34e90b966504f3 Philipp Stanner 2024-04-03 
> 899          pcim_release_all_regions(pdev);
> 34e90b966504f3 Philipp Stanner 2024-04-03  900  
> 34e90b966504f3 Philipp Stanner 2024-04-03  901          return ret;
> acc2364fe66106 Philipp Stanner 2024-01-31  902  }
> 


  reply	other threads:[~2024-04-04  7:15 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-03  8:07 [PATCH v5 00/10] Make PCI's devres API more consistent Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 01/10] PCI: Add new set of devres functions Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 02/10] PCI: Deprecate iomap-table functions Philipp Stanner
2024-04-04  6:29   ` Dan Carpenter
2024-04-04  7:15     ` Philipp Stanner [this message]
2024-04-03  8:07 ` [PATCH v5 03/10] PCI: Warn users about complicated devres nature Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 04/10] PCI: Make devres region requests consistent Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 05/10] PCI: Move dev-enabled status bit to struct pci_dev Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 06/10] PCI: Move pinned " Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 07/10] PCI: Give pcim_set_mwi() its own devres callback Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 08/10] PCI: Give pci(m)_intx " Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 09/10] PCI: Remove legacy pcim_release() Philipp Stanner
2024-04-03  8:07 ` [PATCH v5 10/10] drm/vboxvideo: fix mapping leaks Philipp Stanner
  -- strict thread matches above, loose matches on Subject: below --
2024-04-04  1:38 [PATCH v5 02/10] PCI: Deprecate iomap-table functions kernel test robot

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=cd60599bee1b857ba069e25a8adb41ee2bc25699.camel@redhat.com \
    --to=pstanner@redhat.com \
    --cc=airlied@gmail.com \
    --cc=dakr@redhat.com \
    --cc=dan.carpenter@linaro.org \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hdegoede@redhat.com \
    --cc=helgaas@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=oe-kbuild@lists.linux.dev \
    --cc=sam@ravnborg.org \
    --cc=tzimmermann@suse.de \
    /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.