From bca25bafbb390eeec376ac994954b99489d198ec Mon Sep 17 00:00:00 2001 From: Parag Warudkar Date: Wed, 30 Jan 2008 13:31:59 +0100 Subject: [PATCH] x86: fix dmi_alloc() to not advance alloc index in case of 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 Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner --- include/asm-x86/dmi.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/asm-x86/dmi.h b/include/asm-x86/dmi.h index 8e2b0e6aa8e7..5008c365e6e4 100644 --- a/include/asm-x86/dmi.h +++ b/include/asm-x86/dmi.h @@ -22,8 +22,9 @@ extern char dmi_alloc_data[DMI_MAX_DATA]; 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; }