]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.4.46/rdma-cma-fix-unknown-symbol-when-config_ipv6-is-not-enabled.patch
Fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 4.4.46 / rdma-cma-fix-unknown-symbol-when-config_ipv6-is-not-enabled.patch
CommitLineData
a2acf6ef
GKH
1From b4cfe3971f6eab542dd7ecc398bfa1aeec889934 Mon Sep 17 00:00:00 2001
2From: Jack Morgenstein <jackm@dev.mellanox.co.il>
3Date: Sun, 15 Jan 2017 20:15:00 +0200
4Subject: RDMA/cma: Fix unknown symbol when CONFIG_IPV6 is not enabled
5
6From: Jack Morgenstein <jackm@dev.mellanox.co.il>
7
8commit b4cfe3971f6eab542dd7ecc398bfa1aeec889934 upstream.
9
10If IPV6 has not been enabled in the underlying kernel, we must avoid
11calling IPV6 procedures in rdma_cm.ko.
12
13This requires using "IS_ENABLED(CONFIG_IPV6)" in "if" statements
14surrounding any code which calls external IPV6 procedures.
15
16In the instance fixed here, procedure cma_bind_addr() called
17ipv6_addr_type() -- which resulted in calling external procedure
18__ipv6_addr_type().
19
20Fixes: 6c26a77124ff ("RDMA/cma: fix IPv6 address resolution")
21Cc: Spencer Baugh <sbaugh@catern.com>
22Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
23Reviewed-by: Moni Shoua <monis@mellanox.com>
24Signed-off-by: Leon Romanovsky <leon@kernel.org>
25Signed-off-by: Doug Ledford <dledford@redhat.com>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27
28---
29 drivers/infiniband/core/cma.c | 3 ++-
30 1 file changed, 2 insertions(+), 1 deletion(-)
31
32--- a/drivers/infiniband/core/cma.c
33+++ b/drivers/infiniband/core/cma.c
34@@ -2578,7 +2578,8 @@ static int cma_bind_addr(struct rdma_cm_
35 if (!src_addr || !src_addr->sa_family) {
36 src_addr = (struct sockaddr *) &id->route.addr.src_addr;
37 src_addr->sa_family = dst_addr->sa_family;
38- if (dst_addr->sa_family == AF_INET6) {
39+ if (IS_ENABLED(CONFIG_IPV6) &&
40+ dst_addr->sa_family == AF_INET6) {
41 struct sockaddr_in6 *src_addr6 = (struct sockaddr_in6 *) src_addr;
42 struct sockaddr_in6 *dst_addr6 = (struct sockaddr_in6 *) dst_addr;
43 src_addr6->sin6_scope_id = dst_addr6->sin6_scope_id;