diff options
Diffstat (limited to 'drivers/video/uvesafb.c')
-rw-r--r-- | drivers/video/uvesafb.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c index c4f4d7616317..cdbb56edb6cb 100644 --- a/drivers/video/uvesafb.c +++ b/drivers/video/uvesafb.c | |||
@@ -181,7 +181,8 @@ static int uvesafb_exec(struct uvesafb_ktask *task) | |||
181 | /* If all slots are taken -- bail out. */ | 181 | /* If all slots are taken -- bail out. */ |
182 | if (uvfb_tasks[seq]) { | 182 | if (uvfb_tasks[seq]) { |
183 | mutex_unlock(&uvfb_lock); | 183 | mutex_unlock(&uvfb_lock); |
184 | return -EBUSY; | 184 | err = -EBUSY; |
185 | goto out; | ||
185 | } | 186 | } |
186 | 187 | ||
187 | /* Save a pointer to the kernel part of the task struct. */ | 188 | /* Save a pointer to the kernel part of the task struct. */ |
@@ -205,7 +206,6 @@ static int uvesafb_exec(struct uvesafb_ktask *task) | |||
205 | err = cn_netlink_send(m, 0, gfp_any()); | 206 | err = cn_netlink_send(m, 0, gfp_any()); |
206 | } | 207 | } |
207 | } | 208 | } |
208 | kfree(m); | ||
209 | 209 | ||
210 | if (!err && !(task->t.flags & TF_EXIT)) | 210 | if (!err && !(task->t.flags & TF_EXIT)) |
211 | err = !wait_for_completion_timeout(task->done, | 211 | err = !wait_for_completion_timeout(task->done, |
@@ -218,7 +218,8 @@ static int uvesafb_exec(struct uvesafb_ktask *task) | |||
218 | seq++; | 218 | seq++; |
219 | if (seq >= UVESAFB_TASKS_MAX) | 219 | if (seq >= UVESAFB_TASKS_MAX) |
220 | seq = 0; | 220 | seq = 0; |
221 | 221 | out: | |
222 | kfree(m); | ||
222 | return err; | 223 | return err; |
223 | } | 224 | } |
224 | 225 | ||