| From 1ead852dd88779eda12cb09cc894a03d9abfe1ec Mon Sep 17 00:00:00 2001 |
| From: Borislav Petkov <bp@suse.de> |
| Date: Thu, 16 Jun 2016 19:13:49 +0200 |
| Subject: x86/amd_nb: Fix boot crash on non-AMD systems |
| |
| From: Borislav Petkov <bp@suse.de> |
| |
| commit 1ead852dd88779eda12cb09cc894a03d9abfe1ec upstream. |
| |
| Fix boot crash that triggers if this driver is built into a kernel and |
| run on non-AMD systems. |
| |
| AMD northbridges users call amd_cache_northbridges() and it returns |
| a negative value to signal that we weren't able to cache/detect any |
| northbridges on the system. |
| |
| At least, it should do so as all its callers expect it to do so. But it |
| does return a negative value only when kmalloc() fails. |
| |
| Fix it to return -ENODEV if there are no NBs cached as otherwise, amd_nb |
| users like amd64_edac, for example, which relies on it to know whether |
| it should load or not, gets loaded on systems like Intel Xeons where it |
| shouldn't. |
| |
| Reported-and-tested-by: Tony Battersby <tonyb@cybernetics.com> |
| Signed-off-by: Borislav Petkov <bp@suse.de> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Link: http://lkml.kernel.org/r/1466097230-5333-2-git-send-email-bp@alien8.de |
| Link: https://lkml.kernel.org/r/5761BEB0.9000807@cybernetics.com |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/x86/kernel/amd_nb.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/x86/kernel/amd_nb.c |
| +++ b/arch/x86/kernel/amd_nb.c |
| @@ -71,8 +71,8 @@ int amd_cache_northbridges(void) |
| while ((misc = next_northbridge(misc, amd_nb_misc_ids)) != NULL) |
| i++; |
| |
| - if (i == 0) |
| - return 0; |
| + if (!i) |
| + return -ENODEV; |
| |
| nb = kzalloc(i * sizeof(struct amd_northbridge), GFP_KERNEL); |
| if (!nb) |