From: Bjorn Helgaas <helgaas@kernel.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
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 <bhelgaas@google.com>,
Sam Ravnborg <sam@ravnborg.org>,
dakr@redhat.com, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-doc@vger.kernel.org
Subject: Re: [PATCH 01/10] pci: add new set of devres functions
Date: Fri, 19 Jan 2024 16:52:50 -0600 [thread overview]
Message-ID: <20240119225250.GA191270@bhelgaas> (raw)
In-Reply-To: <1983517bf5d0c98894a7d40fbec353ad75160cb4.camel@redhat.com>
On Wed, Jan 17, 2024 at 09:54:47AM +0100, Philipp Stanner wrote:
> On Tue, 2024-01-16 at 12:44 -0600, Bjorn Helgaas wrote:
> > On Mon, Jan 15, 2024 at 03:46:12PM +0100, Philipp Stanner wrote:
> > > PCI's devres API is not extensible to ranged mappings and has
> > > bug-provoking features. Improve that by providing better
> > > alternatives.
> >
> > I guess "ranged mappings" means a mapping that doesn't cover an
> > entire BAR? Maybe there's a way to clarify?
>
> That's what it's supposed to mean, yes. We could give it the longer
> title "mappings smaller than the whole BAR" or something, I guess.
"partial BAR mappings"?
> > > to the creation of a set of "pural functions" such as
s/pural/plural/ (I missed this before).
> > > c) The iomap-table mechanism is over-engineered,
> > > complicated and
> > > can by definition not perform bounds checks, thus,
> > > provoking
> > > memory faults: pcim_iomap_table(pdev)[42]
> >
> > Not sure what "pcim_iomap_table(pdev)[42]" means.
>
> That function currently is implemented with this prototype:
> void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
>
> And apparently, it's intended to index directly over the function. And
> that's how at least part of the users use it indeed.
>
> Here in drivers/crypto/inside-secure/safexcel.c, L.1919 for example:
>
> priv->base = pcim_iomap_table(pdev)[0];
>
> I've never seen something that wonderful in C ever before, so it's not
> surprising that you weren't sure what I mean....
>
> pcim_iomap_table() can not and does not perform any bounds check. If
> you do
>
> void __iomem *mappy_map_mapface = pcim_iomap_table(pdev)[42];
>
> then it will just return random garbage, or it faults. No -EINVAL or
> anything. You won't even get NULL.
>
> That's why this function must die.
No argument except that this example only makes sense after one looks
up the prototype and connects the dots.
Bjorn
next prev parent reply other threads:[~2024-01-19 22:52 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-15 14:46 [PATCH 00/10] Make PCI's devres API more consistent Philipp Stanner
2024-01-15 14:46 ` [PATCH 01/10] pci: add new set of devres functions Philipp Stanner
2024-01-16 18:44 ` Bjorn Helgaas
2024-01-17 8:54 ` Philipp Stanner
2024-01-19 22:52 ` Bjorn Helgaas [this message]
2024-01-16 21:15 ` andy.shevchenko
2024-01-17 9:21 ` Philipp Stanner
2024-01-15 14:46 ` [PATCH 02/10] pci: deprecate iomap-table functions Philipp Stanner
2024-01-16 21:27 ` andy.shevchenko
2024-01-17 9:40 ` Philipp Stanner
2024-01-15 14:46 ` [PATCH 03/10] pci: warn users about complicated devres nature Philipp Stanner
2024-01-15 14:46 ` [PATCH 04/10] pci: devres: make devres region requests consistent Philipp Stanner
2024-01-16 21:29 ` andy.shevchenko
2024-01-15 14:46 ` [PATCH 05/10] pci: move enabled status bit to pci_dev struct Philipp Stanner
2024-01-15 14:46 ` [PATCH 06/10] pci: move pinned " Philipp Stanner
2024-01-16 21:34 ` andy.shevchenko
2024-01-17 9:02 ` Philipp Stanner
2024-01-15 14:46 ` [PATCH 07/10] pci: devres: give mwi its own callback Philipp Stanner
2024-01-16 18:35 ` Bjorn Helgaas
2024-01-15 14:46 ` [PATCH 08/10] pci: devres: give pci(m)_intx " Philipp Stanner
2024-01-16 21:37 ` andy.shevchenko
2024-01-15 14:46 ` [PATCH 09/10] pci: devres: remove legacy pcim_release() Philipp Stanner
2024-01-16 21:40 ` andy.shevchenko
2024-01-17 13:49 ` Philipp Stanner
2024-01-15 14:46 ` [PATCH 10/10] drm/vboxvideo: fix mapping leaks Philipp Stanner
2024-01-16 18:29 ` [PATCH 00/10] Make PCI's devres API more consistent Bjorn Helgaas
2024-01-16 21:17 ` andy.shevchenko
2024-01-17 9:59 ` Philipp Stanner
2024-01-18 8:48 ` Philipp Stanner
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=20240119225250.GA191270@bhelgaas \
--to=helgaas@kernel.org \
--cc=airlied@gmail.com \
--cc=bhelgaas@google.com \
--cc=corbet@lwn.net \
--cc=dakr@redhat.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=hdegoede@redhat.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=pstanner@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox