Commit 0193c62c authored by Stefano Stabellini's avatar Stefano Stabellini
Browse files

xenfb: map framebuffer read-only and handle unmap errors



The framebuffer is needlessly mapped (PROT_READ | PROT_WRITE), map it
PROT_READ instead.

The framebuffer is unmapped by replacing the framebuffer pages with
anonymous shared memory, calling mmap. Check for return errors and print
a warning.

Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
parent 1cf892ca
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -495,7 +495,7 @@ static int xenfb_map_fb(struct XenFB *xenfb)
    munmap(map, n_fbdirs * XC_PAGE_SIZE);

    xenfb->pixels = xc_map_foreign_pages(xen_xc, xenfb->c.xendev.dom,
					 PROT_READ | PROT_WRITE, fbmfns, xenfb->fbpages);
            PROT_READ, fbmfns, xenfb->fbpages);
    if (xenfb->pixels == NULL)
	goto out;

@@ -903,6 +903,11 @@ static void fb_disconnect(struct XenDevice *xendev)
    fb->pixels = mmap(fb->pixels, fb->fbpages * XC_PAGE_SIZE,
                      PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON,
                      -1, 0);
    if (fb->pixels == MAP_FAILED) {
        xen_be_printf(xendev, 0,
                "Couldn't replace the framebuffer with anonymous memory errno=%d\n",
                errno);
    }
    common_unbind(&fb->c);
    fb->feature_update = 0;
    fb->bug_trigger    = 0;