diff options
author | Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com> | 2014-06-19 16:30:23 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-08-01 11:30:35 -0400 |
commit | 0435b13ee3732c1dda5312025f49073d01d8d15d (patch) | |
tree | e57906251b575a88be22d1a881eb3d37522cb8c0 /arch/mips | |
parent | ffc8415afab20bd97754efae6aad1f67b531132b (diff) |
MIPS: APRP: Fix an issue when device_create() fails.
If a call to device_create() fails for a channel during the initialize
loop, we need to clean the devices entries already created before
leaving.
Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
Cc: linux-mips@linux-mips.org
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: Deng-Cheng Zhu <dengcheng.zhu@imgtec.com>
Cc: John Crispin <blogic@openwrt.org>
Cc: Qais Yousef <Qais.Yousef@imgtec.com>
Cc: linux-kernel@vger.kernel.org
Cc: Jerome Oufella <jerome.oufella@savoirfairelinux.com>
Patchwork: https://patchwork.linux-mips.org/patch/7111/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/kernel/rtlx-cmp.c | 3 | ||||
-rw-r--r-- | arch/mips/kernel/rtlx-mt.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/mips/kernel/rtlx-cmp.c b/arch/mips/kernel/rtlx-cmp.c index 758fb3cd2326..d26dcc4b46e7 100644 --- a/arch/mips/kernel/rtlx-cmp.c +++ b/arch/mips/kernel/rtlx-cmp.c | |||
@@ -77,6 +77,9 @@ int __init rtlx_module_init(void) | |||
77 | dev = device_create(mt_class, NULL, MKDEV(major, i), NULL, | 77 | dev = device_create(mt_class, NULL, MKDEV(major, i), NULL, |
78 | "%s%d", RTLX_MODULE_NAME, i); | 78 | "%s%d", RTLX_MODULE_NAME, i); |
79 | if (IS_ERR(dev)) { | 79 | if (IS_ERR(dev)) { |
80 | while (i--) | ||
81 | device_destroy(mt_class, MKDEV(major, i)); | ||
82 | |||
80 | err = PTR_ERR(dev); | 83 | err = PTR_ERR(dev); |
81 | goto out_chrdev; | 84 | goto out_chrdev; |
82 | } | 85 | } |
diff --git a/arch/mips/kernel/rtlx-mt.c b/arch/mips/kernel/rtlx-mt.c index 5a66b975989e..cb95470e2e69 100644 --- a/arch/mips/kernel/rtlx-mt.c +++ b/arch/mips/kernel/rtlx-mt.c | |||
@@ -103,6 +103,9 @@ int __init rtlx_module_init(void) | |||
103 | dev = device_create(mt_class, NULL, MKDEV(major, i), NULL, | 103 | dev = device_create(mt_class, NULL, MKDEV(major, i), NULL, |
104 | "%s%d", RTLX_MODULE_NAME, i); | 104 | "%s%d", RTLX_MODULE_NAME, i); |
105 | if (IS_ERR(dev)) { | 105 | if (IS_ERR(dev)) { |
106 | while (i--) | ||
107 | device_destroy(mt_class, MKDEV(major, i)); | ||
108 | |||
106 | err = PTR_ERR(dev); | 109 | err = PTR_ERR(dev); |
107 | goto out_chrdev; | 110 | goto out_chrdev; |
108 | } | 111 | } |