+ linux-cxl On Fri, Nov 29, 2024 at 09:15:12AM +0000, alucerop@xxxxxxx wrote: > From: Alejandro Lucero <alucerop@xxxxxxx> > > While resource_contains checks for IORESOURCE_UNSET flag for the > resources given, if r1 was initialized with 0 size, the function > returns a false positive. This is so because resource start and > end fields are unsigned with end initialised to size - 1 by current > resource macros. > > Make the function to check for the resource size for both resources > since r2 with size 0 should not be considered as valid for the function > purpose. > Hi Alejandro, Can this patch be included in the CXL Type-2 patchset, as a replacement for: [PATCH v6 10/28] cxl: harden resource_contains checks to handle zero size resources https://lore.kernel.org/20241202171222.62595-11-alejandro.lucero-palau@xxxxxxx/T/#u Keeping it in that set also keeps the discussion history. DaveJ may be able to take it through the CXL tree with Bjorn's ACK. --Alison Reviewed-by: Alison Schofield <alison.schofield@xxxxxxxxx> > Signed-off-by: Alejandro Lucero <alucerop@xxxxxxx> > Suggested-by: Alison Schofield <alison.schofield@xxxxxxxxx> > --- > include/linux/ioport.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/linux/ioport.h b/include/linux/ioport.h > index 6e9fb667a1c5..6cb8a8494508 100644 > --- a/include/linux/ioport.h > +++ b/include/linux/ioport.h > @@ -264,6 +264,8 @@ static inline unsigned long resource_ext_type(const struct resource *res) > /* True iff r1 completely contains r2 */ > static inline bool resource_contains(const struct resource *r1, const struct resource *r2) > { > + if (!resource_size(r1) || !resource_size(r2)) > + return false; > if (resource_type(r1) != resource_type(r2)) > return false; > if (r1->flags & IORESOURCE_UNSET || r2->flags & IORESOURCE_UNSET) > -- > 2.17.1 >