[PATCH] x86: Fix dmi_alloc() to not advance alloc index in case of failure

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

 




dmi_alloc() for CONFIG_X86_64 is defined to allocate from a static array and it maintains a allocation index which is advanced each time allocation is attempted - it gets incremented even if an allocation fails thereby depriving any future request that may be small enough to be satisfied from the array.

Fix this by first testing if allocation is going to be possible and incrementing alloc index only then.

Signed-off-by: Parag Warudkar <[email protected]>

--- linux-2.6/include/asm-x86/dmi.h	2007-12-07 10:04:42.000000000 -0500
+++ linux-2.6-work/include/asm-x86/dmi.h	2007-12-18 18:08:42.000000000 -0500
@@ -22,8 +22,9 @@
 static inline void *dmi_alloc(unsigned len)
 {
 	int idx = dmi_alloc_index;
-	if ((dmi_alloc_index += len) > DMI_MAX_DATA)
+	if ((dmi_alloc_index + len) > DMI_MAX_DATA)
 		return NULL;
+	dmi_alloc_index += len;
 	return dmi_alloc_data + idx;
 }

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux