git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 0/3] fix corner cases with lock_ref_sha1_basic

From
Jeff King <peff@peff.net>
Date
Jan 12, 2016, 21:43 UTC
Message-ID
<20160112214318.GA2527@sigill.intra.peff.net>
In-Reply-To
<20160112204229.GA13706@sigill.intra.peff.net>
On Tue, Jan 12, 2016 at 03:42:29PM -0500, Jeff King wrote:
Show 9 quoted lines
> Ah, I see. When calling git-symbolic-ref, we don't provide an old_sha1,
> and therefore never call verify_lock(). And we get whatever value in
> lock->old_oid we happened to read earlier in resolve_ref_unsafe(). Which
> happened outside of a lock. Yikes. It seems like we could racily write
> the wrong reflog entry in such a case.
>
> [...]
> The patch above is not quite right; I'll work up a series that takes
> this approach.

OK, here it is. This replaces the top two patches of jk/symbolic-ref (i.e., everything in this thread I've sent in the last day or two).

Besides fixing the race (which is detailed in patch 2/3), I think the resulting 3/3 is much cleaner. Sorry for all the false starts. The more I looked at this, the more complex it seemed to get. But I _think_ this is the right solution. :)

  [1/3]: checkout,clone: check return value of create_symref
  [2/3]: lock_ref_sha1_basic: always fill old_oid while holding lock
  [3/3]: lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
-Peff
Previous: Jeff KingNext: Jeff King
Message 18 of 23 in “fix corner case with lock_ref_sha1_basic and REF_NODEREF”
  1. 0/2 fix corner case with lock_ref_sha1_basic and REF_NODEREFJeff King, Jan 11, 2016
  2. 1/2 checkout,clone: check return value of create_symrefJeff King, Jan 11, 2016
  3. Michael HaggertyJan 12, 2016
  4. Jeff KingJan 12, 2016
  5. 2/2 lock_ref_sha1_basic: handle REF_NODEREF with invalid refsJeff King, Jan 11, 2016
  6. Junio C HamanoJan 11, 2016
  7. Michael HaggertyJan 12, 2016
  8. Jeff KingJan 12, 2016
  9. Junio C HamanoJan 12, 2016
  10. 0/2 fix corner case with lock_ref_sha1_basic and REF_NODEREFJeff King, Jan 12, 2016
  11. 1/2 checkout,clone: check return value of create_symrefJeff King, Jan 12, 2016
  12. 2/2 lock_ref_sha1_basic: handle REF_NODEREF with invalid refsJeff King, Jan 12, 2016
  13. Jeff KingJan 12, 2016
  14. 2/2 lock_ref_sha1_basic: handle REF_NODEREF with invalid refsJeff King, Jan 12, 2016
  15. Junio C HamanoJan 12, 2016
  16. Jeff KingJan 12, 2016
  17. Jeff KingJan 12, 2016
  18. 0/3 fix corner cases with lock_ref_sha1_basicJeff King, Jan 12, 2016
  19. 1/3 checkout,clone: check return value of create_symrefJeff King, Jan 12, 2016
  20. 2/3 lock_ref_sha1_basic: always fill old_oid while holding lockJeff King, Jan 12, 2016
  21. Eric SunshineJan 13, 2016
  22. Jeff KingJan 13, 2016
  23. 3/3 lock_ref_sha1_basic: handle REF_NODEREF with invalid refsJeff King, Jan 12, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.