Re: [PATCH] resource: harden resource_contains

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 12/4/24 23:06, Alison Schofield wrote:
+ 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.


Sure. I'll do so in the almost ready v7.


--Alison


Reviewed-by: Alison Schofield <alison.schofield@xxxxxxxxx>


Thank you



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





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux