xwayland: Do not free a NULL GBM bo

Olivier Fourdan requested to merge ofourdan/xserver:null-gbm-bo into master

Both gbm_bo_create() and gbm_bo_create_with_modifiers() can fail and return NULL.

If that occurs, xwl_glamor_gbm_create_pixmap() will not create a pixmap for the (NULL) GBM bo, but would still try to free the bo which leads to a crash in mesa:

  #7  <signal handler called>
  #8  in gbm_bo_destroy (bo=0x0) at ../src/gbm/main/gbm.c:439
  #9  in xwl_glamor_gbm_create_pixmap () at xwayland-glamor-gbm.c:245
        format = <optimized out>
        xwl_screen = <optimized out>
        xwl_gbm = <optimized out>
        bo = 0x0
        pixmap = <optimized out>
  #10 in ProcCreatePixmap () at dispatch.c:1440
  #11 in Dispatch () at dispatch.c:478
  #12 in dix_main () at main.c:276

To avoid the crash, only free the GBM bo if not NULL.

Signed-off-by: Olivier Fourdan ofourdan@redhat.com Bugzilla: https://bugzilla.redhat.com/1729925

Edited by Adam Jackson

Merge request reports