diff options
Diffstat (limited to 'net/dsa/dsa.c')
-rw-r--r-- | net/dsa/dsa.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index 36de4f2a3366..cb080efdc7b3 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c | |||
@@ -344,15 +344,22 @@ static int __init dsa_init_module(void) | |||
344 | 344 | ||
345 | rc = dsa_slave_register_notifier(); | 345 | rc = dsa_slave_register_notifier(); |
346 | if (rc) | 346 | if (rc) |
347 | return rc; | 347 | goto register_notifier_fail; |
348 | 348 | ||
349 | rc = dsa_legacy_register(); | 349 | rc = dsa_legacy_register(); |
350 | if (rc) | 350 | if (rc) |
351 | return rc; | 351 | goto legacy_register_fail; |
352 | 352 | ||
353 | dev_add_pack(&dsa_pack_type); | 353 | dev_add_pack(&dsa_pack_type); |
354 | 354 | ||
355 | return 0; | 355 | return 0; |
356 | |||
357 | legacy_register_fail: | ||
358 | dsa_slave_unregister_notifier(); | ||
359 | register_notifier_fail: | ||
360 | destroy_workqueue(dsa_owq); | ||
361 | |||
362 | return rc; | ||
356 | } | 363 | } |
357 | module_init(dsa_init_module); | 364 | module_init(dsa_init_module); |
358 | 365 | ||