ocfs2: avoid possible NULL pointer dereference in o2net_accept_one()
authorJoseph Qi <joseph.qi@huawei.com>
Wed, 11 Sep 2013 21:20:01 +0000 (14:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Sep 2013 22:56:50 +0000 (15:56 -0700)
Since o2nm_get_node_by_num() may return NULL, we add this check in
o2net_accept_one() to avoid possible NULL pointer dereference.

Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ocfs2/cluster/tcp.c

index 8c50c238577a1b626d9da9481a4314589eedbd43..2cd2406b41408b61dc0797e2e87e6f29a84506e0 100644 (file)
@@ -1873,12 +1873,16 @@ static int o2net_accept_one(struct socket *sock)
 
        if (o2nm_this_node() >= node->nd_num) {
                local_node = o2nm_get_node_by_num(o2nm_this_node());
-               printk(KERN_NOTICE "o2net: Unexpected connect attempt seen "
-                      "at node '%s' (%u, %pI4:%d) from node '%s' (%u, "
-                      "%pI4:%d)\n", local_node->nd_name, local_node->nd_num,
-                      &(local_node->nd_ipv4_address),
-                      ntohs(local_node->nd_ipv4_port), node->nd_name,
-                      node->nd_num, &sin.sin_addr.s_addr, ntohs(sin.sin_port));
+               if (local_node)
+                       printk(KERN_NOTICE "o2net: Unexpected connect attempt "
+                                       "seen at node '%s' (%u, %pI4:%d) from "
+                                       "node '%s' (%u, %pI4:%d)\n",
+                                       local_node->nd_name, local_node->nd_num,
+                                       &(local_node->nd_ipv4_address),
+                                       ntohs(local_node->nd_ipv4_port),
+                                       node->nd_name,
+                                       node->nd_num, &sin.sin_addr.s_addr,
+                                       ntohs(sin.sin_port));
                ret = -EINVAL;
                goto out;
        }