diff mbox

Add NULL checking for drawable in sna_dri2_flip_event

Message ID 1452307649-14643-1-git-send-email-siew.hoon.lim@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lim, Siew Hoon Jan. 9, 2016, 2:47 a.m. UTC
The last flip complete signal may happen after the
sna_dri2_destroy_window function has been called. This
leads to calling frame_swap_complete with a null flip
drawable. So check for that and handle accordingly.

Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
Reviewed-by: Bob Paauwe <bob.j.paauwe@intel.com>
---
 src/sna/sna_dri2.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Lim, Siew Hoon Jan. 10, 2016, 10:41 p.m. UTC | #1
Hi,

CC-ing Chris Wilson to help do code review DDX driver side and possible others corner case that we didn't spotted.
This is corner case that happen hitting assert checking until SNA DDX driver exit.

I'm trying to cc-ing Chirs Wilson in "chris@chris-wilson.co.uk" email address.
But received delivery failed from this email address. I don't know why.


Thanks.
...siewhoon

> -----Original Message-----

> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of

> Lim Siew Hoon

> Sent: Saturday, January 09, 2016 10:47 AM

> To: intel-gfx@lists.freedesktop.org

> Subject: [Intel-gfx] [PATCH] Add NULL checking for drawable in

> sna_dri2_flip_event

> 

> The last flip complete signal may happen after the

> sna_dri2_destroy_window function has been called. This leads to calling

> frame_swap_complete with a null flip drawable. So check for that and

> handle accordingly.

> 

> Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>

> Reviewed-by: Bob Paauwe <bob.j.paauwe@intel.com>

> ---

>  src/sna/sna_dri2.c | 4 ++++

>  1 file changed, 4 insertions(+)

> 

> diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c index 05a4f1c..6f59f05

> 100644

> --- a/src/sna/sna_dri2.c

> +++ b/src/sna/sna_dri2.c

> @@ -2874,6 +2874,10 @@ static void sna_dri2_flip_event(struct

> sna_dri2_event *flip)

>  	case FLIP_THROTTLE:

>  		if (flip->signal) {

>  			DBG(("%s: triple buffer swap complete, unblocking

> client\n", __FUNCTION__));

> +			if(flip->draw == NULL) {

> +				sna_dri2_event_free(flip);

> +				break;

> +			}

>  			frame_swap_complete(flip, DRI2_FLIP_COMPLETE);

>  		}

>  	case FLIP_COMPLETE:

> --

> 2.1.0

> 

> _______________________________________________

> Intel-gfx mailing list

> Intel-gfx@lists.freedesktop.org

> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 05a4f1c..6f59f05 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -2874,6 +2874,10 @@  static void sna_dri2_flip_event(struct sna_dri2_event *flip)
 	case FLIP_THROTTLE:
 		if (flip->signal) {
 			DBG(("%s: triple buffer swap complete, unblocking client\n", __FUNCTION__));
+			if(flip->draw == NULL) {
+				sna_dri2_event_free(flip);
+				break;
+			}
 			frame_swap_complete(flip, DRI2_FLIP_COMPLETE);
 		}
 	case FLIP_COMPLETE: