int err = -ENOMEM, i, j, irq = -1;
        u32 reg;
 
-       dd = kzalloc(sizeof(struct omap_aes_dev), GFP_KERNEL);
+       dd = devm_kzalloc(dev, sizeof(struct omap_aes_dev), GFP_KERNEL);
        if (dd == NULL) {
                dev_err(dev, "unable to alloc data struct.\n");
                goto err_data;
        tasklet_kill(&dd->queue_task);
        pm_runtime_disable(dev);
 err_res:
-       kfree(dd);
        dd = NULL;
 err_data:
        dev_err(dev, "initialization failed.\n");
        tasklet_kill(&dd->queue_task);
        omap_aes_dma_cleanup(dd);
        pm_runtime_disable(dd->dev);
-       kfree(dd);
        dd = NULL;
 
        return 0;