Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99955451 authored by Boris Ostrovsky's avatar Boris Ostrovsky Committed by Greg Kroah-Hartman
Browse files

x86/EISA: Don't probe EISA bus for Xen PV guests



commit 6a92b11169a65b3f8cc512c75a252cbd0d096ba0 upstream.

For unprivileged Xen PV guests this is normal memory and ioremap will
not be able to properly map it.

While at it, since ioremap may return NULL, add a test for pointer's
validity.

Reported-by: default avatarAndy Smith <andy@strugglers.net>
Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: hpa@zytor.com
Cc: xen-devel@lists.xenproject.org
Cc: jgross@suse.com
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20180911195538.23289-1-boris.ostrovsky@oracle.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d9951521
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -7,11 +7,17 @@
#include <linux/eisa.h>
#include <linux/io.h>

#include <xen/xen.h>

static __init int eisa_bus_probe(void)
{
	void __iomem *p = ioremap(0x0FFFD9, 4);
	void __iomem *p;

	if (xen_pv_domain() && !xen_initial_domain())
		return 0;

	if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
	p = ioremap(0x0FFFD9, 4);
	if (p && readl(p) == 'E' + ('I' << 8) + ('S' << 16) + ('A' << 24))
		EISA_bus = 1;
	iounmap(p);
	return 0;