[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.1-testing] pvfb: PVFB frontend can send bogus screen updates
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1196963052 0 # Node ID 0462bf70c6b9382fba4953a155a842b73202cfab # Parent 1177efd2500e84b5a8cee0d94541a8decffd1d2d pvfb: PVFB frontend can send bogus screen updates The PVFB frontend can get confused and send a screen update to the backend when the screen is actually clean. Such an update asks for the impossible rectangle (x1, x2, y1, y2) = (INT_MAX, 0, INT_MAX, 0). Fix by setting the dirty flag in the obvious place: when the dirty rectangle is grown. Signed-off-by: Markus Armbruster <armbru@xxxxxxxxxx> linux-2.6.18-xen changeset: 311:ca05cf1a9bdc2c7604b95fd085fa5abe067c969a linux-2.6.18-xen date: Fri Nov 16 16:55:46 2007 +0000 --- linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletion(-) diff -r 1177efd2500e -r 0462bf70c6b9 linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c --- a/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c Thu Dec 06 17:41:12 2007 +0000 +++ b/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c Thu Dec 06 17:44:12 2007 +0000 @@ -201,6 +201,11 @@ static void xenfb_update_screen(struct x mutex_unlock(&info->mm_lock); + if (x2 < x1 || y2 < y1) { + printk("xenfb_update_screen bogus rect %d %d %d %d\n", + x1, x2, y1, y2); + WARN_ON(1); + } xenfb_do_update(info, x1, y1, x2 - x1, y2 - y1); } @@ -252,7 +257,6 @@ static void xenfb_timer(unsigned long da static void xenfb_timer(unsigned long data) { struct xenfb_info *info = (struct xenfb_info *)data; - info->dirty = 1; wake_up(&info->wq); } @@ -272,6 +276,7 @@ static void __xenfb_refresh(struct xenfb info->x1 = x1; if (info->x2 < x2) info->x2 = x2; + info->dirty = 1; if (timer_pending(&info->refresh)) return; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |