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

Re: [PATCH v4] promisor-remote: skip move_to_tail when no-op

From
Christian Couder <christian.couder@gmail.com>
Date
Oct 1, 2019, 05:12 UTC
Message-ID
<CAP8UFD3vdf-WHeoBaiJw5S_uUPegY_UENLKOKoMV6QVssv=QDQ@mail.gmail.com>
In-Reply-To
<20190930220355.108394-1-emilyshaffer@google.com>
On Tue, Oct 1, 2019 at 12:03 AM Emily Shaffer <emilyshaffer@google.com> wrote:
Show 15 quoted lines
>
> Previously, when promisor_remote_move_to_tail() is called for a
> promisor_remote which is currently the final element in promisors, a
> cycle is created in the promisors linked list. This cycle leads to a
> double free later on in promisor_remote_clear() when the final element
> of the promisors list is removed: promisors is set to promisors->next (a
> no-op, as promisors->next == promisors); the previous value of promisors
> is free()'d; then the new value of promisors (which is equal to the
> previous value of promisors) is also free()'d. This double-free error
> was unrecoverable for the user without removing the filter or re-cloning
> the repo and hoping to miss this edge case.
>
> Now, when promisor_remote_move_to_tail() would be a no-op, just do a
> no-op. In cases of promisor_remote_move_to_tail() where r is not already
> at the tail of the list, it works as before.

Yeah, thank you Emily and Peff for finding and fixing this! The fix and the test look good to me.

Previous: Emily Shaffer
Message 10 of 10 in “promisor-remote: skip move_to_tail when n=1”
  1. promisor-remote: skip move_to_tail when n=1Emily Shaffer, Sep 25, 2019
  2. Jeff KingSep 26, 2019
  3. Emily ShafferSep 26, 2019
  4. Jeff KingSep 26, 2019
  5. promisor-remote: skip move_to_tail when no-opEmily Shaffer, Sep 26, 2019
  6. Jeff KingSep 27, 2019
  7. promisor-remote: skip move_to_tail when no-opEmily Shaffer, Sep 30, 2019
  8. Jeff KingSep 30, 2019
  9. promisor-remote: skip move_to_tail when no-opEmily Shaffer, Sep 30, 2019
  10. Christian CouderOct 1, 2019

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.