aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Luis Vázquez Cao <fernando@oss.ntt.co.jp>2007-07-11 04:11:45 -0400
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2007-07-18 09:58:45 -0400
commit2db61c95c03d08bb885c87a816540e75190c924a (patch)
tree1376072b9ed06ff51e35c50be6fec569ee7a3e61
parentd08c3b78b8c46a01b8fa59037a0d9fbb777fb465 (diff)
UBI: cleanup usage of try_module_get
The use of try_module_get(THIS_MODULE) in ubi_get_device_info does not offer real protection against unexpected driver unloads, since we could be preempted before try_modules_get gets executed. It is the caller who should manipulate the refcounts. Besides, ubi_get_device_info is an exported symbol which guarantees protection when accessed through symbol_get. Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
-rw-r--r--drivers/mtd/ubi/kapi.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/mtd/ubi/kapi.c b/drivers/mtd/ubi/kapi.c
index 14c66b48798e..78cae4940875 100644
--- a/drivers/mtd/ubi/kapi.c
+++ b/drivers/mtd/ubi/kapi.c
@@ -37,12 +37,8 @@ int ubi_get_device_info(int ubi_num, struct ubi_device_info *di)
37{ 37{
38 const struct ubi_device *ubi; 38 const struct ubi_device *ubi;
39 39
40 if (!try_module_get(THIS_MODULE))
41 return -ENODEV;
42
43 if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES || 40 if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES ||
44 !ubi_devices[ubi_num]) { 41 !ubi_devices[ubi_num]) {
45 module_put(THIS_MODULE);
46 return -ENODEV; 42 return -ENODEV;
47 } 43 }
48 44
@@ -52,7 +48,6 @@ int ubi_get_device_info(int ubi_num, struct ubi_device_info *di)
52 di->min_io_size = ubi->min_io_size; 48 di->min_io_size = ubi->min_io_size;
53 di->ro_mode = ubi->ro_mode; 49 di->ro_mode = ubi->ro_mode;
54 di->cdev = MKDEV(ubi->major, 0); 50 di->cdev = MKDEV(ubi->major, 0);
55 module_put(THIS_MODULE);
56 return 0; 51 return 0;
57} 52}
58EXPORT_SYMBOL_GPL(ubi_get_device_info); 53EXPORT_SYMBOL_GPL(ubi_get_device_info);