diff --git a/drivers/net/rpmsgdrv.c b/drivers/net/rpmsgdrv.c index b8cf19a6f08..67cf6286f8c 100644 --- a/drivers/net/rpmsgdrv.c +++ b/drivers/net/rpmsgdrv.c @@ -1145,14 +1145,30 @@ int net_rpmsg_drv_init(FAR const char *cpuname, /* Register the device with the openamp */ - rpmsg_register_callback(dev, + ret = rpmsg_register_callback(dev, net_rpmsg_drv_device_created, net_rpmsg_drv_device_destroy, NULL, NULL); + if (ret < 0) + { + kmm_free(priv); + return ret; + } + /* Register the device with the OS so that socket IOCTLs can be performed */ ret = netdev_register(dev, lltype); + if (ret < 0) + { + rpmsg_unregister_callback(dev, + net_rpmsg_drv_device_created, + net_rpmsg_drv_device_destroy, + NULL, + NULL); + kmm_free(priv); + } + return ret; }