msg->stamp = pkt->stamp; 
skb_get_timestamp(pkt, &msg->stamp); 
static int rxrpc_incoming_msg(struct rxrpc_transport *trans,			      struct sk_buff *pkt,			      struct list_head *msgq){	struct rxrpc_message *msg;	int ret;	_enter("");	msg = kmalloc(sizeof(struct rxrpc_message), GFP_KERNEL);	if (!msg) {		_leave(" = -ENOMEM");		return -ENOMEM;	}	memset(msg, 0, sizeof(*msg));	atomic_set(&msg->usage, 1);	list_add_tail(&msg->link,msgq);	/* dig out the Rx routing parameters */	if (skb_copy_bits(pkt, sizeof(struct udphdr),			  &msg->hdr, sizeof(msg->hdr)) < 0) {		ret = -EBADMSG;		goto error;	}	msg->trans = trans;	msg->state = RXRPC_MSG_RECEIVED;	msg->stamp = pkt->stamp;	if (msg->stamp.tv_sec == 0) {		do_gettimeofday(&msg->stamp); 		if (pkt->sk) 			sock_enable_timestamp(pkt->sk);	} 	msg->seq = ntohl(msg->hdr.seq);	/* attach the packet */	skb_get(pkt);	msg->pkt = pkt;	msg->offset = sizeof(struct udphdr) + sizeof(struct rxrpc_header);	msg->dsize = msg->pkt->len - msg->offset;	_net("Rx Received packet from %s (%08x;%08x,%1x,%d,%s,%02x,%d,%d)",	     msg->hdr.flags & RXRPC_CLIENT_INITIATED ? "client" : "server",	     ntohl(msg->hdr.epoch),	     (ntohl(msg->hdr.cid) & RXRPC_CIDMASK) >> RXRPC_CIDSHIFT,	     ntohl(msg->hdr.cid) & RXRPC_CHANNELMASK,	     ntohl(msg->hdr.callNumber),	     rxrpc_pkts[msg->hdr.type],	     msg->hdr.flags,	     ntohs(msg->hdr.serviceId),	     msg->hdr.securityIndex);	__RXACCT(atomic_inc(&rxrpc_message_count));	/* split off jumbo packets */	while (msg->hdr.type == RXRPC_PACKET_TYPE_DATA &&	       msg->hdr.flags & RXRPC_JUMBO_PACKET	       ) {		struct rxrpc_jumbo_header jumbo;		struct rxrpc_message *jumbomsg = msg;		_debug("split jumbo packet");		/* quick sanity check */		ret = -EBADMSG;		if (msg->dsize <		    RXRPC_JUMBO_DATALEN + sizeof(struct rxrpc_jumbo_header))			goto error;		if (msg->hdr.flags & RXRPC_LAST_PACKET)			goto error;		/* dig out the secondary header */		if (skb_copy_bits(pkt, msg->offset + RXRPC_JUMBO_DATALEN,				  &jumbo, sizeof(jumbo)) < 0)			goto error;		/* allocate a new message record */		ret = -ENOMEM;		msg = kmalloc(sizeof(struct rxrpc_message), GFP_KERNEL);		if (!msg)			goto error;		memcpy(msg, jumbomsg, sizeof(*msg));		list_add_tail(&msg->link, msgq);		/* adjust the jumbo packet */		jumbomsg->dsize = RXRPC_JUMBO_DATALEN;		/* attach the packet here too */		skb_get(pkt);		/* adjust the parameters */		msg->seq++;		msg->hdr.seq = htonl(msg->seq);		msg->hdr.serial = htonl(ntohl(msg->hdr.serial) + 1);		msg->offset += RXRPC_JUMBO_DATALEN +			sizeof(struct rxrpc_jumbo_header);		msg->dsize -= RXRPC_JUMBO_DATALEN +			sizeof(struct rxrpc_jumbo_header);		msg->hdr.flags = jumbo.flags;		msg->hdr._rsvd = jumbo._rsvd;		_net("Rx Split jumbo packet from %s"		     " (%08x;%08x,%1x,%d,%s,%02x,%d,%d)",		     msg->hdr.flags & RXRPC_CLIENT_INITIATED ? "client" : "server",		     ntohl(msg->hdr.epoch),		     (ntohl(msg->hdr.cid) & RXRPC_CIDMASK) >> RXRPC_CIDSHIFT,		     ntohl(msg->hdr.cid) & RXRPC_CHANNELMASK,		     ntohl(msg->hdr.callNumber),		     rxrpc_pkts[msg->hdr.type],		     msg->hdr.flags,		     ntohs(msg->hdr.serviceId),		     msg->hdr.securityIndex);		__RXACCT(atomic_inc(&rxrpc_message_count));	}	_leave(" = 0 #%d", atomic_read(&rxrpc_message_count));	return 0; error:	while (!list_empty(msgq)) {		msg = list_entry(msgq->next, struct rxrpc_message, link);		list_del_init(&msg->link);		rxrpc_put_message(msg);	}	_leave(" = %d", ret);	return ret;} /* end rxrpc_incoming_msg() */
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9deff7f2365958c5c5aa8cb5a0dd651c4dd83f8f/transport.c/buggy/net/rxrpc/transport.c