Commit 002de0ba authored by Mark Hounschell's avatar Mark Hounschell Committed by Greg Kroah-Hartman
Browse files

staging: dgap: Simplify and cleanup dgap_init_module function



This patch simplifies and cleans up the dgap_init_module function. It also fixes
a possible double free condition as a result pci_unregister_driver possibly
being called twice.

Signed-off-by: default avatarMark Hounschell <markh@compro.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 434b679b
Loading
Loading
Loading
Loading
+13 −25
Original line number Diff line number Diff line
@@ -519,37 +519,25 @@ static int dgap_init_module(void)

	dgap_driver_state = DRIVER_NEED_CONFIG_LOAD;

	/*
	 * Initialize global stuff
	 */
	rc = dgap_start();

	if (rc < 0)
	if (rc)
		return rc;

	/*
	 * Find and configure all the cards
	 */
	rc = dgap_init_pci();
	if (rc)
		goto err_cleanup;

	/*
	 * If something went wrong in the scan, bail out of driver.
	 */
	if (rc < 0) {
		/* Only unregister the pci driver if it was actually registered. */
		if (dgap_NumBoards)
			pci_unregister_driver(&dgap_driver);
		else
			pr_err("dgap: driver load failed. No boards found.\n");

		dgap_cleanup_module();
	} else {
	rc = dgap_create_driver_sysfiles(&dgap_driver);
	if (rc)
			dgap_cleanup_module();
		else
		goto err_cleanup;

	dgap_driver_state = DRIVER_READY;
	}

	return 0;

err_cleanup:

	dgap_cleanup_module();

	return rc;
}