If KMEM_CACHE or maple_alloc_dev failed, the maple_bus_init() will return 0
rather than error, because the retval is not changed after KMEM_CACHE or
maple_alloc_dev failed.

Fixes: 17be2d2b1c33 ("sh: Add maple bus support for the SEGA Dreamcast.")
Reported-by: Hulk Robot <hul...@huawei.com>
Signed-off-by: Lu Wei <luwe...@huawei.com>
---
 drivers/sh/maple/maple.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
index e5d7fb81ad66..44a931d41a13 100644
--- a/drivers/sh/maple/maple.c
+++ b/drivers/sh/maple/maple.c
@@ -835,8 +835,10 @@ static int __init maple_bus_init(void)
 
        maple_queue_cache = KMEM_CACHE(maple_buffer, SLAB_HWCACHE_ALIGN);
 
-       if (!maple_queue_cache)
+       if (!maple_queue_cache) {
+               retval = -ENOMEM;
                goto cleanup_bothirqs;
+       }
 
        INIT_LIST_HEAD(&maple_waitq);
        INIT_LIST_HEAD(&maple_sentq);
@@ -849,6 +851,7 @@ static int __init maple_bus_init(void)
                if (!mdev[i]) {
                        while (i-- > 0)
                                maple_free_dev(mdev[i]);
+                       retval = -ENOMEM;
                        goto cleanup_cache;
                }
                baseunits[i] = mdev[i];
-- 
2.22.0

Reply via email to