err = tegra_bpmp_transfer(bpmp, &msg);
        if (err < 0)
                return err;
+       else if (msg.rx.ret < 0)
+               return -EINVAL;
 
        *nbytes = (size_t)resp.fop.nbytes;
 
        err = tegra_bpmp_transfer(bpmp, &msg);
        if (err < 0)
                return err;
+       else if (msg.rx.ret < 0)
+               return -EINVAL;
 
        *nbytes = (size_t)resp.dumpdir.nbytes;
 
 {
        dma_addr_t phys;
        void *virt;
-       const size_t sz = SZ_256K;
+       const size_t sz = SZ_512K;
        size_t nbytes;
        int ret;
        struct dentry *root;
        }
 
        ret = mrq_debugfs_dumpdir(bpmp, phys, sz, &nbytes);
-       if (ret < 0)
+       if (ret < 0) {
+               goto free;
+       } else if (nbytes > sz) {
+               ret = -EINVAL;
                goto free;
+       }
 
        ret = create_debugfs_mirror(bpmp, virt, nbytes, root);
 free: