diff options
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
-rw-r--r-- | net/sctp/sm_make_chunk.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index bbc7107c86cf..e8ca4e54981f 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -2364,8 +2364,13 @@ static int sctp_process_param(struct sctp_association *asoc, | |||
2364 | case SCTP_PARAM_IPV6_ADDRESS: | 2364 | case SCTP_PARAM_IPV6_ADDRESS: |
2365 | if (PF_INET6 != asoc->base.sk->sk_family) | 2365 | if (PF_INET6 != asoc->base.sk->sk_family) |
2366 | break; | 2366 | break; |
2367 | /* Fall through. */ | 2367 | goto do_addr_param; |
2368 | |||
2368 | case SCTP_PARAM_IPV4_ADDRESS: | 2369 | case SCTP_PARAM_IPV4_ADDRESS: |
2370 | /* v4 addresses are not allowed on v6-only socket */ | ||
2371 | if (ipv6_only_sock(asoc->base.sk)) | ||
2372 | break; | ||
2373 | do_addr_param: | ||
2369 | af = sctp_get_af_specific(param_type2af(param.p->type)); | 2374 | af = sctp_get_af_specific(param_type2af(param.p->type)); |
2370 | af->from_addr_param(&addr, param.addr, htons(asoc->peer.port), 0); | 2375 | af->from_addr_param(&addr, param.addr, htons(asoc->peer.port), 0); |
2371 | scope = sctp_scope(peer_addr); | 2376 | scope = sctp_scope(peer_addr); |