)]}'
{
  "commit": "400c04f2f22c2ef48c46a8a3cf5c188e6008604f",
  "tree": "4d0ef813eb4f1e59d8d69da7d9ee6dbe9e5e7afd",
  "parents": [
    "629dfc2cb53984b5d267da6ed6480b64bec7500f"
  ],
  "author": {
    "name": "Florent Revest",
    "email": "revest@chromium.org",
    "time": "Tue May 11 10:10:54 2021 +0200"
  },
  "committer": {
    "name": "Oleksandr Tymoshenko",
    "email": "ovt@google.com",
    "time": "Fri Apr 08 01:50:03 2022 +0000"
  },
  "message": "UPSTREAM: bpf: Fix nested bpf_bprintf_prepare with more per-cpu buffers\n\nThe bpf_seq_printf, bpf_trace_printk and bpf_snprintf helpers share one\nper-cpu buffer that they use to store temporary data (arguments to\nbprintf). They \"get\" that buffer with try_get_fmt_tmp_buf and \"put\" it\nby the end of their scope with bpf_bprintf_cleanup.\n\nIf one of these helpers gets called within the scope of one of these\nhelpers, for example: a first bpf program gets called, uses\nbpf_trace_printk which calls raw_spin_lock_irqsave which is traced by\nanother bpf program that calls bpf_snprintf, then the second \"get\"\nfails. Essentially, these helpers are not re-entrant. They would return\n-EBUSY and print a warning message once.\n\nThis patch triples the number of bprintf buffers to allow three levels\nof nesting. This is very similar to what was done for tracepoints in\n\"9594dc3c7e7 bpf: fix nested bpf tracepoints with per-cpu data\"\n\nFixes: d9c9e4db186a (\"bpf: Factorize bpf_trace_printk and bpf_seq_printf\")\nReported-by: syzbot+63122d0bc347f18c1884@syzkaller.appspotmail.com\nSigned-off-by: Florent Revest \u003crevest@chromium.org\u003e\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20210511081054.2125874-1-revest@chromium.org\n(cherry picked from commit e2d5b2bb769fa5f500760caba76436ba3a10a895)\nSigned-off-by: Brendan Jackman \u003cjackmanb@google.com\u003e\n\nSOURCE\u003dUPSTREAM(e2d5b2bb769fa5f500760caba76436ba3a10a895)\nBUG\u003db:217368493\n\nChange-Id: Icfdcaeb3239ab365b2b4d0e8f17d18b131d88a41\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6893bde721e03a190b4041a03e549715b509cbcc",
      "old_mode": 33188,
      "old_path": "kernel/bpf/helpers.c",
      "new_id": "5636cbda81b77388463628fff7b06cbe9b9be8d4",
      "new_mode": 33188,
      "new_path": "kernel/bpf/helpers.c"
    }
  ]
}
