Module Name: src Committed By: martin Date: Mon Jun 21 16:14:14 UTC 2021
Modified Files: src/sys/kern [netbsd-9]: kern_ksyms.c Log Message: Pull up following revision(s) (requested by riastradh in ticket #1299): sys/kern/kern_ksyms.c: revision 1.90 sys/kern/kern_ksyms.c: revision 1.91 sys/kern/kern_ksyms.c: revision 1.92 sys/kern/kern_ksyms.c: revision 1.93 sys/kern/kern_ksyms.c: revision 1.94 sys/kern/kern_ksyms.c: revision 1.95 sys/kern/kern_ksyms.c: revision 1.96 sys/kern/kern_ksyms.c: revision 1.97 ksyms(4): Fix ksymsread synchronization. Fixes crash on concurrent update and read of /dev/ksyms. XXX Unclear why we have to skip sd_gone entries here -- it seems like they should be preserved until ksymsclose. ksyms(4): Modify ksyms_symtabs only at IPL_HIGH. This limits the opportunities for ddb to witness an inconsistent state of the symbol table list. ksyms(4): Don't skip symbol tables that are soon to be freed. They will not actually be freed until /dev/ksyms is closed, so continued access to them remains kosher. Revert "ksyms(4): Don't skip symbol tables that are soon to be freed." Apparently the equality kassert this restored doesn't work; to be analyzed. Fix regression introduced in rev 1.90 in which the last element of ksyms_symtabs is skipped by mistake. ksyms(4): Fix race in ksymsread iteration. TAILQ_NEXT(ksyms_last_snapshot) might change while we are iterating, but ksyms_last_snapshot itself cannot, so invert the loop structure. Discussed with rin@. ksyms(4): Don't skip symbol tables that are soon to be freed, take 2. They will not actually be freed until /dev/ksyms is closed, so continued access to them remains kosher. The previous change was busted because of an off-by-one error in a previous previous change's iteration over the symtabs; that error has since been corrected. ksyms(4): Allow multiple concurrent opens of /dev/ksyms. First one takes a snapshot; others all agree with the snapshot. Previously this code path was just broken (could fail horribly if modules were unloaded after one of the opens is closed), so I just blocked it off in an earlier commit, but that broke crash(8). So let's continue allowing multiple opens seeing the same snapshot, but without the horrible bugs. To generate a diff of this commit: cvs rdiff -u -r1.87.8.1 -r1.87.8.2 src/sys/kern/kern_ksyms.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.