crypto: ccp - Provide an error path for debugfs setup failure
authorGary R Hook <gary.hook@amd.com>
Wed, 28 Jun 2017 16:56:47 +0000 (11:56 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 18 Jul 2017 09:50:53 +0000 (17:50 +0800)
Changes since v2:
  - On failure remove only the DebugFS heirarchy for this device
Changes since v1:
  - Remove unneeded local variable

Signed-off-by: Gary R Hook <gary.hook@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccp/ccp-debugfs.c

index 3cd6c83754e0870e8fcd2f7eaea56b67ca90a921..59d4ca4e72d8c2820804c2f284cd6ac442a47d61 100644 (file)
@@ -305,19 +305,19 @@ void ccp5_debugfs_setup(struct ccp_device *ccp)
 
        ccp->debugfs_instance = debugfs_create_dir(ccp->name, ccp_debugfs_dir);
        if (!ccp->debugfs_instance)
-               return;
+               goto err;
 
        debugfs_info = debugfs_create_file("info", 0400,
                                           ccp->debugfs_instance, ccp,
                                           &ccp_debugfs_info_ops);
        if (!debugfs_info)
-               return;
+               goto err;
 
        debugfs_stats = debugfs_create_file("stats", 0600,
                                            ccp->debugfs_instance, ccp,
                                            &ccp_debugfs_stats_ops);
        if (!debugfs_stats)
-               return;
+               goto err;
 
        for (i = 0; i < ccp->cmd_q_count; i++) {
                cmd_q = &ccp->cmd_q[i];
@@ -327,15 +327,20 @@ void ccp5_debugfs_setup(struct ccp_device *ccp)
                debugfs_q_instance =
                        debugfs_create_dir(name, ccp->debugfs_instance);
                if (!debugfs_q_instance)
-                       return;
+                       goto err;
 
                debugfs_q_stats =
                        debugfs_create_file("stats", 0600,
                                            debugfs_q_instance, cmd_q,
                                            &ccp_debugfs_queue_ops);
                if (!debugfs_q_stats)
-                       return;
+                       goto err;
        }
+
+       return;
+
+err:
+       debugfs_remove_recursive(ccp->debugfs_instance);
 }
 
 void ccp5_debugfs_destroy(void)