diff --git a/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c b/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c
index 94dae3c23f98a0d82880c7b866b1859f0d5bdc81..07666aa2a870ba227cda0a6e9cd02e1968f13659 100644
--- a/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c
+++ b/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c
@@ -795,7 +795,7 @@ static void _receive(gnrc_pktsnip_t *pkt)
 
     /* if available, remove any padding that was added by lower layers
      * to fulfill their minimum size requirements (e.g. ethernet) */
-    if (byteorder_ntohs(hdr->len) < pkt->size) {
+    if ((ipv6 != pkt) && (byteorder_ntohs(hdr->len) < pkt->size)) {
         gnrc_pktbuf_realloc_data(pkt, byteorder_ntohs(hdr->len));
     }
     else if (byteorder_ntohs(hdr->len) >