|
@@ -753,7 +753,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)
|
|
for (; n < uf.count; n++) {
|
|
for (; n < uf.count; n++) {
|
|
if (!is_multicast_ether_addr(addr[n].u)) {
|
|
if (!is_multicast_ether_addr(addr[n].u)) {
|
|
err = 0; /* no filter */
|
|
err = 0; /* no filter */
|
|
- goto done;
|
|
|
|
|
|
+ goto free_addr;
|
|
}
|
|
}
|
|
addr_hash_set(filter->mask, addr[n].u);
|
|
addr_hash_set(filter->mask, addr[n].u);
|
|
}
|
|
}
|
|
@@ -769,8 +769,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)
|
|
|
|
|
|
/* Return the number of exact filters */
|
|
/* Return the number of exact filters */
|
|
err = nexact;
|
|
err = nexact;
|
|
-
|
|
|
|
-done:
|
|
|
|
|
|
+free_addr:
|
|
kfree(addr);
|
|
kfree(addr);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|