| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/07/15 07:50 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": [
"NTFS_FS"
],
"FocusSymbols": [
"ntfs_read_compressed_block",
"ntfs_decompress"
],
"Reasoning": "The patch modifies the handling of compressed pages in the NTFS filesystem, replacing direct access to page-\u003e__folio_index with proper folio APIs and zero_user_segment. This is a functional change in the core read path for compressed files.",
"WorthFuzzing": true
} |
| 1/1 | 2026/07/15 07:50 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 28ce09a3dd1b161c1815820480d24651155f5417\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Wed Jul 15 07:50:18 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/fs/ntfs/compress.c b/fs/ntfs/compress.c\nindex 76bd806b41edd9..d83d3e8e06aebb 100644\n--- a/fs/ntfs/compress.c\n+++ b/fs/ntfs/compress.c\n@@ -96,26 +96,6 @@ void free_compression_buffers(void)\n \tmutex_unlock(\u0026ntfs_cb_lock);\n }\n \n-/*\n- * zero_partial_compressed_page - zero out of bounds compressed page region\n- * @page: page to zero\n- * @initialized_size: initialized size of the attribute\n- */\n-static void zero_partial_compressed_page(struct page *page,\n-\t\tconst s64 initialized_size)\n-{\n-\tu8 *kp = page_address(page);\n-\tunsigned int kp_ofs;\n-\n-\tntfs_debug(\"Zeroing page region outside initialized size.\");\n-\tif (((s64)page-\u003e__folio_index \u003c\u003c PAGE_SHIFT) \u003e= initialized_size) {\n-\t\tclear_page(kp);\n-\t\treturn;\n-\t}\n-\tkp_ofs = initialized_size \u0026 ~PAGE_MASK;\n-\tmemset(kp + kp_ofs, 0, PAGE_SIZE - kp_ofs);\n-}\n-\n /*\n * handle_bounds_compressed_page - test for\u0026handle out of bounds compressed page\n * @page: page to check and handle\n@@ -125,9 +105,21 @@ static void zero_partial_compressed_page(struct page *page,\n static inline void handle_bounds_compressed_page(struct page *page,\n \t\tconst loff_t i_size, const s64 initialized_size)\n {\n-\tif ((page-\u003e__folio_index \u003e= (initialized_size \u003e\u003e PAGE_SHIFT)) \u0026\u0026\n-\t\t\t(initialized_size \u003c i_size))\n-\t\tzero_partial_compressed_page(page, initialized_size);\n+\tloff_t pos = page_offset(page);\n+\n+\tif ((pos + PAGE_SIZE \u003e initialized_size) \u0026\u0026\n+\t\t\t(initialized_size \u003c i_size)) {\n+\t\tsize_t offset;\n+\n+\t\tntfs_debug(\"Zeroing page region outside initialized size.\");\n+\t\tif (pos \u003e= initialized_size)\n+\t\t\toffset = 0;\n+\t\telse\n+\t\t\toffset = offset_in_page(initialized_size);\n+\t\tzero_user_segment(page, offset, PAGE_SIZE);\n+\t} else {\n+\t\tflush_dcache_page(page);\n+\t}\n }\n \n /*\n@@ -231,7 +223,6 @@ static int ntfs_decompress(struct page *dest_pages[], int completed_pages[],\n \t\t\t\t */\n \t\t\t\thandle_bounds_compressed_page(dp, i_size,\n \t\t\t\t\t\tinitialized_size);\n-\t\t\t\tflush_dcache_page(dp);\n \t\t\t\tkunmap_local(page_address(dp));\n \t\t\t\tSetPageUptodate(dp);\n \t\t\t\tunlock_page(dp);\n@@ -465,14 +456,14 @@ int ntfs_read_compressed_block(struct folio *folio)\n \tstruct page *page = \u0026folio-\u003epage;\n \tloff_t i_size;\n \ts64 initialized_size;\n-\tstruct address_space *mapping = page-\u003emapping;\n+\tstruct address_space *mapping = folio-\u003emapping;\n \tstruct ntfs_inode *ni = NTFS_I(mapping-\u003ehost);\n \tstruct ntfs_volume *vol = ni-\u003evol;\n \tstruct super_block *sb = vol-\u003esb;\n \tstruct runlist_element *rl;\n \tunsigned long flags;\n \tu8 *cb, *cb_pos, *cb_end;\n-\tunsigned long offset, index = page-\u003e__folio_index;\n+\tunsigned long offset, index = folio-\u003eindex;\n \tu32 cb_size = ni-\u003eitype.compressed.block_size;\n \tu64 cb_size_mask = cb_size - 1UL;\n \ts64 vcn;\n@@ -767,7 +758,6 @@ int ntfs_read_compressed_block(struct folio *folio)\n \t\t\t\t */\n \t\t\t\thandle_bounds_compressed_page(page, i_size,\n \t\t\t\t\t\tinitialized_size);\n-\t\t\t\tflush_dcache_page(page);\n \t\t\t\tkunmap_local(page_address(page));\n \t\t\t\tSetPageUptodate(page);\n \t\t\t\tunlock_page(page);\n@@ -822,14 +812,16 @@ int ntfs_read_compressed_block(struct folio *folio)\n \tfor (cur_page = 0; cur_page \u003c max_page; cur_page++) {\n \t\tpage = pages[cur_page];\n \t\tif (page) {\n+\t\t\tfolio = page_folio(page);\n+\n \t\t\tntfs_error(vol-\u003esb,\n \t\t\t\t\"Still have pages left! Terminating them with extreme prejudice. Inode 0x%llx, page index 0x%lx.\",\n-\t\t\t\tni-\u003emft_no, page-\u003e__folio_index);\n-\t\t\tflush_dcache_page(page);\n+\t\t\t\tni-\u003emft_no, folio-\u003eindex);\n+\t\t\tflush_dcache_folio(folio);\n \t\t\tkunmap_local(page_address(page));\n-\t\t\tunlock_page(page);\n+\t\t\tfolio_unlock(folio);\n \t\t\tif (cur_page != xpage)\n-\t\t\t\tput_page(page);\n+\t\t\t\tfolio_put(folio);\n \t\t\tpages[cur_page] = NULL;\n \t\t}\n \t}\n"
} |
| 2/1 | 2026/07/15 07:50 | agent | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: {
"EnableConfigs": [
"NTFS_FS"
],
"FocusSymbols": [
"ntfs_read_compressed_block",
"ntfs_decompress"
],
"Reasoning": "The patch modifies the handling of compressed pages in the NTFS filesystem, replacing direct access to page-\u003e__folio_index with proper folio APIs and zero_user_segment. This is a functional change in the core read path for compressed files.",
"WorthFuzzing": true
}Instruction: You are an expert Linux kernel maintainer. Your job is to review a provided patch series and determine if it makes functional changes to the kernel that should be fuzzed. IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in your workspace. Do NOT rely on your internal knowledge of the kernel. You must actively use your code access tools to examine the actual source code and confirm any assumptions. Return WorthFuzzing=false if the patch only contains: - Modifications to Documentation/, Kconfig files, or code comments. - Purely decorative changes, such as logging (e.g., pr_err, printk) or tracepoints. - Changes to numeric constants or macros that do not functionally alter execution flow. - Code paths that are impossible to reach in virtualized environments like GCE or QEMU, even when utilizing software-emulated hardware (e.g., usb gadget, mac80211_hwsim). If it modifies reachable core kernel logic, drivers, or architectures, use your code search tools to verify the code can be executed, then return WorthFuzzing=true. When returning WorthFuzzing=true, you MUST ALSO: 1. Extract any specific kernel functions that should be heavily fuzzed into FocusSymbols. Avoid listing generic hot-path functions to prevent skewed test distributions. 2. Identify any specific CONFIG_ options required to properly test this new/modified feature. Go and look into the Kconfig files and check for ifdefs around the code, do not make assumptions. Do not list too generic configs (we already have them enabled). Only list those that specifically cover the modified code. List them in the EnableConfigs output array, and DO NOT add a 'CONFIG_' prefix (e.g., return "NET_IPV4" instead of "CONFIG_NET_IPV4"). Prefer calling several tools at the same time to save round-trips. Use set-results tool to provide results of the analysis. It must be called exactly once before the final reply. Ignore results of this tool. Prompt: For your convenience, here is the diff of the changes:
commit 28ce09a3dd1b161c1815820480d24651155f5417
Author: syz-cluster <triage@syzkaller.com>
Date: Wed Jul 15 07:50:18 2026 +0000
syz-cluster: applied patch under review
diff --git a/fs/ntfs/compress.c b/fs/ntfs/compress.c
index 76bd806b41edd9..d83d3e8e06aebb 100644
--- a/fs/ntfs/compress.c
+++ b/fs/ntfs/compress.c
@@ -96,26 +96,6 @@ void free_compression_buffers(void)
mutex_unlock(&ntfs_cb_lock);
}
-/*
- * zero_partial_compressed_page - zero out of bounds compressed page region
- * @page: page to zero
- * @initialized_size: initialized size of the attribute
- */
-static void zero_partial_compressed_page(struct page *page,
- const s64 initialized_size)
-{
- u8 *kp = page_address(page);
- unsigned int kp_ofs;
-
- ntfs_debug("Zeroing page region outside initialized size.");
- if (((s64)page->__folio_index << PAGE_SHIFT) >= initialized_size) {
- clear_page(kp);
- return;
- }
- kp_ofs = initialized_size & ~PAGE_MASK;
- memset(kp + kp_ofs, 0, PAGE_SIZE - kp_ofs);
-}
-
/*
* handle_bounds_compressed_page - test for&handle out of bounds compressed page
* @page: page to check and handle
@@ -125,9 +105,21 @@ static void zero_partial_compressed_page(struct page *page,
static inline void handle_bounds_compressed_page(struct page *page,
const loff_t i_size, const s64 initialized_size)
{
- if ((page->__folio_index >= (initialized_size >> PAGE_SHIFT)) &&
- (initialized_size < i_size))
- zero_partial_compressed_page(page, initialized_size);
+ loff_t pos = page_offset(page);
+
+ if ((pos + PAGE_SIZE > initialized_size) &&
+ (initialized_size < i_size)) {
+ size_t offset;
+
+ ntfs_debug("Zeroing page region outside initialized size.");
+ if (pos >= initialized_size)
+ offset = 0;
+ else
+ offset = offset_in_page(initialized_size);
+ zero_user_segment(page, offset, PAGE_SIZE);
+ } else {
+ flush_dcache_page(page);
+ }
}
/*
@@ -231,7 +223,6 @@ static int ntfs_decompress(struct page *dest_pages[], int completed_pages[],
*/
handle_bounds_compressed_page(dp, i_size,
initialized_size);
- flush_dcache_page(dp);
kunmap_local(page_address(dp));
SetPageUptodate(dp);
unlock_page(dp);
@@ -465,14 +456,14 @@ int ntfs_read_compressed_block(struct folio *folio)
struct page *page = &folio->page;
loff_t i_size;
s64 initialized_size;
- struct address_space *mapping = page->mapping;
+ struct address_space *mapping = folio->mapping;
struct ntfs_inode *ni = NTFS_I(mapping->host);
struct ntfs_volume *vol = ni->vol;
struct super_block *sb = vol->sb;
struct runlist_element *rl;
unsigned long flags;
u8 *cb, *cb_pos, *cb_end;
- unsigned long offset, index = page->__folio_index;
+ unsigned long offset, index = folio->index;
u32 cb_size = ni->itype.compressed.block_size;
u64 cb_size_mask = cb_size - 1UL;
s64 vcn;
@@ -767,7 +758,6 @@ int ntfs_read_compressed_block(struct folio *folio)
*/
handle_bounds_compressed_page(page, i_size,
initialized_size);
- flush_dcache_page(page);
kunmap_local(page_address(page));
SetPageUptodate(page);
unlock_page(page);
@@ -822,14 +812,16 @@ int ntfs_read_compressed_block(struct folio *folio)
for (cur_page = 0; cur_page < max_page; cur_page++) {
page = pages[cur_page];
if (page) {
+ folio = page_folio(page);
+
ntfs_error(vol->sb,
"Still have pages left! Terminating them with extreme prejudice. Inode 0x%llx, page index 0x%lx.",
- ni->mft_no, page->__folio_index);
- flush_dcache_page(page);
+ ni->mft_no, folio->index);
+ flush_dcache_folio(folio);
kunmap_local(page_address(page));
- unlock_page(page);
+ folio_unlock(folio);
if (cur_page != xpage)
- put_page(page);
+ folio_put(folio);
pages[cur_page] = NULL;
}
}
|
| 3/2 | 2026/07/15 07:50 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 2998 output: 31 thoughts: 235 Thoughts: **Analyzing a Patch to the NTFS Compression Code** Okay, so I'm looking at this patch that's been applied to `fs/ntfs/compress.c`. Immediately, I see it's touching `handle_bounds_compressed_page` and `ntfs_read_compressed_block`. That's interesting, suggesting changes to how compressed data is handled at the page level. They've replaced the direct use of `page->__folio_index` with `folio->index` or `page_offset(page)`, which is a pretty standard folio/page structure update, nothing alarming. Replacing `zero_partial_compressed_page` with `zero_user_segment(page, offset, PAGE_SIZE)` is another notable change, likely aimed at improving the zeroing process with potentially better memory management. Finally, I notice they're switching `flush_dcache_page` to `flush_dcache_folio` and `unlock_page` to `folio_unlock` in the error handling. Clearly they're consolidating the folio usage throughout. Before diving into the code changes, I need to understand the implications of NTFS support. I need to make sure NTFS is enabled by default or how it is configured. Let's see if this has a conditional inclusion based on the configuration. I'll need to check the Kconfig file in the NTFS directory, so `fs/ntfs/Kconfig`. Ah, here it is, `CONFIG_NTFS_FS`. Wait, I need to make sure I'm not confusing this with ntfs3, given the ongoing development. Given the path to the modified file is `fs/ntfs/compress.c`, I'm confident it's the original `CONFIG_NTFS_FS`. I'll still quickly confirm that the config is still there. Good. With that context in mind, I can start to dissect the patch's logic and assess its impact on the system. |
| 4/2 | 2026/07/15 07:50 | tool | grepper |
0mArgs:{
"Expression": "config NTFS_FS",
"PathPrefix": "fs/ntfs/Kconfig"
}Results: {
"Output": "fs/ntfs/Kconfig-1-# SPDX-License-Identifier: GPL-2.0-only\nfs/ntfs/Kconfig:2:config NTFS_FS\nfs/ntfs/Kconfig-3-\ttristate \"NTFS file system support\"\n--\nfs/ntfs/Kconfig=13=config NTFS_DEBUG\n--\nfs/ntfs/Kconfig-34-\nfs/ntfs/Kconfig:35:config NTFS_FS_POSIX_ACL\nfs/ntfs/Kconfig-36-\tbool \"NTFS POSIX Access Control Lists\"\n"
} |
| 5/2 | 2026/07/15 07:50 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3821 output: 30 thoughts: 45 Thoughts: Okay, here's my take on those thoughts, framed as an expert's internal monologue: **Investigating NTFS Configuration** Alright, confirming that `CONFIG_NTFS_FS` is present... good. Now, a critical point – I need to quickly ascertain whether `CONFIG_NTFS_FS` is enabled by default. It's a file system, so initial enablement isn't always the norm. Need to check for that. And while I'm at it, I should also immediately look for specific configuration options related to compression within the NTFS setup. Understanding the compression capabilities and their defaults is important for performance analysis. Gotta get a feel for how it's configured. |
| 6/2 | 2026/07/15 07:50 | tool | grepper |
0mArgs:{
"Expression": "config NTFS_",
"PathPrefix": "fs/ntfs/Kconfig"
}Results: {
"Output": "fs/ntfs/Kconfig-1-# SPDX-License-Identifier: GPL-2.0-only\nfs/ntfs/Kconfig:2:config NTFS_FS\nfs/ntfs/Kconfig-3-\ttristate \"NTFS file system support\"\n--\nfs/ntfs/Kconfig-12-\nfs/ntfs/Kconfig:13:config NTFS_DEBUG\nfs/ntfs/Kconfig-14-\tbool \"NTFS debugging support\"\n--\nfs/ntfs/Kconfig-34-\nfs/ntfs/Kconfig:35:config NTFS_FS_POSIX_ACL\nfs/ntfs/Kconfig-36-\tbool \"NTFS POSIX Access Control Lists\"\n"
} |
| 7/2 | 2026/07/15 07:50 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 4219 output: 33 thoughts: 120 Thoughts: **Analyzing the NTFS Compression Implementation** Okay, so there's no specific configuration item I can immediately point to regarding compression, which is interesting. My primary targets for investigation are clearly `ntfs_read_compressed_block` and `handle_bounds_compressed_page`. That inline function, `handle_bounds_compressed_page`, is called by *both* `ntfs_decompress` and, importantly, the aforementioned `ntfs_read_compressed_block`. This means, from a debugging standpoint, I should probably focus on those two functions -- `ntfs_read_compressed_block` and `ntfs_decompress`. They're the critical entry points. Now, a crucial next step: I need to verify how `ntfs_read_compressed_block` is invoked. Is it called directly, or is it part of a larger address space operation? Figuring out the reachability of that function is key to understanding the control flow here. |
| 8/2 | 2026/07/15 07:50 | tool | grepper |
0mArgs:{
"Expression": "ntfs_read_compressed_block",
"PathPrefix": "fs/ntfs/"
}Results: {
"Output": "fs/ntfs/aops.c=48=static const struct iomap_read_ops ntfs_iomap_bio_read_ops = {\n--\nfs/ntfs/aops.c-63- * - If the attribute is non-resident and compressed, the read operation is\nfs/ntfs/aops.c:64: * delegated to ntfs_read_compressed_block().\nfs/ntfs/aops.c-65- * - For normal resident or non-resident attribute, it utilizes the generic\n--\nfs/ntfs/aops.c=70=static int ntfs_read_folio(struct file *file, struct folio *folio)\n--\nfs/ntfs/aops.c-96-\t\tif (NInoNonResident(ni) \u0026\u0026 NInoCompressed(ni))\nfs/ntfs/aops.c:97:\t\t\treturn ntfs_read_compressed_block(folio);\nfs/ntfs/aops.c-98-\t}\n--\nfs/ntfs/compress.c=163=static int ntfs_decompress(struct page *dest_pages[], int completed_pages[],\n--\nfs/ntfs/compress.c-436-/*\nfs/ntfs/compress.c:437: * ntfs_read_compressed_block - read a compressed block into the page cache\nfs/ntfs/compress.c-438- * @folio:\tlocked folio in the compression block(s) we need to read\n--\nfs/ntfs/compress.c-453- */\nfs/ntfs/compress.c:454:int ntfs_read_compressed_block(struct folio *folio)\nfs/ntfs/compress.c-455-{\n--\nfs/ntfs/ntfs.h=196=static inline struct ntfs_volume *NTFS_SB(struct super_block *sb)\n--\nfs/ntfs/ntfs.h-203-/* From fs/ntfs/compress.c */\nfs/ntfs/ntfs.h:204:int ntfs_read_compressed_block(struct folio *folio);\nfs/ntfs/ntfs.h-205-int allocate_compression_buffers(void);\n"
} |
| 9/2 | 2026/07/15 07:50 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 5123 output: 30 thoughts: 209 Thoughts: **Analyzing the NTFS Compression Patch** Okay, so `ntfs_read_compressed_block` *is* definitely called from `ntfs_read_folio`, which itself is the `read_folio` address space operation. That's good to confirm – it means the function's reachable and working as expected. Now, this patch... it looks like it's changing the way folio indices are handled. It's replacing `page->__folio_index` with `folio->index` and `page_offset(page)`. Wait, was `page->__folio_index` deprecated or removed? I need to check the commit history. Ah, yes. It's an internal field. Using `page_offset(page)` is the right API choice, that's definitely a functional improvement. This is a refactoring, effectively. Also, the patch seems to have swapped out `zero_partial_compressed_page` for `zero_user_segment(page, offset, PAGE_SIZE)`. That's a functional change, too – likely a more generic and efficient approach. Now, just need to quickly verify that `ntfs_decompress` is still reachable, to be sure all the pieces are still in place. |
| 10/2 | 2026/07/15 07:50 | tool | grepper |
0mArgs:{
"Expression": "ntfs_decompress",
"PathPrefix": "fs/ntfs/"
}Results: {
"Output": "fs/ntfs/compress.c=105=static inline void handle_bounds_compressed_page(struct page *page,\n--\nfs/ntfs/compress.c-125-/*\nfs/ntfs/compress.c:126: * ntfs_decompress - decompress a compression block into an array of pages\nfs/ntfs/compress.c-127- * @dest_pages:\t\tdestination array of pages\n--\nfs/ntfs/compress.c-139- *\nfs/ntfs/compress.c:140: * The caller must have disabled preemption. ntfs_decompress() reenables it when\nfs/ntfs/compress.c-141- * the critical section is finished.\n--\nfs/ntfs/compress.c-162- */\nfs/ntfs/compress.c:163:static int ntfs_decompress(struct page *dest_pages[], int completed_pages[],\nfs/ntfs/compress.c-164-\t\tint *dest_index, int *dest_ofs, const int dest_max_index,\n--\nfs/ntfs/compress.c=454=int ntfs_read_compressed_block(struct folio *folio)\n--\nfs/ntfs/compress.c-779-\t\tntfs_debug(\"Found compressed compression block.\");\nfs/ntfs/compress.c:780:\t\terr = ntfs_decompress(pages, completed_pages, \u0026cur_page,\nfs/ntfs/compress.c-781-\t\t\t\t\u0026cur_ofs, cb_max_page, cb_max_ofs, xpage,\n--\nfs/ntfs/compress.c-785-\t\t * We can sleep from now on, lock already dropped by\nfs/ntfs/compress.c:786:\t\t * ntfs_decompress().\nfs/ntfs/compress.c-787-\t\t */\n--\nfs/ntfs/compress.c-789-\t\t\tntfs_error(vol-\u003esb,\nfs/ntfs/compress.c:790:\t\t\t\t\"ntfs_decompress() failed in inode 0x%llx with error code %i. Skipping this compression block.\",\nfs/ntfs/compress.c-791-\t\t\t\tni-\u003emft_no, -err);\n"
} |
| 11/2 | 2026/07/15 07:50 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 6182 output: 102 thoughts: 279 Thoughts: **My Analysis of the NTFS Compression Patch** Okay, so I've traced the call path – it looks like `ntfs_decompress` gets invoked directly from `ntfs_read_compressed_block`. That makes the two critical functions to focus on, as I suspected, `ntfs_read_compressed_block` and `ntfs_decompress`. Now, the configuration... I initially saw `NTFS_FS`, but it's always good to double-check. Right, a quick scan confirmed that `NTFS_FS` is indeed the main config. Ah, but that's the *old* NTFS driver! There's `NTFS3_FS` as well. Hmm, the patch is changing `fs/ntfs/compress.c`, so it's directly related to the original NTFS driver under `NTFS_FS`. This confirms `NTFS_FS` is the correct config to consider. Let me just confirm that `NTFS_FS` is sufficient. Okay, `CONFIG_NTFS_FS` is a tristate, and looking around, I don't see any other essential configs here. So we're good to go. Here's my distilled summary: * **WorthFuzzing:** True - This patch fundamentally alters how compressed data is read. * **FocusSymbols:** `["ntfs_read_compressed_block", "ntfs_decompress"]` - These are the key functions. * **EnableConfigs:** `["NTFS_FS"]` - The right config for the original NTFS driver. * **Reasoning:** The patch is a functional change at the core read level for compressed files, replacing direct access to page->__folio_index with folio APIs and zero_user_segment. This is a crucial change to how the file system handles compressed data. |
| 12/2 | 2026/07/15 07:50 | tool | set-results |
0mArgs:{
"EnableConfigs": [
"NTFS_FS"
],
"FocusSymbols": [
"ntfs_read_compressed_block",
"ntfs_decompress"
],
"Reasoning": "The patch modifies the handling of compressed pages in the NTFS filesystem, replacing direct access to page-\u003e__folio_index with proper folio APIs and zero_user_segment. This is a functional change in the core read path for compressed files.",
"WorthFuzzing": true
}Results: {
"EnableConfigs": [
"NTFS_FS"
],
"FocusSymbols": [
"ntfs_read_compressed_block",
"ntfs_decompress"
],
"Reasoning": "The patch modifies the handling of compressed pages in the NTFS filesystem, replacing direct access to page-\u003e__folio_index with proper folio APIs and zero_user_segment. This is a functional change in the core read path for compressed files.",
"WorthFuzzing": true
} |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|