)]}'
{
  "log": [
    {
      "commit": "f36cadb5c563995ab3aa8572a60ed6b721b9557d",
      "tree": "463eb9202deaf0468ddc13d77671b91c01aab9b9",
      "parents": [
        "fb5ee69425b5b6a249cbd1c68d2cdb308d7ee397"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Aug 19 19:30:00 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Aug 19 19:30:00 2026 +0800"
      },
      "message": "erofs-utils: release 1.9.4\n\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "fb5ee69425b5b6a249cbd1c68d2cdb308d7ee397",
      "tree": "aa94232c82a71c67485b3f9522751a258ac5ed67",
      "parents": [
        "d91fc81373228849446fa5728fe65cb95b3abef7"
      ],
      "author": {
        "name": "Isaiah DeRose-Wilson",
        "email": "isaiahdw@gmail.com",
        "time": "Tue Aug 18 10:58:45 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Tue Aug 18 10:59:26 2026 +0800"
      },
      "message": "erofs-utils: mkfs: fix uninitialized z_erofs_mt_ctrl.mutex\n\nz_erofs_mt_ctrl.mutex guards the multi-threaded compression idle\nwork-item list but is never initialized: z_erofs_mt_global_init()\ninitializes g_ictx.mutex and g_ictx.cond, not this one.\n\nA zero-filled pthread_mutex_t happens to be a valid initialized mutex\non glibc, so Linux builds are unaffected by accident.  On macOS a\nzeroed mutex is invalid: pthread_mutex_lock() fails with EINVAL and,\nsince the return value is not checked, the idle-list critical sections\nin z_erofs_mt_compress() and erofs_mt_write_compressed_file() run with\nno mutual exclusion at all.  The torn list can hand the same work item\nto two owners, which corrupts the workqueue and crashes mkfs.erofs\nnon-deterministically (NULL work dequeued in worker_thread(), SIGABRT,\nor corrupted output).  --workers\u003d1 does not help since the race is\nbetween the producer and the reaper thread.\n\nInitialize the mutex statically.\n\nFixes: 830b27bc23342 (\"erofs-utils: mkfs: introduce inner-file multi-threaded compression\")\nCloses: https://github.com/erofs/erofs-utils/issues/53\nSigned-off-by: Isaiah DeRose-Wilson \u003cisaiahdw@gmail.com\u003e\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "d91fc81373228849446fa5728fe65cb95b3abef7",
      "tree": "098e9ba70bb7ea70e1fca3278bc46dcf531bd874",
      "parents": [
        "7db78788b000999e2de88decd2ba90654f26171c"
      ],
      "author": {
        "name": "Seula Lee",
        "email": "seula2.lee@lge.com",
        "time": "Thu Aug 13 18:38:49 2026 +0900"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Thu Aug 13 20:18:42 2026 +0800"
      },
      "message": "erofs-utils: lib: fix erofs_is_packed_inode() on the read path\n\nerofs_is_packed_inode() compares i_srcpath against the global\nEROFS_PACKED_INODE identifier.  However, i_srcpath is only meaningful\nduring mkfs and has no on-disk representation. Therefore, it is not set\nwhen an inode is loaded by erofs_read_inode_from_disk(), causing the\nhelper to always return false on the read path.\n\nAs a result, fsck.erofs and dump.erofs have been broken since v1.9 for\nimages with `fragments` enabled:\n\n$ mkfs.erofs -zlz4hc -Efragments img.erofs dir\n$ fsck.erofs --extract\u003dout img.erofs\n\u003cE\u003e erofs: erofs_extract_dir() Line[697] path is not a directory: out\n\u003cE\u003e erofs: main() Line[1256] Failed to extract filesystem\n$ file out\nout: ASCII text # 603720 bytes, the packed inode itself\n\nThis restores the expected behavior of fsck.erofs and dump.erofs as\nin v1.8.x.\n\nerofs_is_metabox_inode() shares the same idiom, but it has no read-path\ncaller (all callers are in lib/compress.c and lib/inode.c), so it is\nleft alone.\n\nFixes: 7928074b7643 (\"erofs-utils: introduce metadata compression [metabox]\")\nSigned-off-by: Seula Lee \u003cseula2.lee@lge.com\u003e\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "7db78788b000999e2de88decd2ba90654f26171c",
      "tree": "becd67f432a54f445e0fe72de3ffdfeec5f4c772",
      "parents": [
        "37fc4113694e1c9690bd871aefe91f55bf8bd029"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Aug 05 00:00:00 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Aug 05 00:00:00 2026 +0800"
      },
      "message": "erofs-utils: release 1.9.3\n\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "37fc4113694e1c9690bd871aefe91f55bf8bd029",
      "tree": "be3d46f207ef64213bf13a7b2b1f56057c202a82",
      "parents": [
        "3dc93b4b84f3257e749e322baa8ee9a9100b9c91"
      ],
      "author": {
        "name": "Martin Pitt",
        "email": "martin@piware.de",
        "time": "Mon Aug 03 13:52:37 2026 +0200"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Tue Aug 04 10:17:25 2026 +0800"
      },
      "message": "erofs-utils: mkfs: emit an inode\u0027s xattrs in a canonical order\n\nlistxattr(2) makes no promise about the order it reports, and\nfilesystems disagree: tmpfs reports them in insertion order on recent\nkernels (or in a random order on older ones), while ext4 and btrfs\nreport their own on-disk order.\n\nmkfs.erofs stored an inode\u0027s attributes in exactly the order it received\nthem, so staging the same tree on different filesystems (or on older\nkernels merely twice in the same place) produced images that differed\nbyte for byte. That made EROFS images unreproducible.\n\nInsert into the inode\u0027s list ordered by attribute name instead, and move\ninline attributes onto the on-stack list with list_add_tail() so the\nemitted order matches. The shared attribute pool already sorts by the\nsame key, so generalize comp_shared_xattritem() into\nerofs_comp_xattritem() and use it for both.\n\nThe length tiebreak previously returned only 0 or 1, never a negative\nvalue; make it a proper three-way comparison with cmpsgn().\n\nFixes: 097410dbfd1e (\"erofs-utils: sort shared xattr\")\nFixes: 47d6895a5ff9 (\"erofs-utils: introduce inline xattr support\")\nSuggested-by: Gao Xiang \u003cxiang@kernel.org\u003e\nSigned-off-by: Martin Pitt \u003cmartin@amutable.com\u003e\nLink: https://patch.msgid.link/anCBBdM7yw9Mm3xg@piware.de\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "3dc93b4b84f3257e749e322baa8ee9a9100b9c91",
      "tree": "fb13e0b7599642f534478b1a3a84802b4d8fc7c2",
      "parents": [
        "c7e424692bc8c3bb7527ff96c56ca2b19197d04c"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Sun Aug 02 20:46:18 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Sun Aug 02 21:50:48 2026 +0800"
      },
      "message": "erofs-utils: lib: define unknown OS for GNU Hurd\n\nhttps://buildd.debian.org/status/fetch.php?pkg\u003derofs-utils\u0026arch\u003dhurd-amd64\u0026ver\u003d1.9.2-1\u0026stamp\u003d1783137028\u0026raw\u003d0\n\nLink: https://patch.msgid.link/20260802124618.40318-1-xiang@kernel.org\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "c7e424692bc8c3bb7527ff96c56ca2b19197d04c",
      "tree": "9f8f7af7eeee644a7c1af56b34351f5d52bc7a95",
      "parents": [
        "4cdec3533651e65ccac0cff131d8414db1bbecd4"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Thu Jul 30 04:30:58 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Thu Jul 30 13:14:05 2026 +0800"
      },
      "message": "erofs-utils: mkfs: silence false-positive uninitialization warning\n\nmain.c: In function \u0027mkfs_parse_options_cfg\u0027:\nmain.c:1236:21: warning: \u0027i\u0027 may be used uninitialized in this function [-Wmaybe-uninitialized]\n    pclustersize_max \u003d i;\n    ~~~~~~~~~~~~~~~~~^~~\n\nLink: https://patch.msgid.link/20260729203058.29830-1-xiang@kernel.org\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "4cdec3533651e65ccac0cff131d8414db1bbecd4",
      "tree": "e703a0b36039fcbec898a4343eebe2d23509c72e",
      "parents": [
        "03f3a592cea02a067a8e0176b53e23f420e33f54"
      ],
      "author": {
        "name": "Bingwu Zhang",
        "email": "xtex@astrafall.org",
        "time": "Wed Jul 29 16:55:27 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Thu Jul 30 04:37:29 2026 +0800"
      },
      "message": "erofs-utils: lib: fix memory leak in erofs_fragment_commit\n\nerofs_fragment_pack may initialize fi-\u003elist as a\nnew list head instead of adding it to a bucket.\nIf fi-\u003epos is non-zero, the fragmentitem and\ndata buffer is not released by erofs_fragment_commit,\nleading to a memory leak.\n\nSigned-off-by: Bingwu Zhang \u003cxtex@astrafall.org\u003e\nLink: https://patch.msgid.link/20260729085527.124698-1-xtex@envs.net\nFixes: 9fa1a5838a2a (\"erofs-utils: mkfs: fix memory leak from small fragments\")\nFixes: 84bae6acdbee (\"erofs-utils: lib: keep full data until the fragment is committed\")\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "03f3a592cea02a067a8e0176b53e23f420e33f54",
      "tree": "33d7db5a60767ca9766d2c218c58289529e00a4a",
      "parents": [
        "2215039e548ded44663d4f001602a67f571c15d3"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Tue Jul 28 23:40:32 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Jul 29 01:16:37 2026 +0800"
      },
      "message": "erofs-utils: mkfs: fix `--incremental\u003ddata` failure\n\n`idata_size` should be set for erofs_prepare_tail_block().\n\nFixes: c16df072941f (\"erofs-utils: mkfs: support directory compression\")\nLink: https://patch.msgid.link/20260728154032.73630-1-xiang@kernel.org\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "2215039e548ded44663d4f001602a67f571c15d3",
      "tree": "e4f824f4284544dccfaabdaedc20d0e06bb4ddc7",
      "parents": [
        "eb1e62eab200a495417b45bc1cbdbfa9eaccda72"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Sat Jul 25 10:53:28 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Sat Jul 25 10:56:00 2026 +0800"
      },
      "message": "erofs-utils: fix opaque handling for merged dirs in rebuild mode\n\nAs cayoub-oai reports,\n\nA three-layer opaque-directory case still fails (oldest to newest):\nL1: dir/old.txt\nL2: dir/.wh..wh..opq\nL3: dir/new.txt\n\nAfter converting each layer with `mkfs.erofs --tar\u003df --aufs` and\nfsmerging with `--aufs --ovlfs-strip\u003d1`, the expected result is\nonly `dir/new.txt`. However, `dir/old.txt` incorrectly reappears.\n\nReported-by: cayoub-oai \u003ccayoub@openai.com\u003e\nFixes: 7fbec7d32ce3 (\"erofs-utils: lib: honor rebuild whiteouts for recreated dirs\")\nFixes: 39147b48b76d (\"erofs-utils: lib: add erofs_rebuild_load_tree() helper\")\nLink: https://lore.kernel.org/r/20260725025328.35113-1-xiang@kernel.org\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "eb1e62eab200a495417b45bc1cbdbfa9eaccda72",
      "tree": "453de60c717c47209013b427ff8b5a773201e607",
      "parents": [
        "c5da42c9955ddc1800b75826bbb556e29eb2c4a8"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Wed Jul 22 16:37:29 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Jul 25 10:31:13 2026 +0800"
      },
      "message": "erofs-utils: mkfs: preserve raw inline data type\n\nPreviously, raw inline tails were treated as compressed data, causing\nincorrect head padding. Set idata_type according to raw mode.\n\nFixes: 277a42502a7a (\"erofs-utils: mkfs: handle last compacted_2B pack in z_erofs_drop_inline_pcluster\")\nCloses: https://github.com/erofs/erofs-utils/issues/52\nAssisted-by: Codex:gpt-5.6-sol\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260722083729.1176080-1-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "c5da42c9955ddc1800b75826bbb556e29eb2c4a8",
      "tree": "32767182ae6dde05f9446c52147cde88d2b34dbd",
      "parents": [
        "94f5a27f7b3878208e074038dec3f5c33b5fc3ba"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Jul 17 11:04:27 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Jul 17 14:21:23 2026 +0800"
      },
      "message": "erofs-utils: tar: refuse negative size in tar header\n\nAs @oscarjhk reported:\n\nWhen tar-index mode is used, the inode chunk count will be calculated\nas 0 if a crafted GNU base-256 size is UINT64_MAX, which will cause\na heap out-of-bounds write.\n\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nLink: https://lore.kernel.org/r/20260717030427.1769514-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "94f5a27f7b3878208e074038dec3f5c33b5fc3ba",
      "tree": "a7812bc1cdc435713cd0beb2c07b2692c8af2acb",
      "parents": [
        "82c42541286f23b56844c457ec881c8da97dc0a3"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jul 14 13:55:44 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jul 14 14:14:29 2026 +0800"
      },
      "message": "erofs-utils: lib: fix undeclared gettid()\n\ngettid() is only available since glibc 2.30.\n\nFixes: 799c933bbefb (\"erofs-utils: add ublk userspace block device backend\")\nLink: https://lore.kernel.org/r/20260714055544.742154-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "82c42541286f23b56844c457ec881c8da97dc0a3",
      "tree": "b55f93a833cd5b31c731befd9da4bd4f3c4447ca",
      "parents": [
        "30711d4b2e234fe3e8aaeb779ade4cb609b0d920"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Jul 04 10:03:47 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Jul 04 10:05:46 2026 +0800"
      },
      "message": "erofs-utils: fix \u0027warn_unused_result\u0027\n\nbackends/ublk.c: In function \u0027ublk_queue_thread\u0027:\nbackends/ublk.c:758:23: warning: ignoring return value of \u0027write\u0027 declared with attribute \u0027warn_unused_result\u0027 [-Wunused-result]\n  758 |                 (void)write(q-\u003edev-\u003estop_efd, \u0026val, sizeof(val));\n      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nmain.c: In function \u0027erofsmount_fanotify_child\u0027:\nmain.c:2043:9: warning: ignoring return value of \u0027write\u0027 declared with attribute \u0027warn_unused_result\u0027 [-Wunused-result]\n 2043 |         write(pipefd, \u0026err, sizeof(err));\n      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nLink: https://lore.kernel.org/r/20260704020347.3119610-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "30711d4b2e234fe3e8aaeb779ade4cb609b0d920",
      "tree": "cdd3792a0994795ea6d61845249b448bd392c616",
      "parents": [
        "7a4bbfeec31e38e199c410b975ba0f499aae6381"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Thu Jul 02 00:00:00 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Thu Jul 02 00:00:00 2026 +0800"
      },
      "message": "erofs-utils: release 1.9.2\n\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "7a4bbfeec31e38e199c410b975ba0f499aae6381",
      "tree": "ed13da068e3ad2cc385716bda2a62f626ce4cd20",
      "parents": [
        "dbd28986d826b00020c48ef908b6e64867af9a57"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "yifan.yfzhao@foxmail.com",
        "time": "Tue Jun 09 17:04:19 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jul 01 17:02:40 2026 +0800"
      },
      "message": "erofs-utils: link tools with liberofs dependencies\n\nliberofs.la is a noinst libtool archive, so relying on its\ndependency_libs to carry external libraries is not enough for\nstatic-only dependencies.\n\nFor example, when liblzma is installed as a static libtool archive,\nlibtool consumes -llzma while creating liberofs.la but does not record\nit in dependency_libs. The final tools then link only with liberofs.la\nand fail with undefined lzma_* references.\n\nCollect liberofs external libraries in LIBEROFS_LIBS and use it for\nboth liberofs.la and the final tools, so final executable links see\nthe pkg-config supplied liblzma flags directly.\n\nReported-by: Guo Xuenan \u003cguoxuenan@huawei.com\u003e\nFixes: 6c2a000782b2 (\"erofs-utils: lib: add test for s3erofs_prepare_url()\")\nAssisted-by: Codex:GPT-5.5\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260609090419.989483-1-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "dbd28986d826b00020c48ef908b6e64867af9a57",
      "tree": "4b947099d0e01cb75d225a458cdc6318bab5a2b3",
      "parents": [
        "c3dc8c529ddf7f00f636df62bc299f44b6023982"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jul 01 16:52:26 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jul 01 17:02:29 2026 +0800"
      },
      "message": "erofs-utils: mkfs: set the default inode fingerprint name\n\nSet `erofs.fingerprint.v1` as the default xattr digest name for\ninodes so that these xattrs are invisible to users.\n\nLink: https://lore.kernel.org/r/20260701085226.2390667-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "c3dc8c529ddf7f00f636df62bc299f44b6023982",
      "tree": "0ef096dc3479bbed2ed5c2ab4bf063de5de2bd43",
      "parents": [
        "3ba45b9ae27dfcb4e64a7b1d78d9138c38544044"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 21:34:52 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 21:52:00 2026 +0800"
      },
      "message": "erofs-utils: simplify README\n\nNow that the EROFS project has its own documentation website:\n  https://erofs.docs.kernel.org\n\nShorten the texts in order to point users to the dedicated\ndocumentation instead.\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "3ba45b9ae27dfcb4e64a7b1d78d9138c38544044",
      "tree": "0c2e24ee755a2c3914baa03bdad3598a81348289",
      "parents": [
        "fa1ddafc7148d60c922959c3071e50392fcc6da2"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:24 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: lib: silence `INTEGER_OVERFLOW`\n\nCoverity-id: 647247\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-7-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "fa1ddafc7148d60c922959c3071e50392fcc6da2",
      "tree": "a4fc872d5f32c350bdf29e796d6b25938b6519cc",
      "parents": [
        "e3cfc33458e0155bd0037f0cb077645acc097b08"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:23 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: mount: fix `RESOURCE_LEAK`\n\nCoverity-id: 647246\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-6-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "e3cfc33458e0155bd0037f0cb077645acc097b08",
      "tree": "1acc38cfcc7d85332471910caf1f66cb3b41856a",
      "parents": [
        "49fa44d2f08529548056f94329c6739e9dce482b"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:22 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: lib: fix `STRING_NULL` in nbd.c\n\nCoverity-id: 647257\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-5-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "49fa44d2f08529548056f94329c6739e9dce482b",
      "tree": "f44eeb0e7a052402f684537df0784a09b4ccf429",
      "parents": [
        "9e63efa4959bf20d632ede1babc13fb196bbe6d1"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:21 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: mount: fix `RESOURCE_LEAK`\n\nCoverity-id: 647264\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-4-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "9e63efa4959bf20d632ede1babc13fb196bbe6d1",
      "tree": "ed4164f7688668b9719ebf9b27a5d71963fd2412",
      "parents": [
        "589091612cd7293ae1c97a6584a9536e65c9892e"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:20 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: lib: fix `PRINTF_ARGS`\n\nCoverity-id: 647268\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-3-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "589091612cd7293ae1c97a6584a9536e65c9892e",
      "tree": "957e459f0de2972f39b4f39258ce0e53b54e5877",
      "parents": [
        "25eb24dac1b2e38dafd7fb5a494f61583c8c124f"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:19 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: lib: silence `INTEGER_OVERFLOW`\n\nCoverity-id: 647269\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-2-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "25eb24dac1b2e38dafd7fb5a494f61583c8c124f",
      "tree": "2ff6c42954c9e95c449556da47b92698feeb398e",
      "parents": [
        "3e26b6edc3f13db777369c36109354455e5f1c22"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 10:52:18 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 30 11:22:21 2026 +0800"
      },
      "message": "erofs-utils: lib: fix `ictx` leak in the failure path\n\nCoverity-id: 647272\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260630025224.3955763-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "3e26b6edc3f13db777369c36109354455e5f1c22",
      "tree": "7320cfa4920d7f25d8edbdfa80a8d1ee7982e685",
      "parents": [
        "d7b18c9fb9cb23ae4dfbbab0d684c809e6c53a10"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 29 15:25:07 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 29 15:38:44 2026 +0800"
      },
      "message": "erofs-utils: dump: fix stack-overflow due to directory loops\n\nThis mirrors the solution in commit f3728a162d22 (\"erofs-utils: dump:\nfix stack-overflow due to directory loops\").\n\nReported-by: Tristan \u003cTristanInSec@gmail.com\u003e\nFixes: 5a9ac8e057cf (\"erofs-utils: dump: convert readdir to use erofs_iterate_dir()\")\nCloses: https://lore.kernel.org/r/CAA1XrhPMekMqAnRkC-jV9rTsO4LHjzh\u003dkxn6zQKMgBrqfrnp8A@mail.gmail.com/6-dump-erofs-recursion.txt\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260629072507.2375923-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "d7b18c9fb9cb23ae4dfbbab0d684c809e6c53a10",
      "tree": "3b7351f896dd9f55937e7610e583a750d7ef51e5",
      "parents": [
        "ef3d102633a012bbe2ec17977ee17c4278eba971"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 29 12:47:59 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 29 12:56:17 2026 +0800"
      },
      "message": "erofs-utils: lib: switch ZSTD decompression to streaming API\n\nCurrently, the ZSTD decompressor uses ZSTD_getFrameContentSize()\nto get the untrusted on-disk ZSTD frame size, which can cause\nheap OOB read.\n\nUse streaming API ZSTD_decompressStream() instead.\n\nReported-by: Tristan \u003cTristanInSec@gmail.com\u003e\nFixes: ed2f7cf8b748 (\"erofs-utils: add preliminary zstd support [x]\")\nCloses: https://lore.kernel.org/r/CAA1XrhPMekMqAnRkC-jV9rTsO4LHjzh\u003dkxn6zQKMgBrqfrnp8A@mail.gmail.com/4-zstd-decomp-oob-read.txt\nLink: https://lore.kernel.org/r/20260629044759.2166171-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "ef3d102633a012bbe2ec17977ee17c4278eba971",
      "tree": "c181a7b23b7b4f19c3db3ba3d3772fb93010dc27",
      "parents": [
        "9ba4d0c1cf39fc6a54f2b84197011638c9df796a"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Sun Jun 28 22:39:10 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 29 10:19:53 2026 +0800"
      },
      "message": "erofs-utils: mount: rename erofsmount_nbd_ctx to erofsmount_ctx\n\nThe struct is shared by NBD, ublk and fanotify paths, so the\nnbd-specific name was misleading.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\nLink: https://lore.kernel.org/r/20260628143910.1062931-2-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "9ba4d0c1cf39fc6a54f2b84197011638c9df796a",
      "tree": "fc1930ef04585f87171625e6496d5fa096fbd3ef",
      "parents": [
        "445301c848ee6882d24e59470c12009a12d75636"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Sun Jun 28 22:39:09 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 29 10:19:43 2026 +0800"
      },
      "message": "erofs-utils: mount: support ublk recovery\n\nAllow users to reattach to an existing ublk device after deamon crashes.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\nLink: https://lore.kernel.org/r/20260628143910.1062931-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "445301c848ee6882d24e59470c12009a12d75636",
      "tree": "44d0c0b1985ba15227cd7ee47776f37f77257794",
      "parents": [
        "1ca8aff02c99d111b59bdc8f458b500d08374d16"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Sat Jun 27 11:03:39 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Jun 27 14:33:54 2026 +0800"
      },
      "message": "erofs-utils: fsck: add `--xattr-inode-digest` support\n\nAdd a new `--xattr-inode-digest` option to verify per-inode digests\nembedded by `mkfs.erofs --xattr-inode-digest`.\n\nFor each regular inode with non-zero size, the stored digest xattr is\ncompared against a freshly computed SHA-256 of the inode data:  Any\nmismatch is reported as filesystem corruption.\n\nNote that enabling this option also forces extraction.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\nLink: https://lore.kernel.org/r/20260627030339.2577674-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "1ca8aff02c99d111b59bdc8f458b500d08374d16",
      "tree": "030a02384b40675c0ca2e33290d3d5a882f322a2",
      "parents": [
        "7fbec7d32ce3491cbd3dc484fd187ec0b288acfb"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Tue Jun 23 14:46:55 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 24 09:49:10 2026 +0800"
      },
      "message": "erofs-utils: lib: don\u0027t abort on compression fallback\n\nFile-level compression fallback is control flow, not a real error.\nReturn an erofs-specific status code for it instead of overloading\n-ENOSPC, which can also report real space failures.\n\nKeep the global compression context reusable for that fallback while\npreserving the fatal state for real errors.\n\nFixes: a729584ef975 (\"erofs-utils: mkfs: avoid hanging if fragment is on and tmpdir is full\")\nReported-by: Bastian Schmitz \u003cbastian.schmitz@vorwerk.de\u003e\nCloses: https://github.com/erofs/erofs-utils/issues/50\nAssisted-by: Codex:GPT-5.5\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260623064655.3252148-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "7fbec7d32ce3491cbd3dc484fd187ec0b288acfb",
      "tree": "55c255576b269cef3b61141a06e9adc9a2c12f8b",
      "parents": [
        "4db4cefb1d24b14bb06edc762c372fb9eea533eb"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Tue Jun 23 10:53:34 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 24 09:48:29 2026 +0800"
      },
      "message": "erofs-utils: lib: honor rebuild whiteouts for recreated dirs\n\nWhen rebuilding from upper to lower, a whiteout below an already\nrecreated directory should keep that directory but stop older lower\nentries from being merged into it.\n\nOnly treat the lower whiteout as an opaque marker when the upper entry\nis a directory.  If the upper entry is not a directory, keep the normal\nupper-exists behavior and ignore the lower entry.\n\nFixes: 39147b48b76d (\"erofs-utils: lib: add erofs_rebuild_load_tree() helper\")\nReported-by: cayoub-oai \u003ccayoub@openai.com\u003e\nCloses: https://github.com/erofs/erofs-utils/issues/49\nAssisted-by: Codex:GPT-5.5\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260623025334.1049210-2-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "4db4cefb1d24b14bb06edc762c372fb9eea533eb",
      "tree": "5f9ba98a0bfbe90ce3a1f87539536c6cf269dfb3",
      "parents": [
        "d74ceeff4a8de30c42b7023908b294d2e84a2997"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 15 16:40:11 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 16 13:58:19 2026 +0800"
      },
      "message": "erofs-utils: fsck: fix potential overflow due to u64-to-u32 truncation\n\nIt seems possible but no reproducible way made into public.\n\nReported-by: Tristan \u003cTristanInSec@gmail.com\u003e\nCloses: https://lore.kernel.org/r/CAA1XrhPMekMqAnRkC-jV9rTsO4LHjzh\u003dkxn6zQKMgBrqfrnp8A@mail.gmail.com/2-u64-to-u32-truncation-overflow.txt\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260615084011.325686-3-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "d74ceeff4a8de30c42b7023908b294d2e84a2997",
      "tree": "89e8138f4c6a34b1a1c6ac24639a52966ba385ab",
      "parents": [
        "310d44d6315588a265f243645d17a4d551a5a4b2"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 15 16:40:10 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 16 13:58:19 2026 +0800"
      },
      "message": "erofs-utils: fsck: account \u0027/\u0027 separator in path construction\n\nReported-by: Tristan \u003cTristanInSec@gmail.com\u003e\nCloses: https://lore.kernel.org/r/CAA1XrhPMekMqAnRkC-jV9rTsO4LHjzh\u003dkxn6zQKMgBrqfrnp8A@mail.gmail.com/3-fsck-path-off-by-one.txt\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260615084011.325686-2-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "310d44d6315588a265f243645d17a4d551a5a4b2",
      "tree": "23a81ca19aaa0d832f770e752a90ded425c5fa94",
      "parents": [
        "6de984794324b296da890823e8badc9765dafea7"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 16 13:53:53 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 16 13:58:13 2026 +0800"
      },
      "message": "erofs-utils: fsck: fix unsigned integer overflow in symlink extraction\n\nerofs_extract_symlink() allocates a buffer using malloc(i_size + 1)\nwhere i_size is a 64-bit value read directly from the on-disk inode\nwith no upper bound validation. When i_size equals UINT64_MAX, the\naddition wraps to zero, and malloc(0) returns a minimal allocation.\nThe subsequent erofs_pread() writes i_size bytes into this tiny\nbuffer.\n\nReported-by: Tristan \u003cTristanInSec@gmail.com\u003e\nCloses: https://lore.kernel.org/r/CAA1XrhPMekMqAnRkC-jV9rTsO4LHjzh\u003dkxn6zQKMgBrqfrnp8A@mail.gmail.com/5-symlink-integer-overflow.txt\nLink: https://lore.kernel.org/r/20260616055353.2007932-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "6de984794324b296da890823e8badc9765dafea7",
      "tree": "5bbf16532784545c8f4fe324100cb77784c9a754",
      "parents": [
        "4ef881366e234347b29c073e8bb8ae2d579e3015"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Jun 12 10:20:01 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Jun 15 10:06:30 2026 +0800"
      },
      "message": "erofs-utils: lib: separate plain and compressed filesystems formally\n\nSource kernel commit: 7cef3c8341940febf75db6c25199cd83fb74d52f\n\n!lz4_0padding is simply an ancient layout which is mainly used for\nLinux kernels \u003c 5.3 (prior to the initial EROFS formal version) and\ngenerated with the option `-Elegacy-compress` by mkfs.erofs between\n1.0 and 1.8.x.\n\nSo recently Linux 7.0+ kernels simply use lz4_0padding as another\nindicator of whether it\u0027s an (LZ4) compressed filesystem.  Follow\nthe new behavior for erofs-utils too to fix an incremental data\nbuild issue [1].\n\n[1] https://lore.kernel.org/r/20260611235404.1620899-1-jcalmels@nvidia.com\n\nReported-by: Jonathan Calmels \u003cjcalmels@nvidia.com\u003e\nLink: https://lore.kernel.org/r/20260612022001.2665293-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "4ef881366e234347b29c073e8bb8ae2d579e3015",
      "tree": "3280a6e43b6b72da5f30043d682d4b76b571a171",
      "parents": [
        "8902f45667aa5634987dab274d4c72a38fede0ba"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 03 18:08:12 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 03 22:15:03 2026 +0800"
      },
      "message": "erofs-utils: tar: handle empty values in pax extended headers\n\nAs POSIX pax(1) [1] says,\n\nIf the \u003cvalue\u003e field is zero length, it shall delete any header block\nfield, previously entered extended header value, or global extended\nheader value of the same name.\n\nNote that extended attribute removal is not implemented yet.\n\n[1] https://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260603100812.2617238-2-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "8902f45667aa5634987dab274d4c72a38fede0ba",
      "tree": "de9a0381da8215adff6102b3a2255e8c1878da4f",
      "parents": [
        "498809b185490086bae31957cae2d97de4b276b5"
      ],
      "author": {
        "name": "Utkal Singh",
        "email": "singhutkal015@gmail.com",
        "time": "Wed Jun 03 18:08:11 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 03 22:15:03 2026 +0800"
      },
      "message": "erofs-utils: tar: reject negative size\u003d value in PAX header\n\nThe PAX extended header size\u003d field is parsed into a signed long\nlong but no check is made for negative values before assigning to\neh-\u003est.st_size. A crafted PAX header with size\u003d-1 passes the\nexisting format check, resulting in a negative file size that can\ncause incorrect memory allocation and heap corruption in subsequent\nread or seek operations.\n\nAdd an explicit check to reject negative size\u003d values with -EINVAL.\n\nSigned-off-by: Utkal Singh \u003csinghutkal015@gmail.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260603100812.2617238-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "498809b185490086bae31957cae2d97de4b276b5",
      "tree": "1e117a3502dd86472040681f904b25f8dbf9faf1",
      "parents": [
        "0553895cdfb3dbd2adaa7f91843c6ab8b958107f"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 03 10:06:13 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Jun 03 10:07:48 2026 +0800"
      },
      "message": "erofs-utils: s3: use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T if possible\n\nTo resolve the following warning:\n\nremotes/s3.c: In function \u0027s3erofs_get_object_size\u0027:\nremotes/s3.c:1352:9: warning: \u0027CURLINFO_CONTENT_LENGTH_DOWNLOAD\u0027 is deprecated: since 7.55.0. Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T [-Wdeprecated-declarations]\n 1352 |         ret \u003d curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,\n      |         ^~~\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260603020613.1974534-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "0553895cdfb3dbd2adaa7f91843c6ab8b958107f",
      "tree": "37071304f17303bfee7879fd5ed0df29a35d21a0",
      "parents": [
        "799c933bbefb356a0faef2164e2980e95fbaa4d0"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Tue Jun 02 12:05:23 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 02 15:45:55 2026 +0800"
      },
      "message": "erofs-utils: mount: integrate ublk backend\n\nWire up the ublk userspace block device backend into mount.erofs,\nproviding an alternative to nbd for block device exposure.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\n[ Gao Xiang: drop recovery support for now. ]\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260602040523.286074-3-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "799c933bbefb356a0faef2164e2980e95fbaa4d0",
      "tree": "29729a174b941741ef7f57e58555b88c0900a314",
      "parents": [
        "6e94b999521f3be2b3fe44a300aa14c4f35612b1"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Tue Jun 02 12:05:22 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 02 15:45:17 2026 +0800"
      },
      "message": "erofs-utils: add ublk userspace block device backend\n\nAdd a ublk backend powered by io_uring. This provides an alternative\nway to nbd for exposing an EROFS image as a block device.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\n[ Gao Xiang: refactor a bit to adapt Linux 6.1+. ]\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260602040523.286074-2-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "6e94b999521f3be2b3fe44a300aa14c4f35612b1",
      "tree": "e1911b1f6b490411930df8d9dce2eb0c4d6a5aab",
      "parents": [
        "1d5bacbb815bb7aa4294c3158e0daca19d00a69c"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Tue Jun 02 12:05:21 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Jun 02 15:13:28 2026 +0800"
      },
      "message": "erofs-utils: mount: extract reusable source-opening and recovery helpers\n\nFactor out erofsmount_open_source() and erofsmount_open_recovery_source()\nhelpers; introduce EROFSMOUNT_RUNDIR / EROFSMOUNT_NBD_REC_FMT macros.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260602040523.286074-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "1d5bacbb815bb7aa4294c3158e0daca19d00a69c",
      "tree": "c7a23aab9f021db2beba6a71874c292aea3def45",
      "parents": [
        "277a42502a7a6b33cc88223865cc097ccba8c256"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Wed May 27 18:05:58 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed May 27 19:35:58 2026 +0800"
      },
      "message": "erofs-utils: build: drop stale liblzma path handling\n\nliblzma now uses PKG_CHECK_MODULES() for path discovery, but a\nleftover assignment still rewrote liblzma_LIBS to plain `-llzma`,\ndropping pkg-config linker flags such as `-L${prefix}/lib`, which\nbreaks custom liblzma path discovery.\n\nRemove the redundant logic and drop the obsolete INSTALL.md reference\nto --with-liblzma-{incdir,libdir}.\n\nReported-by: Guo Xuenan \u003cguoxuenan@huawei.com\u003e\nFixes: 37ada1b449ae (\"erofs-utils: support liblzma auto-detection\")\nAssisted-by: Codex:GPT-5.5\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260527100558.980152-1-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "277a42502a7a6b33cc88223865cc097ccba8c256",
      "tree": "e38f538655875e65c2f490b0febac6a3c805afe7",
      "parents": [
        "96ee4a63bb20787193107a3f22f08077c59ba4cc"
      ],
      "author": {
        "name": "Zhiguo Niu",
        "email": "zhiguo.niu@unisoc.com",
        "time": "Tue May 19 14:53:09 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed May 20 10:30:55 2026 +0800"
      },
      "message": "erofs-utils: mkfs: handle last compacted_2B pack in z_erofs_drop_inline_pcluster\n\nWith ztailpacking enabled, the current process assumes that\ncompacted_4b_end always exists in the compacted pack.\n\nHowever, in some specific inodes, the compacted pack may not have\ncompacted_4b_end: This leads to an incorrect modification of the last\ncompacted_2B entry, resulting in incorrect modification of its\nclusterofs.  In subsequent fsck operations, incorrect parameters will\naffect the decompression of the penultimate pcluster.\n\nThis patch handles the last compacted_2B pack correctly.\n\nFixes: a7c1f0575ef8 (\"erofs-utils: lib: refine tailpcluster compression approach\")\nSigned-off-by: Zhiguo Niu \u003czhiguo.niu@unisoc.com\u003e\nSuggested-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/1779173589-18216-1-git-send-email-zhiguo.niu@unisoc.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "96ee4a63bb20787193107a3f22f08077c59ba4cc",
      "tree": "7ee325af52f55a238b909db8204a6b88a383f6b1",
      "parents": [
        "3166f1deef7e9c198425df61c2597085f1b2480c"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Tue May 12 15:16:30 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed May 20 10:30:51 2026 +0800"
      },
      "message": "erofs-utils: lib: reject packed inodes in metabox\n\nIf packed_nid carries the metabox NID bit, loading the packed\ninode first redirects its inode metadata lookup through the\nmetabox inode.  Initializing that metabox inode can then read\nmetadata that refers back through the packed inode, forming a\nrecursive packed inode -\u003e metabox inode -\u003e packed inode path.\n\nReject such images while parsing the superblock, matching the\nformat rule that the special packed inode itself is not stored\ninside the metabox.\n\nReproducible image (base64-encoded gzipped blob):\nH4sIAAAAAAAAA2NgGAWjYBSMVPDo4dcHrY0KwsxANg8jAwMLFjVMSGzPx/7Lzj3zXb3jSFTh\n5iN7v6CrbQSa8f8/gq8GoRpARHErYxYDEh8EVAm4jw2Il4AMFYDoB7IYmDGVNRhAzf8PBMh+\nyEjNyclXKM8vyklRIILNRcA5o2AUjIJRMApGwSgYBaNgFAxpAGorv3VkYtBgQLSfQW3sF8wv\nkJvZDSqIXkCDKpANlWxQZ2Bk0NPTS8RlPkgXqP0Oa5/DxNDNB7XvR8EoGAWjYBSMglEwCkbB\nKBgFo2AUjIJRQBsAAEZO6n4AIAAA\n\nAssisted-by: Codex:GPT-5.5\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260512071631.969752-2-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "3166f1deef7e9c198425df61c2597085f1b2480c",
      "tree": "6d0921ad393423f45ed0ca523bf6fd55e4304882",
      "parents": [
        "d94880a945af9e7ab2f7b71387a2c7b0ad13f941"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Sun Mar 29 17:36:39 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 28 15:38:15 2026 +0800"
      },
      "message": "erofs-utils: lib: tar: fix fractional PAX mtime parsing\n\nThe fractional part of PAX mtime values was parsed as a plain integer,\nso \"123.5\" ended up with 5ns instead of 500000000ns.\n\nScale the fractional part according to its decimal width before storing\nit as nanoseconds. Also normalize negative fractional timestamps and\nreject malformed mtime values with missing digits or trailing junk.\n\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260329173639.54997-1-ch@vnsh.in\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "d94880a945af9e7ab2f7b71387a2c7b0ad13f941",
      "tree": "ad68a16d81b2413d73f05b9517ebaf68b91c7dd8",
      "parents": [
        "8cd872d284e349309504fcee86cd679eb7639884"
      ],
      "author": {
        "name": "Saksham",
        "email": "aghi.saksham5@gmail.com",
        "time": "Fri Apr 24 13:21:50 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 28 15:32:22 2026 +0800"
      },
      "message": "erofs-utils: fix unchecked strdup() and harden erofs_fspath()\n\nIn several places across the erofs-utils codebase, the return value of\nstrdup() was not checked for failure. This can lead to NULL pointer\ndereferences or unexpected behavior when these strings are processed\ndownstream, especially in utility functions like erofs_fspath().\n\nSpecifically, erofs_make_empty_root_inode() in lib/inode.c assigned\nthe result of strdup(\"/\") to root-\u003ei_srcpath without validation. If\nthis allocation failed, subsequent calls to erofs_fspath(inode-\u003ei_srcpath)\nwould attempt to dereference a NULL pointer (or an offset from NULL),\npotentially causing a crash or memory safety issues.\n\nThis patch addresses these issues by:\n1. Adding proper NULL checks for strdup() in erofs_make_empty_root_inode()\n   (lib/inode.c) and erofs_rebuild_load_tree() (lib/rebuild.c). If\n   allocation fails, the functions now correctly return -ENOMEM.\n2. Hardening erofs_fspath() in lib/config.c to gracefully handle NULL\n   inputs. It now returns an empty string instead of attempting to\n   dereference the pointer, providing a robust fallback for memory\n   exhaustion scenarios.\n3. Fixing unchecked strdup() and strndup() calls in the S3 remote\n   backend (lib/remotes/s3.c) and mkfs (mkfs/main.c).\n\nThese changes improve the overall robustness and reliability of the\nerofs-utils suite, particularly when operating under memory pressure.\n\nDetailed changes:\n- lib/inode.c: Check strdup(\"/\") in erofs_make_empty_root_inode;\n  call erofs_iput() and return ERR_PTR(-ENOMEM) on failure.\n- lib/rebuild.c: Check strdup(\"/\") in erofs_rebuild_load_tree;\n  return -ENOMEM on failure.\n- lib/config.c: Add NULL check to erofs_fspath().\n- mkfs/main.c: Check strdup(extraopts) in mkfs_parse_one_compress_alg.\n- lib/remotes/s3.c: Check strdup() in s3erofs_parse_list_objects_one()\n  and s3erofs_create_object_iterator(). Properly clean up and return\n  errors.\n\nSigned-off-by: Saksham \u003caghi.saksham5@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260424075150.273557-1-aghi.saksham5@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "8cd872d284e349309504fcee86cd679eb7639884",
      "tree": "d8facb7f471ec82bc7b6c53564f4fbc3c43efc83",
      "parents": [
        "210670413056dc257368ab3df369ed0e14797ca1"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Mon Apr 20 23:17:52 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Apr 23 18:04:27 2026 +0800"
      },
      "message": "erofs-utils: lib: check NULL from erofs_rebuild_get_dentry()\n\nerofs_rebuild_get_dentry() returns NULL when the input path\nnormalizes to nothing (\".\", \"/\", \"//\", or paths that collapse via\n\"..\"). The tar hardlink branch and the S3 import loop only check\nIS_ERR() and then dereference the result.\n\nReject a hardlink target that resolves to root with -EISDIR, and\ntreat a root-normalized S3 key as the root inode itself.\n\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nFixes: 29728ba8f6f6 (\"erofs-utils: mkfs: support EROFS meta-only image generation from S3\")\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260420174752.50132-1-ch@vnsh.in\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "210670413056dc257368ab3df369ed0e14797ca1",
      "tree": "b57b27b98acf60aa8ad2a1b7baddff681cc50e49",
      "parents": [
        "8a579d4d692689eee0af40df91d91d4e632d4c0e"
      ],
      "author": {
        "name": "Yuezhang Mo",
        "email": "Yuezhang.Mo@sony.com",
        "time": "Wed Apr 22 15:37:06 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Apr 23 01:46:29 2026 +0800"
      },
      "message": "erofs-utils: mkfs: tar: support set fingerprint for `--sort\u003dnone`\n\nIf `--tar\u003df` and `--sort\u003dnone` are enabled, -\u003edatasource will be set\nto \"EROFS_INODE_DATA_SOURCE_NONE\".\n\nIn erofs_mkfs_begin_nondirectory(), erofs_set_inode_fingerprint() is\nonly be called if -\u003edatasource is EROFS_INODE_DATA_SOURCE_LOCALPATH\nor EROFS_INODE_DATA_SOURCE_DISKBUF.\n\nEROFS_INODE_DATA_SOURCE_NONE means that metadata is done and mkfs\ndump will change nothing, so use erofs_setxattr() to set fingerprint\nat settings -\u003edatasource to EROFS_INODE_DATA_SOURCE_NONE.\n\nSigned-off-by: Yuezhang Mo \u003cYuezhang.Mo@sony.com\u003e\nReviewed-by: Friendy Su \u003cfriendy.su@sony.com\u003e\nReviewed-by: Daniel Palmer \u003cdaniel.palmer@sony.com\u003e\nLink: https://lore.kernel.org/r/20260422073705.1828301-2-Yuezhang.Mo@sony.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "8a579d4d692689eee0af40df91d91d4e632d4c0e",
      "tree": "1a764b1d75b5530e36d2122c543d12c0a0e2d23b",
      "parents": [
        "88fc3faa57f711e3900db0692489552c4883212c"
      ],
      "author": {
        "name": "Lucas Karpinski",
        "email": "lkarpinski@nvidia.com",
        "time": "Wed Apr 15 10:08:10 2026 -0400"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Apr 18 00:25:41 2026 +0800"
      },
      "message": "erofs-utils: manpage: update to reflect fulldata support\n\nSpecify that data (fulldata) mode are now supported alongside rvsp when\nusing --clean\u003d{data|rvsp}.\n\nSigned-off-by: Lucas Karpinski \u003clkarpinski@nvidia.com\u003e\nLink: https://lore.kernel.org/r/20260415-merge-fs-v4-2-4c6860a62255@nvidia.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "88fc3faa57f711e3900db0692489552c4883212c",
      "tree": "735296c5c0a2027f94f3991858f2c27fc625db3b",
      "parents": [
        "2693b2f9f0775018b3400cc89e2e9c237a789d4e"
      ],
      "author": {
        "name": "Lucas Karpinski",
        "email": "lkarpinski@nvidia.com",
        "time": "Wed Apr 15 10:08:09 2026 -0400"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Apr 18 00:25:41 2026 +0800"
      },
      "message": "erofs-utils: mkfs: add rebuild FULLDATA for combined EROFS images\n\nAdd experimental support for merging multiple source images in mkfs. Each\nregular file record the source image path and its byte offset. During the\nblob mkfs opens the blob and pulls the payload in via erofs_io_xcopy.\n\nThis does not yet support chunk-based files or compressed images.\n\nSigned-off-by: Lucas Karpinski \u003clkarpinski@nvidia.com\u003e\nLink: https://lore.kernel.org/r/20260415-merge-fs-v4-1-4c6860a62255@nvidia.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "2693b2f9f0775018b3400cc89e2e9c237a789d4e",
      "tree": "b18c89b7bf3861f022010a8b85aebaf600aafbb4",
      "parents": [
        "397db5ab0d867e9ff7ade7ac98c6cb7b442d4fc3"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Apr 17 18:18:29 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Apr 18 00:24:15 2026 +0800"
      },
      "message": "erofs-utils: mount: add recovery support for S3 object mounts\n\nAssisted-by: qoder:(unknown)\nCc: Yuxuan Liu \u003ccdjddzy@foxmail.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260417101829.1214550-2-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "397db5ab0d867e9ff7ade7ac98c6cb7b442d4fc3",
      "tree": "cc277d616688a5434e156175b75d8a2fa435077f",
      "parents": [
        "6e5bf04ce2cf63961299f191748051547aafd744"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Apr 17 18:18:28 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sat Apr 18 00:24:10 2026 +0800"
      },
      "message": "erofs-utils: mount: support mounting EROFS stored as an AWS S3 object\n\nAllow mount.erofs to directly mount an EROFS filesystem stored as\nan AWS S3 object without downloading it first: (meta)data is fetched\non demand via HTTP range requests.\n\nThe source argument takes the form \"bucket/key\", e.g.:\n\n $ mount.erofs -t erofs.nbd \\\n    -o s3.endpoint\u003ds3.amazonaws.com,s3.passwd_file\u003d/path/to/passwd \\\n    my-bucket/dir/foo.erofs mnt\n\nIn addition, AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment\nvariables are also honored as fallback credentials.\n\nAssisted-by: qoder:(unknown)\nCc: Yuxuan Liu \u003ccdjddzy@foxmail.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260417101829.1214550-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "6e5bf04ce2cf63961299f191748051547aafd744",
      "tree": "498a70e668dbe3af69b7fc650082ed85487d17a8",
      "parents": [
        "162bd4eac494458e48368b6dde837b81215de302"
      ],
      "author": {
        "name": "Zhan Xusheng",
        "email": "zhanxusheng@xiaomi.com",
        "time": "Tue Apr 14 22:13:13 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 15 12:37:13 2026 +0800"
      },
      "message": "erofs-utils: tar: add missing NULL checks for GNU long name/link\n\nIn the GNU long name (\u0027L\u0027) and long link (\u0027K\u0027) handling, malloc()\nreturn values are not checked.  If st.st_size is excessively large\nfrom a crafted tar header, malloc() fails and returns NULL, then\nerofs_iostream_bread() writes to a NULL pointer causing a crash.\n\nAlso add the missing PATH_MAX bound check for \u0027L\u0027 entries, which\nthe \u0027K\u0027 path already had.\n\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nSigned-off-by: Zhan Xusheng \u003czhanxusheng@xiaomi.com\u003e\nLink: https://lore.kernel.org/r/20260414141313.46575-3-zhanxusheng@xiaomi.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "162bd4eac494458e48368b6dde837b81215de302",
      "tree": "2871e7dd6371355c6849cf23c2b6a74191fbcf53",
      "parents": [
        "8ade94c174734e57078134eacd5d632e25056863"
      ],
      "author": {
        "name": "Lucas Karpinski",
        "email": "lkarpinski@nvidia.com",
        "time": "Tue Apr 14 15:10:40 2026 -0400"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 15 12:34:13 2026 +0800"
      },
      "message": "erofs-utils: lib: add helper function erofs_uuid_unparse_as_tag\n\nAdd helper function for converting uuid to tag.\n\nSigned-off-by: Lucas Karpinski \u003clkarpinski@nvidia.com\u003e\nLink: https://lore.kernel.org/r/20260414-merge-fs-v3-2-266bd1367fd2@nvidia.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "8ade94c174734e57078134eacd5d632e25056863",
      "tree": "eb3d29bdf2f9d824d6a4e89f34541ce51c2f4309",
      "parents": [
        "4e24740fe46cf542db6154b4c04452e42463fe84"
      ],
      "author": {
        "name": "Lucas Karpinski",
        "email": "lkarpinski@nvidia.com",
        "time": "Tue Apr 14 15:10:39 2026 -0400"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 15 12:34:13 2026 +0800"
      },
      "message": "erofs-utils: lib: remove redundant if check\n\nRemove the if check since erofs_set_inode_fingerprint is already protected\nby the same if statement.\n\nSigned-off-by: Lucas Karpinski \u003clkarpinski@nvidia.com\u003e\nLink: https://lore.kernel.org/r/20260414-merge-fs-v3-1-266bd1367fd2@nvidia.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "4e24740fe46cf542db6154b4c04452e42463fe84",
      "tree": "c7f77383a11796ea7ef7850d7f51a0552c2e8b89",
      "parents": [
        "68fd54a45afda279849a90595dd90586cf2b6bfb"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Thu Mar 26 12:54:06 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 15 12:27:47 2026 +0800"
      },
      "message": "erofs-utils: tar: guard empty PAX path trimming\n\nAvoid reading eh-\u003epath[j - 1] when a PAX path record carries an\nempty value.\n\nCheck that j is non-zero before trimming trailing slashes from the\nduplicated path buffer.\n\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260326125406.61001-1-ch@vnsh.in\nSigned-off-by: Zhan Xusheng \u003czhanxusheng@xiaomi.com\u003e\nLink: https://lore.kernel.org/r/20260414141313.46575-2-zhanxusheng@xiaomi.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "68fd54a45afda279849a90595dd90586cf2b6bfb",
      "tree": "4b4f86f9a2a166f537a1c02c8564fb3bb3f157b1",
      "parents": [
        "7981788b3797337a629dd6a46a3129fad9aa9a5f"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Thu Apr 09 17:44:15 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 15 12:20:02 2026 +0800"
      },
      "message": "erofs-utils: lib: fix packed xattr prefix seek\n\nerofs_xattr_flush_name_prefixes() records the current packed file\noffset, writes xattr prefixes with erofs_io_pwrite(), and then seeks\nback to the new absolute end position.\n\nUse SEEK_SET for that final lseek(). SEEK_CUR adds the tracked offset\nto the unchanged file position and can leave the packed file offset too\nfar forward.\n\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260409174415.93704-1-ch@vnsh.in\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "7981788b3797337a629dd6a46a3129fad9aa9a5f",
      "tree": "1797b01d42e08e0430794162a9e35c7618bea430",
      "parents": [
        "58c3351d5b4b0fc5e4a05d2200c1cf9f85902899"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Thu Apr 09 17:33:10 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Apr 10 01:49:51 2026 +0800"
      },
      "message": "erofs-utils: lib: fix get_unaligned_le64() return type\n\nget_unaligned_le64() reads a 64-bit little-endian value but is\ndeclared to return u32. Return u64 so callers do not lose the upper\n32 bits.\n\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260409173310.91143-1-ch@vnsh.in\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "58c3351d5b4b0fc5e4a05d2200c1cf9f85902899",
      "tree": "50b47e42b388b351d8d2ecb415537fa16039c9f0",
      "parents": [
        "d6d0b8a31354104ede464568fc1253c51b9ec36c"
      ],
      "author": {
        "name": "Nithurshen",
        "email": "nithurshen.dev@gmail.com",
        "time": "Sun Apr 05 12:02:08 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 07 22:38:12 2026 +0800"
      },
      "message": "erofs-utils: s3: fix memory leak in s3erofs_create_object_iterator\n\nIn s3erofs_create_object_iterator(), if the parsed prefix length\nexceeds S3EROFS_PATH_MAX, the function aborts and returns an\n-EINVAL error pointer. However, the \u0027iter\u0027 structure was already\nallocated via calloc() and left unfreed, causing a memory leak.\n\nThis commit adds the missing free(iter) call in the error path to\nprevent leaking memory when excessively long S3 bucket paths are\nprovided.\n\nSigned-off-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nReviewed-by: Yifan Zhao \u003cstopire@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260405063208.4617-1-nithurshen.dev@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "d6d0b8a31354104ede464568fc1253c51b9ec36c",
      "tree": "ffe0ff2526617e7770efc8ba2037950933ed0017",
      "parents": [
        "72828eef39a5dab7c149c9298fa55bdac607b09c"
      ],
      "author": {
        "name": "Deepak Pathik",
        "email": "deepakpathik2005@gmail.com",
        "time": "Thu Apr 02 16:56:45 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 07 18:04:13 2026 +0800"
      },
      "message": "erofs-utils: lib: fix fd leak in erofs_metamgr_init()\n\nIn erofs_metamgr_init(), erofs_tmpfile() returns a file\ndescriptor stored in m2gr-\u003evf.fd. If the subsequent\nerofs_buffer_init() call fails, the function returns -ENOMEM\nwithout closing this file descriptor.\n\nThe caller erofs_metadata_init() handles this failure at\nerr_free, which only frees the m2gr struct. The fd is\ntherefore leaked with no remaining reference to close it.\n\nThe success path correctly cleans up via erofs_metamgr_exit(),\nwhich calls erofs_io_close(\u0026m2gr-\u003evf). Mirror that behaviour\non the error path by closing the fd before returning.\n\nSigned-off-by: Deepak Pathik \u003cdeepakpathik2005@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260402112645.49711-1-deepakpathik2005@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "72828eef39a5dab7c149c9298fa55bdac607b09c",
      "tree": "0d8ffb1ce590dc2dd4ec8fdb58fb54e815e8120f",
      "parents": [
        "da3be8c4135a97db3cd2534373ce3b161e6e3d8e"
      ],
      "author": {
        "name": "Zhan Xusheng",
        "email": "zhanxusheng@xiaomi.com",
        "time": "Tue Apr 07 17:21:41 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 07 17:48:29 2026 +0800"
      },
      "message": "erofs-utils: lib: fix erofs_sys_lsetxattr() returning positive errno\n\nerofs_sys_lsetxattr() returns bare `errno` (a positive value) on\nfailure, unlike its sibling erofs_sys_lgetxattr() which correctly\nreturns `-errno`.\n\nFix by returning -errno, consistent with erofs_sys_lgetxattr().\n\nFixes: e0d85fc5a282 (\"erofs-utils: lib: introduce erofs_sys_lsetxattr()\")\nSigned-off-by: Zhan Xusheng \u003czhanxusheng@xiaomi.com\u003e\nLink: https://lore.kernel.org/r/20260407092141.11697-1-zhanxusheng@xiaomi.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "da3be8c4135a97db3cd2534373ce3b161e6e3d8e",
      "tree": "23bdac7e48620d76e15d54bcb6e35df1bd6e72f4",
      "parents": [
        "71ffe317fa786ccb77bde56514f51d42570f3074"
      ],
      "author": {
        "name": "Zhan Xusheng",
        "email": "zhanxusheng@xiaomi.com",
        "time": "Fri Apr 03 21:05:46 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 07 14:33:17 2026 +0800"
      },
      "message": "erofs-utils: lib: handle 48-bit blocks/uniaddr for extra devices\n\nerofs_write_device_table() only writes blocks_lo and uniaddr_lo to\nthe on-disk device slot, but does not write blocks_hi or uniaddr_hi.\nSimilarly, erofs_init_devices() only reads the _lo fields for extra\ndevices.\n\nFor extra devices whose blocks or uniaddr exceed 32 bits in a 48-bit\nEROFS image, the upper bits are silently lost in both read and write\npaths.  This is inconsistent with the primary device handling, which\ncorrectly writes blocks_hi (super.c:231) and reads it (super.c:125).\n\nAlso sync the erofs_deviceslot on-disk definition with the kernel:\nblocks_hi should be __le16 (not __le32), matching the 48-bit design\nwhere all block address high parts are 16-bit.\n\nA corresponding kernel fix has been applied:\n  (\"erofs: handle 48-bit blocks/uniaddr for extra devices\")\n\nSigned-off-by: Zhan Xusheng \u003czhanxusheng@xiaomi.com\u003e\nLink: https://lore.kernel.org/r/20260403130546.76579-3-zhanxusheng@xiaomi.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "71ffe317fa786ccb77bde56514f51d42570f3074",
      "tree": "498efd3047b71b6bb657ba84a39eff193bc8f0bd",
      "parents": [
        "50f1be7aba949c87fec5129a31ebc2779d457f00"
      ],
      "author": {
        "name": "Zhan Xusheng",
        "email": "zhanxusheng@xiaomi.com",
        "time": "Fri Apr 03 21:05:45 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Apr 07 14:33:08 2026 +0800"
      },
      "message": "erofs-utils: lib: fix block count report when 48-bit layout is on\n\nSource kernel commit: 0b96d9bed324a1c1b7d02bfb9596351ef178428d\n\nFixes: eeceb2289513 (\"erofs-utils: implement 48-bit block addressing for unencoded inodes\")\nSigned-off-by: Zhan Xusheng \u003czhanxusheng@xiaomi.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "50f1be7aba949c87fec5129a31ebc2779d457f00",
      "tree": "cfdff796ce24c3031750c583dd8fec4044cc6196",
      "parents": [
        "c0a809cf5dccf9956b573bdd2ae51f1f100f9f90"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Apr 02 14:09:06 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Apr 02 16:32:53 2026 +0800"
      },
      "message": "erofs-utils: switch other source files into MIT license\n\nLet\u0027s switch other source files to MIT license since we\u0027re absolutely\nnot working on secret rocket science, so licenses should not be\na bottleneck to innovation in the Cloud Native and AI era.\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nReviewed-by: Hongbo Li \u003clihongbo22@huawei.com\u003e\nReviewed-by: Chunhai Guo \u003cguochunhai@vivo.com\u003e\nReviewed-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260402060907.2268323-2-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "c0a809cf5dccf9956b573bdd2ae51f1f100f9f90",
      "tree": "2bc55b49994637af5e1334ce46b0a0e03345a5d5",
      "parents": [
        "5b4128b39fcae6d271cde1b53d344a0203ba96ba"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Apr 02 14:09:05 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Apr 02 16:32:40 2026 +0800"
      },
      "message": "erofs-utils: lib: switch to GPL-2.0+ OR MIT dual license\n\nApache-2.0 is still too strict for some 3rd-party integration.\n\nLet\u0027s switch to GPL-2.0+ OR MIT dual license since we\u0027re absolutely\nnot working on secret rocket science, so licenses should not be a\nbottleneck to innovation in the Cloud Native and AI era.\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nReviewed-by: Chunhai Guo \u003cguochunhai@vivo.com\u003e\nReviewed-by: Hongbo Li \u003clihongbo22@huawei.com\u003e\nReviewed-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260402060907.2268323-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "5b4128b39fcae6d271cde1b53d344a0203ba96ba",
      "tree": "0bab9e2cf29f94c4e3c6df6e994e02bf32832231",
      "parents": [
        "f9bb161f2c99b0c39a55ece0d0e925b21ad1c1ce"
      ],
      "author": {
        "name": "Utkal Singh",
        "email": "singhutkal015@gmail.com",
        "time": "Wed Apr 01 06:23:55 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 01 16:12:56 2026 +0800"
      },
      "message": "erofs-utils: lib: fix pthread resource leak in erofs_alloc_workqueue()\n\nWhen malloc() fails to allocate wq-\u003eworkers, erofs_alloc_workqueue()\nreturns -ENOMEM without cleaning up previously initialized mutex and\ncondition variables. Destroy them before returning to avoid a resource leak.\n\nFixes: 13f72685d40f (\"erofs-utils: introduce multi-threading framework\")\nSigned-off-by: Utkal Singh \u003csinghutkal015@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260401062356.5320-1-singhutkal015@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "f9bb161f2c99b0c39a55ece0d0e925b21ad1c1ce",
      "tree": "0ccacb0a420a9578fb32d1d6d67a8ebc345875a8",
      "parents": [
        "b6d03319e6b971acea2d0b290ebf6a79ea198699"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Tue Mar 31 21:14:01 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Apr 01 00:01:23 2026 +0800"
      },
      "message": "erofs-utils: mount: add fanotify pre-content OCI backend\n\nAdd a fanotify-backed mount mode for OCI sources that uses\nFAN_PRE_ACCESS permission events to populate a local sparse file\non demand before the kernel consumes the requested data.\n\nThe new erofs.fanotify subtype resolves a single OCI blob,\ncreates a sparse cache file, and runs a fanotify event loop\nthat fetches missing ranges before allowing access to proceed.\n\nA pid file recording the canonical mountpoint and sparse-file\nsource is written for unmount to track the corresponding worker.\n\nAssisted-by: Codex:GPT-5.4\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260331131401.901584-1-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "b6d03319e6b971acea2d0b290ebf6a79ea198699",
      "tree": "35a3cd5717daacdb622aa26fdb1d72518c155146",
      "parents": [
        "94a959d907dfbda48fde316f6a60e831056f42a3"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Mon Mar 30 20:44:01 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 31 23:58:21 2026 +0800"
      },
      "message": "erofs-utils: mount: generalize nbd source types for multi-backend support\n\nRename nbd-specific source type names to generic mount-level names in\npreparation for adding ublk backend support.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\nLink: https://lore.kernel.org/r/20260330124402.899394-1-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "94a959d907dfbda48fde316f6a60e831056f42a3",
      "tree": "cac238a937d99bb36a4d799b535d0a680c96af8b",
      "parents": [
        "5cd3385662e1a7721b72570b04e9aa569ead01c7"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Tue Mar 31 15:51:14 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 31 16:09:28 2026 +0800"
      },
      "message": "erofs-utils: tar: handle gzread errors\n\nTreat gzread() errors as I/O failures before updating the stream\nbuffer state.\n\nWithout that, a negative gzread() result could underflow ios-\u003etail\nand leave the reader in a corrupted state.\n\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260331075114.1015683-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "5cd3385662e1a7721b72570b04e9aa569ead01c7",
      "tree": "a9b490e84ad4dd1845e521a1a28137dd74355e00",
      "parents": [
        "b84920a96a46c4686f9f0250274d5c8ab5f58e3e"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Tue Mar 24 16:16:08 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 27 10:18:52 2026 +0800"
      },
      "message": "erofs-utils: tar: bound-check PAX header parsing\n\nNUL-terminate PAX header buffers before parsing them with sscanf().\n\nAlso reject PAX header lengths no less than UINT_MAX.\n\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nLink: https://lore.kernel.org/r/20260324161608.36697-1-ch@vnsh.in\n[ Gao Xiang: simplify a bit. ]\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "b84920a96a46c4686f9f0250274d5c8ab5f58e3e",
      "tree": "9922cc36efc68b898cea2cee971d1c95a8263495",
      "parents": [
        "9e6d87cbdab56772951aebc34095b0dfca28b9fa"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Thu Mar 26 10:32:54 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 27 09:58:06 2026 +0800"
      },
      "message": "erofs-utils: tar: fix multi-chunk metadata reads\n\nAdvance the destination buffer in erofs_iostream_bread() after each\nerofs_iostream_read() call.\n\nWithout that, metadata reads that span multiple stream chunks keep\noverwriting the start of the output buffer, which can corrupt PAX\nheaders, GNU long names, long links, and other buffered metadata.\n\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nFixes: e3dfe4b8db26 (\"erofs-utils: mkfs: support tgz streams for tarerofs\")\nLink: https://lore.kernel.org/r/20260326103254.32152-1-ch@vnsh.in\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "9e6d87cbdab56772951aebc34095b0dfca28b9fa",
      "tree": "31cc60a9c14cd47d010a8bb1af859a28d6f88140",
      "parents": [
        "b0df634780792cf3678a317b349ddc090d5e8daa"
      ],
      "author": {
        "name": "Vansh Choudhary",
        "email": "ch@vnsh.in",
        "time": "Sat Mar 21 18:02:39 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Mar 23 12:29:43 2026 +0800"
      },
      "message": "erofs-utils: mkfs: bound-check s3 passwd_file credentials\n\nmkfs_parse_s3_cfg_passwd() only checked the total passwd_file size,\nwhich left two issues in the parser:\n\n- a file exactly as large as the temporary buffer left no room for the\n  trailing NUL byte;\n- either credential could still exceed its destination buffer after the\n  string is split at \u0027:\u0027.\n\nUse sizeof(buf) for the temporary buffer check and reject overlong\naccess key or secret key fields before copying them out.\n\nThis keeps the existing parsing flow intact while making the bounds\nchecks match the actual destination sizes.\n\nSigned-off-by: Vansh Choudhary \u003cch@vnsh.in\u003e\nReviewed-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260321180239.36249-1-ch@vnsh.in\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "b0df634780792cf3678a317b349ddc090d5e8daa",
      "tree": "db27c2d9819d8278c62d42f36197e9c4d24d5381",
      "parents": [
        "508b1a92e5475f5af56b381b09431f62351c9915"
      ],
      "author": {
        "name": "Ajay Rajera",
        "email": "newajay.11r@gmail.com",
        "time": "Sat Mar 21 15:03:04 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Mar 23 12:29:30 2026 +0800"
      },
      "message": "erofs-utils: lib: fix gzran builder memory leak\n\nWhen inflateInit2() fails, erofs_gzran_builder_init() returns\nERR_PTR(-EFAULT) but forgets to free the previously allocated\nerofs_gzran_builder struct (gb), resulting in a memory leak.\n\nFix by calling free(gb) before returning the error.\n\nFixes: 407c0e4d162c (\"erofs-utils: tar: support gzip index generation\")\nSigned-off-by: Ajay Rajera \u003cnewajay.11r@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260321093304.1701-1-newajay.11r@gmail.com\nReviewed-and-tested-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "508b1a92e5475f5af56b381b09431f62351c9915",
      "tree": "27db674b73e751df47eae406590b52c0eb48f172",
      "parents": [
        "8a7f31d811209b5f6c9bdd8b9dc14dd607db2d61"
      ],
      "author": {
        "name": "Ajay Rajera",
        "email": "newajay.11r@gmail.com",
        "time": "Sat Mar 21 12:44:55 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Sun Mar 22 20:00:18 2026 +0800"
      },
      "message": "erofs-utils: fuse: add missing return on getattr error\n\nerofsfuse_getattr() calls fuse_reply_err() when\nerofs_read_inode_from_disk() fails, but does not return\nafterwards. This causes the function to fall through to\nerofsfuse_fill_stat() with uninitialized inode data and then\ncall fuse_reply_attr(), sending a second reply to the same\nFUSE request.\n\nSending two replies to a single FUSE request is undefined\nbehavior in libfuse and typically triggers an assertion\nfailure or crash. The uninitialized inode data may also\nexpose garbage values to userspace.\n\nFix by adding the missing return after fuse_reply_err().\n\nSigned-off-by: Ajay Rajera \u003cnewajay.11r@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260321071455.1329-1-newajay.11r@gmail.com\nReviewed-and-tested-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "8a7f31d811209b5f6c9bdd8b9dc14dd607db2d61",
      "tree": "356332b94f848c8884637c238402adf11155b7bc",
      "parents": [
        "7ae77a5c1690dd9240f563974e0c38ed3cb4fa64"
      ],
      "author": {
        "name": "Shubham Sharma",
        "email": "smsharma3121@gmail.com",
        "time": "Fri Mar 20 07:29:47 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 20 17:32:50 2026 +0800"
      },
      "message": "erofs-utils: decompress: fix QPL job leak on error paths\n\nTwo early returns in z_erofs_decompress_qpl() after a successful\nz_erofs_qpl_get_job() skip the cleanup, leaking the job handle.\nUse goto out_inflate_end instead.\n\nSigned-off-by: Shubham Sharma \u003csmsharma3121@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260320015947.2325-1-smsharma3121@gmail.com\nCloses: https://github.com/erofs/erofs-utils/issues/48\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "7ae77a5c1690dd9240f563974e0c38ed3cb4fa64",
      "tree": "26d92cdbbebb48f0900bb81d9353a3a092c4e4e0",
      "parents": [
        "b67812ce4eb5510e942675ad3bb7ea1f5697c39e"
      ],
      "author": {
        "name": "Utkal Singh",
        "email": "singhutkal015@gmail.com",
        "time": "Sat Mar 14 22:07:13 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 20 10:34:34 2026 +0800"
      },
      "message": "erofs-utils: lib: fix missing -EIO in z_erofs_decompress_zstd\n\nWhen ZSTD_decompress() produces fewer bytes than expected, the\nerror path logged an error and did \u0027goto out\u0027 without setting\nret to -EIO.  The caller in data.c checks (ret \u003c 0), so a\npositive ret was silently treated as success, potentially\nconsuming corrupted data without any error being propagated.\n\nSet ret \u003d -EIO before the jump, and add an explicit ret \u003d 0\non the success path for symmetry with other decompressors.\n\nFixes: ed2f7cf8b748 (\"erofs-utils: add preliminary zstd support [x]\")\nSigned-off-by: Utkal Singh \u003csinghutkal015@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260314220713.26144-1-singhutkal015@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "b67812ce4eb5510e942675ad3bb7ea1f5697c39e",
      "tree": "b0a66a112a32981375647f00077c33fde4054470",
      "parents": [
        "cade811d8096621da5360921b04aa396272214e3"
      ],
      "author": {
        "name": "Nithurshen",
        "email": "nithurshen.dev@gmail.com",
        "time": "Wed Mar 18 11:33:19 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 20 10:11:30 2026 +0800"
      },
      "message": "erofs-utils: fix thread join loop in erofs_destroy_workqueue\n\nCurrently, `erofs_destroy_workqueue` returns immediately if a single\n`pthread_join` fails. However, it does not log the failure, making it\ndifficult to debug if a worker thread gets stuck.\n\nAdd an error log when `pthread_join` fails. Retain the early return\nbehavior to safely abort the teardown process, ensuring we do not\nfree the synchronization primitives and worker array while threads\nare potentially still alive (avoiding a use after free).\n\nSigned-off-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260318060319.13191-1-nithurshen.dev@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "cade811d8096621da5360921b04aa396272214e3",
      "tree": "14c4d16d692a8caa5bd58e7cdda278ed1cd35bc5",
      "parents": [
        "17215b4dd8f8d9e15ec005823284f84d92e23742"
      ],
      "author": {
        "name": "Matthew Lear",
        "email": "matthew.lear@raspberrypi.com",
        "time": "Tue Mar 17 05:24:48 2026 -0700"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 22:43:34 2026 +0800"
      },
      "message": "erofs-utils: lib: guard gzran zlib.h inclusion\n\ngzran.c unconditionally includes zlib.h which doesn\u0027t compile on\nsystems without zlib.\n\nSigned-off-by: Matthew Lear \u003cmatthew.lear@raspberrypi.com\u003e\nLink: https://lore.kernel.org/r/CAPrOGNBjaSxMRnwpcear77Tk_6LnAhREA6aw-P1pAz4oMkdenA@mail.gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "17215b4dd8f8d9e15ec005823284f84d92e23742",
      "tree": "a4e645538f683fab1bd5cce2227328eeda8963e5",
      "parents": [
        "3147fa4000d878e2d3d1a0cff18d59bf38b718fb"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 16:48:27 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 17:05:12 2026 +0800"
      },
      "message": "erofs-utils: avoid infinite loops due to corrupted subpage compact indexes\n\nSource kernel commit: e13d315ae077bb7c3c6027cc292401bc0f4ec683\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260317084827.3228413-2-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "3147fa4000d878e2d3d1a0cff18d59bf38b718fb",
      "tree": "488726aad3bbfb00b9bb025e5b5bfaeafdfbbbd1",
      "parents": [
        "2e8698e4d28593fc5f5f94f83a17bb3c25fd8208"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 16:48:26 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 17:05:12 2026 +0800"
      },
      "message": "erofs-utils: lib: fix invalid algorithm for encoded extents\n\nSource kernel commit: 131897c65e2b86cf14bec7379f44aa8fbb407526\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260317084827.3228413-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "2e8698e4d28593fc5f5f94f83a17bb3c25fd8208",
      "tree": "c9a1c3f407d51fb5c4d032a3d77eb1f7e3610739",
      "parents": [
        "7698eb3ed4bff197811916d0f4f92a0077dc9cfe"
      ],
      "author": {
        "name": "Utkal Singh",
        "email": "singhutkal015@gmail.com",
        "time": "Sun Mar 15 16:02:16 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 15:32:50 2026 +0800"
      },
      "message": "erofs-utils: lib: fix wrong NULL check after erofs_balloc() in metabox\n\nerofs_balloc() returns an error pointer via ERR_PTR(-errno) on failure,\nnever NULL. The previous check:\n\n    if (!bh)\n\nfails to detect error pointers since ERR_PTR encodes errors as non-zero\npointers near ULONG_MAX. This causes PTR_ERR(bh) on the next line to be\nunreachable, and the subsequent erofs_mapbh() call to receive an invalid\npointer, potentially causing a crash or silent memory corruption.\n\nReplace with the correct IS_ERR() pattern which properly detects all\nerror pointer values returned by erofs_balloc().\n\nFixes: 7928074b7643 (\"erofs-utils: introduce metadata compression [metabox]\")\nSigned-off-by: Utkal Singh \u003cutkalsingh059@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260315160216.17079-1-singhutkal015@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "7698eb3ed4bff197811916d0f4f92a0077dc9cfe",
      "tree": "8bf46b9c6ffeccc647c56ee17d89d2a601d9d118",
      "parents": [
        "4e23067a26573c073c5e4cfb062280a1aea19868"
      ],
      "author": {
        "name": "Nithurshen",
        "email": "nithurshen.dev@gmail.com",
        "time": "Mon Mar 16 16:29:11 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 10:23:24 2026 +0800"
      },
      "message": "erofs-utils: fsck: add warning for unsupported file types during extraction\n\nWhen extracting an image using fsck.erofs, if the tool encounters\nan unsupported file type (falling into the default case of the\nswitch statement), it currently skips extraction silently and jumps\nstraight to verifying the data chunk layout.\n\nAdd a warning message to the default case so the user is explicitly\ninformed that a specific file type was not extracted, rather than\nfailing silently.\n\nSigned-off-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260316105911.5571-3-nithurshen.dev@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "4e23067a26573c073c5e4cfb062280a1aea19868",
      "tree": "cfdae829f0afb66b63a1efccd7eeb0a6656dd80f",
      "parents": [
        "296ac50bcd63465c08e0525a98fb539af8b1916b"
      ],
      "author": {
        "name": "Nithurshen",
        "email": "nithurshen.dev@gmail.com",
        "time": "Mon Mar 16 16:29:10 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 17 10:23:24 2026 +0800"
      },
      "message": "erofs-utils: dump: remove redundant conditional branch in filesize distribution\n\nThe logic for printing the filesize distribution chart in dump.erofs\ncontained an else if (i \u003c\u003d 6) branch that executed the exact same\nsprintf statement as the fallback else branch.\n\nRemove the redundant else if condition to clean up the code and\nsimplify the logic.\n\nSigned-off-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260316105911.5571-2-nithurshen.dev@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "296ac50bcd63465c08e0525a98fb539af8b1916b",
      "tree": "9dfd034cf525ee57644b67549b3db2329cc69681",
      "parents": [
        "ba739ceb11b264cdbd2b4dc6cf54281894641773"
      ],
      "author": {
        "name": "Nithurshen",
        "email": "nithurshen.dev@gmail.com",
        "time": "Thu Mar 05 06:18:35 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Mar 16 18:00:36 2026 +0800"
      },
      "message": "erofs-utils: lib: fix memory leak in z_erofs_qpl_get_job()\n\nIf qpl_init_job() fails, the previously allocated job memory\nis not freed before returning. Fix this by adding a `free(job)`\ncall in the error path.\n\nSigned-off-by: Nithurshen \u003cnithurshen.dev@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260305004835.39574-1-nithurshen.dev@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "ba739ceb11b264cdbd2b4dc6cf54281894641773",
      "tree": "40a52419cefe22c88b623bcfacfd3d2ae9272a69",
      "parents": [
        "0debfae51eca578b24ae5f392c61e4d5306c13c4"
      ],
      "author": {
        "name": "Utkal Singh",
        "email": "singhutkal015@gmail.com",
        "time": "Wed Mar 04 17:03:27 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Mar 16 17:57:50 2026 +0800"
      },
      "message": "erofs-utils: lib: fix undefined behavior in kite_deflate writebits()\n\nWhen bitpos equals sizeof(inflightbits) * 8 (i.e., 32), the shift\n\u0027v \u003c\u003c s-\u003ebitpos\u0027 has undefined behavior per C11 6.5.7p3, which states\nthat if the shift amount is greater than or equal to the width of the\npromoted left operand, the behavior is undefined.\n\nThe original code used a branchless mask \u0027(!rem - 1)\u0027 to zero out the\nresult when rem \u003d\u003d 0, but the undefined shift is still evaluated before\nthe mask is applied. Replace with a conditional to avoid the shift\nentirely when rem is zero.\n\nFound via UBSan (-fsanitize\u003dundefined). Similar to commit 2cd511441c2c\n(\"erofs-utils: lib: fix undefined behavior in zstd dict_size bit\nshift\").\n\nSigned-off-by: Utkal Singh \u003csinghutkal015@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260304170327.14908-1-singhutkal015@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "0debfae51eca578b24ae5f392c61e4d5306c13c4",
      "tree": "787a0b61c3f6ffbc848703cfd05bce4ba8f90842",
      "parents": [
        "d3fbccba6e409c100843563b416c47cd82c87ca0"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 06 15:17:57 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Mar 06 21:21:45 2026 +0800"
      },
      "message": "erofs-utils: tar: avoid linux-like hard-coded makedev()\n\nThis code needs a way to construct a valid st_rdev (dev_t) from major\nand minor device numbers, so that erofs_new_encode_dev() can later\nconvert the dev_t into the EROFS on-disk rdev format.\n\nBut it never uses makedev() to generate dev_t; instead,\nerofs_new_encode_dev() uses major()/minor(), so the usage is unpaired\nand the original one works only on the Linux platform and non-portable.\n\nReported-by: Kern Walster \u003ckern.walster@gmail.com\u003e\nCloses: https://github.com/erofs/go-erofs/pull/9#issuecomment-4008973934\nFixes: 95d315fd7958 (\"erofs-utils: introduce tarerofs\")\nCc: Derek McGowan \u003cderek@mcg.dev\u003e\nLink: https://lore.kernel.org/r/20260306071757.4000825-1-hsiangkao@linux.alibaba.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "d3fbccba6e409c100843563b416c47cd82c87ca0",
      "tree": "ae7cf4ac32f3faa7ff6efa933893b6a1584c9dd8",
      "parents": [
        "a7094861fac0f5435423bbae6c8cbb1ad4ede896"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Mar 04 00:00:00 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Mar 04 00:00:00 2026 +0800"
      },
      "message": "erofs-utils: release 1.9.1\n\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "a7094861fac0f5435423bbae6c8cbb1ad4ede896",
      "tree": "d2e2a64943b286b4306f8a7da85937805997bdba",
      "parents": [
        "21a6f8271df3a96f44f5223b974232375fa06056"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Mar 04 00:00:00 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "xiang@kernel.org",
        "time": "Wed Mar 04 00:00:00 2026 +0800"
      },
      "message": "erofs-utils: fix interlaced plain identification for encoded extents\n\nSource kernel commit: 4a2d046e4b13202a6301a993961f5b30ae4d7119\n\nSigned-off-by: Gao Xiang \u003cxiang@kernel.org\u003e\n"
    },
    {
      "commit": "21a6f8271df3a96f44f5223b974232375fa06056",
      "tree": "9f310ad3a19b3907f874e9bf90949a49ec7b3f4d",
      "parents": [
        "2ce4b1834940f951ea1cd16376381536dc5c8a1f"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 03 18:19:24 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 03 18:21:08 2026 +0800"
      },
      "message": "erofs-utils: mount: handle `-oloop` in the mount helper\n\nGenerally, mount(8) does not pass the `-oloop` option to the mount\nhelper.\n\nHowever, in case that users invoke `mount.erofs` directly, let\u0027s\nhandle this option here as well.\n\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260303101924.1541818-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "2ce4b1834940f951ea1cd16376381536dc5c8a1f",
      "tree": "5b7888bce1494e6aa71d6e9cd754d5aa5dc5596c",
      "parents": [
        "aa169fb1e073555bf1e1e658f8f2c16b73f999ad"
      ],
      "author": {
        "name": "lishixian",
        "email": "lishixian8@huawei.com",
        "time": "Tue Mar 03 10:39:11 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 03 14:22:37 2026 +0800"
      },
      "message": "erofs-utils: lib: fix xattr crash in rebuild path when source has xattr\n\nWhen rebuilding from source EROFS images, erofs_read_xattrs_from_disk()\nis called for inodes that have xattr. At that point inode-\u003esbi points to\nthe source image\u0027s sbi, which is opened read-only and never gets\nerofs_xattr_init(), so sbi-\u003examgr is NULL. get_xattritem(sbi) then\ndereferences xamgr and crashes with SIGSEGV.\n\nFix by using the build target\u0027s xamgr when initializing src\u0027s sbi.\n\nReported-by: Yixiao Chen \u003c489679970@qq.com\u003e\nFixes: https://github.com/erofs/erofs-utils/issues/42\nSigned-off-by: lishixian \u003clishixian8@huawei.com\u003e\nReviewed-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nTested-by: Lucas Karpinski \u003clkarpinski@nvidia.com\u003e\nLink: https://lore.kernel.org/r/20260303023911.792454-1-lishixian8@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "aa169fb1e073555bf1e1e658f8f2c16b73f999ad",
      "tree": "82c7035f4264913ba607621acb27f150a1f34f72",
      "parents": [
        "b094fe375eeb10dbf4ee22fc759cdeb1ad2a1eac"
      ],
      "author": {
        "name": "David Scott",
        "email": "dave@recoil.org",
        "time": "Mon Mar 02 19:01:07 2026 +0000"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Tue Mar 03 10:37:36 2026 +0800"
      },
      "message": "erofs-utils: mkfs: fix CPU spin using --tar\u003df when stdin is closed\n\nOn my Mac I saw a CPU spin which looked like this:\n```\nCall graph:\n    2192 Thread_132504   DispatchQueue_1: com.apple.main-thread  (serial)\n      2192 start  (in dyld) + 6992  [0x185bcbda4]\n        2192 main  (in mkfs.erofs) + 7916  [0x10253a6d0]\n          2192 tarerofs_parse_tar  (in mkfs.erofs) + 5492  [0x102551d48]\n            2187 tarerofs_write_file_data  (in mkfs.erofs) + 140  [0x102551fe0]\n            + 2187 write  (in libsystem_kernel.dylib) + 8  [0x185f47834]\n            4 tarerofs_write_file_data  (in mkfs.erofs) + 116  [0x102551fc8]\n            + 4 erofs_iostream_read  (in mkfs.erofs) + 16,36,...  [0x10254fa28,0x10254fa3c,...]\n            1 tarerofs_write_file_data  (in mkfs.erofs) + 140  [0x102551fe0]\n```\n\nThe input stream was closed prematurely, so the reads returned 0 (EOF),\nwhich wasn\u0027t considered an error.\n\nTreat return of 0 (EOF) as an error.\n\nReproduce by:\n```\ndd if\u003d/dev/zero bs\u003d1024 count\u003d4 2\u003e/dev/null \u003e /tmp/testfile\nCOPYFILE_DISABLE\u003d1 tar cf - -C /tmp testfile | head -c 2048 \u003e /tmp/truncated.tar\n./mkfs/mkfs.erofs --tar\u003df output.erofs \u003c /tmp/truncated.tar\n```\nBefore the patch this will hang, after it should fail as expected.\n\n(COPYFILE_DISABLE tells mac to avoid putting extra stuff in the tar)\n\nCloses: https://github.com/erofs/erofs-utils/issues/43\nSigned-off-by: David Scott \u003cdave@recoil.org\u003e\nLink: https://lore.kernel.org/r/aaXec59gbj8fIXai@beast\n[ Gao Xiang: fix \"warning: \u0027nread\u0027 may be used uninitialized\". ]\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "b094fe375eeb10dbf4ee22fc759cdeb1ad2a1eac",
      "tree": "a297d91519b7a908dbc5ca786abaaafdf2aa00df",
      "parents": [
        "c2b6d37f86b1a1057cf39701c6860133e66ecc9e"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "yifan.yfzhao@foxmail.com",
        "time": "Sun Mar 01 20:12:33 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Mon Mar 02 15:11:47 2026 +0800"
      },
      "message": "erofs-utils: mount: fix flag-clearing bug and missing error check in parse_flagopts\n\nThe MS_* constants in glibc\u0027s \u003csys/mount.h\u003e are defined as members of\nan anonymous enum whose underlying type is unsigned int (because the\nlast member, MS_NOUSER, is initialised with \u00271U \u003c\u003c 31\u0027).  Therefore\n~MS_RDONLY, ~MS_NOSUID, etc. are unsigned int values that, when stored\ninto a \u0027long flags\u0027 field, undergo zero-extension, not sign-extension.\nAs a result every \u0027clearing\u0027 entry (rw, suid, dev, exec, async, atime,\ndiratime, norelatime, loud) produced a positive long, so the\nopts[i].flags \u003c 0 guard in erofsmount_parse_flagopts() was never true\nand the corresponding flags were set rather than cleared.\n\nFix by casting the operand to long before applying bitwise-NOT,\nensuring the result is a negative long with the correct bit pattern.\n\nAlso add the missing return-value check for erofsmount_parse_flagopts()\nin the \u0027-o\u0027 option handler.\n\nReported-by: Robert Rose \u003crobert.rose@mailbox.org\u003e\nCloses: https://github.com/NixOS/nixpkgs/issues/494653\nSigned-off-By: Yifan Zhao \u003cyifan.yfzhao@foxmail.com\u003e\nReviewed-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/tencent_003DF0338EAB42F1573BC0CCFBEACE321E06@qq.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "c2b6d37f86b1a1057cf39701c6860133e66ecc9e",
      "tree": "19b8633de2266b7a76ff416954bb884d84f9624c",
      "parents": [
        "5a1de8fd101061d1ff4e6322fd84d5bbc4962d68"
      ],
      "author": {
        "name": "Chengyu Zhu",
        "email": "hudsonzhu@tencent.com",
        "time": "Fri Feb 27 11:34:44 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Fri Feb 27 14:25:48 2026 +0800"
      },
      "message": "erofs-utils: mount: auto-detect platform for OCI recovery files\n\nerofsmount_write_recovery_oci() writes source-\u003eocicfg.platform into\nrecovery files directly, but it could be NULL when not explicitly\nconfigured, causing reattach failures.\n\nFix this by falling back to ocierofs_get_platform_spec().  Also\nrefactor it to return a compile-time string literal instead of\nasprintf(), eliminating the need for callers to free() the result.\n\nSigned-off-by: Chengyu Zhu \u003chudsonzhu@tencent.com\u003e\nLink: https://lore.kernel.org/r/20260227033444.99576-1-hudson@cyzhu.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "5a1de8fd101061d1ff4e6322fd84d5bbc4962d68",
      "tree": "994260952188be0b408939d88752728bd772b392",
      "parents": [
        "bdbb5270736ca9b08c027e6d5e65e581ef615c8a"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Thu Feb 26 15:18:07 2026 +0900"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Feb 26 15:02:43 2026 +0800"
      },
      "message": "erofs-utils: fsck: support extracting subtrees\n\nAdd --nid and --path options to fsck.erofs to allow users to check\nor extract specific sub-directories or files instead of the entire\nfilesystem.\n\nThis is useful for targeted data recovery or verifying specific\nimage components without the overhead of a full traversal.\n\nSigned-off-by: Inseob Kim \u003cinseob@google.com\u003e\nLink: https://lore.kernel.org/r/20260226061807.4101174-1-inseob@google.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "bdbb5270736ca9b08c027e6d5e65e581ef615c8a",
      "tree": "aba2edbdfe78910c7866e041d27231dfb2232759",
      "parents": [
        "fc3a86f379cb7bdd28efb7da6cb6d7dae4770fba"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Thu Feb 26 10:00:49 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Feb 26 13:04:58 2026 +0800"
      },
      "message": "erofs-utils: lib: fix several compile warnings under glibc-2.43\n\nSince glibc-2.43 and ISO C23 [1]:\n- For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,\n  strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return\n  pointers into their input arrays now have definitions as macros that\n  return a pointer to a const-qualified type when the input argument is\n  a pointer to a const-qualified type.\n\nAdd missing \u0027const\u0027 qualifiers to pointer variables that are assigned\nfrom functions returning \u0027const char *\u0027 (e.g. strchr, strstr), which\ncaused -Wdiscarded-qualifiers warnings under glibc-2.43:\n\nremotes/oci.c: In function \u0027ocierofs_parse_ref\u0027:\nremotes/oci.c:1058:15: warning: assignment discards \u0027const\u0027 qualifier from pointer target type [-Wdiscarded-qualifiers]\n 1058 |         slash \u003d strchr(ref_str, \u0027/\u0027);\n      |               ^\n\n[1] https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html\n\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260226020049.691505-1-zhaoyifan28@huawei.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "fc3a86f379cb7bdd28efb7da6cb6d7dae4770fba",
      "tree": "ed11b67b86a21dc1dc9cf1faf0b3adeeb8edc59d",
      "parents": [
        "119a0546a1d5a5997b37f9c4b03bf46a3bfb68ac"
      ],
      "author": {
        "name": "Ashley Lee",
        "email": "yester1324@gmail.com",
        "time": "Wed Feb 25 09:30:30 2026 -0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Thu Feb 26 13:03:31 2026 +0800"
      },
      "message": "erofs-utils: lib: converted division to shift in z_erofs_load_compact_lcluster\n\nperf on fsck.erofs in gcc reports that z_erofs_load_compact_lcluster\nwas spending 20% of its time doing the div instruction. While the\nfunction itself is ~40% of user runtime. In the source code, it seems\nthat dividing by vcnt doesn\u0027t optimize to a shift despite the two\npossible states being powers of 2.\n\nChanging the division into a ilog2() function call encourages the\ncompiler to recognize it as a power of 2. Thus performing a shift.\n\nRunning a benchmark on lzma compressed freebsd code on x86, shows\nthere is a ~4% increase in performance in gcc. While clang shows\nvirtually no regression in performance. The tradeoff is slightly\nobfuscated source code.\n\nThe following command was run locally on x86.\n\n$ hyperfine -w 5 -m 30 \"./fsck.erofs ./bsd.erofs.lzma\"\n\npatch on gcc 15.2.1\nTime (mean ± σ):     354.8 ms ±   6.0 ms    \\\n  [User: 227.8 ms, System: 126.1 ms]\nRange (min … max):   345.8 ms … 366.2 ms    30 runs\n\ndev on gcc 15.2.1\nTime (mean ± σ):     370.7 ms ±   6.7 ms    \\\n  [User: 246.5 ms, System: 123.4 ms]\nRange (min … max):   362.7 ms … 390.7 ms    30 runs\n\npatch on clang 21.1.8\nTime (mean ± σ):     371.9 ms ±   2.4 ms    \\\n  [User: 247.2 ms, System: 123.9 ms]\nRange (min … max):   369.1 ms … 380.0 ms    30 runs\n\ndev on clang 21.1.8\nTime (mean ± σ):     371.0 ms ±   1.9 ms    \\\n  [User: 245.5 ms, System: 124.5 ms]\nRange (min … max):   368.4 ms … 377.7 ms    30 runs\n\nSigned-off-by: Ashley Lee \u003cyester1324@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260225173036.194311-1-yester1324@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "119a0546a1d5a5997b37f9c4b03bf46a3bfb68ac",
      "tree": "af60d856c0f7883c68eff8bf3f93e4204af26f94",
      "parents": [
        "7c24c409d75ab89b0410951586ac0a56b67b31fb"
      ],
      "author": {
        "name": "Yifan Zhao",
        "email": "zhaoyifan28@huawei.com",
        "time": "Wed Feb 25 18:06:40 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Feb 25 22:39:03 2026 +0800"
      },
      "message": "erofs-utils: dump: add missing compat features and separate feature display\n\nAdd three missing EROFS_FEATURE_COMPAT_* entries to feature_lists:\n- EROFS_FEATURE_COMPAT_SHARED_EA_IN_METABOX\n- EROFS_FEATURE_COMPAT_PLAIN_XATTR_PFX\n- EROFS_FEATURE_COMPAT_ISHARE_XATTRS\n\nAlso separate the feature output into two lines:\n\u0027Filesystem compatible features\u0027 and\n\u0027Filesystem incompatible features\u0027 for better readability.\n\nSigned-off-by: Yifan Zhao \u003czhaoyifan28@huawei.com\u003e\nLink: https://lore.kernel.org/r/20260225100640.554705-1-zhaoyifan28@huawei.com\n[ Gao Xiang: update printed texts. ]\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    },
    {
      "commit": "7c24c409d75ab89b0410951586ac0a56b67b31fb",
      "tree": "ba5ab391710fb4f35d1d8377dabeede62867d482",
      "parents": [
        "b0f7f58b5c98db04e178b61d9b41aca35300f2a4"
      ],
      "author": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Feb 25 22:18:20 2026 +0800"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Feb 25 22:29:31 2026 +0800"
      },
      "message": "erofs-utils: mkfs: do not enable lz4_0padding for plain images\n\nThis is a new regression introduced in erofs-utils 1.9.\n\nFixes: 16a77fed8511 (\"erofs-utils: lib: unexport z_erofs_compress_{init,exit}\")\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\nLink: https://lore.kernel.org/r/20260225141821.668836-1-hsiangkao@linux.alibaba.com\n"
    },
    {
      "commit": "b0f7f58b5c98db04e178b61d9b41aca35300f2a4",
      "tree": "09e177b1f9483087b2157d23da3b25be3fa6c9dd",
      "parents": [
        "2cd511441c2cbdade81f7b6fb6575eef7d8452a1"
      ],
      "author": {
        "name": "Puneeth Aditya",
        "email": "myakampuneeth@gmail.com",
        "time": "Wed Feb 25 13:09:43 2026 +0530"
      },
      "committer": {
        "name": "Gao Xiang",
        "email": "hsiangkao@linux.alibaba.com",
        "time": "Wed Feb 25 17:29:14 2026 +0800"
      },
      "message": "erofs-utils: lib: fix 48bit addressing detection for chunk-based format\n\nThe 48-bit chunk format flag was being set inside\nerofs_blob_write_chunked_file right after erofs_blob_getchunk returns.\nAt that point chunk-\u003eblkaddr is the chunk\u0027s offset in the temporary\nblob buffer, not the final image address. The real address is only\nknown after erofs_mkfs_dump_blobs applies remapped_base, so a chunk\nthat lands above UINT32_MAX after remapping may not get flagged at all,\nproducing a corrupt image.\n\nFix this by introducing erofs_inode_fixup_chunkformat() which walks\nthe chunk array after remapped_base is finalized and sets the 48-bit\nflag if any chunk address exceeds UINT32_MAX. The fixup is called from\nerofs_iflush so that the correct chunkformat is written into the\non-disk inode header. Both blob chunks (remapped_base + chunk-\u003eblkaddr)\nand device chunks (chunk-\u003eblkaddr directly) are handled.\n\nSigned-off-by: Puneeth Aditya \u003cmyakampuneeth@gmail.com\u003e\nLink: https://lore.kernel.org/r/20260225073943.11361-1-myakampuneeth@gmail.com\nSigned-off-by: Gao Xiang \u003chsiangkao@linux.alibaba.com\u003e\n"
    }
  ],
  "next": "2cd511441c2cbdade81f7b6fb6575eef7d8452a1"
}
