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 }
>
next prev parent 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.