[nf-next:nft-bridge5 5/8] net/ipv6/ip6_output.c:755:16: sparse: Using plain integer as NULL pointer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git nft-bridge5
head:   c8d511967c8897a2191b5e9c8695869d2af44bda
commit: 3553d2535f25f4593ef29d81e6d18a5ee16d1171 [5/8] net: ipv6: split large skbuff into fragments infrastructure
reproduce:
        # apt-get install sparse
        git checkout 3553d2535f25f4593ef29d81e6d18a5ee16d1171
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'


sparse warnings: (new ones prefixed by >>)

>> net/ipv6/ip6_output.c:755:16: sparse: Using plain integer as NULL pointer
   net/ipv6/ip6_output.c:1379:24: sparse: expression using sizeof(void)
   net/ipv6/ip6_output.c:1472:44: sparse: expression using sizeof(void)
   net/ipv6/ip6_output.c:1611:32: sparse: expression using sizeof(void)
   net/ipv6/ip6_output.c:1611:32: sparse: expression using sizeof(void)

vim +755 net/ipv6/ip6_output.c

   682	
   683	struct sk_buff *ip6_frag_next(struct sk_buff *skb, struct ip6_frag_state *state)
   684	{
   685		u8 *prevhdr = state->prevhdr, *fragnexthdr_offset;
   686		struct sk_buff *frag;
   687		struct frag_hdr *fh;
   688		unsigned int len;
   689	
   690		len = state->left;
   691		/* IF: it doesn't fit, use 'mtu' - the data space left */
   692		if (len > state->mtu)
   693			len = state->mtu;
   694		/* IF: we are not sending up to and including the packet end
   695		   then align the next start on an eight byte boundary */
   696		if (len < state->left)
   697			len &= ~7;
   698	
   699		/* Allocate buffer */
   700		frag = alloc_skb(len + state->hlen + sizeof(struct frag_hdr) +
   701				 state->hroom + state->troom, GFP_ATOMIC);
   702		if (!frag)
   703			return ERR_PTR(-ENOMEM);
   704	
   705		/*
   706		 *	Set up data on packet
   707		 */
   708	
   709		ip6_copy_metadata(frag, skb);
   710		skb_reserve(frag, state->hroom);
   711		skb_put(frag, len + state->hlen + sizeof(struct frag_hdr));
   712		skb_reset_network_header(frag);
   713		fh = (struct frag_hdr *)(skb_network_header(frag) + state->hlen);
   714		frag->transport_header = (frag->network_header + state->hlen +
   715					  sizeof(struct frag_hdr));
   716	
   717		/*
   718		 *	Charge the memory for the fragment to any owner
   719		 *	it might possess
   720		 */
   721		if (skb->sk)
   722			skb_set_owner_w(frag, skb->sk);
   723	
   724		/*
   725		 *	Copy the packet header into the new buffer.
   726		 */
   727		skb_copy_from_linear_data(skb, skb_network_header(frag), state->hlen);
   728	
   729		fragnexthdr_offset = skb_network_header(frag);
   730		fragnexthdr_offset += prevhdr - skb_network_header(skb);
   731		*fragnexthdr_offset = NEXTHDR_FRAGMENT;
   732	
   733		/*
   734		 *	Build fragment header.
   735		 */
   736		fh->nexthdr = state->nexthdr;
   737		fh->reserved = 0;
   738		fh->identification = state->frag_id;
   739	
   740		/*
   741		 *	Copy a block of the IP datagram.
   742		 */
   743		BUG_ON(skb_copy_bits(skb, state->ptr, skb_transport_header(frag),
   744				     len));
   745		state->left -= len;
   746	
   747		fh->frag_off = htons(state->offset);
   748		if (state->left > 0)
   749			fh->frag_off |= htons(IP6_MF);
   750		ipv6_hdr(frag)->payload_len = htons(frag->len - sizeof(struct ipv6hdr));
   751	
   752		state->ptr += len;
   753		state->offset += len;
   754	
 > 755		return 0;
   756	}
   757	EXPORT_SYMBOL(ip6_frag_next);
   758	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux