)]}'
{
  "log": [
    {
      "commit": "18f843023836351b511b94df88fa9ea3c2e815c4",
      "tree": "4935b6281657bfae65c9b608e44d8dd0331221a6",
      "parents": [
        "69b8114ae2f4977060c71e6ea440f8d98cd39d14",
        "1466fc4bb22237634ff02b135671740c32d68433"
      ],
      "author": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Wed Mar 05 19:53:03 2025 -0800"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 05 19:53:03 2025 -0800"
      },
      "message": "Make libbpf available to standalone bpf loader binary am: 1466fc4bb2\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3476954\n\nChange-Id: I6e67b6bf67dbe55e780204cfec2be919b3f580d2\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "1466fc4bb22237634ff02b135671740c32d68433",
      "tree": "4935b6281657bfae65c9b608e44d8dd0331221a6",
      "parents": [
        "24b13186feec50d15d80f69b4a8cacc2bd26a737"
      ],
      "author": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Wed Feb 05 17:33:37 2025 +0900"
      },
      "committer": {
        "name": "Motomu Utsumi",
        "email": "motomuman@google.com",
        "time": "Thu Mar 06 09:44:08 2025 +0900"
      },
      "message": "Make libbpf available to standalone bpf loader binary\n\nThis CL also moves libz from static_libs to shared_libs for android\ntarget to avoid adding apex_available to libz.\n\nTest: m\nBug: 394492034\nChange-Id: I0e667b9c75930cc9201721bc2122b31a741d811e\n"
    },
    {
      "commit": "69b8114ae2f4977060c71e6ea440f8d98cd39d14",
      "tree": "14ae8324df023caf91fbb53ba73d8cb494989ca2",
      "parents": [
        "14973f22a9318ea43a4c2c9a3beafe508b14dba2",
        "4e74725416b61cb4464e9d9206068ba0ea8e85e0"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Dec 20 13:39:39 2024 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Dec 20 13:39:39 2024 -0800"
      },
      "message": "Empty merge ab/12770256 into aosp-main-future\n\nMerged-In: Ib68576e83f07c1931919858cc482c75bc7e8a0e9\nChange-Id: I42d12e0eef784b4a04977345e05ebcc1ce73b815\n"
    },
    {
      "commit": "14973f22a9318ea43a4c2c9a3beafe508b14dba2",
      "tree": "14ae8324df023caf91fbb53ba73d8cb494989ca2",
      "parents": [
        "87011502f1bac8de6312ebfe9d1c44e309870f12",
        "24b13186feec50d15d80f69b4a8cacc2bd26a737"
      ],
      "author": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Thu Dec 19 13:53:23 2024 -0800"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 19 13:53:23 2024 -0800"
      },
      "message": "Add janitors to the OWNERS file am: 24b13186fe\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3423764\n\nChange-Id: I95e7445f9d1368900b48c6057bc75bc4bb1c6121\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "24b13186feec50d15d80f69b4a8cacc2bd26a737",
      "tree": "14ae8324df023caf91fbb53ba73d8cb494989ca2",
      "parents": [
        "87011502f1bac8de6312ebfe9d1c44e309870f12"
      ],
      "author": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Wed Dec 18 20:22:45 2024 +0000"
      },
      "committer": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Wed Dec 18 20:22:45 2024 +0000"
      },
      "message": "Add janitors to the OWNERS file\n\nTest: TreeHugger\nChange-Id: Iedb7583e6556e19a271004ea2d040c0984f0712c\n"
    },
    {
      "commit": "4e74725416b61cb4464e9d9206068ba0ea8e85e0",
      "tree": "3be7dd2d2c189dde451fb089fc207287981f0fc4",
      "parents": [
        "53b47a24052de9a2e41e1a84097280e6ce44ed3f",
        "87011502f1bac8de6312ebfe9d1c44e309870f12"
      ],
      "author": {
        "name": "Devendra Singhi (xWF)",
        "email": "dsinghi@google.com",
        "time": "Tue Nov 19 18:38:45 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Nov 19 18:38:45 2024 +0000"
      },
      "message": "Revert \"Add visibility to \u0027/test\u0027 for use in tests\" am: 415b9e9451 am: 87011502f1\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3364140\n\nChange-Id: I8adb2066105dcfe05277c48b1c27a4ff51cad4a9\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "87011502f1bac8de6312ebfe9d1c44e309870f12",
      "tree": "3be7dd2d2c189dde451fb089fc207287981f0fc4",
      "parents": [
        "d750285291707dca85be7fe01151e2a39b24f9b7",
        "415b9e94512121d075a0ad75f0022f3672a33d21"
      ],
      "author": {
        "name": "Devendra Singhi (xWF)",
        "email": "dsinghi@google.com",
        "time": "Tue Nov 19 17:30:02 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Nov 19 17:30:02 2024 +0000"
      },
      "message": "Revert \"Add visibility to \u0027/test\u0027 for use in tests\" am: 415b9e9451\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3364140\n\nChange-Id: I4c6e9a97d74418c177f11282b6dcf2ed2eec2e5c\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "415b9e94512121d075a0ad75f0022f3672a33d21",
      "tree": "3be7dd2d2c189dde451fb089fc207287981f0fc4",
      "parents": [
        "9fb631e038dbea27d2ad7b3110e9b112fcdf5e42"
      ],
      "author": {
        "name": "Devendra Singhi (xWF)",
        "email": "dsinghi@google.com",
        "time": "Tue Nov 19 11:05:57 2024 +0000"
      },
      "committer": {
        "name": "Devendra Singhi",
        "email": "dsinghi@google.com",
        "time": "Tue Nov 19 11:36:13 2024 +0000"
      },
      "message": "Revert \"Add visibility to \u0027/test\u0027 for use in tests\"\n\nThis reverts commit 1535280d3424de0f14c10e4565e5b1184b537d16.\n\nReason for revert: The STS for CVE-2023-28147 has been refactored to circumvent the visibility requirement.\n\nBug: 278775559\nTest: mmm test/\n\nChange-Id: I45a5bb7b3008166bc891b114354854c5e1b9317b\n"
    },
    {
      "commit": "53b47a24052de9a2e41e1a84097280e6ce44ed3f",
      "tree": "7d7f7c7bb60ab3ccdeeab43d4a7d8f4495455ca4",
      "parents": [
        "3a362c507045b14e4b25a86140813d9fec545e5f",
        "d750285291707dca85be7fe01151e2a39b24f9b7"
      ],
      "author": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Thu Nov 14 19:01:42 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Nov 14 19:01:42 2024 +0000"
      },
      "message": "Update path to libbpf-sys crate. am: 9fb631e038 am: d750285291\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3345628\n\nChange-Id: I546591be79dcd5adb36108e97d3d3d54d74a25a2\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "d750285291707dca85be7fe01151e2a39b24f9b7",
      "tree": "7d7f7c7bb60ab3ccdeeab43d4a7d8f4495455ca4",
      "parents": [
        "db858a1aabcbf455029f3805255c07761d29e63e",
        "9fb631e038dbea27d2ad7b3110e9b112fcdf5e42"
      ],
      "author": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Thu Nov 14 18:37:37 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Nov 14 18:37:37 2024 +0000"
      },
      "message": "Update path to libbpf-sys crate. am: 9fb631e038\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3345628\n\nChange-Id: I3e047c180bb6d198d36b1a5eb5e9eb4d6d767863\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "9fb631e038dbea27d2ad7b3110e9b112fcdf5e42",
      "tree": "7d7f7c7bb60ab3ccdeeab43d4a7d8f4495455ca4",
      "parents": [
        "0527346b4ddc30bf8ed21adc6ac01af3b6abc873"
      ],
      "author": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Tue Nov 12 17:28:29 2024 +0000"
      },
      "committer": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Tue Nov 12 17:28:29 2024 +0000"
      },
      "message": "Update path to libbpf-sys crate.\n\nBug: http://b/339424309\nTest: treehugger\nChange-Id: I96036723ba1c12347270baf5a15abc75683ea57e\n"
    },
    {
      "commit": "3a362c507045b14e4b25a86140813d9fec545e5f",
      "tree": "2cedfb23248e4985df58977539063319a8a8bdb1",
      "parents": [
        "aa63f5d9ee5268f916bf2cd6376d3cd6966ba84b",
        "db858a1aabcbf455029f3805255c07761d29e63e"
      ],
      "author": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Wed Nov 06 02:54:13 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Nov 06 02:54:13 2024 +0000"
      },
      "message": "Update visibility of libbpf-rs am: 0527346b4d am: db858a1aab\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3335994\n\nChange-Id: I5a9ceb50a791f6709848fc674a1fb20c2f00b020\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "db858a1aabcbf455029f3805255c07761d29e63e",
      "tree": "2cedfb23248e4985df58977539063319a8a8bdb1",
      "parents": [
        "b5d09d7a1e4391dd7e51b5ede674a9909fec1f20",
        "0527346b4ddc30bf8ed21adc6ac01af3b6abc873"
      ],
      "author": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Wed Nov 06 02:30:23 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Nov 06 02:30:23 2024 +0000"
      },
      "message": "Update visibility of libbpf-rs am: 0527346b4d\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3335994\n\nChange-Id: Ic5a88de36312d28b917fedfb695976f1a2e76c32\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "0527346b4ddc30bf8ed21adc6ac01af3b6abc873",
      "tree": "2cedfb23248e4985df58977539063319a8a8bdb1",
      "parents": [
        "95f342cbb2ce1062c6f2a87e4c31266cacfaa523"
      ],
      "author": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Tue Nov 05 19:51:54 2024 +0000"
      },
      "committer": {
        "name": "James Farrell",
        "email": "jamesfarrell@google.com",
        "time": "Tue Nov 05 21:45:09 2024 +0000"
      },
      "message": "Update visibility of libbpf-rs\n\nSince it is being moved from external/rust/crates/libbpf-rs to\nexternal/rust/android-crates-io/crates/libbpf-rs\n\nBug: 339424309\nTest: treehugger\nChange-Id: I78bd56947e7bdeab561070a4d260a7ef537f6a41\n"
    },
    {
      "commit": "aa63f5d9ee5268f916bf2cd6376d3cd6966ba84b",
      "tree": "45a6e4229c1480e6ee4825f00da80bf015e45dfc",
      "parents": [
        "7f91bfed3af173460b741c3cb490bdf6cf8cf438",
        "b5d09d7a1e4391dd7e51b5ede674a9909fec1f20"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Oct 18 21:12:43 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Oct 18 21:12:43 2024 +0000"
      },
      "message": "[automerger skipped] Mark 24Q4 as merged in aosp-main-future am: b5d09d7a1e -s ours\n\nam skip reason: Merged-In I7f98cf9ad0ec4b28e40e13b7b293e610273c2ad7 with SHA-1 7f91bfed3a is already in history\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/libbpf/+/29935377\n\nChange-Id: I66cde6aadfcb072bda73946a7d5a52b081630a40\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "b5d09d7a1e4391dd7e51b5ede674a9909fec1f20",
      "tree": "45a6e4229c1480e6ee4825f00da80bf015e45dfc",
      "parents": [
        "f0e9ffd5244b6f51c95377309016149abc154e16",
        "05f233a28334b6dfd0bc995a194e3235fe48a771"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Thu Oct 17 11:03:25 2024 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Thu Oct 17 11:03:25 2024 -0700"
      },
      "message": "Mark 24Q4 as merged in aosp-main-future\n\nBug: 373937381\nMerged-In: I7f98cf9ad0ec4b28e40e13b7b293e610273c2ad7\nChange-Id: I003e4ed2057dafe92fe2b65df78a4078e215f2c0\n"
    },
    {
      "commit": "7f91bfed3af173460b741c3cb490bdf6cf8cf438",
      "tree": "45a6e4229c1480e6ee4825f00da80bf015e45dfc",
      "parents": [
        "7acaa890596809e9cc2859eb45929b1341d9dfb9",
        "f0e9ffd5244b6f51c95377309016149abc154e16"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Oct 01 17:59:12 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Oct 01 17:59:12 2024 +0000"
      },
      "message": "Merge \"Libbpf: Merge tag v1.4.5 into aosp\" into main am: 95f342cbb2 am: f0e9ffd524\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3261913\n\nChange-Id: I7f98cf9ad0ec4b28e40e13b7b293e610273c2ad7\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "7acaa890596809e9cc2859eb45929b1341d9dfb9",
      "tree": "e93d12cb25136aaec1bd66c2b45e86e0de782112",
      "parents": [
        "05f233a28334b6dfd0bc995a194e3235fe48a771",
        "7091f6e3871469f93f64d636f9600513c9482977"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Oct 01 17:59:09 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Oct 01 17:59:09 2024 +0000"
      },
      "message": "libbpf: Add pieces required to build rust crates am: d7876da373 am: 7091f6e387\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3279598\n\nChange-Id: Ifaa9234281b73ed8e9386611f02005ebd5a7f4a0\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "f0e9ffd5244b6f51c95377309016149abc154e16",
      "tree": "45a6e4229c1480e6ee4825f00da80bf015e45dfc",
      "parents": [
        "7091f6e3871469f93f64d636f9600513c9482977",
        "95f342cbb2ce1062c6f2a87e4c31266cacfaa523"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Oct 01 16:37:53 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Oct 01 16:37:53 2024 +0000"
      },
      "message": "Merge \"Libbpf: Merge tag v1.4.5 into aosp\" into main am: 95f342cbb2\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3261913\n\nChange-Id: I909f18f114e0957f844d076c102927406591770b\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "7091f6e3871469f93f64d636f9600513c9482977",
      "tree": "e93d12cb25136aaec1bd66c2b45e86e0de782112",
      "parents": [
        "77c8941cecf2fc7d67b8b7e5a02e808804afcc07",
        "d7876da37314ef18bd360d0b31152d24fdddd674"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Oct 01 16:37:51 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Oct 01 16:37:51 2024 +0000"
      },
      "message": "libbpf: Add pieces required to build rust crates am: d7876da373\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3279598\n\nChange-Id: I8118298943100a2db0080bcc295d59bdf009842b\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "95f342cbb2ce1062c6f2a87e4c31266cacfaa523",
      "tree": "45a6e4229c1480e6ee4825f00da80bf015e45dfc",
      "parents": [
        "d7876da37314ef18bd360d0b31152d24fdddd674",
        "cd979f4011bfbc149031a9c6234552ee935c3c0c"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Oct 01 16:17:24 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 01 16:17:24 2024 +0000"
      },
      "message": "Merge \"Libbpf: Merge tag v1.4.5 into aosp\" into main"
    },
    {
      "commit": "d7876da37314ef18bd360d0b31152d24fdddd674",
      "tree": "e93d12cb25136aaec1bd66c2b45e86e0de782112",
      "parents": [
        "352733894d9321ca30d0d2ec6432cc2a8c9b8301"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Sep 24 19:11:10 2024 +0000"
      },
      "committer": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Sep 24 19:11:10 2024 +0000"
      },
      "message": "libbpf: Add pieces required to build rust crates\n\nAdd what is required for building libbpf-sys (bindgen) and libbpf-rs\ncrates.\n\nAlso run bpfmt\n\nBug: 359646531\nTest: TH/manual\nChange-Id: I420e16c69293ecb4b402fa94d4095d5568a86c26\nSigned-off-by: Neill Kapron \u003cnkapron@google.com\u003e\n"
    },
    {
      "commit": "cd979f4011bfbc149031a9c6234552ee935c3c0c",
      "tree": "37aafd057293bc33c465f3253a8bae9893b87142",
      "parents": [
        "01e6e866529a713142c9f6cbd855b9307aab3d1f",
        "a5086158dc90593b4e4b3ddbafab9bdaf9ec97ef"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Sep 10 18:47:46 2024 +0000"
      },
      "committer": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Sep 10 19:35:42 2024 +0000"
      },
      "message": "Libbpf: Merge tag v1.4.5 into aosp\n\nUpdate to libbpf v1.4.5 for inclusion in libbpf-sys rust crate expecting\nthe same.\n\nManual changes:\n\nTo fix build: add -Wno-user-defined-warnings to\nAndroid.bp and feat_supported() to android/bpf_stub.c.\n\nMEATADATA file update, ran bpfmt on Android.bp\n\nTest: TH\nBug: 359646531\nChange-Id: I19d7261ee7a6a03e23e5b12a360796927cca37bf\nSigned-off-by: Neill Kapron \u003cnkapron@google.com\u003e\n"
    },
    {
      "commit": "05f233a28334b6dfd0bc995a194e3235fe48a771",
      "tree": "ee53f742c839405ab569cb8ca2fd8e57f8f02ab6",
      "parents": [
        "80921163dc29d71e14eda6b4fbbfa01d6e373e35",
        "77c8941cecf2fc7d67b8b7e5a02e808804afcc07"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Sep 10 12:23:16 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Sep 10 12:23:16 2024 +0000"
      },
      "message": "libbpf: cleanup unused modifications am: 352733894d am: 77c8941cec\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3261253\n\nChange-Id: Ia7999027dd90423091b9aa89b21210a7f2b6bccf\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "77c8941cecf2fc7d67b8b7e5a02e808804afcc07",
      "tree": "ee53f742c839405ab569cb8ca2fd8e57f8f02ab6",
      "parents": [
        "01e6e866529a713142c9f6cbd855b9307aab3d1f",
        "352733894d9321ca30d0d2ec6432cc2a8c9b8301"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Tue Sep 10 12:03:28 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Sep 10 12:03:28 2024 +0000"
      },
      "message": "libbpf: cleanup unused modifications am: 352733894d\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3261253\n\nChange-Id: I7668e2293753945f667de85c34cbe8df6e282ee2\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "352733894d9321ca30d0d2ec6432cc2a8c9b8301",
      "tree": "ee53f742c839405ab569cb8ca2fd8e57f8f02ab6",
      "parents": [
        "01e6e866529a713142c9f6cbd855b9307aab3d1f"
      ],
      "author": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Mon Sep 09 21:43:05 2024 +0000"
      },
      "committer": {
        "name": "Neill Kapron",
        "email": "nkapron@google.com",
        "time": "Mon Sep 09 21:44:03 2024 +0000"
      },
      "message": "libbpf: cleanup unused modifications\n\nThe build system has been updated to include perf_event.h, pkt_cls.h,\nand pkt_sched.h, so we no longer require them to be symlinked here.\nadditionally, remove unused __user and __force definitions.\n\nTest: TH\nChange-Id: I0d1fc49578fb5ca7b1f7e2338677302d605713a7\nSigned-off-by: Neill Kapron \u003cnkapron@google.com\u003e\n"
    },
    {
      "commit": "80921163dc29d71e14eda6b4fbbfa01d6e373e35",
      "tree": "253bcb4fd3150ec0f8849e9a7ebc9e038277ee24",
      "parents": [
        "95c6564fad0b9d130518e78f89b7f88796a084d6",
        "01e6e866529a713142c9f6cbd855b9307aab3d1f"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@google.com",
        "time": "Wed Aug 07 00:35:20 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Aug 07 00:35:20 2024 +0000"
      },
      "message": "Enable linking libbpf as a shared library in the libhealthloop host tests am: 48beb5969d am: 01e6e86652\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3199181\n\nChange-Id: Ie48a513a77052d6da5a176d19876400a9da84314\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "01e6e866529a713142c9f6cbd855b9307aab3d1f",
      "tree": "253bcb4fd3150ec0f8849e9a7ebc9e038277ee24",
      "parents": [
        "808611c0a621ce9e68515d91a7fc010ad51b1486",
        "48beb5969d1db019608df8611ed11f9b39ca2114"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@google.com",
        "time": "Wed Aug 07 00:21:49 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Aug 07 00:21:49 2024 +0000"
      },
      "message": "Enable linking libbpf as a shared library in the libhealthloop host tests am: 48beb5969d\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3199181\n\nChange-Id: I927e62eb23b338c342830bc2b896ea53cb6df9e6\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "48beb5969d1db019608df8611ed11f9b39ca2114",
      "tree": "253bcb4fd3150ec0f8849e9a7ebc9e038277ee24",
      "parents": [
        "1535280d3424de0f14c10e4565e5b1184b537d16"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@google.com",
        "time": "Tue Jul 30 10:59:58 2024 -0700"
      },
      "committer": {
        "name": "Bart Van Assche",
        "email": "bvanassche@google.com",
        "time": "Tue Aug 06 06:42:29 2024 -0700"
      },
      "message": "Enable linking libbpf as a shared library in the libhealthloop host tests\n\nLinking as a shared library is more convenient because when linking as a shared\nlibrary neither the visibility of elfutils nor the visibility of the elfutils\ntransitive dependencies has to be modified.\n\nBug: 203462310\nTest: Cuttlefish\nChange-Id: Iecb385025cef68703c666e0ac402d2dd058f372a\nSigned-off-by: Bart Van Assche \u003cbvanassche@google.com\u003e\n"
    },
    {
      "commit": "95c6564fad0b9d130518e78f89b7f88796a084d6",
      "tree": "774904624f12ac9b89692552467dbdc2414f273c",
      "parents": [
        "45dc3752d2bdd3de48b53feca441f6a872d15eb1",
        "808611c0a621ce9e68515d91a7fc010ad51b1486"
      ],
      "author": {
        "name": "Devendra Singhi",
        "email": "dsinghi@google.com",
        "time": "Fri Jul 26 19:06:15 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jul 26 19:06:15 2024 +0000"
      },
      "message": "Add visibility to \u0027/test\u0027 for use in tests am: 1535280d34 am: 808611c0a6\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3192052\n\nChange-Id: Ic0332d6facd98891c99d86b26de3d78cef753614\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "808611c0a621ce9e68515d91a7fc010ad51b1486",
      "tree": "774904624f12ac9b89692552467dbdc2414f273c",
      "parents": [
        "45dc3752d2bdd3de48b53feca441f6a872d15eb1",
        "1535280d3424de0f14c10e4565e5b1184b537d16"
      ],
      "author": {
        "name": "Devendra Singhi",
        "email": "dsinghi@google.com",
        "time": "Fri Jul 26 18:54:36 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jul 26 18:54:36 2024 +0000"
      },
      "message": "Add visibility to \u0027/test\u0027 for use in tests am: 1535280d34\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/libbpf/+/3192052\n\nChange-Id: I63131294f0ca98a6da72edde789569818c19ec28\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "1535280d3424de0f14c10e4565e5b1184b537d16",
      "tree": "774904624f12ac9b89692552467dbdc2414f273c",
      "parents": [
        "45dc3752d2bdd3de48b53feca441f6a872d15eb1"
      ],
      "author": {
        "name": "Devendra Singhi",
        "email": "dsinghi@google.com",
        "time": "Tue May 28 07:01:15 2024 +0000"
      },
      "committer": {
        "name": "Devendra Singhi (xWF)",
        "email": "dsinghi@google.com",
        "time": "Fri Jul 26 11:28:23 2024 +0000"
      },
      "message": "Add visibility to \u0027/test\u0027 for use in tests\n\nThis CL adds visibility to STS for CVE-2023-28147\n\nBug: 278775559\nTest: mmm test/\n\nChange-Id: I18814791ddd7acd610893b9da45a186eecd76416\n"
    },
    {
      "commit": "a5086158dc90593b4e4b3ddbafab9bdaf9ec97ef",
      "tree": "dc0e8091ca2bf763f0d49b987acdb87a9268d62b",
      "parents": [
        "ebd40ad9794213e01479e016bf1a131b31f3b6ab"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Jul 11 11:44:22 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Jul 11 11:44:22 2024 -0700"
      },
      "message": "libbpf: bump version to v1.4.5\n\nBump patch version to prepare for v1.4.5\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "ebd40ad9794213e01479e016bf1a131b31f3b6ab",
      "tree": "e779328f1922520e30804a54d5779318e0c3b22a",
      "parents": [
        "92943f3d40f33d6ad1491f056a13f4056d28dd65"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue May 21 09:33:59 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Jul 11 11:43:44 2024 -0700"
      },
      "message": "libbpf: detect broken PID filtering logic for multi-uprobe\n\nLibbpf is automatically (and transparently to user) detecting\nmulti-uprobe support in the kernel, and, if supported, uses\nmulti-uprobes to improve USDT attachment speed.\n\nUSDTs can be attached system-wide or for the specific process by PID. In\nthe latter case, we rely on correct kernel logic of not triggering USDT\nfor unrelated processes.\n\nAs such, on older kernels that do support multi-uprobes, but still have\nbroken PID filtering logic, we need to fall back to singular uprobes.\n\nUnfortunately, whether user is using PID filtering or not is known at\nthe attachment time, which happens after relevant BPF programs were\nloaded into the kernel. Also unfortunately, we need to make a call\nwhether to use multi-uprobes or singular uprobe for SEC(\"usdt\") programs\nduring BPF object load time, at which point we have no information about\npossible PID filtering.\n\nThe distinction between single and multi-uprobes is small, but important\nfor the kernel. Multi-uprobes get BPF_TRACE_UPROBE_MULTI attach type,\nand kernel internally substitiute different implementation of some of\nBPF helpers (e.g., bpf_get_attach_cookie()) depending on whether uprobe\nis multi or singular. So, multi-uprobes and singular uprobes cannot be\nintermixed.\n\nAll the above implies that we have to make an early and conservative\ncall about the use of multi-uprobes. And so this patch modifies libbpf\u0027s\nexisting feature detector for multi-uprobe support to also check correct\nPID filtering. If PID filtering is not yet fixed, we fall back to\nsingular uprobes for USDTs.\n\nThis extension to feature detection is simple thanks to kernel\u0027s -EINVAL\naddition for pid \u003c 0.\n\nAcked-by: Jiri Olsa \u003cjolsa@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240521163401.3005045-4-andrii@kernel.org\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n(cherry picked from commit d9f9fd5b22223ae69c62e083da6093d95a0db799)\n"
    },
    {
      "commit": "92943f3d40f33d6ad1491f056a13f4056d28dd65",
      "tree": "a86236ea527473a66c8421b2b0a6ec8237ff64b4",
      "parents": [
        "fd61a395b7235e86786f767c74c02508d9467691"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Jul 10 15:05:03 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Jul 10 15:05:03 2024 -0700"
      },
      "message": "libbpf: bump version to v1.4.4\n\nBump patch version to prepare for v1.4.4.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "fd61a395b7235e86786f767c74c02508d9467691",
      "tree": "66bd0c3f3d45f82bd7be96f959ef024827bf9737",
      "parents": [
        "f8c6e0393d4be665fc0b584266b2a1354a71835e"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Jul 08 13:45:39 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Jul 10 15:03:46 2024 -0700"
      },
      "message": "libbpf: fix BPF skeleton forward/backward compat handling\n\nBPF skeleton was designed from day one to be extensible. Generated BPF\nskeleton code specifies actual sizes of map/prog/variable skeletons for\nthat reason and libbpf is supposed to work with newer/older versions\ncorrectly.\n\nUnfortunately, it was missed that we implicitly embed hard-coded most\nup-to-date (according to libbpf\u0027s version of libbpf.h header used to\ncompile BPF skeleton header) sizes of those structs, which can differ\nfrom the actual sizes at runtime when libbpf is used as a shared\nlibrary.\n\nWe have a few places were we just index array of maps/progs/vars, which\nimplicitly uses these potentially invalid sizes of structs.\n\nThis patch aims to fix this problem going forward. Once this lands,\nwe\u0027ll backport these changes in Github repo to create patched releases\nfor older libbpfs.\n\nAcked-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nReviewed-by: Alan Maguire \u003calan.maguire@oracle.com\u003e\nFixes: d66562fba1ce (\"libbpf: Add BPF object skeleton support\")\nFixes: 430025e5dca5 (\"libbpf: Add subskeleton scaffolding\")\nFixes: 08ac454e258e (\"libbpf: Auto-attach struct_ops BPF maps in BPF skeleton\")\nCo-developed-by: Mykyta Yatsenko \u003cyatsenko@meta.com\u003e\nSigned-off-by: Mykyta Yatsenko \u003cyatsenko@meta.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240708204540.4188946-3-andrii@kernel.org\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n(cherry picked from commit bf7ddbef99d0c1e597c12b8b64ccd0c4d0c70282)\n"
    },
    {
      "commit": "f8c6e0393d4be665fc0b584266b2a1354a71835e",
      "tree": "1c39d0152e51de96a996dd1000b08c614e657f54",
      "parents": [
        "92f681cf78c4b6ed2c10130c4e58a3ec25bf59d8"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Jun 03 13:51:37 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Jun 03 13:51:37 2024 -0700"
      },
      "message": "libbpf: bump version to v1.4.3\n\nBump patch version to prepare for v1.4.3.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "92f681cf78c4b6ed2c10130c4e58a3ec25bf59d8",
      "tree": "5327b50eb18d8b1be8570c4a7a9843638cad15e7",
      "parents": [
        "1b357586a7a62db7fe27af4ebe4bdefe6986cfd6"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed May 29 15:32:39 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Jun 03 13:46:41 2024 -0700"
      },
      "message": "libbpf: keep FD_CLOEXEC flag when dup()\u0027ing FD\n\nMake sure to preserve and/or enforce FD_CLOEXEC flag on duped FDs.\nUse dup3() with O_CLOEXEC flag for that.\n\nWithout this fix libbpf effectively clears FD_CLOEXEC flag on each of BPF\nmap/prog FD, which is definitely not the right or expected behavior.\n\nReported-by: Lennart Poettering \u003clennart@poettering.net\u003e\nFixes: bc308d011ab8 (\"libbpf: call dup2() syscall directly\")\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Jiri Olsa \u003cjolsa@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240529223239.504241-1-andrii@kernel.org\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n(cherry picked from commit 805b689cd23296da88a1282ae353851c57007f70)\n"
    },
    {
      "commit": "1b357586a7a62db7fe27af4ebe4bdefe6986cfd6",
      "tree": "ab4b8e189798c262f2ea2bd4acd5f36856380185",
      "parents": [
        "17b7d5bfb12a966d2ba6c53b2c5f2b0387202044"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri May 10 13:57:28 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri May 10 13:57:28 2024 -0700"
      },
      "message": "libbpf: bump version to v1.4.2\n\nBump libbpf patch version.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "17b7d5bfb12a966d2ba6c53b2c5f2b0387202044",
      "tree": "2f7701feec191856d1f7c04cfddcadfb8ef973c9",
      "parents": [
        "d61acc8d6edb487de58e05a77b3f08fa8b63b8d5"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon May 06 17:13:33 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri May 10 10:48:44 2024 -0700"
      },
      "message": "libbpf: improve early detection of doomed-to-fail BPF program loading\n\nExtend libbpf\u0027s pre-load checks for BPF programs, detecting more typical\nconditions that are destinated to cause BPF program failure. This is an\nopportunity to provide more helpful and actionable error message to\nusers, instead of potentially very confusing BPF verifier log and/or\nerror.\n\nIn this case, we detect struct_ops BPF program that was not referenced\nanywhere, but still attempted to be loaded (according to libbpf logic).\nSuggest that the program might need to be used in some struct_ops\nvariable. User will get a message of the following kind:\n\n  libbpf: prog \u0027test_1_forgotten\u0027: SEC(\"struct_ops\") program isn\u0027t referenced anywhere, did you forget to use it?\n\nSuggested-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240507001335.1445325-6-andrii@kernel.org\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n(cherry picked from commit e5146eff759a8bdce65c4391e6ba321d3dec0107)\n"
    },
    {
      "commit": "d61acc8d6edb487de58e05a77b3f08fa8b63b8d5",
      "tree": "3d6a38e56efde4ede23b7ea1720435fe38f9322d",
      "parents": [
        "5116e2de5042390aeae7d18e905be1f9d86bc9e7"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon May 06 17:13:32 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri May 10 10:48:44 2024 -0700"
      },
      "message": "libbpf: fix libbpf_strerror_r() handling unknown errors\n\nstrerror_r(), used from libbpf-specific libbpf_strerror_r() wrapper is\ndocumented to return error in two different ways, depending on glibc\nversion. Take that into account when handling strerror_r()\u0027s own errors,\nwhich happens when we pass some non-standard (internal) kernel error to\nit. Before this patch we\u0027d have \"ERROR: strerror_r(524)\u003d22\", which is\nquite confusing. Now for the same situation we\u0027ll see a bit less\nvisually scary \"unknown error (-524)\".\n\nAt least we won\u0027t confuse user with irrelevant EINVAL (22).\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240507001335.1445325-5-andrii@kernel.org\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n(cherry picked from commit ed54f3030703947f741ad81a75bf98d379e37fe2)\n"
    },
    {
      "commit": "5116e2de5042390aeae7d18e905be1f9d86bc9e7",
      "tree": "7aa915cfe386622adce774d6646a2a61b964caa5",
      "parents": [
        "ce411639c4fe8549fea92ce7c75fbb43fe776f5c"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon May 06 17:13:30 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri May 10 10:48:44 2024 -0700"
      },
      "message": "libbpf: handle yet another corner case of nulling out struct_ops program\n\nThere is yet another corner case where user can set STRUCT_OPS program\nreference in STRUCT_OPS map to NULL, but libbpf will fail to disable\nautoload for such BPF program. This time it\u0027s the case of \"new\" kernel\nwhich has type information about callback field, but user explicitly\nnulled-out program reference from user-space after opening BPF object.\n\nFix, hopefully, the last remaining unhandled case.\n\nFixes: 0737df6de946 (\"libbpf: better fix for handling nulled-out struct_ops program\")\nFixes: f973fccd43d3 (\"libbpf: handle nulled-out program in struct_ops correctly\")\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240507001335.1445325-3-andrii@kernel.org\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n(cherry picked from commit fe5fe762b90e33acb8f3528ac3742e6187389188)\n"
    },
    {
      "commit": "ce411639c4fe8549fea92ce7c75fbb43fe776f5c",
      "tree": "5ccb77d9c32ea9a80cdef7bb7de69966ad2597fa",
      "parents": [
        "63738ed87620255b217ec155cfa1448086798748"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon May 06 17:13:29 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri May 10 10:48:44 2024 -0700"
      },
      "message": "libbpf: remove unnecessary struct_ops prog validity check\n\nlibbpf ensures that BPF program references set in map-\u003est_ops-\u003eprogs[i]\nduring open phase are always valid STRUCT_OPS programs. This is done in\nbpf_object__collect_st_ops_relos(). So there is no need to double-check\nthat in bpf_map__init_kern_struct_ops().\n\nSimplify the code by removing unnecessary check. Also, we avoid using\nlocal prog variable to keep code similar to the upcoming fix, which adds\nsimilar logic in another part of bpf_map__init_kern_struct_ops().\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240507001335.1445325-2-andrii@kernel.org\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n(cherry picked from commit 504369cba4b1a9fe3b277c20b1d8d177fec9781a)\n"
    },
    {
      "commit": "63738ed87620255b217ec155cfa1448086798748",
      "tree": "e3db767195fbdcb22ea8080464fb147d67f18595",
      "parents": [
        "28091481f8e7cbbc231d76466acbb2ee0dc7cdac"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed May 01 17:16:13 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed May 01 17:16:13 2024 -0700"
      },
      "message": "libbpf: v1.4.1 bugfix release\n\nBump patch version to prepare for v1.4.1 release.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "28091481f8e7cbbc231d76466acbb2ee0dc7cdac",
      "tree": "e26c3242567f8026b91b55a936014acd53e6c6fa",
      "parents": [
        "95222a56002bee41d9657aa9ab632d6459195219"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue Apr 30 21:17:06 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed May 01 17:14:36 2024 -0700"
      },
      "message": "libbpf: better fix for handling nulled-out struct_ops program\n\nPrevious attempt to fix the handling of nulled-out (from skeleton)\nstruct_ops program is working well only if struct_ops program is defined\nas non-autoloaded by default (i.e., has SEC(\"?struct_ops\") annotation,\nwith question mark).\n\nUnfortunately, that fix is incomplete due to how\nbpf_object_adjust_struct_ops_autoload() is marking referenced or\nnon-referenced struct_ops program as autoloaded (or not). Because\nbpf_object_adjust_struct_ops_autoload() is run after\nbpf_map__init_kern_struct_ops() step, which sets program slot to NULL,\nsuch programs won\u0027t be considered \"referenced\", and so its autoload\nproperty won\u0027t be changed.\n\nThis all sounds convoluted and it is, but the desire is to have as\nnatural behavior (as far as struct_ops usage is concerned) as possible.\n\nThis fix is redoing the original fix but makes it work for\nautoloaded-by-default struct_ops programs as well. We achieve this by\nforcing prog-\u003eautoload to false if prog was declaratively set for some\nstruct_ops map, but then nulled-out from skeleton (programmatically).\nThis achieves desired effect of not autoloading it. If such program is\nstill referenced somewhere else (different struct_ops map or different\ncallback field), it will get its autoload property adjusted by\nbpf_object_adjust_struct_ops_autoload() later.\n\nWe also fix selftest, which accidentally used SEC(\"?struct_ops\")\nannotation. It was meant to use autoload-by-default program from the\nvery beginning.\n\nFixes: f973fccd43d3 (\"libbpf: handle nulled-out program in struct_ops correctly\")\nCc: Kui-Feng Lee \u003cthinker.li@gmail.com\u003e\nCc: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nCc: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240501041706.3712608-1-andrii@kernel.org\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n(cherry picked from commit 6a41f02ad4050c4a32966368de281e63c4d14af3)\n"
    },
    {
      "commit": "95222a56002bee41d9657aa9ab632d6459195219",
      "tree": "5c74a863596660c62474a512b1e7d0c188a83bfb",
      "parents": [
        "20ea95b4505c477af3b6ff6ce9d19cee868ddc5d"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Sat Apr 27 20:09:53 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed May 01 17:14:36 2024 -0700"
      },
      "message": "libbpf: handle nulled-out program in struct_ops correctly\n\nIf struct_ops has one of program callbacks set declaratively and host\nkernel is old and doesn\u0027t support this callback, libbpf will allow to\nload such struct_ops as long as that callback was explicitly nulled-out\n(presumably through skeleton). This is all working correctly, except we\nwon\u0027t reset corresponding program slot to NULL before bailing out, which\nwill lead to libbpf not detecting that BPF program has to be not\nauto-loaded. Fix this by unconditionally resetting corresponding program\nslot to NULL.\n\nFixes: c911fc61a7ce (\"libbpf: Skip zeroed or null fields if not found in the kernel type.\")\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240428030954.3918764-1-andrii@kernel.org\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n(cherry picked from commit f28271ab72e8927eee9232fe5b20df8f4f3518f0)\n"
    },
    {
      "commit": "20ea95b4505c477af3b6ff6ce9d19cee868ddc5d",
      "tree": "a92427e1fb7dacc6b985f41aad6e48295064106f",
      "parents": [
        "902af6913acb2944e1894cf64062f31b1afdec3c"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Mar 25 21:27:07 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "ci: sync DENYLISTs with BPF CI\n\nKeep all the denylisted tests in sync.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "902af6913acb2944e1894cf64062f31b1afdec3c",
      "tree": "228652eb82dc9fc18895ea5ea4da5b593b5a087e",
      "parents": [
        "25a9cc27d7b5d33aaf2d33fbcde5344b53b84e17"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Mar 25 20:29:37 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "ci: clean up temporary patch\n\nIt\u0027s already applied upstream.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "25a9cc27d7b5d33aaf2d33fbcde5344b53b84e17",
      "tree": "7528bea22421b2c14b521660337f5506afe670c9",
      "parents": [
        "8db4a2feeb5d4501665f9658b8bc239f20dfa760"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Mar 25 17:44:41 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "ci: regenerate latest vmlinux.h\n\nUpdate vmlinux.h to make BPF selftests compile.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "8db4a2feeb5d4501665f9658b8bc239f20dfa760",
      "tree": "ca43c2e69aface8dcbcc6fde1e47e5b262511828",
      "parents": [
        "7fee46667650aad71f7d25de66029e08cdb86af8"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Mar 25 15:52:27 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "sync: latest libbpf changes from kernel\n\nSyncing latest libbpf commits from kernel repository.\nBaseline bpf-next commit:   e63985ecd22681c7f5975f2e8637187a326b6791\nCheckpoint bpf-next commit: 14bb1e8c8d4ad5d9d2febb7d19c70a3cf536e1e5\nBaseline bpf commit:        2487007aa3b9fafbd2cb14068f49791ce1d7ede5\nCheckpoint bpf commit:      443574b033876c85a35de4c65c14f7fe092222b2\n\nAlexei Starovoitov (6):\n  libbpf: Allow specifying 64-bit integers in map BTF.\n  bpf: Introduce bpf_arena.\n  bpf: Disasm support for addr_space_cast instruction.\n  libbpf: Add __arg_arena to bpf_helpers.h\n  libbpf: Add support for bpf_arena.\n  libbpf, selftests/bpf: Adjust libbpf, bpftool, selftests to match LLVM\n\nAndrii Nakryiko (4):\n  libbpf: Recognize __arena global variables.\n  bpf: support BPF cookie in raw tracepoint (raw_tp, tp_btf) programs\n  libbpf: add support for BPF cookie for raw_tp/tp_btf programs\n  libbpf: fix u64-to-pointer cast on 32-bit arches\n\nArnaldo Carvalho de Melo (1):\n  libbpf: Define MFD_CLOEXEC if not available\n\nJakub Kicinski (2):\n  netdev: add per-queue statistics\n  netdev: add queue stat for alloc failures\n\nKui-Feng Lee (1):\n  libbpf: Skip zeroed or null fields if not found in the kernel type.\n\nMykyta Yatsenko (1):\n  libbpbpf: Check bpf_map/bpf_program fd validity\n\nQuentin Monnet (1):\n  libbpf: Prevent null-pointer dereference when prog to load has no BTF\n\nYonghong Song (2):\n  libbpf: Add new sec_def \"sk_skb/verdict\"\n  bpf: Sync uapi bpf.h to tools directory\n\n include/uapi/linux/bpf.h    |  20 ++-\n include/uapi/linux/netdev.h |  20 +++\n src/bpf.c                   |  16 +-\n src/bpf.h                   |   9 +\n src/bpf_helpers.h           |   2 +\n src/libbpf.c                | 322 +++++++++++++++++++++++++++++++-----\n src/libbpf.h                |  13 +-\n src/libbpf.map              |   2 +\n src/libbpf_probes.c         |   7 +\n 9 files changed, 366 insertions(+), 45 deletions(-)\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "7fee46667650aad71f7d25de66029e08cdb86af8",
      "tree": "ff9d6630104a60afb319796e6f9014b19b4946e0",
      "parents": [
        "ddf722fb5c61b6a4c61f333b02551ef488e66659"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@kernel.org",
        "time": "Thu Mar 21 13:01:58 2024 -0300"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Define MFD_CLOEXEC if not available\n\nSince its going directly to the syscall to avoid not having\nmemfd_create() available in some systems, do the same for its\nMFD_CLOEXEC flags, defining it if not available.\n\nThis fixes the build in those systems, noticed while building perf on a\nset of build containers.\n\nFixes: 9fa5e1a180aa639f (\"libbpf: Call memfd_create() syscall directly\")\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/ZfxZ9nCyKvwmpKkE@x1\n"
    },
    {
      "commit": "ddf722fb5c61b6a4c61f333b02551ef488e66659",
      "tree": "45bece6aa672f55cf9d7ab9bd283e8512e8e318c",
      "parents": [
        "137193b65577c0e7d4ed32c92c8afd5eb9024a9a"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue Mar 19 14:51:43 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: fix u64-to-pointer cast on 32-bit arches\n\nIt\u0027s been reported that (void *)map-\u003emap_extra is causing compilation\nwarnings on 32-bit architectures. It\u0027s easy enough to fix this by\ncasting to long first.\n\nFixes: 79ff13e99169 (\"libbpf: Add support for bpf_arena.\")\nReported-by: Ryan Eatmon \u003creatmon@ti.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nMessage-ID: \u003c20240319215143.1279312-1-andrii@kernel.org\u003e\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n"
    },
    {
      "commit": "137193b65577c0e7d4ed32c92c8afd5eb9024a9a",
      "tree": "85eee2f6928b42bc1796aba188bca6c014f0edad",
      "parents": [
        "d2676a58de2426d340e8a7b4d8770acfe5bb8c25"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Thu Mar 14 19:18:32 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf, selftests/bpf: Adjust libbpf, bpftool, selftests to match LLVM\n\nThe selftests use\nto tell LLVM about special pointers. For LLVM there is nothing \"arena\"\nabout them. They are simply pointers in a different address space.\nHence LLVM diff https://github.com/llvm/llvm-project/pull/85161 renamed:\n. macro __BPF_FEATURE_ARENA_CAST -\u003e __BPF_FEATURE_ADDR_SPACE_CAST\n. global variables in __attribute__((address_space(N))) are now\n  placed in section named \".addr_space.N\" instead of \".arena.N\".\n\nAdjust libbpf, bpftool, and selftests to match LLVM.\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Stanislav Fomichev \u003csdf@google.com\u003e\nLink: https://lore.kernel.org/bpf/20240315021834.62988-3-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "d2676a58de2426d340e8a7b4d8770acfe5bb8c25",
      "tree": "1e93de3aaf7b05fe242b2d8f59e464c42dc5d776",
      "parents": [
        "4d95d8b7f0bfd34e2a04d87a5b1a84ab3eec9912"
      ],
      "author": {
        "name": "Yonghong Song",
        "email": "yonghong.song@linux.dev",
        "time": "Sun Mar 24 20:38:42 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "bpf: Sync uapi bpf.h to tools directory\n\nThere is a difference between kernel uapi bpf.h and tools\nuapi bpf.h. There is no functionality difference, but let\nus sync properly to make it easy for later bpf.h update.\n\nSigned-off-by: Yonghong Song \u003cyonghong.song@linux.dev\u003e\nSigned-off-by: Daniel Borkmann \u003cdaniel@iogearbox.net\u003e\nLink: https://lore.kernel.org/bpf/20240325033842.1693553-1-yonghong.song@linux.dev\n"
    },
    {
      "commit": "4d95d8b7f0bfd34e2a04d87a5b1a84ab3eec9912",
      "tree": "6794492d208a65cb870739643fbbce8dec70f706",
      "parents": [
        "f5828cc3520f12ceed531b11a551bafb65b36379"
      ],
      "author": {
        "name": "Yonghong Song",
        "email": "yonghong.song@linux.dev",
        "time": "Tue Mar 19 10:54:12 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Add new sec_def \"sk_skb/verdict\"\n\nThe new sec_def specifies sk_skb program type with\nBPF_SK_SKB_VERDICT attachment type. This way, libbpf\nwill set expected_attach_type properly for the program.\n\nSigned-off-by: Yonghong Song \u003cyonghong.song@linux.dev\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240319175412.2941149-1-yonghong.song@linux.dev\n"
    },
    {
      "commit": "f5828cc3520f12ceed531b11a551bafb65b36379",
      "tree": "f6cd96e824f8df4d8d43c00e8a18d0df8d025f8d",
      "parents": [
        "cbd6e3596cfaa5022538c3a0c93e54c8489773cb"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue Mar 19 16:38:51 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: add support for BPF cookie for raw_tp/tp_btf programs\n\nWire up BPF cookie passing or raw_tp and tp_btf programs, both in\nlow-level and high-level APIs.\n\nAcked-by: Stanislav Fomichev \u003csdf@google.com\u003e\nAcked-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nMessage-ID: \u003c20240319233852.1977493-5-andrii@kernel.org\u003e\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n"
    },
    {
      "commit": "cbd6e3596cfaa5022538c3a0c93e54c8489773cb",
      "tree": "d7568006de19a78088c42be48a2eacb7b11cff01",
      "parents": [
        "7cfc3659953cae15b0292e279e570d597685c1b5"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue Mar 19 16:38:50 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "bpf: support BPF cookie in raw tracepoint (raw_tp, tp_btf) programs\n\nWire up BPF cookie for raw tracepoint programs (both BTF and non-BTF\naware variants). This brings them up to part w.r.t. BPF cookie usage\nwith classic tracepoint and fentry/fexit programs.\n\nAcked-by: Stanislav Fomichev \u003csdf@google.com\u003e\nAcked-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nMessage-ID: \u003c20240319233852.1977493-4-andrii@kernel.org\u003e\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n"
    },
    {
      "commit": "7cfc3659953cae15b0292e279e570d597685c1b5",
      "tree": "e13c7539c9e8fbd509ed762c8f20b56d4b3ec0b5",
      "parents": [
        "a5459eac49ff4681247528a4cc9afa854b0c3527"
      ],
      "author": {
        "name": "Mykyta Yatsenko",
        "email": "yatsenko@meta.com",
        "time": "Mon Mar 18 13:18:08 2024 +0000"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpbpf: Check bpf_map/bpf_program fd validity\n\nlibbpf creates bpf_program/bpf_map structs for each program/map that\nuser defines, but it allows to disable creating/loading those objects in\nkernel, in that case they won\u0027t have associated file descriptor\n(fd \u003c 0). Such functionality is used for backward compatibility\nwith some older kernels.\n\nNothing prevents users from passing these maps or programs with no\nkernel counterpart to libbpf APIs. This change introduces explicit\nchecks for kernel objects existence, aiming to improve visibility of\nthose edge cases and provide meaningful warnings to users.\n\nSigned-off-by: Mykyta Yatsenko \u003cyatsenko@meta.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240318131808.95959-1-yatsenko@meta.com\n"
    },
    {
      "commit": "a5459eac49ff4681247528a4cc9afa854b0c3527",
      "tree": "b88dbbdc1bbda6aef1418df51e0823542faaba09",
      "parents": [
        "f84ee80801010f16458d825237f10d8bb1608473"
      ],
      "author": {
        "name": "Kui-Feng Lee",
        "email": "thinker.li@gmail.com",
        "time": "Wed Mar 13 14:41:37 2024 -0700"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Skip zeroed or null fields if not found in the kernel type.\n\nAccept additional fields of a struct_ops type with all zero values even if\nthese fields are not in the corresponding type in the kernel. This provides\na way to be backward compatible. User space programs can use the same map\non a machine running an old kernel by clearing fields that do not exist in\nthe kernel.\n\nSigned-off-by: Kui-Feng Lee \u003cthinker.li@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240313214139.685112-2-thinker.li@gmail.com\n"
    },
    {
      "commit": "f84ee80801010f16458d825237f10d8bb1608473",
      "tree": "8125b10ef4dde7f6f433094b7e2f2e8ab2280fc0",
      "parents": [
        "2d042d22a73c71bd970d8c34ee65ed19caadeea1"
      ],
      "author": {
        "name": "Quentin Monnet",
        "email": "qmo@kernel.org",
        "time": "Thu Mar 14 15:04:38 2024 +0000"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Prevent null-pointer dereference when prog to load has no BTF\n\nIn bpf_objec_load_prog(), there\u0027s no guarantee that obj-\u003ebtf is non-NULL\nwhen passing it to btf__fd(), and this function does not perform any\ncheck before dereferencing its argument (as bpf_object__btf_fd() used to\ndo). As a consequence, we get segmentation fault errors in bpftool (for\nexample) when trying to load programs that come without BTF information.\n\nv2: Keep btf__fd() in the fix instead of reverting to bpf_object__btf_fd().\n\nFixes: df7c3f7d3a3d (\"libbpf: make uniform use of btf__fd() accessor inside libbpf\")\nSuggested-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nSigned-off-by: Quentin Monnet \u003cqmo@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240314150438.232462-1-qmo@kernel.org\n"
    },
    {
      "commit": "2d042d22a73c71bd970d8c34ee65ed19caadeea1",
      "tree": "298b2d5929245ebe662beb6e48d0557b4ab7962a",
      "parents": [
        "4524a45a2aa05e8347709208e484b36eeae6c9e7"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Mar 07 17:08:08 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Recognize __arena global variables.\n\nLLVM automatically places __arena variables into \".arena.1\" ELF section.\nIn order to use such global variables bpf program must include definition\nof arena map in \".maps\" section, like:\nstruct {\n       __uint(type, BPF_MAP_TYPE_ARENA);\n       __uint(map_flags, BPF_F_MMAPABLE);\n       __uint(max_entries, 1000);         /* number of pages */\n       __ulong(map_extra, 2ull \u003c\u003c 44);    /* start of mmap() region */\n} arena SEC(\".maps\");\n\nlibbpf recognizes both uses of arena and creates single `struct bpf_map *`\ninstance in libbpf APIs.\n\".arena.1\" ELF section data is used as initial data image, which is exposed\nthrough skeleton and bpf_map__initial_value() to the user, if they need to tune\nit before the load phase. During load phase, this initial image is copied over\ninto mmap()\u0027ed region corresponding to arena, and discarded.\n\nFew small checks here and there had to be added to make sure this\napproach works with bpf_map__initial_value(), mostly due to hard-coded\nassumption that map-\u003emmaped is set up with mmap() syscall and should be\nmunmap()\u0027ed. For arena, .arena.1 can be (much) smaller than maximum\narena size, so this smaller data size has to be tracked separately.\nGiven it is enforced that there is only one arena for entire bpf_object\ninstance, we just keep it in a separate field. This can be generalized\nif necessary later.\n\nAll global variables from \".arena.1\" section are accessible from user space\nvia skel-\u003earena-\u003ename_of_var.\n\nFor bss/data/rodata the skeleton/libbpf perform the following sequence:\n1. addr \u003d mmap(MAP_ANONYMOUS)\n2. user space optionally modifies global vars\n3. map_fd \u003d bpf_create_map()\n4. bpf_update_map_elem(map_fd, addr) // to store values into the kernel\n5. mmap(addr, MAP_FIXED, map_fd)\nafter step 5 user spaces see the values it wrote at step 2 at the same addresses\n\narena doesn\u0027t support update_map_elem. Hence skeleton/libbpf do:\n1. addr \u003d malloc(sizeof SEC \".arena.1\")\n2. user space optionally modifies global vars\n3. map_fd \u003d bpf_create_map(MAP_TYPE_ARENA)\n4. real_addr \u003d mmap(map-\u003emap_extra, MAP_SHARED | MAP_FIXED, map_fd)\n5. memcpy(real_addr, addr) // this will fault-in and allocate pages\n\nAt the end look and feel of global data vs __arena global data is the same from\nbpf prog pov.\n\nAnother complication is:\nstruct {\n  __uint(type, BPF_MAP_TYPE_ARENA);\n} arena SEC(\".maps\");\n\nint __arena foo;\nint bar;\n\n  ptr1 \u003d \u0026foo;   // relocation against \".arena.1\" section\n  ptr2 \u003d \u0026arena; // relocation against \".maps\" section\n  ptr3 \u003d \u0026bar;   // relocation against \".bss\" section\n\nFo the kernel ptr1 and ptr2 has point to the same arena\u0027s map_fd\nwhile ptr3 points to a different global array\u0027s map_fd.\nFor the verifier:\nptr1-\u003etype \u003d\u003d unknown_scalar\nptr2-\u003etype \u003d\u003d const_ptr_to_map\nptr3-\u003etype \u003d\u003d ptr_to_map_value\n\nAfter verification, from JIT pov all 3 ptr-s are normal ld_imm64 insns.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Quentin Monnet \u003cquentin@isovalent.com\u003e\nLink: https://lore.kernel.org/bpf/20240308010812.89848-11-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "4524a45a2aa05e8347709208e484b36eeae6c9e7",
      "tree": "7c56acaba9fd83833f2258bb74c3065558e645fc",
      "parents": [
        "086825355faaa47089fd182031b941e217a60c27"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Thu Mar 07 17:08:06 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Add support for bpf_arena.\n\nmmap() bpf_arena right after creation, since the kernel needs to\nremember the address returned from mmap. This is user_vm_start.\nLLVM will generate bpf_arena_cast_user() instructions where\nnecessary and JIT will add upper 32-bit of user_vm_start\nto such pointers.\n\nFix up bpf_map_mmap_sz() to compute mmap size as\nmap-\u003evalue_size * map-\u003emax_entries for arrays and\nPAGE_SIZE * map-\u003emax_entries for arena.\n\nDon\u0027t set BTF at arena creation time, since it doesn\u0027t support it.\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240308010812.89848-9-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "086825355faaa47089fd182031b941e217a60c27",
      "tree": "51a423da4b2df2e8bf5ce2ba29e4b6c6287417ac",
      "parents": [
        "6de941bc1eb1934a6b0f00d318b8402d427ff574"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Thu Mar 07 17:08:05 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Add __arg_arena to bpf_helpers.h\n\nAdd __arg_arena to bpf_helpers.h\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Kumar Kartikeya Dwivedi \u003cmemxor@gmail.com\u003e\nAcked-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240308010812.89848-8-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "6de941bc1eb1934a6b0f00d318b8402d427ff574",
      "tree": "c68bc8ccb7665ae81ba1f9a5f33985c2561581b4",
      "parents": [
        "1675c13fae40a79740798d2c78489663e9efbb26"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Thu Mar 07 17:08:00 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "bpf: Disasm support for addr_space_cast instruction.\n\nLLVM generates rX \u003d addr_space_cast(rY, dst_addr_space, src_addr_space)\ninstruction when pointers in non-zero address space are used by the bpf\nprogram. Recognize this insn in uapi and in bpf disassembler.\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Kumar Kartikeya Dwivedi \u003cmemxor@gmail.com\u003e\nLink: https://lore.kernel.org/bpf/20240308010812.89848-3-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "1675c13fae40a79740798d2c78489663e9efbb26",
      "tree": "3cf8c7fb7c6c1b3ef839d3c0bcb69238534334fc",
      "parents": [
        "385d344839d9c25d4d7ff861b9ad8636ceeb0b95"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Thu Mar 07 17:07:59 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "bpf: Introduce bpf_arena.\n\nIntroduce bpf_arena, which is a sparse shared memory region between the bpf\nprogram and user space.\n\nUse cases:\n1. User space mmap-s bpf_arena and uses it as a traditional mmap-ed\n   anonymous region, like memcached or any key/value storage. The bpf\n   program implements an in-kernel accelerator. XDP prog can search for\n   a key in bpf_arena and return a value without going to user space.\n2. The bpf program builds arbitrary data structures in bpf_arena (hash\n   tables, rb-trees, sparse arrays), while user space consumes it.\n3. bpf_arena is a \"heap\" of memory from the bpf program\u0027s point of view.\n   The user space may mmap it, but bpf program will not convert pointers\n   to user base at run-time to improve bpf program speed.\n\nInitially, the kernel vm_area and user vma are not populated. User space\ncan fault in pages within the range. While servicing a page fault,\nbpf_arena logic will insert a new page into the kernel and user vmas. The\nbpf program can allocate pages from that region via\nbpf_arena_alloc_pages(). This kernel function will insert pages into the\nkernel vm_area. The subsequent fault-in from user space will populate that\npage into the user vma. The BPF_F_SEGV_ON_FAULT flag at arena creation time\ncan be used to prevent fault-in from user space. In such a case, if a page\nis not allocated by the bpf program and not present in the kernel vm_area,\nthe user process will segfault. This is useful for use cases 2 and 3 above.\n\nbpf_arena_alloc_pages() is similar to user space mmap(). It allocates pages\neither at a specific address within the arena or allocates a range with the\nmaple tree. bpf_arena_free_pages() is analogous to munmap(), which frees\npages and removes the range from the kernel vm_area and from user process\nvmas.\n\nbpf_arena can be used as a bpf program \"heap\" of up to 4GB. The speed of\nbpf program is more important than ease of sharing with user space. This is\nuse case 3. In such a case, the BPF_F_NO_USER_CONV flag is recommended.\nIt will tell the verifier to treat the rX \u003d bpf_arena_cast_user(rY)\ninstruction as a 32-bit move wX \u003d wY, which will improve bpf prog\nperformance. Otherwise, bpf_arena_cast_user is translated by JIT to\nconditionally add the upper 32 bits of user vm_start (if the pointer is not\nNULL) to arena pointers before they are stored into memory. This way, user\nspace sees them as valid 64-bit pointers.\n\nDiff https://github.com/llvm/llvm-project/pull/84410 enables LLVM BPF\nbackend generate the bpf_addr_space_cast() instruction to cast pointers\nbetween address_space(1) which is reserved for bpf_arena pointers and\ndefault address space zero. All arena pointers in a bpf program written in\nC language are tagged as __attribute__((address_space(1))). Hence, clang\nprovides helpful diagnostics when pointers cross address space. Libbpf and\nthe kernel support only address_space \u003d\u003d 1. All other address space\nidentifiers are reserved.\n\nrX \u003d bpf_addr_space_cast(rY, /* dst_as */ 1, /* src_as */ 0) tells the\nverifier that rX-\u003etype \u003d PTR_TO_ARENA. Any further operations on\nPTR_TO_ARENA register have to be in the 32-bit domain. The verifier will\nmark load/store through PTR_TO_ARENA with PROBE_MEM32. JIT will generate\nthem as kern_vm_start + 32bit_addr memory accesses. The behavior is similar\nto copy_from_kernel_nofault() except that no address checks are necessary.\nThe address is guaranteed to be in the 4GB range. If the page is not\npresent, the destination register is zeroed on read, and the operation is\nignored on write.\n\nrX \u003d bpf_addr_space_cast(rY, 0, 1) tells the verifier that rX-\u003etype \u003d\nunknown scalar. If arena-\u003emap_flags has BPF_F_NO_USER_CONV set, then the\nverifier converts such cast instructions to mov32. Otherwise, JIT will emit\nnative code equivalent to:\nrX \u003d (u32)rY;\nif (rY)\n  rX |\u003d clear_lo32_bits(arena-\u003euser_vm_start); /* replace hi32 bits in rX */\n\nAfter such conversion, the pointer becomes a valid user pointer within\nbpf_arena range. The user process can access data structures created in\nbpf_arena without any additional computations. For example, a linked list\nbuilt by a bpf program can be walked natively by user space.\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nReviewed-by: Barret Rhoden \u003cbrho@google.com\u003e\nLink: https://lore.kernel.org/bpf/20240308010812.89848-2-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "385d344839d9c25d4d7ff861b9ad8636ceeb0b95",
      "tree": "dff51bd8ec6e03293dec430215f3ac9df684b475",
      "parents": [
        "d71c0ed2ef49514df395d914ab7706da6553fb0b"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Wed Mar 06 19:12:26 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "libbpf: Allow specifying 64-bit integers in map BTF.\n\n__uint() macro that is used to specify map attributes like:\n  __uint(type, BPF_MAP_TYPE_ARRAY);\n  __uint(map_flags, BPF_F_MMAPABLE);\nIt is limited to 32-bit, since BTF_KIND_ARRAY has u32 \"number of elements\"\nfield in \"struct btf_array\".\n\nIntroduce __ulong() macro that allows specifying values bigger than 32-bit.\nIn map definition \"map_extra\" is the only u64 field, so far.\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240307031228.42896-5-alexei.starovoitov@gmail.com\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n"
    },
    {
      "commit": "d71c0ed2ef49514df395d914ab7706da6553fb0b",
      "tree": "3b6edb6747eac6b74e606b499dd43b6289045aaf",
      "parents": [
        "5e80833e509e10118ce69ddd36c6d13e4efe6909"
      ],
      "author": {
        "name": "Jakub Kicinski",
        "email": "kuba@kernel.org",
        "time": "Wed Mar 06 11:55:08 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "netdev: add queue stat for alloc failures\n\nRx alloc failures are commonly counted by drivers.\nSupport reporting those via netdev-genl queue stats.\n\nAcked-by: Stanislav Fomichev \u003csdf@google.com\u003e\nReviewed-by: Amritha Nambiar \u003camritha.nambiar@intel.com\u003e\nReviewed-by: Xuan Zhuo \u003cxuanzhuo@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20240306195509.1502746-3-kuba@kernel.org\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n"
    },
    {
      "commit": "5e80833e509e10118ce69ddd36c6d13e4efe6909",
      "tree": "7d8666418b512ffa8c01dfdfa9817c3b9b7d532c",
      "parents": [
        "2778cbce609aa1e2747a69349f7f46a2f94f0522"
      ],
      "author": {
        "name": "Jakub Kicinski",
        "email": "kuba@kernel.org",
        "time": "Wed Mar 06 11:55:07 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Mon Mar 25 21:58:26 2024 -0700"
      },
      "message": "netdev: add per-queue statistics\n\nThe ethtool-nl family does a good job exposing various protocol\nrelated and IEEE/IETF statistics which used to get dumped under\nethtool -S, with creative names. Queue stats don\u0027t have a netlink\nAPI, yet, and remain a lion\u0027s share of ethtool -S output for new\ndrivers. Not only is that bad because the names differ driver to\ndriver but it\u0027s also bug-prone. Intuitively drivers try to report\nonly the stats for active queues, but querying ethtool stats\ninvolves multiple system calls, and the number of stats is\nread separately from the stats themselves. Worse still when user\nspace asks for values of the stats, it doesn\u0027t inform the kernel\nhow big the buffer is. If number of stats increases in the meantime\nkernel will overflow user buffer.\n\nAdd a netlink API for dumping queue stats. Queue information is\nexposed via the netdev-genl family, so add the stats there.\nSupport per-queue and sum-for-device dumps. Latter will be useful\nwhen subsequent patches add more interesting common stats than\njust bytes and packets.\n\nThe API does not currently distinguish between HW and SW stats.\nThe expectation is that the source of the stats will either not\nmatter much (good packets) or be obvious (skb alloc errors).\n\nAcked-by: Stanislav Fomichev \u003csdf@google.com\u003e\nReviewed-by: Amritha Nambiar \u003camritha.nambiar@intel.com\u003e\nReviewed-by: Xuan Zhuo \u003cxuanzhuo@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20240306195509.1502746-2-kuba@kernel.org\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n"
    },
    {
      "commit": "2778cbce609aa1e2747a69349f7f46a2f94f0522",
      "tree": "5c1e9a81c271fe5d557b3d87582a35b98a035fee",
      "parents": [
        "4f875865b772c4f534bc0a665bbd988193825bd4"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Mar 06 13:57:05 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Mar 06 15:22:13 2024 -0800"
      },
      "message": "ci: add xdp_bonding fixes from bpf/master\n\nbpf tree has fixes for xdp_bonding selftests which are not yet in\nbpf-next, so add them as temporary CI-only patches.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "4f875865b772c4f534bc0a665bbd988193825bd4",
      "tree": "fe69017f1df98ed372cfd08a9b0ea9bb772557b1",
      "parents": [
        "438adf417d827377cefed97e505e191ac0351cc2"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Mar 06 11:44:53 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Wed Mar 06 15:22:13 2024 -0800"
      },
      "message": "sync: latest libbpf changes from kernel\n\nSyncing latest libbpf commits from kernel repository.\nBaseline bpf-next commit:   2ab256e93249f5ac1da665861aa0f03fb4208d9c\nCheckpoint bpf-next commit: 7d763bc4a44a51e48dde406d6c6c8a26a60ec647\nBaseline bpf commit:        dced881ead78e4d6add3735d02a9186ba2415630\nCheckpoint bpf commit:      2487007aa3b9fafbd2cb14068f49791ce1d7ede5\n\nAahil Awatramani (1):\n  bonding: Add independent control state machine\n\nAlexei Starovoitov (1):\n  bpf: Introduce may_goto instruction\n\nChen Shen (1):\n  libbpf: Correct debug message in btf__load_vmlinux_btf\n\nEduard Zingerman (7):\n  libbpf: Allow version suffixes (___smth) for struct_ops types\n  libbpf: Tie struct_ops programs to kernel BTF ids, not to local ids\n  libbpf: Honor autocreate flag for struct_ops maps\n  libbpf: Sync progs autoload with maps autocreate for struct_ops maps\n  libbpf: Replace elf_state-\u003est_ops_* fields with SEC_ST_OPS sec_type\n  libbpf: Struct_ops in SEC(\"?.struct_ops\") / SEC(\"?.struct_ops.link\")\n  libbpf: Rewrite btf datasec names starting from \u0027?\u0027\n\nKees Cook (1):\n  bpf: Replace bpf_lpm_trie_key 0-length array with flexible array\n\nKui-Feng Lee (2):\n  libbpf: Set btf_value_type_id of struct bpf_map for struct_ops.\n  libbpf: Convert st_ops-\u003edata to shadow type.\n\n include/uapi/linux/bpf.h     |  24 +++-\n include/uapi/linux/if_link.h |   1 +\n src/btf.c                    |   2 +-\n src/features.c               |  22 +++\n src/libbpf.c                 | 252 +++++++++++++++++++++++++++--------\n src/libbpf_internal.h        |   2 +\n 6 files changed, 242 insertions(+), 61 deletions(-)\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "438adf417d827377cefed97e505e191ac0351cc2",
      "tree": "2bff361d70d440c1b0108d57219508759677b703",
      "parents": [
        "fc8b86bda217f3f87f7dafb389488f62e366eebc"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:26 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Rewrite btf datasec names starting from \u0027?\u0027\n\nOptional struct_ops maps are defined using question mark at the start\nof the section name, e.g.:\n\n    SEC(\"?.struct_ops\")\n    struct test_ops optional_map \u003d { ... };\n\nThis commit teaches libbpf to detect if kernel allows \u0027?\u0027 prefix\nin datasec names, and if it doesn\u0027t then to rewrite such names\nby replacing \u0027?\u0027 with \u0027_\u0027, e.g.:\n\n    DATASEC ?.struct_ops -\u003e DATASEC _.struct_ops\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-13-eddyz87@gmail.com\n"
    },
    {
      "commit": "fc8b86bda217f3f87f7dafb389488f62e366eebc",
      "tree": "48358c2fab4e78a5a280a5364046cad60141e255",
      "parents": [
        "d5d0b6e920065fe8189445735efe33ebf941fc56"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:25 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Struct_ops in SEC(\"?.struct_ops\") / SEC(\"?.struct_ops.link\")\n\nAllow using two new section names for struct_ops maps:\n- SEC(\"?.struct_ops\")\n- SEC(\"?.struct_ops.link\")\n\nTo specify maps that have bpf_map-\u003eautocreate \u003d\u003d false after open.\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-12-eddyz87@gmail.com\n"
    },
    {
      "commit": "d5d0b6e920065fe8189445735efe33ebf941fc56",
      "tree": "8df2b6dcbaaba89257dceb85297ceb7cf4ecd018",
      "parents": [
        "060c604db8c640f42fc84d4286356a67c969f731"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:24 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Replace elf_state-\u003est_ops_* fields with SEC_ST_OPS sec_type\n\nThe next patch would add two new section names for struct_ops maps.\nTo make working with multiple struct_ops sections more convenient:\n- remove fields like elf_state-\u003est_ops_{shndx,link_shndx};\n- mark section descriptions hosting struct_ops as\n  elf_sec_desc-\u003esec_type \u003d\u003d SEC_ST_OPS;\n\nAfter these changes struct_ops sections could be processed uniformly\nby iterating bpf_object-\u003eefile.secs entries.\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-11-eddyz87@gmail.com\n"
    },
    {
      "commit": "060c604db8c640f42fc84d4286356a67c969f731",
      "tree": "6018cd998709b68b6817c2f39b24bd0686048fff",
      "parents": [
        "cb426140d093f09dbdedd01bb5415eba881a56fa"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:22 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Sync progs autoload with maps autocreate for struct_ops maps\n\nAutomatically select which struct_ops programs to load depending on\nwhich struct_ops maps are selected for automatic creation.\nE.g. for the BPF code below:\n\n    SEC(\"struct_ops/test_1\") int BPF_PROG(foo) { ... }\n    SEC(\"struct_ops/test_2\") int BPF_PROG(bar) { ... }\n\n    SEC(\".struct_ops.link\")\n    struct test_ops___v1 A \u003d {\n        .foo \u003d (void *)foo\n    };\n\n    SEC(\".struct_ops.link\")\n    struct test_ops___v2 B \u003d {\n        .foo \u003d (void *)foo,\n        .bar \u003d (void *)bar,\n    };\n\nAnd the following libbpf API calls:\n\n    bpf_map__set_autocreate(skel-\u003emaps.A, true);\n    bpf_map__set_autocreate(skel-\u003emaps.B, false);\n\nThe autoload would be enabled for program \u0027foo\u0027 and disabled for\nprogram \u0027bar\u0027.\n\nDuring load, for each struct_ops program P, referenced from some\nstruct_ops map M:\n- set P.autoload \u003d true if M.autocreate is true for some M;\n- set P.autoload \u003d false if M.autocreate is false for all M;\n- don\u0027t change P.autoload, if P is not referenced from any map.\n\nDo this after bpf_object__init_kern_struct_ops_maps()\nto make sure that shadow vars assignment is done.\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-9-eddyz87@gmail.com\n"
    },
    {
      "commit": "cb426140d093f09dbdedd01bb5415eba881a56fa",
      "tree": "5e9d19222420e3a78f98344bb7a0c3171ad2c886",
      "parents": [
        "aded62b12057981028d79d5e8b66a98e2a7b4066"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:17 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Honor autocreate flag for struct_ops maps\n\nSkip load steps for struct_ops maps not marked for automatic creation.\nThis should allow to load bpf object in situations like below:\n\n    SEC(\"struct_ops/foo\") int BPF_PROG(foo) { ... }\n    SEC(\"struct_ops/bar\") int BPF_PROG(bar) { ... }\n\n    struct test_ops___v1 {\n    \tint (*foo)(void);\n    };\n\n    struct test_ops___v2 {\n    \tint (*foo)(void);\n    \tint (*does_not_exist)(void);\n    };\n\n    SEC(\".struct_ops.link\")\n    struct test_ops___v1 map_for_old \u003d {\n    \t.test_1 \u003d (void *)foo\n    };\n\n    SEC(\".struct_ops.link\")\n    struct test_ops___v2 map_for_new \u003d {\n    \t.test_1 \u003d (void *)foo,\n    \t.does_not_exist \u003d (void *)bar\n    };\n\nSuppose program is loaded on old kernel that does not have definition\nfor \u0027does_not_exist\u0027 struct_ops member. After this commit it would be\npossible to load such object file after the following tweaks:\n\n    bpf_program__set_autoload(skel-\u003eprogs.bar, false);\n    bpf_map__set_autocreate(skel-\u003emaps.map_for_new, false);\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: David Vernet \u003cvoid@manifault.com\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-4-eddyz87@gmail.com\n"
    },
    {
      "commit": "aded62b12057981028d79d5e8b66a98e2a7b4066",
      "tree": "e86185c726f80e1ae29773de827333bb06309cb3",
      "parents": [
        "f7fd5dbc07e4a7c3a50fd014332f5c4a5b5eccd1"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:16 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Tie struct_ops programs to kernel BTF ids, not to local ids\n\nEnforce the following existing limitation on struct_ops programs based\non kernel BTF id instead of program-local BTF id:\n\n    struct_ops BPF prog can be re-used between multiple .struct_ops \u0026\n    .struct_ops.link as long as it\u0027s the same struct_ops struct\n    definition and the same function pointer field\n\nThis allows reusing same BPF program for versioned struct_ops map\ndefinitions, e.g.:\n\n    SEC(\"struct_ops/test\")\n    int BPF_PROG(foo) { ... }\n\n    struct some_ops___v1 { int (*test)(void); };\n    struct some_ops___v2 { int (*test)(void); };\n\n    SEC(\".struct_ops.link\") struct some_ops___v1 a \u003d { .test \u003d foo }\n    SEC(\".struct_ops.link\") struct some_ops___v2 b \u003d { .test \u003d foo }\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-3-eddyz87@gmail.com\n"
    },
    {
      "commit": "f7fd5dbc07e4a7c3a50fd014332f5c4a5b5eccd1",
      "tree": "8a905506c5de86b877963d72284dc4474fca827c",
      "parents": [
        "00b08dceeafd9ce93d2b891656ed11d711859246"
      ],
      "author": {
        "name": "Eduard Zingerman",
        "email": "eddyz87@gmail.com",
        "time": "Wed Mar 06 12:45:15 2024 +0200"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Allow version suffixes (___smth) for struct_ops types\n\nE.g. allow the following struct_ops definitions:\n\n    struct bpf_testmod_ops___v1 { int (*test)(void); };\n    struct bpf_testmod_ops___v2 { int (*test)(void); };\n\n    SEC(\".struct_ops.link\")\n    struct bpf_testmod_ops___v1 a \u003d { .test \u003d ... }\n    SEC(\".struct_ops.link\")\n    struct bpf_testmod_ops___v2 b \u003d { .test \u003d ... }\n\nWhere both bpf_testmod_ops__v1 and bpf_testmod_ops__v2 would be\nresolved as \u0027struct bpf_testmod_ops\u0027 from kernel BTF.\n\nSigned-off-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: David Vernet \u003cvoid@manifault.com\u003e\nAcked-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240306104529.6453-2-eddyz87@gmail.com\n"
    },
    {
      "commit": "00b08dceeafd9ce93d2b891656ed11d711859246",
      "tree": "4590ead1a52842be121b2d3e60a958d1536794c9",
      "parents": [
        "bf52494e2bc00cc76ce29f21ff671c64302a9b44"
      ],
      "author": {
        "name": "Alexei Starovoitov",
        "email": "ast@kernel.org",
        "time": "Tue Mar 05 19:19:26 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "bpf: Introduce may_goto instruction\n\nIntroduce may_goto instruction that from the verifier pov is similar to\nopen coded iterators bpf_for()/bpf_repeat() and bpf_loop() helper, but it\ndoesn\u0027t iterate any objects.\nIn assembly \u0027may_goto\u0027 is a nop most of the time until bpf runtime has to\nterminate the program for whatever reason. In the current implementation\nmay_goto has a hidden counter, but other mechanisms can be used.\nFor programs written in C the later patch introduces \u0027cond_break\u0027 macro\nthat combines \u0027may_goto\u0027 with \u0027break\u0027 statement and has similar semantics:\ncond_break is a nop until bpf runtime has to break out of this loop.\nIt can be used in any normal \"for\" or \"while\" loop, like\n\n  for (i \u003d zero; i \u003c cnt; cond_break, i++) {\n\nThe verifier recognizes that may_goto is used in the program, reserves\nadditional 8 bytes of stack, initializes them in subprog prologue, and\nreplaces may_goto instruction with:\naux_reg \u003d *(u64 *)(fp - 40)\nif aux_reg \u003d\u003d 0 goto pc+off\naux_reg -\u003d 1\n*(u64 *)(fp - 40) \u003d aux_reg\n\nmay_goto instruction can be used by LLVM to implement __builtin_memcpy,\n__builtin_strcmp.\n\nmay_goto is not a full substitute for bpf_for() macro.\nbpf_for() doesn\u0027t have induction variable that verifiers sees,\nso \u0027i\u0027 in bpf_for(i, 0, 100) is seen as imprecise and bounded.\n\nBut when the code is written as:\nfor (i \u003d 0; i \u003c 100; cond_break, i++)\nthe verifier see \u0027i\u0027 as precise constant zero,\nhence cond_break (aka may_goto) doesn\u0027t help to converge the loop.\nA static or global variable can be used as a workaround:\nstatic int zero \u003d 0;\nfor (i \u003d zero; i \u003c 100; cond_break, i++) // works!\n\nmay_goto works well with arena pointers that don\u0027t need to be bounds\nchecked on access. Load/store from arena returns imprecise unbounded\nscalar and loops with may_goto pass the verifier.\n\nReserve new opcode BPF_JMP | BPF_JCOND for may_goto insn.\nJCOND stands for conditional pseudo jump.\nSince goto_or_nop insn was proposed, it may use the same opcode.\nmay_goto vs goto_or_nop can be distinguished by src_reg:\ncode \u003d BPF_JMP | BPF_JCOND\nsrc_reg \u003d 0 - may_goto\nsrc_reg \u003d 1 - goto_or_nop\n\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nLink: https://lore.kernel.org/bpf/20240306031929.42666-2-alexei.starovoitov@gmail.com\n"
    },
    {
      "commit": "bf52494e2bc00cc76ce29f21ff671c64302a9b44",
      "tree": "ded998c362138ce1c3a8f0d729b7478ec2d599af",
      "parents": [
        "acfaeffeaa812c2612e17533b31469d7fa0fe180"
      ],
      "author": {
        "name": "Chen Shen",
        "email": "peterchenshen@gmail.com",
        "time": "Sat Mar 02 14:22:18 2024 +0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Correct debug message in btf__load_vmlinux_btf\n\nIn the function btf__load_vmlinux_btf, the debug message incorrectly\nrefers to \u0027path\u0027 instead of \u0027sysfs_btf_path\u0027.\n\nSigned-off-by: Chen Shen \u003cpeterchenshen@gmail.com\u003e\nSigned-off-by: Daniel Borkmann \u003cdaniel@iogearbox.net\u003e\nAcked-by: Yonghong Song \u003cyonghong.song@linux.dev\u003e\nLink: https://lore.kernel.org/bpf/20240302062218.3587-1-peterchenshen@gmail.com\n"
    },
    {
      "commit": "acfaeffeaa812c2612e17533b31469d7fa0fe180",
      "tree": "ce8a87e6196e7229ab0b06f3bf1586348cb8b7cf",
      "parents": [
        "0758d8b0f2bac6082393ae95f769970af24f267b"
      ],
      "author": {
        "name": "Kui-Feng Lee",
        "email": "thinker.li@gmail.com",
        "time": "Wed Feb 28 22:45:20 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Convert st_ops-\u003edata to shadow type.\n\nConvert st_ops-\u003edata to the shadow type of the struct_ops map. The shadow\ntype of a struct_ops type is a variant of the original struct type\nproviding a way to access/change the values in the maps of the struct_ops\ntype.\n\nbpf_map__initial_value() will return st_ops-\u003edata for struct_ops types. The\nskeleton is going to use it as the pointer to the shadow type of the\noriginal struct type.\n\nOne of the main differences between the original struct type and the shadow\ntype is that all function pointers of the shadow type are converted to\npointers of struct bpf_program. Users can replace these bpf_program\npointers with other BPF programs. The st_ops-\u003eprogs[] will be updated\nbefore updating the value of a map to reflect the changes made by users.\n\nSigned-off-by: Kui-Feng Lee \u003cthinker.li@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240229064523.2091270-3-thinker.li@gmail.com\n"
    },
    {
      "commit": "0758d8b0f2bac6082393ae95f769970af24f267b",
      "tree": "766620742cdd67587f9a480e7f25f1dc9b5a88b0",
      "parents": [
        "fa4d00254d97d09211cc437c0746530bcd098b59"
      ],
      "author": {
        "name": "Kui-Feng Lee",
        "email": "thinker.li@gmail.com",
        "time": "Wed Feb 28 22:45:19 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "libbpf: Set btf_value_type_id of struct bpf_map for struct_ops.\n\nFor a struct_ops map, btf_value_type_id is the type ID of it\u0027s struct\ntype. This value is required by bpftool to generate skeleton including\npointers of shadow types. The code generator gets the type ID from\nbpf_map__btf_value_type_id() in order to get the type information of the\nstruct type of a map.\n\nSigned-off-by: Kui-Feng Lee \u003cthinker.li@gmail.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240229064523.2091270-2-thinker.li@gmail.com\n"
    },
    {
      "commit": "fa4d00254d97d09211cc437c0746530bcd098b59",
      "tree": "59accb9cbb5160fc77fc3c7abde55b03e1c298c1",
      "parents": [
        "f749be80b7cbba3d71f9561160d963298496ad6a"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Feb 22 07:56:15 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "bpf: Replace bpf_lpm_trie_key 0-length array with flexible array\n\nReplace deprecated 0-length array in struct bpf_lpm_trie_key with\nflexible array. Found with GCC 13:\n\n../kernel/bpf/lpm_trie.c:207:51: warning: array subscript i is outside array bounds of \u0027const __u8[0]\u0027 {aka \u0027const unsigned char[]\u0027} [-Warray-bounds\u003d]\n  207 |                                        *(__be16 *)\u0026key-\u003edata[i]);\n      |                                                   ^~~~~~~~~~~~~\n../include/uapi/linux/swab.h:102:54: note: in definition of macro \u0027__swab16\u0027\n  102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))\n      |                                                      ^\n../include/linux/byteorder/generic.h:97:21: note: in expansion of macro \u0027__be16_to_cpu\u0027\n   97 | #define be16_to_cpu __be16_to_cpu\n      |                     ^~~~~~~~~~~~~\n../kernel/bpf/lpm_trie.c:206:28: note: in expansion of macro \u0027be16_to_cpu\u0027\n  206 |                 u16 diff \u003d be16_to_cpu(*(__be16 *)\u0026node-\u003edata[i]\n^\n      |                            ^~~~~~~~~~~\nIn file included from ../include/linux/bpf.h:7:\n../include/uapi/linux/bpf.h:82:17: note: while referencing \u0027data\u0027\n   82 |         __u8    data[0];        /* Arbitrary size */\n      |                 ^~~~\n\nAnd found at run-time under CONFIG_FORTIFY_SOURCE:\n\n  UBSAN: array-index-out-of-bounds in kernel/bpf/lpm_trie.c:218:49\n  index 0 is out of range for type \u0027__u8 [*]\u0027\n\nChanging struct bpf_lpm_trie_key is difficult since has been used by\nuserspace. For example, in Cilium:\n\n\tstruct egress_gw_policy_key {\n\t        struct bpf_lpm_trie_key lpm_key;\n\t        __u32 saddr;\n\t        __u32 daddr;\n\t};\n\nWhile direct references to the \"data\" member haven\u0027t been found, there\nare static initializers what include the final member. For example,\nthe \"{}\" here:\n\n        struct egress_gw_policy_key in_key \u003d {\n                .lpm_key \u003d { 32 + 24, {} },\n                .saddr   \u003d CLIENT_IP,\n                .daddr   \u003d EXTERNAL_SVC_IP \u0026 0Xffffff,\n        };\n\nTo avoid the build time and run time warnings seen with a 0-sized\ntrailing array for struct bpf_lpm_trie_key, introduce a new struct\nthat correctly uses a flexible array for the trailing bytes,\nstruct bpf_lpm_trie_key_u8. As part of this, include the \"header\"\nportion (which is just the \"prefixlen\" member), so it can be used\nby anything building a bpf_lpr_trie_key that has trailing members that\naren\u0027t a u8 flexible array (like the self-test[1]), which is named\nstruct bpf_lpm_trie_key_hdr.\n\nUnfortunately, C++ refuses to parse the __struct_group() helper, so\nit is not possible to define struct bpf_lpm_trie_key_hdr directly in\nstruct bpf_lpm_trie_key_u8, so we must open-code the union directly.\n\nAdjust the kernel code to use struct bpf_lpm_trie_key_u8 through-out,\nand for the selftest to use struct bpf_lpm_trie_key_hdr. Add a comment\nto the UAPI header directing folks to the two new options.\n\nReported-by: Mark Rutland \u003cmark.rutland@arm.com\u003e\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Daniel Borkmann \u003cdaniel@iogearbox.net\u003e\nAcked-by: Gustavo A. R. Silva \u003cgustavoars@kernel.org\u003e\nCloses: https://paste.debian.net/hidden/ca500597/\nLink: https://lore.kernel.org/all/202206281009.4332AA33@keescook/ [1]\nLink: https://lore.kernel.org/bpf/20240222155612.it.533-kees@kernel.org\n"
    },
    {
      "commit": "f749be80b7cbba3d71f9561160d963298496ad6a",
      "tree": "723ab677123b89ace9a32a3c20a65cc0db93be24",
      "parents": [
        "fb98d4bd25f11f4960d7d2d218e4be200397417e"
      ],
      "author": {
        "name": "Aahil Awatramani",
        "email": "aahila@google.com",
        "time": "Fri Feb 02 17:58:58 2024 +0000"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Wed Mar 06 13:58:27 2024 -0800"
      },
      "message": "bonding: Add independent control state machine\n\nAdd support for the independent control state machine per IEEE\n802.1AX-2008 5.4.15 in addition to the existing implementation of the\ncoupled control state machine.\n\nIntroduces two new states, AD_MUX_COLLECTING and AD_MUX_DISTRIBUTING in\nthe LACP MUX state machine for separated handling of an initial\nCollecting state before the Collecting and Distributing state. This\nenables a port to be in a state where it can receive incoming packets\nwhile not still distributing. This is useful for reducing packet loss when\na port begins distributing before its partner is able to collect.\n\nAdded new functions such as bond_set_slave_tx_disabled_flags and\nbond_set_slave_rx_enabled_flags to precisely manage the port\u0027s collecting\nand distributing states. Previously, there was no dedicated method to\ndisable TX while keeping RX enabled, which this patch addresses.\n\nNote that the regular flow process in the kernel\u0027s bonding driver remains\nunaffected by this patch. The extension requires explicit opt-in by the\nuser (in order to ensure no disruptions for existing setups) via netlink\nsupport using the new bonding parameter coupled_control. The default value\nfor coupled_control is set to 1 so as to preserve existing behaviour.\n\nSigned-off-by: Aahil Awatramani \u003caahila@google.com\u003e\nReviewed-by: Hangbin Liu \u003cliuhangbin@gmail.com\u003e\nLink: https://lore.kernel.org/r/20240202175858.1573852-1-aahila@google.com\nSigned-off-by: Paolo Abeni \u003cpabeni@redhat.com\u003e\n"
    },
    {
      "commit": "fb98d4bd25f11f4960d7d2d218e4be200397417e",
      "tree": "14e21a5786fb35af0dfc0799ae2bfc2411eb97f1",
      "parents": [
        "f4e9b606f4e2f1682e345a6ff9a9c4fe56147080"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Fri Mar 01 15:28:37 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Fri Mar 01 15:39:45 2024 -0800"
      },
      "message": "include: fix BPF_CALL_REL definition\n\nFix our Github-specific definition of BPF_CALL_REL macro. It was missing\nthe code part.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "f4e9b606f4e2f1682e345a6ff9a9c4fe56147080",
      "tree": "c284cf4940bfb6558bf93691ecf0567f4c465c13",
      "parents": [
        "ff95bd6238dc59794f5332fb3026296671769d9c"
      ],
      "author": {
        "name": "Kui-Feng Lee",
        "email": "thinker.li@gmail.com",
        "time": "Mon Feb 26 15:00:35 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 27 10:14:31 2024 -0800"
      },
      "message": "ci: clean up bpf_test_no_cfi.ko for v5.5.0 and v4.9.0.\n\nbpf_test_no_cfi.ko is not available for v5.5.0 and v4.9.0.\n\nSigned-off-by: Kui-Feng Lee \u003cthinker.li@gmail.com\u003e\n"
    },
    {
      "commit": "ff95bd6238dc59794f5332fb3026296671769d9c",
      "tree": "97695eb6c1d85db0aa0f09d7be22dd874f81b459",
      "parents": [
        "a894b0cb9ba9428cc61ef26e4238b01682a55854"
      ],
      "author": {
        "name": "Kui-Feng Lee",
        "email": "thinker.li@gmail.com",
        "time": "Mon Feb 26 13:04:02 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 27 10:14:31 2024 -0800"
      },
      "message": "sync: latest libbpf changes from kernel\n\nSyncing latest libbpf commits from kernel repository.\nBaseline bpf-next commit:   92a871ab9fa59a74d013bc04f321026a057618e7\nCheckpoint bpf-next commit: 2ab256e93249f5ac1da665861aa0f03fb4208d9c\nBaseline bpf commit:        577e4432f3ac810049cb7e6b71f4d96ec7c6e894\nCheckpoint bpf commit:      dced881ead78e4d6add3735d02a9186ba2415630\n\nArnaldo Carvalho de Melo (1):\n  tools headers UAPI: Sync linux/fcntl.h with the kernel sources\n\nCupertino Miranda (1):\n  libbpf: Add support to GCC in CORE macro definitions\n\nMartin Kelly (1):\n  bpf: Clarify batch lookup/lookup_and_delete semantics\n\nMatt Bobrowski (1):\n  libbpf: Make remark about zero-initializing bpf_*_info structs\n\n include/uapi/linux/bpf.h   |  6 ++++-\n include/uapi/linux/fcntl.h |  3 +++\n src/bpf.h                  | 39 ++++++++++++++++++++++++---------\n src/bpf_core_read.h        | 45 ++++++++++++++++++++++++++++++++------\n 4 files changed, 75 insertions(+), 18 deletions(-)\n\nSigned-off-by: Kui-Feng Lee \u003cthinker.li@gmail.com\u003e\n"
    },
    {
      "commit": "a894b0cb9ba9428cc61ef26e4238b01682a55854",
      "tree": "9aae142bc9295ee8fdbb4d6c5d47d830570297a4",
      "parents": [
        "afa81fb1cb41d5737f983f79f80f03ed471332d2"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Jan 25 11:23:56 2024 -0300"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 27 10:14:31 2024 -0800"
      },
      "message": "tools headers UAPI: Sync linux/fcntl.h with the kernel sources\n\nTo get the changes in:\n\n  8a924db2d7b5eb69 (\"fs: Pass AT_GETATTR_NOSEC flag to getattr interface function\")\n\nThat don\u0027t add anything that is handled by existing hard coded tables or\ntable generation scripts.\n\nThis silences this perf build warning:\n\n  Warning: Kernel ABI header differences:\n    diff -u tools/include/uapi/linux/fcntl.h include/uapi/linux/fcntl.h\n\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Christian Brauner \u003cbrauner@kernel.org\u003e\nCc: Ian Rogers \u003cirogers@google.com\u003e\nCc: Jiri Olsa \u003cjolsa@kernel.org\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nCc: Stefan Berger \u003cstefanb@linux.ibm.com\u003e\nLink: https://lore.kernel.org/lkml/ZbJv9fGF_k2xXEdr@kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "afa81fb1cb41d5737f983f79f80f03ed471332d2",
      "tree": "11107612a1b9c5fc8e2712d05b7e48ac31edab12",
      "parents": [
        "16e68ab13cbb187fdf6298e8896243c95ca0f9d6"
      ],
      "author": {
        "name": "Martin Kelly",
        "email": "martin.kelly@crowdstrike.com",
        "time": "Wed Feb 21 13:18:38 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 27 10:14:31 2024 -0800"
      },
      "message": "bpf: Clarify batch lookup/lookup_and_delete semantics\n\nThe batch lookup and lookup_and_delete APIs have two parameters,\nin_batch and out_batch, to facilitate iterative\nlookup/lookup_and_deletion operations for supported maps. Except NULL\nfor in_batch at the start of these two batch operations, both parameters\nneed to point to memory equal or larger than the respective map key\nsize, except for various hashmaps (hash, percpu_hash, lru_hash,\nlru_percpu_hash) where the in_batch/out_batch memory size should be\nat least 4 bytes.\n\nDocument these semantics to clarify the API.\n\nSigned-off-by: Martin Kelly \u003cmartin.kelly@crowdstrike.com\u003e\nAcked-by: Yonghong Song \u003cyonghong.song@linux.dev\u003e\nLink: https://lore.kernel.org/r/20240221211838.1241578-1-martin.kelly@crowdstrike.com\nSigned-off-by: Martin KaFai Lau \u003cmartin.lau@kernel.org\u003e\n"
    },
    {
      "commit": "16e68ab13cbb187fdf6298e8896243c95ca0f9d6",
      "tree": "ef83de24e25da80c564b5f51f27b749e82ed799c",
      "parents": [
        "b19fdbf1be21a28f88740375a575ebd9dfbea68f"
      ],
      "author": {
        "name": "Matt Bobrowski",
        "email": "mattbobrowski@google.com",
        "time": "Wed Feb 14 09:14:23 2024 +0000"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 27 10:14:31 2024 -0800"
      },
      "message": "libbpf: Make remark about zero-initializing bpf_*_info structs\n\nIn some situations, if you fail to zero-initialize the\nbpf_{prog,map,btf,link}_info structs supplied to the set of LIBBPF\nhelpers bpf_{prog,map,btf,link}_get_info_by_fd(), you can expect the\nhelper to return an error. This can possibly leave people in a\nsituation where they\u0027re scratching their heads for an unnnecessary\namount of time. Make an explicit remark about the requirement of\nzero-initializing the supplied bpf_{prog,map,btf,link}_info structs\nfor the respective LIBBPF helpers.\n\nInternally, LIBBPF helpers bpf_{prog,map,btf,link}_get_info_by_fd()\ncall into bpf_obj_get_info_by_fd() where the bpf(2)\nBPF_OBJ_GET_INFO_BY_FD command is used. This specific command is\neffectively backed by restrictions enforced by the\nbpf_check_uarg_tail_zero() helper. This function ensures that if the\nsize of the supplied bpf_{prog,map,btf,link}_info structs are larger\nthan what the kernel can handle, trailing bits are zeroed. This can be\na problem when compiling against UAPI headers that don\u0027t necessarily\nmatch the sizes of the same underlying types known to the kernel.\n\nSigned-off-by: Matt Bobrowski \u003cmattbobrowski@google.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nAcked-by: Jiri Olsa \u003cjolsa@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/ZcyEb8x4VbhieWsL@google.com\n"
    },
    {
      "commit": "b19fdbf1be21a28f88740375a575ebd9dfbea68f",
      "tree": "4251553794f0183d97dc294d70804d5082bdf9e6",
      "parents": [
        "445486dcbf9ddd8b3ca799a98ace58d23cee31a1"
      ],
      "author": {
        "name": "Cupertino Miranda",
        "email": "cupertino.miranda@oracle.com",
        "time": "Tue Feb 13 17:35:43 2024 +0000"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 27 10:14:31 2024 -0800"
      },
      "message": "libbpf: Add support to GCC in CORE macro definitions\n\nDue to internal differences between LLVM and GCC the current\nimplementation for the CO-RE macros does not fit GCC parser, as it will\noptimize those expressions even before those would be accessible by the\nBPF backend.\n\nAs examples, the following would be optimized out with the original\ndefinitions:\n  - As enums are converted to their integer representation during\n  parsing, the IR would not know how to distinguish an integer\n  constant from an actual enum value.\n  - Types need to be kept as temporary variables, as the existing type\n  casts of the 0 address (as expanded for LLVM), are optimized away by\n  the GCC C parser, never really reaching GCCs IR.\n\nAlthough, the macros appear to add extra complexity, the expanded code\nis removed from the compilation flow very early in the compilation\nprocess, not really affecting the quality of the generated assembly.\n\nSigned-off-by: Cupertino Miranda \u003ccupertino.miranda@oracle.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240213173543.1397708-1-cupertino.miranda@oracle.com\n"
    },
    {
      "commit": "445486dcbf9ddd8b3ca799a98ace58d23cee31a1",
      "tree": "cc3932ef4e6d4989f627fc821169016434f5ed12",
      "parents": [
        "820bca2cb6da6ec1a3f605cd9c1d02d9379ad5ac"
      ],
      "author": {
        "name": "Manu Bretelle",
        "email": "chantr4@gmail.com",
        "time": "Thu Feb 15 10:35:29 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Thu Feb 15 10:44:45 2024 -0800"
      },
      "message": "ci: Pass arch parameter to setup-build-env\n\nSince https://github.com/libbpf/ci/commit/1bc40aecb32f1e0f0dc2fff87e7c91b4d5fe03c5\narch parameter needs to be passed to `setup-build-env`\n\nSigned-off-by: Manu Bretelle \u003cchantr4@gmail.com\u003e\n"
    },
    {
      "commit": "820bca2cb6da6ec1a3f605cd9c1d02d9379ad5ac",
      "tree": "12aa709531923a4cb44944ccbcfd4bfec13a147b",
      "parents": [
        "8a8feae5f42bef9e2de0cdc7778edbd37a43063c"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue Feb 06 11:50:33 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 06 11:52:00 2024 -0800"
      },
      "message": "ci: verifier_global_subprogs can\u0027t be run on 5.5\n\nWe get:\n\n  libbpf: struct_ops init_kern: struct bpf_dummy_ops is not found in kernel BTF\n\nSo even though it\u0027s irrelevant to the subtests we do want to test,\nentire test has to be skipped, unfortunately.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "8a8feae5f42bef9e2de0cdc7778edbd37a43063c",
      "tree": "651b7cb7875cbb5e9a2f92d3a8257642ff986cf7",
      "parents": [
        "a20b60f9713527d46ba03a33c8886646e3c83ee6"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Tue Feb 06 10:18:45 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 06 11:52:00 2024 -0800"
      },
      "message": "sync: latest libbpf changes from kernel\n\nSyncing latest libbpf commits from kernel repository.\nBaseline bpf-next commit:   943b043aeecce9accb6d367af47791c633e95e4d\nCheckpoint bpf-next commit: 92a871ab9fa59a74d013bc04f321026a057618e7\nBaseline bpf commit:        577e4432f3ac810049cb7e6b71f4d96ec7c6e894\nCheckpoint bpf commit:      577e4432f3ac810049cb7e6b71f4d96ec7c6e894\n\nAndrii Nakryiko (1):\n  libbpf: fix return value for PERF_EVENT __arg_ctx type fix up check\n\nToke Høiland-Jørgensen (1):\n  libbpf: Use OPTS_SET() macro in bpf_xdp_query()\n\n src/libbpf.c  | 6 +++---\n src/netlink.c | 4 ++--\n 2 files changed, 5 insertions(+), 5 deletions(-)\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "a20b60f9713527d46ba03a33c8886646e3c83ee6",
      "tree": "bac040b6e0b7daa373b474314c833ba18029e42d",
      "parents": [
        "b24a6277cc9488eef93e36059291cc195db4726c"
      ],
      "author": {
        "name": "Toke Høiland-Jørgensen",
        "email": "toke@redhat.com",
        "time": "Tue Feb 06 13:59:22 2024 +0100"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 06 11:52:00 2024 -0800"
      },
      "message": "libbpf: Use OPTS_SET() macro in bpf_xdp_query()\n\nWhen the feature_flags and xdp_zc_max_segs fields were added to the libbpf\nbpf_xdp_query_opts, the code writing them did not use the OPTS_SET() macro.\nThis causes libbpf to write to those fields unconditionally, which means\nthat programs compiled against an older version of libbpf (with a smaller\nsize of the bpf_xdp_query_opts struct) will have its stack corrupted by\nlibbpf writing out of bounds.\n\nThe patch adding the feature_flags field has an early bail out if the\nfeature_flags field is not part of the opts struct (via the OPTS_HAS)\nmacro, but the patch adding xdp_zc_max_segs does not. For consistency, this\nfix just changes the assignments to both fields to use the OPTS_SET()\nmacro.\n\nFixes: 13ce2daa259a (\"xsk: add new netlink attribute dedicated for ZC max frags\")\nSigned-off-by: Toke Høiland-Jørgensen \u003ctoke@redhat.com\u003e\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/bpf/20240206125922.1992815-1-toke@redhat.com\n"
    },
    {
      "commit": "b24a6277cc9488eef93e36059291cc195db4726c",
      "tree": "68486371030de785198fe2f29628d2de4ac9ef0d",
      "parents": [
        "25fe467af404f397f389712e19250ebdbc3375e8"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Feb 05 16:22:43 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 06 11:52:00 2024 -0800"
      },
      "message": "libbpf: fix return value for PERF_EVENT __arg_ctx type fix up check\n\nIf PERF_EVENT program has __arg_ctx argument with matching\narchitecture-specific pt_regs/user_pt_regs/user_regs_struct pointer\ntype, libbpf should still perform type rewrite for old kernels, but not\nemit the warning. Fix copy/paste from kernel code where 0 is meant to\nsignify \"no error\" condition. For libbpf we need to return \"true\" to\nproceed with type rewrite (which for PERF_EVENT program will be\na canonical `struct bpf_perf_event_data *` type).\n\nFixes: 9eea8fafe33e (\"libbpf: fix __arg_ctx type enforcement for perf_event programs\")\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nLink: https://lore.kernel.org/r/20240206002243.1439450-1-andrii@kernel.org\nSigned-off-by: Alexei Starovoitov \u003cast@kernel.org\u003e\n"
    },
    {
      "commit": "25fe467af404f397f389712e19250ebdbc3375e8",
      "tree": "3f9fe0d2c25b3f8397792820bbaf15f30ad6dafe",
      "parents": [
        "f11758a7807893330cc87481a7a16cf956326ab3"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Mon Feb 05 15:56:28 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Tue Feb 06 10:17:28 2024 -0800"
      },
      "message": "ci: allowlist tests validating libbpf\u0027s __arg_ctx type rewrite logic\n\nAllowlist test_global_funcs/arg_tag_ctx* and a few of\nverifier_global_subprogs subtests that validate libbpf\u0027s logic for\nrewriting __arg_ctx globl subprog argument types on kernels that don\u0027t\nnatively support __arg_ctx.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "f11758a7807893330cc87481a7a16cf956326ab3",
      "tree": "07e787367f4aca8187850bb8b0597b20a65a4264",
      "parents": [
        "cbb8ba352db6c836bcfc8d77c67a5f9bc167a949"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Feb 01 13:53:40 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Thu Feb 01 15:10:17 2024 -0800"
      },
      "message": "sync: latest libbpf changes from kernel\n\nSyncing latest libbpf commits from kernel repository.\nBaseline bpf-next commit:   ced33f2cfa21a14a292a00e31dc9f85c1bfbda1c\nCheckpoint bpf-next commit: 943b043aeecce9accb6d367af47791c633e95e4d\nBaseline bpf commit:        577e4432f3ac810049cb7e6b71f4d96ec7c6e894\nCheckpoint bpf commit:      577e4432f3ac810049cb7e6b71f4d96ec7c6e894\n\nAndrii Nakryiko (8):\n  libbpf: integrate __arg_ctx feature detector into kernel_supports()\n  libbpf: fix __arg_ctx type enforcement for perf_event programs\n  libbpf: add __arg_trusted and __arg_nullable tag macros\n  libbpf: add bpf_core_cast() macro\n  libbpf: Call memfd_create() syscall directly\n  libbpf: Add missing LIBBPF_API annotation to libbpf_set_memlock_rlim\n    API\n  libbpf: Add btf__new_split() API that was declared but not implemented\n  libbpf: Add missed btf_ext__raw_data() API\n\nEduard Zingerman (1):\n  libbpf: Remove unnecessary null check in kernel_supports()\n\nIan Rogers (1):\n  libbpf: Add some details for BTF parsing failures\n\n src/bpf.h             |  2 +-\n src/bpf_core_read.h   | 13 ++++++\n src/bpf_helpers.h     |  2 +\n src/btf.c             | 33 ++++++++++++---\n src/features.c        | 58 +++++++++++++++++++++++++\n src/libbpf.c          | 99 ++++++++++++++-----------------------------\n src/libbpf.map        |  5 ++-\n src/libbpf_internal.h |  2 +\n src/linker.c          |  2 +-\n 9 files changed, 140 insertions(+), 76 deletions(-)\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "cbb8ba352db6c836bcfc8d77c67a5f9bc167a949",
      "tree": "5cf62355cc7b6b96052294c4d189ba77c4411e74",
      "parents": [
        "95b4beb50201267a45cc193e86512996e5c7409a"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Feb 01 13:53:40 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Thu Feb 01 15:10:17 2024 -0800"
      },
      "message": "sync: auto-generate latest BPF helpers\n\nLatest changes to BPF helper definitions.\n\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\n"
    },
    {
      "commit": "95b4beb50201267a45cc193e86512996e5c7409a",
      "tree": "3478d42bba83fa8943eb8c7248221a28cbf6f296",
      "parents": [
        "5b7613e50fd94b447b3cd18ae3de9dacd5d60cb9"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Feb 01 09:20:26 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Thu Feb 01 15:10:17 2024 -0800"
      },
      "message": "libbpf: Add missed btf_ext__raw_data() API\n\nAnother API that was declared in libbpf.map but actual implementation\nwas missing. btf_ext__get_raw_data() was intended as a discouraged alias\nto consistently-named btf_ext__raw_data(), so make this an actuality.\n\nFixes: 20eccf29e297 (\"libbpf: hide and discourage inconsistently named getters\")\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nSigned-off-by: Daniel Borkmann \u003cdaniel@iogearbox.net\u003e\nAcked-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nLink: https://lore.kernel.org/bpf/20240201172027.604869-5-andrii@kernel.org\n"
    },
    {
      "commit": "5b7613e50fd94b447b3cd18ae3de9dacd5d60cb9",
      "tree": "d531b688e7e6b00feec2ebccc3c1eed9d04f26ab",
      "parents": [
        "245394fb3625d2f41c2ee2ce44ebdba137e92cff"
      ],
      "author": {
        "name": "Andrii Nakryiko",
        "email": "andrii@kernel.org",
        "time": "Thu Feb 01 09:20:25 2024 -0800"
      },
      "committer": {
        "name": "Andrii Nakryiko",
        "email": "andrii.nakryiko@gmail.com",
        "time": "Thu Feb 01 15:10:17 2024 -0800"
      },
      "message": "libbpf: Add btf__new_split() API that was declared but not implemented\n\nSeems like original commit adding split BTF support intended to add\nbtf__new_split() API, and even declared it in libbpf.map, but never\nadded (trivial) implementation. Fix this.\n\nFixes: ba451366bf44 (\"libbpf: Implement basic split BTF support\")\nSigned-off-by: Andrii Nakryiko \u003candrii@kernel.org\u003e\nSigned-off-by: Daniel Borkmann \u003cdaniel@iogearbox.net\u003e\nAcked-by: Eduard Zingerman \u003ceddyz87@gmail.com\u003e\nLink: https://lore.kernel.org/bpf/20240201172027.604869-4-andrii@kernel.org\n"
    }
  ],
  "next": "245394fb3625d2f41c2ee2ce44ebdba137e92cff"
}
