struct dwc3_event_buffer *evt)
 {
        dma_free_coherent(dwc->dev, evt->length, evt->buf, evt->dma);
-       kfree(evt);
 }
 
 /**
 {
        struct dwc3_event_buffer        *evt;
 
-       evt = kzalloc(sizeof(*evt), GFP_KERNEL);
+       evt = devm_kzalloc(dwc->dev, sizeof(*evt), GFP_KERNEL);
        if (!evt)
                return ERR_PTR(-ENOMEM);
 
                if (evt)
                        dwc3_free_one_event_buffer(dwc, evt);
        }
-
-       kfree(dwc->ev_buffs);
 }
 
 /**
        num = DWC3_NUM_INT(dwc->hwparams.hwparams1);
        dwc->num_event_buffers = num;
 
-       dwc->ev_buffs = kzalloc(sizeof(*dwc->ev_buffs) * num, GFP_KERNEL);
+       dwc->ev_buffs = devm_kzalloc(dwc->dev, sizeof(*dwc->ev_buffs) * num,
+                       GFP_KERNEL);
        if (!dwc->ev_buffs) {
                dev_err(dwc->dev, "can't allocate event buffers array\n");
                return -ENOMEM;