On 11/04/2015 12:18 AM, Stephen Hemminger wrote: > The TIPC case is a missing check for memory allocation failure. >
Thanks for the report. I will fix it soon. Regards, Ying > > Begin forwarded message: > > Date: Mon, 02 Nov 2015 23:45:55 -0800 > From: scan-ad...@coverity.com > To: step...@networkplumber.org > Subject: New Defects reported by Coverity Scan for Linux > > > > Hi, > > Please find the latest report on new defect(s) introduced to Linux found with > Coverity Scan. > > 4 new defect(s) introduced to Linux found with Coverity Scan. > 9 defect(s), reported by Coverity Scan earlier, were marked fixed in the > recent build analyzed by Coverity Scan. > > New defect(s) Reported-by: Coverity Scan > Showing 4 of 4 defect(s) > > > ** CID 1338065: Error handling issues (CHECKED_RETURN) > /net/tipc/udp_media.c: 162 in tipc_udp_send_msg() > > > ________________________________________________________________________________________________________ > *** CID 1338065: Error handling issues (CHECKED_RETURN) > /net/tipc/udp_media.c: 162 in tipc_udp_send_msg() > 156 struct udp_media_addr *dst = (struct udp_media_addr > *)&dest->value; > 157 struct udp_media_addr *src = (struct udp_media_addr > *)&b->addr.value; > 158 struct sk_buff *clone; > 159 struct rtable *rt; > 160 > 161 if (skb_headroom(skb) < UDP_MIN_HEADROOM) >>>> CID 1338065: Error handling issues (CHECKED_RETURN) >>>> Calling "pskb_expand_head" without checking return value (as is done >>>> elsewhere 51 out of 56 times). > 162 pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC); > 163 > 164 clone = skb_clone(skb, GFP_ATOMIC); > 165 skb_set_inner_protocol(clone, htons(ETH_P_TIPC)); > 166 ub = rcu_dereference_rtnl(b->media_ptr); > 167 if (!ub) { > > ** CID 1338066: Null pointer dereferences (FORWARD_NULL) > /net/openvswitch/flow_netlink.c: 1379 in __ovs_nla_put_key() > > > ________________________________________________________________________________________________________ > *** CID 1338066: Null pointer dereferences (FORWARD_NULL) > /net/openvswitch/flow_netlink.c: 1379 in __ovs_nla_put_key() > 1373 goto nla_put_failure; > 1374 > 1375 if (nla_put_u32(skb, OVS_KEY_ATTR_PRIORITY, > output->phy.priority)) > 1376 goto nla_put_failure; > 1377 > 1378 if ((swkey->tun_key.u.ipv4.dst || is_mask)) { >>>> CID 1338066: Null pointer dereferences (FORWARD_NULL) >>>> Assigning: "opts" = "NULL". > 1379 const void *opts = NULL; > 1380 > 1381 if (output->tun_key.tun_flags & TUNNEL_OPTIONS_PRESENT) > 1382 opts = TUN_METADATA_OPTS(output, > swkey->tun_opts_len); > 1383 > 1384 if (ipv4_tun_to_nlattr(skb, &output->tun_key, opts, > > ** CID 1338067: Integer handling issues (OVERFLOW_BEFORE_WIDEN) > /drivers/net/ethernet/cavium/thunder/nic_main.c: 407 in nic_config_cpi() > > > ________________________________________________________________________________________________________ > *** CID 1338067: Integer handling issues (OVERFLOW_BEFORE_WIDEN) > /drivers/net/ethernet/cavium/thunder/nic_main.c: 407 in nic_config_cpi() > 401 nic_reg_write(nic, NIC_PF_CPI_0_2047_CFG | (cpi > << 3), > 402 (vnic << 24) | (padd << 16) | > 403 (rssi_base + rssi)); > 404 } else { > 405 /* Set MPI_ALG to '0' to disable MCAM parsing */ > 406 nic_reg_write(nic, NIC_PF_CPI_0_2047_CFG | (cpi > << 3), >>>> CID 1338067: Integer handling issues (OVERFLOW_BEFORE_WIDEN) >>>> Potentially overflowing expression "padd << 16" with type "u32" (32 >>>> bits, unsigned) is evaluated using 32-bit arithmetic, and then used in a >>>> context that expects an expression of type "u64" (64 bits, unsigned). > 407 (padd << 16)); > 408 /* MPI index is same as CPI if MPI_ALG is not > enabled */ > 409 nic_reg_write(nic, NIC_PF_MPI_0_2047_CFG | (cpi > << 3), > 410 (vnic << 24) | (rssi_base + > rssi)); > 411 } > 412 > > ** CID 1338068: Null pointer dereferences (REVERSE_INULL) > /include/net/dst_metadata.h: 69 in tun_dst_unclone() > > > ________________________________________________________________________________________________________ > *** CID 1338068: Null pointer dereferences (REVERSE_INULL) > /include/net/dst_metadata.h: 69 in tun_dst_unclone() > 63 static inline struct metadata_dst *tun_dst_unclone(struct sk_buff *skb) > 64 { > 65 struct metadata_dst *md_dst = skb_metadata_dst(skb); > 66 int md_size = md_dst->u.tun_info.options_len; > 67 struct metadata_dst *new_md; > 68 >>>> CID 1338068: Null pointer dereferences (REVERSE_INULL) >>>> Null-checking "md_dst" suggests that it may be null, but it has >>>> already been dereferenced on all paths leading to the check. > 69 if (!md_dst) > 70 return ERR_PTR(-EINVAL); > 71 > 72 new_md = metadata_dst_alloc(md_size, GFP_ATOMIC); > 73 if (!new_md) > 74 return ERR_PTR(-ENOMEM); > > > ________________________________________________________________________________________________________ > To view the defects in Coverity Scan visit, > https://scan.coverity.com/projects/linux?tab=overview > > To manage Coverity Scan email notifications for "step...@networkplumber.org", > click > https://scan.coverity.com/subscriptions/edit?email=stephen%40networkplumber.org&token=41b352b884ef3fc73426635eebc294c3 > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html