UBI: don't use array index before testing if it is negative
[cascardo/linux.git] / drivers / mtd / ubi / kapi.c
index 4a458e8..03c774f 100644 (file)
@@ -99,16 +99,21 @@ struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode)
 {
        int err;
        struct ubi_volume_desc *desc;
-       struct ubi_device *ubi = ubi_devices[ubi_num];
+       struct ubi_device *ubi;
        struct ubi_volume *vol;
 
        dbg_msg("open device %d volume %d, mode %d", ubi_num, vol_id, mode);
 
        err = -ENODEV;
+       if (ubi_num < 0)
+               return ERR_PTR(err);
+
+       ubi = ubi_devices[ubi_num];
+
        if (!try_module_get(THIS_MODULE))
                return ERR_PTR(err);
 
-       if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES || !ubi)
+       if (ubi_num >= UBI_MAX_DEVICES || !ubi)
                goto out_put;
 
        err = -EINVAL;