diff options
Diffstat (limited to 'lib/reed_solomon')
-rw-r--r-- | lib/reed_solomon/reed_solomon.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/reed_solomon/reed_solomon.c b/lib/reed_solomon/reed_solomon.c index f5fef948a415..f8ac9fa95de1 100644 --- a/lib/reed_solomon/reed_solomon.c +++ b/lib/reed_solomon/reed_solomon.c | |||
@@ -44,12 +44,13 @@ | |||
44 | #include <linux/module.h> | 44 | #include <linux/module.h> |
45 | #include <linux/rslib.h> | 45 | #include <linux/rslib.h> |
46 | #include <linux/slab.h> | 46 | #include <linux/slab.h> |
47 | #include <linux/mutex.h> | ||
47 | #include <asm/semaphore.h> | 48 | #include <asm/semaphore.h> |
48 | 49 | ||
49 | /* This list holds all currently allocated rs control structures */ | 50 | /* This list holds all currently allocated rs control structures */ |
50 | static LIST_HEAD (rslist); | 51 | static LIST_HEAD (rslist); |
51 | /* Protection for the list */ | 52 | /* Protection for the list */ |
52 | static DECLARE_MUTEX(rslistlock); | 53 | static DEFINE_MUTEX(rslistlock); |
53 | 54 | ||
54 | /** | 55 | /** |
55 | * rs_init - Initialize a Reed-Solomon codec | 56 | * rs_init - Initialize a Reed-Solomon codec |
@@ -161,7 +162,7 @@ errrs: | |||
161 | */ | 162 | */ |
162 | void free_rs(struct rs_control *rs) | 163 | void free_rs(struct rs_control *rs) |
163 | { | 164 | { |
164 | down(&rslistlock); | 165 | mutex_lock(&rslistlock); |
165 | rs->users--; | 166 | rs->users--; |
166 | if(!rs->users) { | 167 | if(!rs->users) { |
167 | list_del(&rs->list); | 168 | list_del(&rs->list); |
@@ -170,7 +171,7 @@ void free_rs(struct rs_control *rs) | |||
170 | kfree(rs->genpoly); | 171 | kfree(rs->genpoly); |
171 | kfree(rs); | 172 | kfree(rs); |
172 | } | 173 | } |
173 | up(&rslistlock); | 174 | mutex_unlock(&rslistlock); |
174 | } | 175 | } |
175 | 176 | ||
176 | /** | 177 | /** |
@@ -201,7 +202,7 @@ struct rs_control *init_rs(int symsize, int gfpoly, int fcr, int prim, | |||
201 | if (nroots < 0 || nroots >= (1<<symsize)) | 202 | if (nroots < 0 || nroots >= (1<<symsize)) |
202 | return NULL; | 203 | return NULL; |
203 | 204 | ||
204 | down(&rslistlock); | 205 | mutex_lock(&rslistlock); |
205 | 206 | ||
206 | /* Walk through the list and look for a matching entry */ | 207 | /* Walk through the list and look for a matching entry */ |
207 | list_for_each(tmp, &rslist) { | 208 | list_for_each(tmp, &rslist) { |
@@ -228,7 +229,7 @@ struct rs_control *init_rs(int symsize, int gfpoly, int fcr, int prim, | |||
228 | list_add(&rs->list, &rslist); | 229 | list_add(&rs->list, &rslist); |
229 | } | 230 | } |
230 | out: | 231 | out: |
231 | up(&rslistlock); | 232 | mutex_unlock(&rslistlock); |
232 | return rs; | 233 | return rs; |
233 | } | 234 | } |
234 | 235 | ||