Fix bug https://bugzilla.kernel.org/show_bug.cgi?id=188531. In function
mtip_block_initialize(), variable rv takes the return value, and its
value should be negative on errors. rv is initialized as 0 and is not
reset when the call to ida_pre_get() fails. So 0 may be returned.
The return value 0 indicates that there is no error, which may be
inconsistent with the execution status. This patch fixes the bug by
explicitly assigning -ENOMEM to rv on the branch that ida_pre_get()
fails.

Signed-off-by: Pan Bian <[email protected]>
---
 drivers/block/mtip32xx/mtip32xx.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/block/mtip32xx/mtip32xx.c 
b/drivers/block/mtip32xx/mtip32xx.c
index 3cfd879..36e70cb 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -3937,8 +3937,10 @@ static int mtip_block_initialize(struct driver_data *dd)
 
        /* Generate the disk name, implemented same as in sd.c */
        do {
-               if (!ida_pre_get(&rssd_index_ida, GFP_KERNEL))
+               if (!ida_pre_get(&rssd_index_ida, GFP_KERNEL)) {
+                       rv = -ENOMEM;
                        goto ida_get_error;
+               }
 
                spin_lock(&rssd_index_lock);
                rv = ida_get_new(&rssd_index_ida, &index);
-- 
1.9.1


Reply via email to