diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2022-02-11 04:29:56 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2022-02-11 04:29:56 +0300 |
| commit | 5b91c5cc0e7be4e41567cb2a6e21a8bb682c7cc5 (patch) | |
| tree | ed284edec0db783dfa80366ae8df078b02f35be9 /include/net | |
| parent | 4f5e483b8c7a644733db941a1ae00173baa7b463 (diff) | |
| parent | f1baf68e1383f6ed93eb9cff2866d46562607a43 (diff) | |
| download | linux-5b91c5cc0e7be4e41567cb2a6e21a8bb682c7cc5.tar.xz | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
No conflicts.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/dst_metadata.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/include/net/dst_metadata.h b/include/net/dst_metadata.h index 14efa0ded75d..adab27ba1ecb 100644 --- a/include/net/dst_metadata.h +++ b/include/net/dst_metadata.h @@ -123,8 +123,20 @@ static inline struct metadata_dst *tun_dst_unclone(struct sk_buff *skb) memcpy(&new_md->u.tun_info, &md_dst->u.tun_info, sizeof(struct ip_tunnel_info) + md_size); +#ifdef CONFIG_DST_CACHE + /* Unclone the dst cache if there is one */ + if (new_md->u.tun_info.dst_cache.cache) { + int ret; + + ret = dst_cache_init(&new_md->u.tun_info.dst_cache, GFP_ATOMIC); + if (ret) { + metadata_dst_free(new_md); + return ERR_PTR(ret); + } + } +#endif + skb_dst_drop(skb); - dst_hold(&new_md->dst); skb_dst_set(skb, &new_md->dst); return new_md; } |
