lockdep_assert_held_write(&cxl_dpa_rwsem);
 
-       if (!len)
-               goto success;
+       if (!len) {
+               dev_warn(dev, "decoder%d.%d: empty reservation attempted\n",
+                        port->id, cxled->cxld.id);
+               return -EINVAL;
+       }
 
        if (cxled->dpa_res) {
                dev_dbg(dev, "decoder%d.%d: existing allocation %pr assigned\n",
                cxled->mode = CXL_DECODER_MIXED;
        }
 
-success:
        port->hdm_end++;
        get_device(&cxled->cxld.dev);
        return 0;
                                 port->id, cxld->id);
                        return -ENXIO;
                }
+
+               if (size == 0) {
+                       dev_warn(&port->dev,
+                                "decoder%d.%d: Committed with zero size\n",
+                                port->id, cxld->id);
+                       return -ENXIO;
+               }
                port->commit_end = cxld->id;
        } else {
                /* unless / until type-2 drivers arrive, assume type-3 */