diff options
author | David Teigland <teigland@redhat.com> | 2008-07-29 15:21:19 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2008-08-13 12:47:36 -0500 |
commit | cb980d9a3ec3d39e30e0a4c473df528c09e0dcf3 (patch) | |
tree | 817fd390f15904ef0b14b22b4b8c7a2055514337 /fs/dlm/user.c | |
parent | 30a2f3c60a84092c8084dfe788b710f8d0768cd4 (diff) | |
download | linux-cb980d9a3ec3d39e30e0a4c473df528c09e0dcf3.tar.gz linux-cb980d9a3ec3d39e30e0a4c473df528c09e0dcf3.tar.bz2 linux-cb980d9a3ec3d39e30e0a4c473df528c09e0dcf3.zip |
dlm: add missing kfrees
A couple of unlikely error conditions were missing a kfree on the error
exit path.
Reported-by: Juha Leppanen <juha_motorsportcom@luukku.com>
Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/user.c')
-rw-r--r-- | fs/dlm/user.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/dlm/user.c b/fs/dlm/user.c index 929e48ae7591..34f14a14fb4e 100644 --- a/fs/dlm/user.c +++ b/fs/dlm/user.c @@ -527,8 +527,10 @@ static ssize_t device_write(struct file *file, const char __user *buf, k32buf = (struct dlm_write_request32 *)kbuf; kbuf = kmalloc(count + 1 + (sizeof(struct dlm_write_request) - sizeof(struct dlm_write_request32)), GFP_KERNEL); - if (!kbuf) + if (!kbuf) { + kfree(k32buf); return -ENOMEM; + } if (proc) set_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags); @@ -539,8 +541,10 @@ static ssize_t device_write(struct file *file, const char __user *buf, /* do we really need this? can a write happen after a close? */ if ((kbuf->cmd == DLM_USER_LOCK || kbuf->cmd == DLM_USER_UNLOCK) && - (proc && test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags))) - return -EINVAL; + (proc && test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags))) { + error = -EINVAL; + goto out_free; + } sigfillset(&allsigs); sigprocmask(SIG_BLOCK, &allsigs, &tmpsig); |