{
        struct vdec_t *vdec = inst->priv;
        struct vpu_fs_info info;
+       int ret;
 
        if (!vdec->req_frame_count)
                return 0;
        memset(&info, 0, sizeof(info));
        info.type = MEM_RES_FRAME;
        info.tag = vdec->seq_tag + 0xf0;
-       vpu_session_alloc_fs(inst, &info);
+       ret = vpu_session_alloc_fs(inst, &info);
+       if (ret)
+               return ret;
        vdec->req_frame_count--;
 
        return 0;
 
 
        dev_dbg(core->dev, "try to wake up\n");
        mutex_lock(&core->cmd_lock);
-       vpu_cmd_send(core, &pkt);
+       if (vpu_cmd_send(core, &pkt))
+               dev_err(core->dev, "fail to keep active\n");
        mutex_unlock(&core->cmd_lock);
 }
 
 
        [VPU_BUF_STATE_ERROR] = "error",
 };
 
+static inline const char *to_vpu_stat_name(int state)
+{
+       if (state <= VPU_BUF_STATE_ERROR)
+               return vpu_stat_name[state];
+       return "unknown";
+}
+
 static int vpu_dbg_instance(struct seq_file *s, void *data)
 {
        struct vpu_inst *inst = s->private;
                num = scnprintf(str, sizeof(str),
                                "output [%2d] state = %10s, %8s\n",
                                i, vb2_stat_name[vb->state],
-                               vpu_stat_name[vpu_get_buffer_state(vbuf)]);
+                               to_vpu_stat_name(vpu_get_buffer_state(vbuf)));
                if (seq_write(s, str, num))
                        return 0;
        }
                num = scnprintf(str, sizeof(str),
                                "capture[%2d] state = %10s, %8s\n",
                                i, vb2_stat_name[vb->state],
-                               vpu_stat_name[vpu_get_buffer_state(vbuf)]);
+                               to_vpu_stat_name(vpu_get_buffer_state(vbuf)));
                if (seq_write(s, str, num))
                        return 0;
        }