From: Todd Poynor Date: Tue, 17 Jul 2018 20:56:45 +0000 (-0700) Subject: staging: gasket: remove driver registration on class creation failure X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=ba6585847ebc432e0c808c2bd194e620017b5901;p=openwrt%2Fstaging%2Fblogic.git staging: gasket: remove driver registration on class creation failure If class_create() fails, remove the gasket driver from the global registration table. Signed-off-by: Zhongze Hu Signed-off-by: Todd Poynor Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/gasket/gasket_core.c b/drivers/staging/gasket/gasket_core.c index b69b630f1b79..cbadab7544c8 100644 --- a/drivers/staging/gasket/gasket_core.c +++ b/drivers/staging/gasket/gasket_core.c @@ -335,7 +335,8 @@ int gasket_register_device(const struct gasket_driver_desc *driver_desc) if (IS_ERR_OR_NULL(internal->class)) { gasket_nodev_error("Cannot register %s class [ret=%ld]", driver_desc->name, PTR_ERR(internal->class)); - return PTR_ERR(internal->class); + ret = PTR_ERR(internal->class); + goto unregister_gasket_driver; } /* @@ -369,6 +370,7 @@ fail2: fail1: class_destroy(internal->class); +unregister_gasket_driver: g_descs[desc_idx].driver_desc = NULL; return ret; }