diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/mcast.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 8460a1f54a76..e5de48551864 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
@@ -427,11 +427,9 @@ int ip6_mc_source(int add, int omode, struct sock *sk, | |||
427 | rv = 1; /* > 0 for insert logic below if sl_count is 0 */ | 427 | rv = 1; /* > 0 for insert logic below if sl_count is 0 */ |
428 | for (i=0; i<psl->sl_count; i++) { | 428 | for (i=0; i<psl->sl_count; i++) { |
429 | rv = !ipv6_addr_equal(&psl->sl_addr[i], source); | 429 | rv = !ipv6_addr_equal(&psl->sl_addr[i], source); |
430 | if (rv == 0) | 430 | if (rv == 0) /* There is an error in the address. */ |
431 | break; | 431 | goto done; |
432 | } | 432 | } |
433 | if (rv == 0) /* address already there is an error */ | ||
434 | goto done; | ||
435 | for (j=psl->sl_count-1; j>=i; j--) | 433 | for (j=psl->sl_count-1; j>=i; j--) |
436 | psl->sl_addr[j+1] = psl->sl_addr[j]; | 434 | psl->sl_addr[j+1] = psl->sl_addr[j]; |
437 | psl->sl_addr[i] = *source; | 435 | psl->sl_addr[i] = *source; |