Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 84230
b: refs/heads/master
c: 35ad5fb
h: refs/heads/master
v: v3
  • Loading branch information
Artem Bityutskiy authored and Artem Bityutskiy committed Dec 26, 2007
1 parent ac141c5 commit 8b931e4
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 37 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fc75a1e166268e0c3366c3b30888a024125f6665
refs/heads/master: 35ad5fb76cc0a08e14068408b064103439feee36
61 changes: 25 additions & 36 deletions trunk/drivers/mtd/ubi/kapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,37 +104,32 @@ struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode)

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 (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
return ERR_PTR(-EINVAL);

if (!try_module_get(THIS_MODULE))
return ERR_PTR(err);
if (mode != UBI_READONLY && mode != UBI_READWRITE &&
mode != UBI_EXCLUSIVE)
return ERR_PTR(-EINVAL);

if (ubi_num >= UBI_MAX_DEVICES || !ubi)
goto out_put;
ubi = ubi_devices[ubi_num];
if (!ubi)
return ERR_PTR(-ENODEV);

err = -EINVAL;
if (vol_id < 0 || vol_id >= ubi->vtbl_slots)
goto out_put;
if (mode != UBI_READONLY && mode != UBI_READWRITE &&
mode != UBI_EXCLUSIVE)
goto out_put;
return ERR_PTR(-EINVAL);

desc = kmalloc(sizeof(struct ubi_volume_desc), GFP_KERNEL);
if (!desc) {
err = -ENOMEM;
goto out_put;
}
if (!desc)
return ERR_PTR(-ENOMEM);

err = -ENODEV;
if (!try_module_get(THIS_MODULE))
goto out_free;

spin_lock(&ubi->volumes_lock);
vol = ubi->volumes[vol_id];
if (!vol) {
err = -ENODEV;
if (!vol)
goto out_unlock;
}

err = -EBUSY;
switch (mode) {
Expand Down Expand Up @@ -184,13 +179,14 @@ struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode)
vol->checked = 1;
}
mutex_unlock(&ubi->volumes_mutex);

return desc;

out_unlock:
spin_unlock(&ubi->volumes_lock);
kfree(desc);
out_put:
module_put(THIS_MODULE);
out_free:
kfree(desc);
return ERR_PTR(err);
}
EXPORT_SYMBOL_GPL(ubi_open_volume);
Expand All @@ -207,7 +203,6 @@ struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name,
int mode)
{
int i, vol_id = -1, len;
struct ubi_volume_desc *ret;
struct ubi_device *ubi;

dbg_msg("open volume %s, mode %d", name, mode);
Expand All @@ -219,14 +214,12 @@ struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name,
if (len > UBI_VOL_NAME_MAX)
return ERR_PTR(-EINVAL);

ret = ERR_PTR(-ENODEV);
if (!try_module_get(THIS_MODULE))
return ret;

if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES || !ubi_devices[ubi_num])
goto out_put;
if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
return ERR_PTR(-EINVAL);

ubi = ubi_devices[ubi_num];
if (!ubi)
return ERR_PTR(-ENODEV);

spin_lock(&ubi->volumes_lock);
/* Walk all volumes of this UBI device */
Expand All @@ -241,13 +234,9 @@ struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name,
spin_unlock(&ubi->volumes_lock);

if (vol_id < 0)
goto out_put;

ret = ubi_open_volume(ubi_num, vol_id, mode);
return ERR_PTR(-ENODEV);

out_put:
module_put(THIS_MODULE);
return ret;
return ubi_open_volume(ubi_num, vol_id, mode);
}
EXPORT_SYMBOL_GPL(ubi_open_volume_nm);

Expand Down

0 comments on commit 8b931e4

Please sign in to comment.