summaryrefslogtreecommitdiffstats
path: root/kernel/ip_set.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/ip_set.c')
-rw-r--r--kernel/ip_set.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/ip_set.c b/kernel/ip_set.c
index 0ce9d3f..7ecdc83 100644
--- a/kernel/ip_set.c
+++ b/kernel/ip_set.c
@@ -929,11 +929,11 @@ ip_set_sockfn_set(struct sock *sk, int optval, void *user, unsigned int len)
}
if (copy_from_user(data, user, len) != 0) {
res = -EFAULT;
- goto done;
+ goto cleanup;
}
if (down_interruptible(&ip_set_app_mutex)) {
res = -EINTR;
- goto done;
+ goto cleanup;
}
op = (unsigned *)data;
@@ -1109,6 +1109,7 @@ ip_set_sockfn_set(struct sock *sk, int optval, void *user, unsigned int len)
done:
up(&ip_set_app_mutex);
+ cleanup:
vfree(data);
if (res > 0)
res = 0;
@@ -1142,11 +1143,11 @@ ip_set_sockfn_get(struct sock *sk, int optval, void *user, int *len)
}
if (copy_from_user(data, user, *len) != 0) {
res = -EFAULT;
- goto done;
+ goto cleanup;
}
if (down_interruptible(&ip_set_app_mutex)) {
res = -EINTR;
- goto done;
+ goto cleanup;
}
op = (unsigned *) data;
@@ -1439,6 +1440,7 @@ ip_set_sockfn_get(struct sock *sk, int optval, void *user, int *len)
done:
up(&ip_set_app_mutex);
+ cleanup:
vfree(data);
if (res > 0)
res = 0;