if (coredump->snapshot.hwe[i])
                        xe_hw_engine_snapshot_print(coredump->snapshot.hwe[i],
                                                    &p);
-       if (coredump->snapshot.vm) {
-               drm_printf(&p, "\n**** VM state ****\n");
-               xe_vm_snapshot_print(coredump->snapshot.vm, &p);
-       }
+       drm_printf(&p, "\n**** VM state ****\n");
+       xe_vm_snapshot_print(coredump->snapshot.vm, &p);
 
        return count - iter.remain;
 }
 
 
        if (num_snaps)
                snap = kvzalloc(offsetof(struct xe_vm_snapshot, snap[num_snaps]), GFP_NOWAIT);
-       if (!snap)
+       if (!snap) {
+               snap = num_snaps ? ERR_PTR(-ENOMEM) : ERR_PTR(-ENODEV);
                goto out_unlock;
+       }
 
        snap->num_snaps = num_snaps;
        i = 0;
 
 void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap)
 {
-       if (!snap)
+       if (IS_ERR(snap))
                return;
 
        for (int i = 0; i < snap->num_snaps; i++) {
 {
        unsigned long i, j;
 
+       if (IS_ERR(snap)) {
+               drm_printf(p, "[0].error: %li\n", PTR_ERR(snap));
+               return;
+       }
+
        for (i = 0; i < snap->num_snaps; i++) {
                drm_printf(p, "[%llx].length: 0x%lx\n", snap->snap[i].ofs, snap->snap[i].len);
 
 {
        unsigned long i;
 
-       if (!snap)
+       if (IS_ERR(snap))
                return;
 
        for (i = 0; i < snap->num_snaps; i++) {