<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in ipv6_frag.h</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>eb0dfc0e - inet: frags: change inet_frag_kill() to defer refcount updates</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#eb0dfc0e</link>
        <description>inet: frags: change inet_frag_kill() to defer refcount updatesIn the following patch, we no longer assume inet_frag_kill()callers own a reference.Consuming two refcounts from inet_frag_kill() would lead in UAF.Propagate the pointer to the refs that will be consumed laterby the final inet_frag_putn() call.Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;Link: https://patch.msgid.link/20250312082250.1803501-4-edumazet@google.comSigned-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Wed, 12 Mar 2025 08:22:49 +0000</pubDate>
        <dc:creator>Eric Dumazet &lt;edumazet@google.com&gt;</dc:creator>
    </item>
<item>
        <title>ae2d9035 - inet: frags: add inet_frag_putn() helper</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#ae2d9035</link>
        <description>inet: frags: add inet_frag_putn() helperinet_frag_putn() can release multiple referencesin one step.Use it in inet_frags_free_cb().Replace inet_frag_put(X) with inet_frag_putn(X, 1)Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;Link: https://patch.msgid.link/20250312082250.1803501-2-edumazet@google.comSigned-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Wed, 12 Mar 2025 08:22:47 +0000</pubDate>
        <dc:creator>Eric Dumazet &lt;edumazet@google.com&gt;</dc:creator>
    </item>
<item>
        <title>77adfd3a - net: dropreason: add SKB_DROP_REASON_FRAG_REASM_TIMEOUT</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#77adfd3a</link>
        <description>net: dropreason: add SKB_DROP_REASON_FRAG_REASM_TIMEOUTUsed to track skbs freed after a timeout happenedin a reassmbly unit.Passing a @reason argument to inet_frag_rbtree_purge()allows to use correct consumed status for fragsthat have been successfully re-assembled.Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Sat, 29 Oct 2022 15:45:19 +0000</pubDate>
        <dc:creator>Eric Dumazet &lt;edumazet@google.com&gt;</dc:creator>
    </item>
<item>
        <title>c78b8b20 - net: don&apos;t include ndisc.h from ipv6.h</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#c78b8b20</link>
        <description>net: don&apos;t include ndisc.h from ipv6.hNothing in ipv6.h needs ndisc.h, drop it.Link: https://lore.kernel.org/r/20220203043457.2222388-1-kuba@kernel.orgAcked-by: Jeremy Kerr &lt;jk@codeconstruct.com.au&gt;Acked-by: Stefan Schmidt &lt;stefan@datenfreihafen.org&gt;Link: https://lore.kernel.org/r/20220203231240.2297588-1-kuba@kernel.orgReviewed-by: David Ahern &lt;dsahern@kernel.org&gt;Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Thu, 03 Feb 2022 23:12:40 +0000</pubDate>
        <dc:creator>Jakub Kicinski &lt;kuba@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>91341fa0 - inet: frags: annotate races around fqdir-&gt;dead and fqdir-&gt;high_thresh</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#91341fa0</link>
        <description>inet: frags: annotate races around fqdir-&gt;dead and fqdir-&gt;high_threshBoth fields can be read/written without synchronization,add proper accessors and documentation.Fixes: d5dd88794a13 (&quot;inet: fix various use-after-free in defrags units&quot;)Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Thu, 13 Jan 2022 09:22:29 +0000</pubDate>
        <dc:creator>Eric Dumazet &lt;edumazet@google.com&gt;</dc:creator>
    </item>
<item>
        <title>2d8f6481 - ipv6: Remove dependency of ipv6_frag_thdr_truncated on ipv6 module</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#2d8f6481</link>
        <description>ipv6: Remove dependency of ipv6_frag_thdr_truncated on ipv6 moduleIPV6=mNF_DEFRAG_IPV6=yld: net/ipv6/netfilter/nf_conntrack_reasm.o: in function`nf_ct_frag6_gather&apos;:net/ipv6/netfilter/nf_conntrack_reasm.c:462: undefined reference to`ipv6_frag_thdr_truncated&apos;Netfilter is depending on ipv6 symbol ipv6_frag_thdr_truncated. Thisdependency is forcing IPV6=y.Remove this dependency by moving ipv6_frag_thdr_truncated out of ipv6. Thisis the same solution as used with a similar issues: Referring tocommit 70b095c843266 (&quot;ipv6: remove dependency of nf_defrag_ipv6 on ipv6module&quot;)Fixes: 9d9e937b1c8b (&quot;ipv6/netfilter: Discard first fragment not including all headers&quot;)Reported-by: Randy Dunlap &lt;rdunlap@infradead.org&gt;Reported-by: kernel test robot &lt;lkp@intel.com&gt;Signed-off-by: Georg Kohmann &lt;geokohma@cisco.com&gt;Acked-by: Pablo Neira Ayuso &lt;pablo@netfilter.org&gt;Acked-by: Randy Dunlap &lt;rdunlap@infradead.org&gt; # build-testedLink: https://lore.kernel.org/r/20201119095833.8409-1-geokohma@cisco.comSigned-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Thu, 19 Nov 2020 09:58:33 +0000</pubDate>
        <dc:creator>Georg Kohmann &lt;geokohma@cisco.com&gt;</dc:creator>
    </item>
<item>
        <title>d5dd8879 - inet: fix various use-after-free in defrags units</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#d5dd8879</link>
        <description>inet: fix various use-after-free in defrags unitssyzbot reported another issue caused by my recent patches. [1]The issue here is that fqdir_exit() is initiating a work queueand immediately returns. A bit later cleanup_net() was ableto free the MIB (percpu data) and the whole struct net was freed,but we had active frag timers that fired and triggered use-after-free.We need to make sure that timers can catch fqdir-&gt;dead being set,to bailout.Since RCU is used for the reader side, this meanswe want to respect an RCU grace period between these operations :1) qfdir-&gt;dead = 1;2) netns dismantle (freeing of various data structure)This patch uses new new (struct pernet_operations)-&gt;pre_exitinfrastructure to ensures a full RCU grace periodhappens between fqdir_pre_exit() and fqdir_exit()This also means we can use a regular work queue, we nolonger need rcu_work.Tested:$ time for i in {1..1000}; do unshare -n /bin/false;donereal	0m2.585suser	0m0.160ssys	0m2.214s[1]BUG: KASAN: use-after-free in ip_expire+0x73e/0x800 net/ipv4/ip_fragment.c:152Read of size 8 at addr ffff88808b9fe330 by task syz-executor.4/11860CPU: 1 PID: 11860 Comm: syz-executor.4 Not tainted 5.2.0-rc2+ #22Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011Call Trace: &lt;IRQ&gt; __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x172/0x1f0 lib/dump_stack.c:113 print_address_description.cold+0x7c/0x20d mm/kasan/report.c:188 __kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317 kasan_report+0x12/0x20 mm/kasan/common.c:614 __asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:132 ip_expire+0x73e/0x800 net/ipv4/ip_fragment.c:152 call_timer_fn+0x193/0x720 kernel/time/timer.c:1322 expire_timers kernel/time/timer.c:1366 [inline] __run_timers kernel/time/timer.c:1685 [inline] __run_timers kernel/time/timer.c:1653 [inline] run_timer_softirq+0x66f/0x1740 kernel/time/timer.c:1698 __do_softirq+0x25c/0x94c kernel/softirq.c:293 invoke_softirq kernel/softirq.c:374 [inline] irq_exit+0x180/0x1d0 kernel/softirq.c:414 exiting_irq arch/x86/include/asm/apic.h:536 [inline] smp_apic_timer_interrupt+0x13b/0x550 arch/x86/kernel/apic/apic.c:1068 apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:806 &lt;/IRQ&gt;RIP: 0010:tomoyo_domain_quota_is_ok+0x131/0x540 security/tomoyo/util.c:1035Code: 24 4c 3b 65 d0 0f 84 9c 00 00 00 e8 19 1d 73 fe 49 8d 7c 24 18 48 ba 00 00 00 00 00 fc ff df 48 89 f8 48 c1 e8 03 0f b6 04 10 &lt;48&gt; 89 fa 83 e2 07 38 d0 7f 08 84 c0 0f 85 69 03 00 00 41 0f b6 5cRSP: 0018:ffff88806ae079c0 EFLAGS: 00000a02 ORIG_RAX: ffffffffffffff13RAX: 0000000000000000 RBX: 0000000000000010 RCX: ffffc9000e655000RDX: dffffc0000000000 RSI: ffffffff82fd88a7 RDI: ffff888086202398RBP: ffff88806ae07a00 R08: ffff88808b6c8700 R09: ffffed100d5c0f4dR10: ffffed100d5c0f4c R11: 0000000000000000 R12: ffff888086202380R13: 0000000000000030 R14: 00000000000000d3 R15: 0000000000000000 tomoyo_supervisor+0x2e8/0xef0 security/tomoyo/common.c:2087 tomoyo_audit_path_number_log security/tomoyo/file.c:235 [inline] tomoyo_path_number_perm+0x42f/0x520 security/tomoyo/file.c:734 tomoyo_file_ioctl+0x23/0x30 security/tomoyo/tomoyo.c:335 security_file_ioctl+0x77/0xc0 security/security.c:1370 ksys_ioctl+0x57/0xd0 fs/ioctl.c:711 __do_sys_ioctl fs/ioctl.c:720 [inline] __se_sys_ioctl fs/ioctl.c:718 [inline] __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:718 do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301 entry_SYSCALL_64_after_hwframe+0x49/0xbeRIP: 0033:0x4592c9Code: fd b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 0f 83 cb b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00RSP: 002b:00007f8db5e44c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00000000004592c9RDX: 0000000020000080 RSI: 00000000000089f1 RDI: 0000000000000006RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000R10: 0000000000000000 R11: 0000000000000246 R12: 00007f8db5e456d4R13: 00000000004cc770 R14: 00000000004d5cd8 R15: 00000000ffffffffAllocated by task 9047: save_stack+0x23/0x90 mm/kasan/common.c:71 set_track mm/kasan/common.c:79 [inline] __kasan_kmalloc mm/kasan/common.c:489 [inline] __kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:462 kasan_slab_alloc+0xf/0x20 mm/kasan/common.c:497 slab_post_alloc_hook mm/slab.h:437 [inline] slab_alloc mm/slab.c:3326 [inline] kmem_cache_alloc+0x11a/0x6f0 mm/slab.c:3488 kmem_cache_zalloc include/linux/slab.h:732 [inline] net_alloc net/core/net_namespace.c:386 [inline] copy_net_ns+0xed/0x340 net/core/net_namespace.c:426 create_new_namespaces+0x400/0x7b0 kernel/nsproxy.c:107 unshare_nsproxy_namespaces+0xc2/0x200 kernel/nsproxy.c:206 ksys_unshare+0x440/0x980 kernel/fork.c:2692 __do_sys_unshare kernel/fork.c:2760 [inline] __se_sys_unshare kernel/fork.c:2758 [inline] __x64_sys_unshare+0x31/0x40 kernel/fork.c:2758 do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301 entry_SYSCALL_64_after_hwframe+0x49/0xbeFreed by task 2541: save_stack+0x23/0x90 mm/kasan/common.c:71 set_track mm/kasan/common.c:79 [inline] __kasan_slab_free+0x102/0x150 mm/kasan/common.c:451 kasan_slab_free+0xe/0x10 mm/kasan/common.c:459 __cache_free mm/slab.c:3432 [inline] kmem_cache_free+0x86/0x260 mm/slab.c:3698 net_free net/core/net_namespace.c:402 [inline] net_drop_ns.part.0+0x70/0x90 net/core/net_namespace.c:409 net_drop_ns net/core/net_namespace.c:408 [inline] cleanup_net+0x538/0x960 net/core/net_namespace.c:571 process_one_work+0x989/0x1790 kernel/workqueue.c:2269 worker_thread+0x98/0xe40 kernel/workqueue.c:2415 kthread+0x354/0x420 kernel/kthread.c:255 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352The buggy address belongs to the object at ffff88808b9fe100 which belongs to the cache net_namespace of size 6784The buggy address is located 560 bytes inside of 6784-byte region [ffff88808b9fe100, ffff88808b9ffb80)The buggy address belongs to the page:page:ffffea00022e7f80 refcount:1 mapcount:0 mapping:ffff88821b6f60c0 index:0x0 compound_mapcount: 0flags: 0x1fffc0000010200(slab|head)raw: 01fffc0000010200 ffffea000256f288 ffffea0001bbef08 ffff88821b6f60c0raw: 0000000000000000 ffff88808b9fe100 0000000100000001 0000000000000000page dumped because: kasan: bad access detectedMemory state around the buggy address: ffff88808b9fe200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff88808b9fe280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb&gt;ffff88808b9fe300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                     ^ ffff88808b9fe380: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff88808b9fe400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fbFixes: 3c8fc8782044 (&quot;inet: frags: rework rhashtable dismantle&quot;)Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;Reported-by: syzbot &lt;syzkaller@googlegroups.com&gt;Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Tue, 18 Jun 2019 18:09:00 +0000</pubDate>
        <dc:creator>Eric Dumazet &lt;edumazet@google.com&gt;</dc:creator>
    </item>
<item>
        <title>47d3d7fd - ip6: fix skb leak in ip6frag_expire_frag_queue()</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#47d3d7fd</link>
        <description>ip6: fix skb leak in ip6frag_expire_frag_queue()Since ip6frag_expire_frag_queue() now pulls the head skbfrom frag queue, we should no longer use skb_get(), sincethis leads to an skb leak.Stefan Bader initially reported a problem in 4.4.stable [1] causedby the skb_get(), so this patch should also fix this issue.296583.091021] kernel BUG at /build/linux-6VmqmP/linux-4.4.0/net/core/skbuff.c:1207![296583.091734] Call Trace:[296583.091749]  [&lt;ffffffff81740e50&gt;] __pskb_pull_tail+0x50/0x350[296583.091764]  [&lt;ffffffff8183939a&gt;] _decode_session6+0x26a/0x400[296583.091779]  [&lt;ffffffff817ec719&gt;] __xfrm_decode_session+0x39/0x50[296583.091795]  [&lt;ffffffff818239d0&gt;] icmpv6_route_lookup+0xf0/0x1c0[296583.091809]  [&lt;ffffffff81824421&gt;] icmp6_send+0x5e1/0x940[296583.091823]  [&lt;ffffffff81753238&gt;] ? __netif_receive_skb+0x18/0x60[296583.091838]  [&lt;ffffffff817532b2&gt;] ? netif_receive_skb_internal+0x32/0xa0[296583.091858]  [&lt;ffffffffc0199f74&gt;] ? ixgbe_clean_rx_irq+0x594/0xac0 [ixgbe][296583.091876]  [&lt;ffffffffc04eb260&gt;] ? nf_ct_net_exit+0x50/0x50 [nf_defrag_ipv6][296583.091893]  [&lt;ffffffff8183d431&gt;] icmpv6_send+0x21/0x30[296583.091906]  [&lt;ffffffff8182b500&gt;] ip6_expire_frag_queue+0xe0/0x120[296583.091921]  [&lt;ffffffffc04eb27f&gt;] nf_ct_frag6_expire+0x1f/0x30 [nf_defrag_ipv6][296583.091938]  [&lt;ffffffff810f3b57&gt;] call_timer_fn+0x37/0x140[296583.091951]  [&lt;ffffffffc04eb260&gt;] ? nf_ct_net_exit+0x50/0x50 [nf_defrag_ipv6][296583.091968]  [&lt;ffffffff810f5464&gt;] run_timer_softirq+0x234/0x330[296583.091982]  [&lt;ffffffff8108a339&gt;] __do_softirq+0x109/0x2b0Fixes: d4289fcc9b16 (&quot;net: IP6 defrag: use rbtrees for IPv6 defrag&quot;)Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;Reported-by: Stefan Bader &lt;stefan.bader@canonical.com&gt;Cc: Peter Oskolkov &lt;posk@google.com&gt;Cc: Florian Westphal &lt;fw@strlen.de&gt;Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Fri, 03 May 2019 15:24:44 +0000</pubDate>
        <dc:creator>Eric Dumazet &lt;edumazet@google.com&gt;</dc:creator>
    </item>
<item>
        <title>d4289fcc - net: IP6 defrag: use rbtrees for IPv6 defrag</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#d4289fcc</link>
        <description>net: IP6 defrag: use rbtrees for IPv6 defragCurrently, IPv6 defragmentation code drops non-last fragments thatare smaller than 1280 bytes: seecommit 0ed4229b08c1 (&quot;ipv6: defrag: drop non-last frags smaller than min mtu&quot;)This behavior is not specified in IPv6 RFCs and appears to breakcompatibility with some IPv6 implemenations, as reported here:https://www.spinics.net/lists/netdev/msg543846.htmlThis patch re-uses common IP defragmentation queueing and reassemblycode in IPv6, removing the 1280 byte restriction.Signed-off-by: Peter Oskolkov &lt;posk@google.com&gt;Reported-by: Tom Herbert &lt;tom@herbertland.com&gt;Cc: Eric Dumazet &lt;edumazet@google.com&gt;Cc: Florian Westphal &lt;fw@strlen.de&gt;Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Tue, 22 Jan 2019 18:02:51 +0000</pubDate>
        <dc:creator>Peter Oskolkov &lt;posk@google.com&gt;</dc:creator>
    </item>
<item>
        <title>70b095c8 - ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/net/ipv6_frag.h#70b095c8</link>
        <description>ipv6: remove dependency of nf_defrag_ipv6 on ipv6 moduleIPV6=mDEFRAG_IPV6=mCONNTRACK=y yields:net/netfilter/nf_conntrack_proto.o: In function `nf_ct_netns_do_get&apos;:net/netfilter/nf_conntrack_proto.c:802: undefined reference to `nf_defrag_ipv6_enable&apos;net/netfilter/nf_conntrack_proto.o:(.rodata+0x640): undefined reference to `nf_conntrack_l4proto_icmpv6&apos;Setting DEFRAG_IPV6=y causes undefined references to ip6_rhash_paramsip6_frag_init and ip6_expire_frag_queue so it would be needed to forceIPV6=y too.This patch gets rid of the &apos;followup linker error&apos; by removingthe dependency of ipv6.ko symbols from netfilter ipv6 defrag.Shared code is placed into a header, then used from both.Signed-off-by: Florian Westphal &lt;fw@strlen.de&gt;Signed-off-by: Pablo Neira Ayuso &lt;pablo@netfilter.org&gt;

            List of files:
            /linux-6.15/include/net/ipv6_frag.h</description>
        <pubDate>Fri, 13 Jul 2018 23:14:01 +0000</pubDate>
        <dc:creator>Florian Westphal &lt;fw@strlen.de&gt;</dc:creator>
    </item>
</channel>
</rss>
