# git gc Expanding reachable commits in commit graph: 54575 Expanding reachable commits in commit graph: 112101 Expanding reachable commits in commit graph: 170323 Expanding reachable commits in commit graph: 229689 Expanding reachable commits in commit graph: 288516 Expanding reachable commits in commit graph: 349177 Expanding reachable commits in commit graph: 409967 Expanding reachable commits in commit graph: 471351 Expanding reachable commits in commit graph: 529801 Expanding reachable commits in commit graph: 591699 Expanding reachable commits in commit graph: 653398 Expanding reachable commits in commit graph: 715060 Expanding reachable commits in commit graph: 776527 Expanding reachable commits in commit graph: 838285 Expanding reachable commits in commit graph: 868651 Expanding reachable commits in commit graph: 891674 Expanding reachable commits in commit graph: 930317 Expanding reachable commits in commit graph: 960554 Expanding reachable commits in commit graph: 993029 Expanding reachable commits in commit graph: 1028479 Expanding reachable commits in commit graph: 1053978 Expanding reachable commits in commit graph: 1083175 Expanding reachable commits in commit graph: 1111854 Expanding reachable commits in commit graph: 1147683 Expanding reachable commits in commit graph: 1178325 Expanding reachable commits in commit graph: 1212178 Expanding reachable commits in commit graph: 1235193, done. Finding extra edges in commit graph: 30% (376164/1235193) Finding extra edges in commit graph: 31% (382910/1235193) Finding extra edges in commit graph: 32% (395262/1235193) Finding extra edges in commit graph: 33% (407614/1235193) Finding extra edges in commit graph: 34% (419966/1235193) Finding extra edges in commit graph: 35% (432318/1235193) Finding extra edges in commit graph: 36% (444670/1235193) Finding extra edges in commit graph: 37% (457022/1235193) Finding extra edges in commit graph: 38% (469374/1235193) Finding extra edges in commit graph: 39% (481726/1235193) Finding extra edges in commit graph: 40% (494078/1235193) Finding extra edges in commit graph: 41% (506430/1235193) Finding extra edges in commit graph: 42% (518782/1235193) Finding extra edges in commit graph: 43% (531133/1235193) Finding extra edges in commit graph: 44% (543485/1235193) Finding extra edges in commit graph: 45% (555837/1235193) Finding extra edges in commit graph: 46% (568189/1235193) Finding extra edges in commit graph: 47% (580541/1235193) Finding extra edges in commit graph: 48% (592893/1235193) Finding extra edges in commit graph: 49% (605245/1235193) Finding extra edges in commit graph: 50% (617597/1235193) Finding extra edges in commit graph: 51% (629949/1235193) Finding extra edges in commit graph: 52% (642301/1235193) Finding extra edges in commit graph: 53% (654653/1235193) Finding extra edges in commit graph: 54% (667005/1235193) Finding extra edges in commit graph: 55% (679357/1235193) Finding extra edges in commit graph: 56% (691709/1235193) Finding extra edges in commit graph: 57% (704061/1235193) Finding extra edges in commit graph: 58% (716412/1235193) Finding extra edges in commit graph: 59% (728764/1235193) Finding extra edges in commit graph: 60% (741116/1235193) Finding extra edges in commit graph: 61% (753468/1235193) Finding extra edges in commit graph: 62% (765820/1235193) Finding extra edges in commit graph: 63% (778172/1235193) Finding extra edges in commit graph: 64% (790524/1235193) Finding extra edges in commit graph: 65% (802876/1235193) Finding extra edges in commit graph: 66% (815228/1235193) Finding extra edges in commit graph: 67% (827580/1235193) Finding extra edges in commit graph: 68% (839932/1235193) Finding extra edges in commit graph: 69% (852284/1235193) Finding extra edges in commit graph: 70% (864636/1235193) Finding extra edges in commit graph: 71% (876988/1235193) Finding extra edges in commit graph: 72% (889339/1235193) Finding extra edges in commit graph: 73% (901691/1235193) Finding extra edges in commit graph: 74% (914043/1235193) Finding extra edges in commit graph: 75% (926395/1235193) Finding extra edges in commit graph: 76% (938747/1235193) Finding extra edges in commit graph: 77% (951099/1235193) Finding extra edges in commit graph: 78% (963451/1235193) Finding extra edges in commit graph: 79% (975803/1235193) Finding extra edges in commit graph: 80% (988155/1235193) Finding extra edges in commit graph: 81% (1000507/1235193) Finding extra edges in commit graph: 82% (1012859/1235193) Finding extra edges in commit graph: 83% (1025211/1235193) Finding extra edges in commit graph: 84% (1037563/1235193) Finding extra edges in commit graph: 85% (1049915/1235193) Finding extra edges in commit graph: 86% (1062266/1235193) Finding extra edges in commit graph: 87% (1074618/1235193) Finding extra edges in commit graph: 88% (1086970/1235193) Finding extra edges in commit graph: 89% (1099322/1235193) Finding extra edges in commit graph: 90% (1111674/1235193) Finding extra edges in commit graph: 91% (1124026/1235193) Finding extra edges in commit graph: 92% (1136378/1235193) Finding extra edges in commit graph: 93% (1148730/1235193) Finding extra edges in commit graph: 94% (1161082/1235193) Finding extra edges in commit graph: 95% (1173434/1235193) Finding extra edges in commit graph: 96% (1185786/1235193) Finding extra edges in commit graph: 97% (1198138/1235193) Finding extra edges in commit graph: 98% (1210490/1235193) Finding extra edges in commit graph: 99% (1222842/1235193) Finding extra edges in commit graph: 100% (1235193/1235193) Finding extra edges in commit graph: 100% (1235193/1235193), done. Writing out commit graph in 4 passes: 51% (2543104/4940772) Writing out commit graph in 4 passes: 52% (2569202/4940772) Writing out commit graph in 4 passes: 53% (2618610/4940772) Writing out commit graph in 4 passes: 54% (2668017/4940772) Writing out commit graph in 4 passes: 55% (2717425/4940772) Writing out commit graph in 4 passes: 55% (2744710/4940772) Writing out commit graph in 4 passes: 56% (2766833/4940772) Writing out commit graph in 4 passes: 57% (2816241/4940772) Writing out commit graph in 4 passes: 58% (2865648/4940772) Writing out commit graph in 4 passes: 59% (2915056/4940772) Writing out commit graph in 4 passes: 59% (2949459/4940772) Writing out commit graph in 4 passes: 60% (2964464/4940772) Writing out commit graph in 4 passes: 61% (3013871/4940772) Writing out commit graph in 4 passes: 62% (3063279/4940772) Writing out commit graph in 4 passes: 63% (3112687/4940772) Writing out commit graph in 4 passes: 64% (3162095/4940772) Writing out commit graph in 4 passes: 64% (3174430/4940772) Writing out commit graph in 4 passes: 65% (3211502/4940772) Writing out commit graph in 4 passes: 66% (3260910/4940772) Writing out commit graph in 4 passes: 67% (3310318/4940772) Writing out commit graph in 4 passes: 68% (3359725/4940772) Writing out commit graph in 4 passes: 68% (3365892/4940772) Writing out commit graph in 4 passes: 69% (3409133/4940772) Writing out commit graph in 4 passes: 70% (3458541/4940772) Writing out commit graph in 4 passes: 71% (3507949/4940772) Writing out commit graph in 4 passes: 72% (3557356/4940772) Writing out commit graph in 4 passes: 72% (3563558/4940772) Writing out commit graph in 4 passes: 73% (3606764/4940772) Writing out commit graph in 4 passes: 74% (3656172/4940772) Writing out commit graph in 4 passes: 75% (3705579/4940772) Writing out commit graph in 4 passes: 76% (3754987/4940772) Writing out commit graph in 4 passes: 77% (3804395/4940772) Writing out commit graph in 4 passes: 78% (3853803/4940772) Writing out commit graph in 4 passes: 79% (3903210/4940772) Writing out commit graph in 4 passes: 80% (3952618/4940772) Writing out commit graph in 4 passes: 81% (4002026/4940772) Writing out commit graph in 4 passes: 82% (4051434/4940772) Writing out commit graph in 4 passes: 83% (4100841/4940772) Writing out commit graph in 4 passes: 84% (4150249/4940772) Writing out commit graph in 4 passes: 85% (4199657/4940772) Writing out commit graph in 4 passes: 86% (4249064/4940772) Writing out commit graph in 4 passes: 86% (4290715/4940772) Writing out commit graph in 4 passes: 87% (4298472/4940772) Writing out commit graph in 4 passes: 88% (4347880/4940772) Writing out commit graph in 4 passes: 89% (4397288/4940772) Writing out commit graph in 4 passes: 90% (4446695/4940772) Writing out commit graph in 4 passes: 91% (4496103/4940772) Writing out commit graph in 4 passes: 92% (4545511/4940772) Writing out commit graph in 4 passes: 93% (4594918/4940772) Writing out commit graph in 4 passes: 94% (4644326/4940772) Writing out commit graph in 4 passes: 95% (4693734/4940772) Writing out commit graph in 4 passes: 96% (4743142/4940772) Writing out commit graph in 4 passes: 97% (4792549/4940772) Writing out commit graph in 4 passes: 98% (4841957/4940772) Writing out commit graph in 4 passes: 99% (4891365/4940772) Writing out commit graph in 4 passes: 100% (4940772/4940772) Writing out commit graph in 4 passes: 100% (4940772/4940772), done. # git rev-parse -q --verify 9a6b294ab496650e9f270123730df37030911b55^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master # git rev-parse -q --verify 9a6b294ab496650e9f270123730df37030911b55^{commit} 9a6b294ab496650e9f270123730df37030911b55 # git checkout -q -f -B kisskb 9a6b294ab496650e9f270123730df37030911b55 # git clean -qxdf # < git log -1 # commit 9a6b294ab496650e9f270123730df37030911b55 # Author: David Howells # Date: Thu Dec 21 13:57:31 2023 +0000 # # afs: Fix use-after-free due to get/remove race in volume tree # # When an afs_volume struct is put, its refcount is reduced to 0 before # the cell->volume_lock is taken and the volume removed from the # cell->volumes tree. # # Unfortunately, this means that the lookup code can race and see a volume # with a zero ref in the tree, resulting in a use-after-free: # # refcount_t: addition on 0; use-after-free. # WARNING: CPU: 3 PID: 130782 at lib/refcount.c:25 refcount_warn_saturate+0x7a/0xda # ... # RIP: 0010:refcount_warn_saturate+0x7a/0xda # ... # Call Trace: # afs_get_volume+0x3d/0x55 # afs_create_volume+0x126/0x1de # afs_validate_fc+0xfe/0x130 # afs_get_tree+0x20/0x2e5 # vfs_get_tree+0x1d/0xc9 # do_new_mount+0x13b/0x22e # do_mount+0x5d/0x8a # __do_sys_mount+0x100/0x12a # do_syscall_64+0x3a/0x94 # entry_SYSCALL_64_after_hwframe+0x62/0x6a # # Fix this by: # # (1) When putting, use a flag to indicate if the volume has been removed # from the tree and skip the rb_erase if it has. # # (2) When looking up, use a conditional ref increment and if it fails # because the refcount is 0, replace the node in the tree and set the # removal flag. # # Fixes: 20325960f875 ("afs: Reorganise volume and server trees to be rooted on the cell") # Signed-off-by: David Howells # Reviewed-by: Jeffrey Altman # cc: Marc Dionne # cc: linux-afs@lists.infradead.org # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 9a6b294ab496650e9f270123730df37030911b55 # make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_SAMPLES=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig # < make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- help # make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- olddefconfig # make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- Completed OK # rm -rf /kisskb/build/linus_allmodconfig_x86_64-gcc8 # Build took: 0:30:01.516645