"value":"IntheLinuxkernel,thefollowingvulnerabilityhasbeenresolved:\n\nbtrfs:donotclearpagedirtyinsideextent_write_locked_range()\n\n[BUG]\nForsubpage+zonedcase,thefollowingworkloadcanleadtorsvdata\nleakatunmounttime:\n\n#mkfs.btrfs-f-s4k$dev\n#mount$dev$mnt\n#fsstress-w-n8-d$mnt-s1709539240\n0/0:fiemap-nofilename\n0/1:copyrangeread-nofilename\n0/2:write-nofilename\n0/3:rename-nosourcefilename\n0/4:creatf0x:000\n0/4:creataddid=0,parent=-1\n0/5:writevf0[25910000][778052,113,965]0\n0/6:ioctl(FIEMAP)f0[259100224887097][1294220,2291618343991484791,0x10000]-1\n0/7:dwrite-xfsctl(XFS_IOC_DIOINFO)f0[259100224887097]return25,fallbacktostat()\n0/7:dwritef0[259100224887097][696320,102400]0\n#umount$mnt\n\nThedmesgincludesthefollowingrsvleakdetectionwarning(allcall\ntraceskipped):\n\n------------[cuthere]------------\nWARNING:CPU:2PID:4528atfs/btrfs/inode.c:8653btrfs_destroy_inode+0x1e0/0x200[btrfs]\n---[endtrace0000000000000000]---\n------------[cuthere]------------\nWARNING:CPU:2PID:4528atfs/btrfs/inode.c:8654btrfs_destroy_inode+0x1a8/0x200[btrfs]\n---[endtrace0000000000000000]---\n------------[cuthere]------------\nWARNING:CPU:2PID:4528atfs/btrfs/inode.c:8660btrfs_destroy_inode+0x1a0/0x200[btrfs]\n---[endtrace0000000000000000]---\nBTRFSinfo(devicesda):lastunmountoffilesystem1b4abba9-de34-4f07-9e7f-157cf12a18d6\n------------[cuthere]------------\nWARNING:CPU:3PID:4528atfs/btrfs/block-group.c:4434btrfs_free_block_groups+0x338/0x500[btrfs]\n---[endtrace0000000000000000]---\nBTRFSinfo(devicesda):space_infoDATAhas268218368free,isnotfull\nBTRFSinfo(devicesda):space_infototal=268435456,used=204800,pinned=0,reserved=0,may_use=12288,readonly=0zone_unusable=0\nBTRFSinfo(devicesda):global_block_rsv:size0reserved0\nBTRFSinfo(devicesda):trans_block_rsv:size0reserved0\nBTRFSinfo(devicesda):chunk_block_rsv:size0reserved0\nBTRFSinfo(devicesda):delayed_block_rsv:size0reserved0\nBTRFSinfo(devicesda):delayed_refs_rsv:size0reserved0\n------------[cuthere]------------\nWARNING:CPU:3PID:4528atfs/btrfs/block-group.c:4434btrfs_free_block_groups+0x338/0x500[btrfs]\n---[endtrace0000000000000000]---\nBTRFSinfo(devicesda):space_infoMETADATAhas267796480free,isnotfull\nBTRFSinfo(devicesda):space_infototal=268435456,used=131072,pinned=0,reserved=0,may_use=262144,readonly=0zone_unusable=245760\nBTRFSinfo(devicesda):global_block_rsv:size0reserved0\nBTRFSinfo(devicesda):trans_block_rsv:size0reserved0\nBTRFSinfo(devicesda):chunk_block_rsv:size0reserved0\nBTRFSinfo(devicesda):delayed_block_rsv:size0reserved0\nBTRFSinfo(devicesda):delayed_refs_rsv:size0reserved0\n\nAbove$devisatcmu-runneremulatedzonedHDD,whichhasamaxzone\nappendsizeof64K,andthesystemhas64Kpagesize.\n\n[CAUSE]\nIhaveaddedseveraltrace_printk()toshowtheevents(headerskipped):\n\n>btrfs_dirty_pages:r/i=5/259dirtystart=774144len=114688\n>btrfs_dirty_pages:r/i=5/259dirtypartofpage=720896off_in_page=53248len_in_page=12288\n>btrfs_dirty_pages:r/i=5/259dirtypartofpage=786432off_in_page=0len_in_page=65536\n>btrfs_dirty_pages:r/i=5/259dirtypartofpage=851968off_in_page=0len_in_page=36864\n\nTheabovelinesshowourbufferedwritehasdirtied3pagesofinode\n259ofroot5:\n\n704K768K832K896K\nI|////I/////////////////I///////////| I\n 756K 868K\n\n |///| is the dirtied range using subpage bitmaps. and 'I' is the page\n boundary.\n\n Meanwhile all three pages (704K, 768K, 832K) have their PageDirty\n flag set.\n\n > btrfs_direct_write: r/i=5/259 start dio filepos=696320 len=102400\n\nThen direct IO writ\n---truncated