{ "schema": 1, "gate": "G02", "candidate": "P15-005", "required_base": "edf098905a34de764185e72fc7e92d7b8f4e7285", "title": "metadata buffer ownership and frozen map tuple oracle", "required_categories": [ "plain", "inline", "hole", "chunk", "multidevice", "compressed", "fragment", "partial-reference", "post-EOF", "bounds", "overflow" ], "tuple_fields": [ "m_la", "m_pa", "m_llen", "m_plen", "m_deviceid", "m_flags", "errno", "acquire_count", "release_count" ], "errno": { "EIO": 5, "EINVAL": 22, "EOPNOTSUPP": 45, "EOVERFLOW": 84, "EINTEGRITY": 97 }, "source_paths": [ "repo-pre-15/src/internal.h", "repo-pre-15/src/data.c", "repo-pre-15/src/decompressor.c", "repo-pre-15/src/inode.c", "repo-pre-15/src/super.c", "repo-pre-15/src/xattr.c", "repo-pre-15/src/zdata.c", "repo-pre-15/src/zmap.c", "repo-pre-15/src/erofs_fs.h", "src-linux/internal.h", "src-linux/data.c", "src-linux/decompressor.c", "src-linux/inode.c", "src-linux/super.c", "src-linux/xattr.c", "src-linux/zdata.c", "src-linux/zmap.c" ], "linux_sha256": { "src-linux/internal.h": "4aa671896ff7c0ad32a9108c818ef62d16841c116706fdad391c40a530c81405", "src-linux/data.c": "8625cdc01e5405f856178ae8fd559696ae85f607f19caf229b867a3b7479318a", "src-linux/decompressor.c": "caf1c501d00a5a2c9cda5fc0b59d2823eaedf0161a130ca69cd5e7c455128709", "src-linux/inode.c": "a15562e0782e155a0744a7ba9d2f557519a583b64853ed75180cef2b4dfae1b3", "src-linux/super.c": "8bda458cca758d8aa9c5a5b05361b2131b896f73fd194f6ad9a8e011e3481bf9", "src-linux/xattr.c": "c8394e5f6301225cbe7587f223485a368348eac7596c1ab0bbf965c99655ed4a", "src-linux/zdata.c": "358869da60dcdafd13bc1ff0cd28e864c13b46a49d9f556d9b37139f7e0f4e79", "src-linux/zmap.c": "4fb34c024bfaec9d2294ba2f85069bb2f727b378ebf4848814e081f91ea022cc" }, "linux_semantic_anchors": { "src-linux/internal.h": [ "struct erofs_buf {", "#define __EROFS_BUF_INITIALIZER", "void erofs_put_metabuf(struct erofs_buf *buf);" ], "src-linux/data.c": [ "void erofs_put_metabuf(struct erofs_buf *buf)", "folio_put(page_folio(buf->page));", "buf->page = NULL;", "struct erofs_buf buf = __EROFS_BUF_INITIALIZER;", "erofs_put_metabuf(&buf);" ], "src-linux/decompressor.c": [ "struct erofs_buf buf = __EROFS_BUF_INITIALIZER;", "erofs_put_metabuf(&buf);" ], "src-linux/inode.c": [ "struct erofs_buf buf = __EROFS_BUF_INITIALIZER;", "erofs_put_metabuf(&buf);" ], "src-linux/super.c": [ "struct erofs_buf buf = __EROFS_BUF_INITIALIZER;", "erofs_put_metabuf(&buf);" ], "src-linux/xattr.c": [ "struct erofs_buf buf = __EROFS_BUF_INITIALIZER;", "erofs_put_metabuf(&buf);" ], "src-linux/zdata.c": [ "struct erofs_buf buf = __EROFS_BUF_INITIALIZER;", "erofs_put_metabuf(&buf);" ], "src-linux/zmap.c": [ "erofs_put_metabuf(&map.buf);" ] }, "baseline_function_sha256": { "data.c:erofs_map_blocks_chunk": "b850ab686f61e6265ef0780c1363f570ceb6afab004b5d9c527d728f00a0fa0e", "data.c:erofs_read_metadata": "1ea2f9bad3c60019c0f373c98444dcd1dd4bb178875a170313868a56cd314436", "data.c:erofs_read_data": "9d962f6086f5fc4a66bbfd9b27d05aa71234bb8266a3c383ec693298966e5e63", "data.c:erofs_read_uio": "05d3ad9e8b25b7e9b6d62f4fd836ab204bc57b90781fc140cc498d1ab8fe0a78", "decompressor.c:z_erofs_read_cfg": "77ddaf24f5317e0b83b72d85f64aa624cbd15b71a9602d2217b11dd382e1f719", "decompressor.c:z_erofs_parse_cfgs": "d800c9a52b9f9333f57da2f67e27d238320866b0f8816929b32f119c84a69eb4", "inode.c:erofs_read_inode": "ed65faffe7a607e95bca50de7e28cf592a0500b7363935991de959269a200fe1", "super.c:erofs_load_generation_seed": "98299634491a22b427820a28a7ec1d23268ab1fe02d1fc0515774da70900f071", "super.c:erofs_superblock_csum_verify": "cd56c29a6cf795de359f6642509a4a152e5a1860ec32a997e91ebf81e7877096", "super.c:erofs_scan_devices": "2743af3b9d9d7e53c0102bc197026adf58ef6bf7adbf5cdbe8716c9e25b2a547", "super.c:erofs_read_superblock": "d605349d9604d89d4bb413c42abc71f13b8fafa43b1fda671fbd4613f2a3ed6f", "xattr.c:erofs_xattr_read_backing": "df65cf9e391d2f17f79beeecda24fbf6c1be495dd3baf65121c226c4054ccf75", "xattr.c:erofs_xattr_read_metadata": "ed726755b28f1c1a82a07a956b889bd633da45cdd6671c91c7bc4db9d4006096", "xattr.c:erofs_xattr_load_body": "c8684629f78920cefb6a6d61ddad5ed42ba499d817798f81086282c827e54aa5", "xattr.c:erofs_xattr_load_shared_entry": "e47145a775685cfaeb9341a7cc1cc742c73145e34f4b81d8fc5dac35d765e17f", "xattr.c:erofs_inode_has_noacl": "8098be9fef8148498a2080e02db2876d9592f1af10ca551278902e3aa4c3428e", "xattr.c:erofs_xattr_iter_shared": "1ec7756ef31dd6c51e04d92656440a9dbca5e9e9fe38c359eed744ad16b39b2c", "xattr.c:erofs_getxattr": "9ee7d7effcfa3d23ab4d4ce1e3e7d638c048085368b2f3a2db3dfdadf911cd34", "xattr.c:erofs_listxattr": "6f75c9f8c50c331daba1bb0c1b757390c3ff873ee7419b2dd2b35dfc3db84ea6", "xattr.c:erofs_xattr_prefixes_init": "7aaade8116337ad1026da04777bf1d9f8aefaa246623d6c32080af153fb93abd", "zdata.c:z_erofs_read_extent": "327e3a22b9c89c410d1ecef6934dcdaf194a4b6962737ea5f3e4f21d10694b13", "zdata.c:z_erofs_do_read": "2096f98b6d19e1c5f80edb6de9fbfe15bb27f006e2510bcb068f920c23aa38ec", "zmap.c:z_erofs_read_index": "cf8ca75c1d600f2f708e73e723a7abaee7c98f9813eb8f432e1f96dd1602d82b", "zmap.c:z_erofs_load_full_lcluster": "751d456964fcdcf66f20d22c1f22adef209767aef1bab9d0857f36df7d2c37b2", "zmap.c:z_erofs_load_compact_lcluster": "4c23a8a966262b5a365bc874718316daa616cc97dfe3e2711570f81e7e3b953c", "zmap.c:z_erofs_read_extent": "454064ca59dfd0674af5520c4a965be659d2b7769403cd8d84bd9657e0145f27", "zmap.c:z_erofs_map_blocks_ext": "31c9310f801395fe01d38515ee42ef49c1d07ceba0b86b612bb140ec180238b0", "zmap.c:z_erofs_fill_inode": "125f0c3492c152415978226919e782d355a32fc49cf8f49456eb398a4c721032" }, "direct_metadata_functions": [ "data.c:erofs_map_blocks_chunk", "data.c:erofs_read_data", "data.c:erofs_read_uio", "decompressor.c:z_erofs_read_cfg", "inode.c:erofs_read_inode", "super.c:erofs_load_generation_seed", "super.c:erofs_superblock_csum_verify", "super.c:erofs_scan_devices", "super.c:erofs_read_superblock", "xattr.c:erofs_xattr_read_backing", "zdata.c:z_erofs_read_extent", "zmap.c:z_erofs_fill_inode", "zmap.c:z_erofs_map_blocks_ext", "zmap.c:z_erofs_read_extent", "zmap.c:z_erofs_read_index" ], "candidate_ownership_contract": { "object_local_counts": { "data.c:erofs_map_blocks_chunk": 1, "data.c:erofs_read_metadata": 0, "data.c:erofs_read_data": 1, "data.c:erofs_read_uio": 1, "decompressor.c:z_erofs_read_cfg": 1, "decompressor.c:z_erofs_parse_cfgs": 1, "inode.c:erofs_read_inode": 1, "super.c:erofs_load_generation_seed": 1, "super.c:erofs_superblock_csum_verify": 1, "super.c:erofs_scan_devices": 1, "super.c:erofs_read_superblock": 1, "xattr.c:erofs_xattr_read_backing": 0, "xattr.c:erofs_xattr_read_metadata": 1, "xattr.c:erofs_xattr_load_body": 1, "xattr.c:erofs_xattr_load_shared_entry": 1, "xattr.c:erofs_inode_has_noacl": 1, "xattr.c:erofs_xattr_iter_shared": 1, "xattr.c:erofs_getxattr": 1, "xattr.c:erofs_listxattr": 1, "xattr.c:erofs_xattr_prefixes_init": 1, "zdata.c:z_erofs_read_extent": 1, "zdata.c:z_erofs_do_read": 0, "zmap.c:z_erofs_read_index": 0, "zmap.c:z_erofs_load_full_lcluster": 1, "zmap.c:z_erofs_load_compact_lcluster": 1, "zmap.c:z_erofs_read_extent": 1, "zmap.c:z_erofs_map_blocks_ext": 1, "zmap.c:z_erofs_fill_inode": 1 }, "put_counts": { "data.c:erofs_map_blocks_chunk": 1, "data.c:erofs_read_metadata": 0, "data.c:erofs_read_data": 1, "data.c:erofs_read_uio": 1, "decompressor.c:z_erofs_read_cfg": 1, "decompressor.c:z_erofs_parse_cfgs": 1, "inode.c:erofs_read_inode": 18, "super.c:erofs_load_generation_seed": 1, "super.c:erofs_superblock_csum_verify": 1, "super.c:erofs_scan_devices": 2, "super.c:erofs_read_superblock": 1, "xattr.c:erofs_xattr_read_backing": 0, "xattr.c:erofs_xattr_read_metadata": 1, "xattr.c:erofs_xattr_load_body": 1, "xattr.c:erofs_xattr_load_shared_entry": 1, "xattr.c:erofs_inode_has_noacl": 1, "xattr.c:erofs_xattr_iter_shared": 1, "xattr.c:erofs_getxattr": 1, "xattr.c:erofs_listxattr": 1, "xattr.c:erofs_xattr_prefixes_init": 2, "zdata.c:z_erofs_read_extent": 1, "zdata.c:z_erofs_do_read": 0, "zmap.c:z_erofs_read_index": 0, "zmap.c:z_erofs_load_full_lcluster": 2, "zmap.c:z_erofs_load_compact_lcluster": 7, "zmap.c:z_erofs_read_extent": 1, "zmap.c:z_erofs_map_blocks_ext": 1, "zmap.c:z_erofs_fill_inode": 6 }, "legacy_release_counts": { "data.c:erofs_read_data": 1, "data.c:erofs_read_uio": 1, "zdata.c:z_erofs_read_extent": 1, "zdata.c:z_erofs_do_read": 1 }, "raw_bread_counts": { "data.c:erofs_read_metadata": 1, "xattr.c:erofs_xattr_read_backing": 1 }, "acquire_apis": [ "erofs_read_metadata", "z_erofs_read_cfg", "erofs_xattr_read_backing", "erofs_xattr_read_metadata", "erofs_xattr_load_body", "erofs_xattr_load_shared_entry", "z_erofs_read_index" ], "transfer_functions": [ "data.c:erofs_read_metadata", "decompressor.c:z_erofs_read_cfg", "xattr.c:erofs_xattr_read_backing", "xattr.c:erofs_xattr_read_metadata", "zmap.c:z_erofs_read_index" ] }, "tuple_cases": [ { "id": "plain-block-edge", "engine": "data", "category": "plain", "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 64, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 12288, "datalayout": 0, "startblk": 32, "inode_off": 0, "inode_isize": 32, "xattr_isize": 0, "chunkbits": 12, "chunkformat": 0}, "request": 4095, "reader": {"mode": "unused", "bytes_hex": ""}, "expected": {"m_la": 4095, "m_pa": 135167, "m_llen": 1, "m_plen": 1, "m_deviceid": 0, "m_flags": 1, "errno": 0, "acquire_count": 0, "release_count": 0} }, { "id": "inline-tail", "engine": "data", "category": "inline", "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 64, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 5000, "datalayout": 2, "startblk": 40, "inode_off": 8192, "inode_isize": 64, "xattr_isize": 32, "chunkbits": 12, "chunkformat": 0}, "request": 4500, "reader": {"mode": "unused", "bytes_hex": ""}, "expected": {"m_la": 4500, "m_pa": 8692, "m_llen": 500, "m_plen": 500, "m_deviceid": 0, "m_flags": 3, "errno": 0, "acquire_count": 0, "release_count": 0} }, { "id": "plain-hole", "engine": "data", "category": "hole", "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 64, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 4096, "datalayout": 0, "startblk": 18446744073709551615, "inode_off": 0, "inode_isize": 32, "xattr_isize": 0, "chunkbits": 12, "chunkformat": 0}, "request": 512, "reader": {"mode": "unused", "bytes_hex": ""}, "expected": {"m_la": 512, "m_pa": 0, "m_llen": 3584, "m_plen": 3584, "m_deviceid": 0, "m_flags": 0, "errno": 0, "acquire_count": 0, "release_count": 0} }, { "id": "chunk-index", "engine": "data", "category": "chunk", "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 128, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 20000, "datalayout": 4, "startblk": 0, "inode_off": 0, "inode_isize": 64, "xattr_isize": 0, "chunkbits": 13, "chunkformat": 32}, "request": 9000, "reader": {"mode": "ok", "bytes_hex": "0000000000000000000000004d000000"}, "expected": {"m_la": 9000, "m_pa": 316200, "m_llen": 7384, "m_plen": 7384, "m_deviceid": 0, "m_flags": 1, "errno": 0, "acquire_count": 1, "release_count": 1} }, { "id": "chunk-48bit-device2", "engine": "data", "category": "multidevice", "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 128, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 24576, "datalayout": 4, "startblk": 0, "inode_off": 0, "inode_isize": 64, "xattr_isize": 0, "chunkbits": 13, "chunkformat": 96}, "request": 12345, "reader": {"mode": "ok", "bytes_hex": "00000000000000000100020005000000"}, "expected": {"m_la": 12345, "m_pa": 17592186069049, "m_llen": 4039, "m_plen": 4039, "m_deviceid": 2, "m_flags": 1, "errno": 0, "acquire_count": 1, "release_count": 1} }, { "id": "chunk-index-out-of-provider", "engine": "data", "category": "bounds", "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 2, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 4096, "datalayout": 4, "startblk": 0, "inode_off": 8192, "inode_isize": 0, "xattr_isize": 0, "chunkbits": 12, "chunkformat": 32}, "request": 0, "reader": {"mode": "unused", "bytes_hex": ""}, "expected": {"m_la": 0, "m_pa": 0, "m_llen": 0, "m_plen": 0, "m_deviceid": 0, "m_flags": 0, "errno": 97, "acquire_count": 0, "release_count": 0} }, { "id": "chunk-shift-overflow-after-acquire", "engine": "data", "category": "overflow", "sbi": {"block_size": 131072, "blkszbits": 17, "blocks": 1, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 4096, "datalayout": 4, "startblk": 0, "inode_off": 0, "inode_isize": 64, "xattr_isize": 0, "chunkbits": 12, "chunkformat": 96}, "request": 0, "reader": {"mode": "ok", "bytes_hex": "0080000000000000"}, "expected": {"m_la": 0, "m_pa": 0, "m_llen": 4096, "m_plen": 4096, "m_deviceid": 0, "m_flags": 0, "errno": 84, "acquire_count": 1, "release_count": 1} }, { "id": "chunk-index-short-read", "engine": "data", "category": "bounds", "supplemental": true, "sbi": {"block_size": 4096, "blkszbits": 12, "blocks": 128, "device_id_mask": 65535}, "inode": {"nid": 1, "size": 4096, "datalayout": 4, "startblk": 0, "inode_off": 0, "inode_isize": 64, "xattr_isize": 0, "chunkbits": 12, "chunkformat": 32}, "request": 0, "reader": {"mode": "short", "bytes_hex": "00000000"}, "expected": {"m_la": 0, "m_pa": 0, "m_llen": 0, "m_plen": 0, "m_deviceid": 0, "m_flags": 0, "errno": 5, "acquire_count": 0, "release_count": 0} }, { "id": "explicit-compressed", "engine": "zmap", "category": "compressed", "sbi": {"block_size": 4096, "blkszbits": 12, "available_compr_algs": 1, "packed_size": 16384}, "inode": {"nid": 2, "size": 4096, "datalayout": 1, "inode_off": 0, "inode_isize": 0, "xattr_isize": 0, "z_advise": 5, "z_lclusterbits": 12, "z_extents": 1}, "request": 0, "reader": {"mode": "ok", "base": 16, "records": [{"plen": 268437504, "pstart": 74565, "lstart": 0}]}, "expected": {"m_la": 0, "m_pa": 74565, "m_llen": 4096, "m_plen": 2048, "m_deviceid": 0, "m_flags": 1, "errno": 0, "acquire_count": 1, "release_count": 1} }, { "id": "explicit-partial-reference", "engine": "zmap", "category": "partial-reference", "sbi": {"block_size": 4096, "blkszbits": 12, "available_compr_algs": 1, "packed_size": 16384}, "inode": {"nid": 2, "size": 4096, "datalayout": 1, "inode_off": 0, "inode_isize": 0, "xattr_isize": 0, "z_advise": 5, "z_lclusterbits": 12, "z_extents": 1}, "request": 0, "reader": {"mode": "ok", "base": 16, "records": [{"plen": 402654208, "pstart": 262144, "lstart": 0}]}, "expected": {"m_la": 0, "m_pa": 262144, "m_llen": 4096, "m_plen": 1024, "m_deviceid": 0, "m_flags": 9, "errno": 0, "acquire_count": 1, "release_count": 1} }, { "id": "explicit-fragment-tail", "engine": "zmap", "category": "fragment", "sbi": {"block_size": 4096, "blkszbits": 12, "available_compr_algs": 1, "packed_size": 16384}, "inode": {"nid": 2, "size": 6144, "datalayout": 1, "inode_off": 0, "inode_isize": 0, "xattr_isize": 0, "z_advise": 37, "z_lclusterbits": 12, "z_extents": 1}, "request": 4096, "reader": {"mode": "ok", "base": 16, "records": [{"plen": 8192, "pstart": 0, "lstart": 4096}]}, "expected": {"m_la": 4096, "m_pa": 0, "m_llen": 2048, "m_plen": 8192, "m_deviceid": 0, "m_flags": 16, "errno": 0, "acquire_count": 1, "release_count": 1} }, { "id": "compressed-post-eof", "engine": "zmap", "category": "post-EOF", "sbi": {"block_size": 4096, "blkszbits": 12, "available_compr_algs": 1, "packed_size": 16384}, "inode": {"nid": 2, "size": 4096, "datalayout": 1, "inode_off": 0, "inode_isize": 0, "xattr_isize": 0, "z_advise": 5, "z_lclusterbits": 12, "z_extents": 1}, "request": 4113, "reader": {"mode": "unused", "base": 16, "records": []}, "expected": {"m_la": 4096, "m_pa": 0, "m_llen": 18, "m_plen": 0, "m_deviceid": 0, "m_flags": 0, "errno": 0, "acquire_count": 0, "release_count": 0} }, { "id": "compressed-index-short-read", "engine": "zmap", "category": "compressed", "supplemental": true, "sbi": {"block_size": 4096, "blkszbits": 12, "available_compr_algs": 1, "packed_size": 16384}, "inode": {"nid": 2, "size": 4096, "datalayout": 1, "inode_off": 0, "inode_isize": 0, "xattr_isize": 0, "z_advise": 5, "z_lclusterbits": 12, "z_extents": 1}, "request": 0, "reader": {"mode": "short", "base": 16, "bytes_hex": "0000000000000000"}, "expected": {"m_la": 0, "m_pa": 0, "m_llen": 0, "m_plen": 0, "m_deviceid": 0, "m_flags": 0, "errno": 5, "acquire_count": 0, "release_count": 0} }, { "id": "compressed-sanity-error-after-acquire", "engine": "zmap", "category": "compressed", "supplemental": true, "sbi": {"block_size": 4096, "blkszbits": 12, "available_compr_algs": 1, "packed_size": 16384}, "inode": {"nid": 2, "size": 4096, "datalayout": 1, "inode_off": 0, "inode_isize": 0, "xattr_isize": 0, "z_advise": 5, "z_lclusterbits": 12, "z_extents": 1}, "request": 0, "reader": {"mode": "ok", "base": 16, "records": [{"plen": 1879049216, "pstart": 74565, "lstart": 0}]}, "expected": {"m_la": 0, "m_pa": 74565, "m_llen": 0, "m_plen": 1024, "m_deviceid": 0, "m_flags": 1, "errno": 45, "acquire_count": 1, "release_count": 1} } ], "ownership_paths": [ {"id": "plain-inline-success", "consumer": "plain", "function": "data.c:erofs_read_data", "path": "metadata read succeeds; copied raw output is caller-owned", "acquire_count": 1, "release_count": 1}, {"id": "plain-inline-short-read", "consumer": "plain", "function": "data.c:erofs_read_data", "path": "metadata read fails before ownership transfer", "acquire_count": 0, "release_count": 0}, {"id": "map-chunk-success", "consumer": "map", "function": "data.c:erofs_map_blocks_chunk", "path": "index acquired, decoded, and released", "acquire_count": 1, "release_count": 1}, {"id": "map-chunk-post-acquire-error", "consumer": "map", "function": "data.c:erofs_map_blocks_chunk", "path": "index released before physical shift overflow", "acquire_count": 1, "release_count": 1}, {"id": "map-chunk-short-read", "consumer": "map", "function": "data.c:erofs_map_blocks_chunk", "path": "short index fails before acquire", "acquire_count": 0, "release_count": 0}, {"id": "compressed-config-success", "consumer": "compressed", "function": "decompressor.c:z_erofs_read_cfg", "path": "length released; payload transferred then released by parse_cfgs", "acquire_count": 2, "release_count": 2}, {"id": "compressed-config-second-short", "consumer": "compressed", "function": "decompressor.c:z_erofs_read_cfg", "path": "length released; payload not acquired", "acquire_count": 1, "release_count": 1}, {"id": "compressed-data-decode-error", "consumer": "compressed", "function": "zdata.c:z_erofs_read_extent", "path": "metadata input released after decoder error", "acquire_count": 1, "release_count": 1}, {"id": "compressed-map-success", "consumer": "compressed", "function": "zmap.c:z_erofs_read_extent", "path": "extent record copied then released", "acquire_count": 1, "release_count": 1}, {"id": "compressed-map-short", "consumer": "compressed", "function": "zmap.c:z_erofs_read_extent", "path": "short record fails before acquire", "acquire_count": 0, "release_count": 0}, {"id": "inode-compact-success", "consumer": "inode", "function": "inode.c:erofs_read_inode", "path": "compact inode decoded and released", "acquire_count": 1, "release_count": 1}, {"id": "inode-invalid-format", "consumer": "inode", "function": "inode.c:erofs_read_inode", "path": "first acquired inode released on format rejection", "acquire_count": 1, "release_count": 1}, {"id": "inode-extended-second-short", "consumer": "inode", "function": "inode.c:erofs_read_inode", "path": "compact probe released; extended read not acquired", "acquire_count": 1, "release_count": 1}, {"id": "inode-extended-success", "consumer": "inode", "function": "inode.c:erofs_read_inode", "path": "compact probe and extended inode each released", "acquire_count": 2, "release_count": 2}, {"id": "super-read-success", "consumer": "super", "function": "super.c:erofs_read_superblock", "path": "super bytes copied and released before validation", "acquire_count": 1, "release_count": 1}, {"id": "super-read-short", "consumer": "super", "function": "super.c:erofs_read_superblock", "path": "short provider read fails before acquire", "acquire_count": 0, "release_count": 0}, {"id": "super-device-validation-error", "consumer": "super", "function": "super.c:erofs_scan_devices", "path": "device table released through out label", "acquire_count": 1, "release_count": 1}, {"id": "xattr-prefix-success", "consumer": "xattr", "function": "xattr.c:erofs_xattr_read_metadata", "path": "length released; prefix transferred then released by caller", "acquire_count": 2, "release_count": 2}, {"id": "xattr-prefix-invalid-length", "consumer": "xattr", "function": "xattr.c:erofs_xattr_read_metadata", "path": "length record released before validation error", "acquire_count": 1, "release_count": 1}, {"id": "xattr-prefix-second-short", "consumer": "xattr", "function": "xattr.c:erofs_xattr_read_metadata", "path": "length released; prefix not acquired", "acquire_count": 1, "release_count": 1}, {"id": "xattr-body-validation-error", "consumer": "xattr", "function": "xattr.c:erofs_xattr_load_body", "path": "body released through fail label", "acquire_count": 1, "release_count": 1}, {"id": "xattr-get-iterator-error", "consumer": "xattr", "function": "xattr.c:erofs_getxattr", "path": "body released after inline/shared iterator error", "acquire_count": 1, "release_count": 1} ], "decision": { "go": "all required categories observed; every legal tuple equals expected by field; each successful acquisition has one release; short reads acquire nothing; Linux ownership anchors and all audited consumer bodies are present", "stop": "missing category, legal tuple delta, unexplained errno, incomplete direct consumer inventory, or any acquire/release mismatch", "h07": "success and request before EOF implies positive m_llen" }, "timeouts": {"host_seconds": 240, "qemu_seconds": 1200}, "qemu_required_for_this_candidate_gate": false, "full_feature_suite_required": false }