2020-11-26 21:08:42

by Lu Wei

[permalink] [raw]
Subject: [PATCH] maple: fix wrong return value of maple_bus_init().

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 <[email protected]>
Signed-off-by: Lu Wei <[email protected]>
---
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


Subject: Re: [PATCH] maple: fix wrong return value of maple_bus_init().

On 11/26/20 3:43 AM, Lu Wei wrote:
> 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 <[email protected]>
> Signed-off-by: Lu Wei <[email protected]>
> ---
> 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];
>

Acked-by: John Paul Adrian Glaubitz <[email protected]>

--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - [email protected]
`. `' Freie Universitaet Berlin - [email protected]
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913