diff --git a/drivers/net/tun.c b/drivers/net/tun.c index a1aeccbce6d480afca35ef0b939c7d82aa99bcf7..e249428f2d83ec08ff468d4385a379ad2309c74b 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -753,7 +753,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg) for (; n < uf.count; n++) { if (!is_multicast_ether_addr(addr[n].u)) { err = 0; /* no filter */ - goto done; + goto free_addr; } 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 */ err = nexact; - -done: +free_addr: kfree(addr); return err; }