diff --git a/subsys/net/ip/net_pkt.c b/subsys/net/ip/net_pkt.c index 1686bf82717..e9b51312279 100644 --- a/subsys/net/ip/net_pkt.c +++ b/subsys/net/ip/net_pkt.c @@ -1700,6 +1700,7 @@ static void clone_pkt_attributes(struct net_pkt *pkt, struct net_pkt *clone_pkt) struct net_pkt *net_pkt_clone(struct net_pkt *pkt, s32_t timeout) { + size_t cursor_offset = net_pkt_get_current_offset(pkt); struct net_pkt *clone_pkt; clone_pkt = net_pkt_alloc_with_buffer(net_pkt_iface(pkt), @@ -1731,6 +1732,11 @@ struct net_pkt *net_pkt_clone(struct net_pkt *pkt, s32_t timeout) net_pkt_cursor_init(clone_pkt); + if (cursor_offset) { + net_pkt_set_overwrite(clone_pkt, true); + net_pkt_skip(clone_pkt, cursor_offset); + } + NET_DBG("Cloned %p to %p", pkt, clone_pkt); return clone_pkt;