RE: [PATCH 1/2] PCI/MSI: Cache the MSIX table size

Reshetova, Elena
2023-01-25T12:33:16Z

> On Tue, Jan 24, 2023 at 01:52:37PM +0200, Alexander Shishkin wrote:
> > Leon Romanovsky <leon@kernel.org> writes:
> >
> > > On Thu, Jan 19, 2023 at 07:06:32PM +0200, Alexander Shishkin wrote:
> > >> A malicious device can change its MSIX table size between the table
> > >> ioremap() and subsequent accesses, resulting in a kernel page fault in
> > >> pci_write_msg_msix().
> > >>
> > >> To avoid this, cache the table size observed at the moment of table
> > >> ioremap() and use the cached value. This, however, does not help drivers
> > >> that peek at the PCIE_MSIX_FLAGS register directly.
> > >>
> > >> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> > >> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > >> Cc: stable@vger.kernel.org
> > >> ---
> > >> drivers/pci/msi/api.c | 7 ++++++-
> > >> drivers/pci/msi/msi.c | 2 +-
> > >> include/linux/pci.h | 1 +
> > >> 3 files changed, 8 insertions(+), 2 deletions(-)
> > >
> > > I'm not security expert here, but not sure that this protects from anything.
> > > 1. Kernel relies on working and not-malicious HW. There are gazillion ways
> > > to cause crashes other than changing MSI-X.
> >
> > This particular bug was preventing our fuzzing from going deeper into
> > the code and reaching some more of the aforementioned gazillion bugs.
>
> As per our documentation, if you are "fixing" things based on a tool you
> have, you HAVE TO document that in the changelog. Otherwise we just get
> to reject the patch flat out (hint, this has caused more than one group
> of developers to just be flat out banned for ignoring...)
>
> And what kind of tool is now fuzzing PCI config accesses with
> "malicious" devices? Again, this is NOT something that Linux currently
> even attempts to want to protect itself against. If you are wanting to
> change that model, wonderful, let's discuss that and work on defining
> the scope of your new security threat model and go from there. Don't
> throw random patches at us and expect us to think they are even valid.
>
> Again, Linux trusts PCI devices. If you don't want to trust PCI
> devices, we already have a framework in place to prevent that which is
> independant of this area of the PCI code. Use that, or let's discuss
> why that is insufficient.

Sure, I have started a new thread on this in
https://lore.kernel.org/all/DM8PR11MB57505481B2FE79C3D56C9201E7CE9@DM8PR11MB5750.namprd11.prod.outlook.com/

I think it is much bigger topic to discuss, so better be handled separately.

Best Regards,
Elena.