diff options
Diffstat (limited to 'net/ipv4/ip_sockglue.c')
-rw-r--r-- | net/ipv4/ip_sockglue.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index 2f0b47da5b37..4f2d87257309 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c | |||
@@ -202,8 +202,7 @@ int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct s | |||
202 | if (ra->sk == sk) { | 202 | if (ra->sk == sk) { |
203 | if (on) { | 203 | if (on) { |
204 | write_unlock_bh(&ip_ra_lock); | 204 | write_unlock_bh(&ip_ra_lock); |
205 | if (new_ra) | 205 | kfree(new_ra); |
206 | kfree(new_ra); | ||
207 | return -EADDRINUSE; | 206 | return -EADDRINUSE; |
208 | } | 207 | } |
209 | *rap = ra->next; | 208 | *rap = ra->next; |
@@ -446,8 +445,7 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, | |||
446 | #endif | 445 | #endif |
447 | } | 446 | } |
448 | opt = xchg(&inet->opt, opt); | 447 | opt = xchg(&inet->opt, opt); |
449 | if (opt) | 448 | kfree(opt); |
450 | kfree(opt); | ||
451 | break; | 449 | break; |
452 | } | 450 | } |
453 | case IP_PKTINFO: | 451 | case IP_PKTINFO: |
@@ -828,10 +826,8 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, | |||
828 | 826 | ||
829 | err = ip_mc_msfilter(sk, msf, ifindex); | 827 | err = ip_mc_msfilter(sk, msf, ifindex); |
830 | mc_msf_out: | 828 | mc_msf_out: |
831 | if (msf) | 829 | kfree(msf); |
832 | kfree(msf); | 830 | kfree(gsf); |
833 | if (gsf) | ||
834 | kfree(gsf); | ||
835 | break; | 831 | break; |
836 | } | 832 | } |
837 | case IP_ROUTER_ALERT: | 833 | case IP_ROUTER_ALERT: |