[PATCH 0/3] commit-graph: fix corruption during generation v2 upgrade
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Jul 12, 2022, 23:10 UTC
- Message-ID
- <cover.1657667404.git.me@ttaylorr.com>
This brief series resolves a bug where a commit-graph would become corrupt when upgrading from generation number v1 to v2, as originally reported in [1].
Some speculation occurred as to what might be causing that bug in the thread beginning at [1], until the problem was explained in more detail by Will Chandler in [2].
The crux of the issue, as is described in [2] and [3], is that the commit_graph_data slab is reused for read and write operations involving the commit-graph, leading to situations where data computed in preparation of a write is clobbered by a read of existing data.
The first patch demonstrates the issue, and the second patch prepares to fix it by introducing a helper function. The crux of the issue is described and fixed in the third patch.
[1]: https://lore.kernel.org/git/YqD5dgalb9EPnz85@coredump.intra.peff.net/ [2]: https://lore.kernel.org/git/DD88D523-0ECA-4474-9AA5-1D4A431E532A@wfchandler.org/ [3]: https://lore.kernel.org/git/YsS7H4i5DqUZVQ5i@nand.local/
Taylor Blau (3): t5318: demonstrate commit-graph generation v2 corruption commit-graph: introduce `repo_find_commit_pos_in_graph()` commit-graph: fix corrupt upgrade from generation v1 to v2
bloom.c | 10 +++++----- commit-graph.c | 12 +++++++++--- commit-graph.h | 15 +++++++++++++++ t/t5318-commit-graph.sh | 27 +++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 8 deletions(-)
-- 2.37.0.1.g1379af2e9d