Hello Alex Gartrell, This is a semi-automatic email about new static checker warnings. The patch 4a4739d56b00: "ipvs: Pull out crosses_local_route_boundary logic" from Sep 9, 2014, leads to the following Smatch complaint: net/netfilter/ipvs/ip_vs_xmit.c:318 __ip_vs_get_out_rt() error: we previously assumed 'dest' could be null (see line 312) net/netfilter/ipvs/ip_vs_xmit.c 270 if (dest) { ^^^^ Old check. 271 dest_dst = __ip_vs_dst_check(dest); 272 if (likely(dest_dst)) 273 rt = (struct rtable *) dest_dst->dst_cache; 274 else { 275 dest_dst = ip_vs_dest_dst_alloc(); 276 spin_lock_bh(&dest->dst_lock); 277 if (!dest_dst) { 278 __ip_vs_dst_set(dest, NULL, NULL, 0); 279 spin_unlock_bh(&dest->dst_lock); 280 goto err_unreach; 281 } 282 rt = do_output_route4(net, dest->addr.ip, rt_mode, 283 &dest_dst->dst_saddr.ip); 284 if (!rt) { 285 __ip_vs_dst_set(dest, NULL, NULL, 0); 286 spin_unlock_bh(&dest->dst_lock); 287 ip_vs_dest_dst_free(dest_dst); 288 goto err_unreach; 289 } 290 __ip_vs_dst_set(dest, dest_dst, &rt->dst, 0); 291 spin_unlock_bh(&dest->dst_lock); 292 IP_VS_DBG(10, "new dst %pI4, src %pI4, refcnt=%d\n", 293 &dest->addr.ip, &dest_dst->dst_saddr.ip, 294 atomic_read(&rt->dst.__refcnt)); 295 } 296 daddr = dest->addr.ip; 297 if (ret_saddr) 298 *ret_saddr = dest_dst->dst_saddr.ip; 299 } else { 300 __be32 saddr = htonl(INADDR_ANY); 301 302 noref = 0; 303 304 /* For such unconfigured boxes avoid many route lookups 305 * for performance reasons because we do not remember saddr 306 */ 307 rt_mode &= ~IP_VS_RT_MODE_CONNECT; 308 rt = do_output_route4(net, daddr, rt_mode, &saddr); 309 if (!rt) 310 goto err_unreach; 311 if (ret_saddr) 312 *ret_saddr = saddr; 313 } 314 315 local = (rt->rt_flags & RTCF_LOCAL) ? 1 : 0; 316 if (unlikely(crosses_local_route_boundary(skb_af, skb, rt_mode, 317 local))) { 318 IP_VS_DBG_RL("We are crossing local and non-local addresses" 319 " daddr=%pI4\n", &dest->addr.ip); ^^^^^^^^^^^^^ New unchecked dereference. 320 goto err_put; Also: net/netfilter/ipvs/ip_vs_xmit.c:460 __ip_vs_get_out_rt_v6() error: we previously assumed 'dest' could be null (see line 415) regards, dan carpenter -- To unsubscribe from this list: send the line "unsubscribe lvs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html