| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/05 18:25 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only adds `__context_unsafe` annotations and enables context analysis in the Makefile. These are purely for static analysis tools and do not alter the functional execution flow of the kernel.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/05 18:25 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 1eebe588e4d8dedfb5d8d490bf46253c6cd252f0\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Wed Aug 5 18:25:11 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/drivers/s390/net/Makefile b/drivers/s390/net/Makefile\nindex 537514cc52fb8..038ba3e4005da 100644\n--- a/drivers/s390/net/Makefile\n+++ b/drivers/s390/net/Makefile\n@@ -3,6 +3,8 @@\n # S/390 network devices\n #\n \n+CONTEXT_ANALYSIS := y\n+\n ctcm-y += ctcm_main.o ctcm_fsms.o ctcm_mpc.o ctcm_sysfs.o ctcm_dbug.o\n obj-$(CONFIG_CTCM) += ctcm.o fsm.o\n obj-$(CONFIG_SMSGIUCV) += smsgiucv.o\ndiff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c\nindex bf917f4264532..84fd394d35250 100644\n--- a/drivers/s390/net/ctcm_fsms.c\n+++ b/drivers/s390/net/ctcm_fsms.c\n@@ -545,6 +545,7 @@ static void chx_rxidle(fsm_instance *fi, int event, void *arg)\n * arg\t\tGeneric pointer, casted from channel * upon call.\n */\n static void ctcm_chx_setmode(fsm_instance *fi, int event, void *arg)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel *ch = arg;\n \tint rc;\n@@ -563,8 +564,6 @@ static void ctcm_chx_setmode(fsm_instance *fi, int event, void *arg)\n \n \tif (event == CTC_EVENT_TIMER)\t/* only for timer not yet locked */\n \t\tspin_lock_irqsave(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n-\t\t\t/* Such conditional locking is undeterministic in\n-\t\t\t * static view. =\u003e ignore sparse warnings here. */\n \n \trc = ccw_device_start(ch-\u003ecdev, \u0026ch-\u003eccw[6], 0, 0xff, 0);\n \tif (event == CTC_EVENT_TIMER)\t/* see above comments */\n@@ -648,6 +647,7 @@ static void ctcm_chx_start(fsm_instance *fi, int event, void *arg)\n * arg\t\tGeneric pointer, casted from channel * upon call.\n */\n static void ctcm_chx_haltio(fsm_instance *fi, int event, void *arg)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel *ch = arg;\n \tunsigned long saveflags = 0;\n@@ -662,15 +662,12 @@ static void ctcm_chx_haltio(fsm_instance *fi, int event, void *arg)\n \n \tif (event == CTC_EVENT_STOP)\t/* only for STOP not yet locked */\n \t\tspin_lock_irqsave(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n-\t\t\t/* Such conditional locking is undeterministic in\n-\t\t\t * static view. =\u003e ignore sparse warnings here. */\n \toldstate = fsm_getstate(fi);\n \tfsm_newstate(fi, CTC_STATE_TERM);\n \trc = ccw_device_halt(ch-\u003ecdev, 0);\n \n \tif (event == CTC_EVENT_STOP)\n \t\tspin_unlock_irqrestore(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n-\t\t\t/* see remark above about conditional locking */\n \n \tif (rc != 0 \u0026\u0026 rc != -EBUSY) {\n \t\tfsm_deltimer(\u0026ch-\u003etimer);\n@@ -824,6 +821,7 @@ static void ctcm_chx_setuperr(fsm_instance *fi, int event, void *arg)\n * arg\t\tGeneric pointer, casted from channel * upon call.\n */\n static void ctcm_chx_restart(fsm_instance *fi, int event, void *arg)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel *ch = arg;\n \tstruct net_device *dev = ch-\u003enetdev;\n@@ -842,9 +840,6 @@ static void ctcm_chx_restart(fsm_instance *fi, int event, void *arg)\n \tfsm_newstate(fi, CTC_STATE_STARTWAIT);\n \tif (event == CTC_EVENT_TIMER)\t/* only for timer not yet locked */\n \t\tspin_lock_irqsave(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n-\t\t\t/* Such conditional locking is a known problem for\n-\t\t\t * sparse because its undeterministic in static view.\n-\t\t\t * Warnings should be ignored here. */\n \trc = ccw_device_halt(ch-\u003ecdev, 0);\n \tif (event == CTC_EVENT_TIMER)\n \t\tspin_unlock_irqrestore(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n@@ -999,6 +994,7 @@ static void ctcm_chx_txiniterr(fsm_instance *fi, int event, void *arg)\n * arg\t\tGeneric pointer, casted from channel * upon call.\n */\n static void ctcm_chx_txretry(fsm_instance *fi, int event, void *arg)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel *ch = arg;\n \tstruct net_device *dev = ch-\u003enetdev;\n@@ -1042,9 +1038,6 @@ static void ctcm_chx_txretry(fsm_instance *fi, int event, void *arg)\n \t\tfsm_addtimer(\u0026ch-\u003etimer, 1000, CTC_EVENT_TIMER, ch);\n \t\tif (event == CTC_EVENT_TIMER) /* for TIMER not yet locked */\n \t\t\tspin_lock_irqsave(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n-\t\t\t/* Such conditional locking is a known problem for\n-\t\t\t * sparse because its undeterministic in static view.\n-\t\t\t * Warnings should be ignored here. */\n \t\tif (do_debug_ccw)\n \t\t\tctcmpc_dumpit((char *)\u0026ch-\u003eccw[3],\n \t\t\t\t\tsizeof(struct ccw1) * 3);\n@@ -1383,6 +1376,7 @@ static void ctcmpc_chx_txdone(fsm_instance *fi, int event, void *arg)\n * arg\t\tGeneric pointer, casted from channel * upon call.\n */\n static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel\t\t*ch = arg;\n \tstruct net_device\t*dev = ch-\u003enetdev;\n@@ -1462,7 +1456,7 @@ static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)\n \t\t\tspin_lock_irqsave(\n \t\t\t\tget_ccwdev_lock(ch-\u003ecdev), saveflags);\n \t\trc = ccw_device_start(ch-\u003ecdev, \u0026ch-\u003eccw[0], 0, 0xff, 0);\n-\t\tif (dolock) /* see remark about conditional locking */\n+\t\tif (dolock)\n \t\t\tspin_unlock_irqrestore(\n \t\t\t\tget_ccwdev_lock(ch-\u003ecdev), saveflags);\n \t\tif (rc != 0)\n@@ -1539,6 +1533,7 @@ static void ctcmpc_chx_firstio(fsm_instance *fi, int event, void *arg)\n * arg\t\tGeneric pointer, casted from channel * upon call.\n */\n void ctcmpc_chx_rxidle(fsm_instance *fi, int event, void *arg)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel *ch = arg;\n \tstruct net_device *dev = ch-\u003enetdev;\n@@ -1566,7 +1561,6 @@ void ctcmpc_chx_rxidle(fsm_instance *fi, int event, void *arg)\n \t\tch-\u003eccw[1].count = ch-\u003emax_bufsize;\n \t\tCTCM_CCW_DUMP((char *)\u0026ch-\u003eccw[0], sizeof(struct ccw1) * 3);\n \t\tif (event == CTC_EVENT_START)\n-\t\t\t/* see remark about conditional locking */\n \t\t\tspin_lock_irqsave(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n \t\trc = ccw_device_start(ch-\u003ecdev, \u0026ch-\u003eccw[0], 0, 0xff, 0);\n \t\tif (event == CTC_EVENT_START)\ndiff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c\nindex aeb102537e7f5..08e36685e5788 100644\n--- a/drivers/s390/net/ctcm_mpc.c\n+++ b/drivers/s390/net/ctcm_mpc.c\n@@ -1647,6 +1647,7 @@ static int mpc_validate_xid(struct mpcg_info *mpcginfo)\n * CTCM_PROTO_MPC only\n */\n static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)\n+__context_unsafe(/* Conditional locking */)\n {\n \tstruct channel *ch = arg;\n \tint rc = 0;\n@@ -1774,9 +1775,6 @@ static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)\n \tCTCM_D3_DUMP((char *)ch-\u003exid_id, 4);\n \n \tif (!in_hardirq()) {\n-\t\t\t /* Such conditional locking is a known problem for\n-\t\t\t * sparse because its static undeterministic.\n-\t\t\t * Warnings should be ignored here. */\n \t\tspin_lock_irqsave(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n \t\tgotlock = 1;\n \t}\n@@ -1784,7 +1782,7 @@ static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)\n \tfsm_addtimer(\u0026ch-\u003etimer, 5000 , CTC_EVENT_TIMER, ch);\n \trc = ccw_device_start(ch-\u003ecdev, \u0026ch-\u003eccw[8], 0, 0xff, 0);\n \n-\tif (gotlock)\t/* see remark above about conditional locking */\n+\tif (gotlock)\n \t\tspin_unlock_irqrestore(get_ccwdev_lock(ch-\u003ecdev), saveflags);\n \n \tif (rc != 0) {\n"
} |
| 2/1 | 2026/08/05 18:25 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only adds `__context_unsafe` annotations and enables context analysis in the Makefile. These are purely for static analysis tools and do not alter the functional execution flow of the kernel.",
"WorthFuzzing": false
}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). - Code in vendor-specific PCIe switch, SmartNIC, or GPU drivers (e.g., mlxsw, pds_core, qed, ionic, amdgpu) that require physical PCIe hardware cards not emulated in standard QEMU. - Driver .remove, .shutdown, or pci_unregister_driver teardown callbacks (e.g., igb_remove) that are executed only during PCI hot-unplug or sysfs driver unbind operations. 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. Prefer non-static, non-inlined API entrypoint functions over internal static helper functions (which are inlined by the compiler and do not have distinct symbol addresses). 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. Also check "depends on" lines in Kconfig to include any non-standard parent subsystem configs needed for Kbuild to compile the code statically into vmlinux. 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 1eebe588e4d8dedfb5d8d490bf46253c6cd252f0
Author: syz-cluster <triage@syzkaller.com>
Date: Wed Aug 5 18:25:11 2026 +0000
syz-cluster: applied patch under review
diff --git a/drivers/s390/net/Makefile b/drivers/s390/net/Makefile
index 537514cc52fb8..038ba3e4005da 100644
--- a/drivers/s390/net/Makefile
+++ b/drivers/s390/net/Makefile
@@ -3,6 +3,8 @@
# S/390 network devices
#
+CONTEXT_ANALYSIS := y
+
ctcm-y += ctcm_main.o ctcm_fsms.o ctcm_mpc.o ctcm_sysfs.o ctcm_dbug.o
obj-$(CONFIG_CTCM) += ctcm.o fsm.o
obj-$(CONFIG_SMSGIUCV) += smsgiucv.o
diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c
index bf917f4264532..84fd394d35250 100644
--- a/drivers/s390/net/ctcm_fsms.c
+++ b/drivers/s390/net/ctcm_fsms.c
@@ -545,6 +545,7 @@ static void chx_rxidle(fsm_instance *fi, int event, void *arg)
* arg Generic pointer, casted from channel * upon call.
*/
static void ctcm_chx_setmode(fsm_instance *fi, int event, void *arg)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
int rc;
@@ -563,8 +564,6 @@ static void ctcm_chx_setmode(fsm_instance *fi, int event, void *arg)
if (event == CTC_EVENT_TIMER) /* only for timer not yet locked */
spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
- /* Such conditional locking is undeterministic in
- * static view. => ignore sparse warnings here. */
rc = ccw_device_start(ch->cdev, &ch->ccw[6], 0, 0xff, 0);
if (event == CTC_EVENT_TIMER) /* see above comments */
@@ -648,6 +647,7 @@ static void ctcm_chx_start(fsm_instance *fi, int event, void *arg)
* arg Generic pointer, casted from channel * upon call.
*/
static void ctcm_chx_haltio(fsm_instance *fi, int event, void *arg)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
unsigned long saveflags = 0;
@@ -662,15 +662,12 @@ static void ctcm_chx_haltio(fsm_instance *fi, int event, void *arg)
if (event == CTC_EVENT_STOP) /* only for STOP not yet locked */
spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
- /* Such conditional locking is undeterministic in
- * static view. => ignore sparse warnings here. */
oldstate = fsm_getstate(fi);
fsm_newstate(fi, CTC_STATE_TERM);
rc = ccw_device_halt(ch->cdev, 0);
if (event == CTC_EVENT_STOP)
spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
- /* see remark above about conditional locking */
if (rc != 0 && rc != -EBUSY) {
fsm_deltimer(&ch->timer);
@@ -824,6 +821,7 @@ static void ctcm_chx_setuperr(fsm_instance *fi, int event, void *arg)
* arg Generic pointer, casted from channel * upon call.
*/
static void ctcm_chx_restart(fsm_instance *fi, int event, void *arg)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
struct net_device *dev = ch->netdev;
@@ -842,9 +840,6 @@ static void ctcm_chx_restart(fsm_instance *fi, int event, void *arg)
fsm_newstate(fi, CTC_STATE_STARTWAIT);
if (event == CTC_EVENT_TIMER) /* only for timer not yet locked */
spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
- /* Such conditional locking is a known problem for
- * sparse because its undeterministic in static view.
- * Warnings should be ignored here. */
rc = ccw_device_halt(ch->cdev, 0);
if (event == CTC_EVENT_TIMER)
spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
@@ -999,6 +994,7 @@ static void ctcm_chx_txiniterr(fsm_instance *fi, int event, void *arg)
* arg Generic pointer, casted from channel * upon call.
*/
static void ctcm_chx_txretry(fsm_instance *fi, int event, void *arg)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
struct net_device *dev = ch->netdev;
@@ -1042,9 +1038,6 @@ static void ctcm_chx_txretry(fsm_instance *fi, int event, void *arg)
fsm_addtimer(&ch->timer, 1000, CTC_EVENT_TIMER, ch);
if (event == CTC_EVENT_TIMER) /* for TIMER not yet locked */
spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
- /* Such conditional locking is a known problem for
- * sparse because its undeterministic in static view.
- * Warnings should be ignored here. */
if (do_debug_ccw)
ctcmpc_dumpit((char *)&ch->ccw[3],
sizeof(struct ccw1) * 3);
@@ -1383,6 +1376,7 @@ static void ctcmpc_chx_txdone(fsm_instance *fi, int event, void *arg)
* arg Generic pointer, casted from channel * upon call.
*/
static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
struct net_device *dev = ch->netdev;
@@ -1462,7 +1456,7 @@ static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)
spin_lock_irqsave(
get_ccwdev_lock(ch->cdev), saveflags);
rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
- if (dolock) /* see remark about conditional locking */
+ if (dolock)
spin_unlock_irqrestore(
get_ccwdev_lock(ch->cdev), saveflags);
if (rc != 0)
@@ -1539,6 +1533,7 @@ static void ctcmpc_chx_firstio(fsm_instance *fi, int event, void *arg)
* arg Generic pointer, casted from channel * upon call.
*/
void ctcmpc_chx_rxidle(fsm_instance *fi, int event, void *arg)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
struct net_device *dev = ch->netdev;
@@ -1566,7 +1561,6 @@ void ctcmpc_chx_rxidle(fsm_instance *fi, int event, void *arg)
ch->ccw[1].count = ch->max_bufsize;
CTCM_CCW_DUMP((char *)&ch->ccw[0], sizeof(struct ccw1) * 3);
if (event == CTC_EVENT_START)
- /* see remark about conditional locking */
spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
if (event == CTC_EVENT_START)
diff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c
index aeb102537e7f5..08e36685e5788 100644
--- a/drivers/s390/net/ctcm_mpc.c
+++ b/drivers/s390/net/ctcm_mpc.c
@@ -1647,6 +1647,7 @@ static int mpc_validate_xid(struct mpcg_info *mpcginfo)
* CTCM_PROTO_MPC only
*/
static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)
+__context_unsafe(/* Conditional locking */)
{
struct channel *ch = arg;
int rc = 0;
@@ -1774,9 +1775,6 @@ static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)
CTCM_D3_DUMP((char *)ch->xid_id, 4);
if (!in_hardirq()) {
- /* Such conditional locking is a known problem for
- * sparse because its static undeterministic.
- * Warnings should be ignored here. */
spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
gotlock = 1;
}
@@ -1784,7 +1782,7 @@ static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)
fsm_addtimer(&ch->timer, 5000 , CTC_EVENT_TIMER, ch);
rc = ccw_device_start(ch->cdev, &ch->ccw[8], 0, 0xff, 0);
- if (gotlock) /* see remark above about conditional locking */
+ if (gotlock)
spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
if (rc != 0) {
|
| 3/2 | 2026/08/05 18:25 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 4635 output: 18 thoughts: 170 Thoughts: **Analyzing a Patch: Potential Static Analysis Implications** Okay, so I'm looking at this patch and it's modifying the `drivers/s390/net/ctcm_fsms.c` and `drivers/s390/net/ctcm_mpc.c` files. It adds `__context_unsafe(/* Conditional locking */)` to a bunch of functions in those files. It also throws in `CONTEXT_ANALYSIS := y` to the `Makefile` in that directory. And, hmm, it looks like it's removing some comments that were talking about conditional locking being undeterministic from a static analysis perspective. Now, wait a minute... `__context_unsafe`. That annotation is screaming "sparse or clang static analyzer stuff!" to me. This isn't a *functional* change, is it? It’s not actually altering how the code *works* at runtime, is it? This is about helping static analysis tools understand the locking context. We're providing hints to avoid false positives or, at least, to make the analysis more accurate around conditional locking. I need to be absolutely sure. Before I even think about merging this, I need to know exactly what `__context_unsafe` actually does. Is it defined in the kernel? I'll run `default_api:grepper` to search for it in the kernel source. That should tell me whether it's simply a macro, an inline function, or something else entirely. I need to see the definition. |
| 4/2 | 2026/08/05 18:25 | tool | grepper |
0mArgs:{
"Expression": "__context_unsafe"
}Results: {
"Output": "Documentation/dev-tools/context-analysis.rst=110=checking): either with a ``context_unsafe(var = init)`` expression, or by\nDocumentation/dev-tools/context-analysis.rst:111:marking small initialization functions with the ``__context_unsafe(init)``\nDocumentation/dev-tools/context-analysis.rst-112-attribute.\n--\nDocumentation/dev-tools/context-analysis.rst=121=Keywords\n--\nDocumentation/dev-tools/context-analysis.rst-143- context_unsafe\nDocumentation/dev-tools/context-analysis.rst:144: __context_unsafe\nDocumentation/dev-tools/context-analysis.rst-145- disable_context_analysis enable_context_analysis\n--\ncrypto/scompress.c=65=static void crypto_scomp_free_scratches(void)\ncrypto/scompress.c:66:\t__context_unsafe(/* frees @scratch */)\ncrypto/scompress.c-67-{\n--\ncrypto/scompress.c=110=static int crypto_scomp_alloc_scratches(void)\ncrypto/scompress.c:111:\t__context_unsafe(/* allocates @scratch */)\ncrypto/scompress.c-112-{\n--\ndrivers/ata/libata-core.c=6859=void ata_msleep(struct ata_port *ap, unsigned int msecs)\ndrivers/ata/libata-core.c:6860:\t__context_unsafe(conditional locking)\ndrivers/ata/libata-core.c-6861-{\n--\ndrivers/s390/net/ctcm_fsms.c=547=static void ctcm_chx_setmode(fsm_instance *fi, int event, void *arg)\ndrivers/s390/net/ctcm_fsms.c:548:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_fsms.c-549-{\n--\ndrivers/s390/net/ctcm_fsms.c=649=static void ctcm_chx_haltio(fsm_instance *fi, int event, void *arg)\ndrivers/s390/net/ctcm_fsms.c:650:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_fsms.c-651-{\n--\ndrivers/s390/net/ctcm_fsms.c=823=static void ctcm_chx_restart(fsm_instance *fi, int event, void *arg)\ndrivers/s390/net/ctcm_fsms.c:824:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_fsms.c-825-{\n--\ndrivers/s390/net/ctcm_fsms.c=996=static void ctcm_chx_txretry(fsm_instance *fi, int event, void *arg)\ndrivers/s390/net/ctcm_fsms.c:997:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_fsms.c-998-{\n--\ndrivers/s390/net/ctcm_fsms.c=1378=static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)\ndrivers/s390/net/ctcm_fsms.c:1379:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_fsms.c-1380-{\n--\ndrivers/s390/net/ctcm_fsms.c=1535=void ctcmpc_chx_rxidle(fsm_instance *fi, int event, void *arg)\ndrivers/s390/net/ctcm_fsms.c:1536:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_fsms.c-1537-{\n--\ndrivers/s390/net/ctcm_mpc.c=1649=static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)\ndrivers/s390/net/ctcm_mpc.c:1650:__context_unsafe(/* Conditional locking */)\ndrivers/s390/net/ctcm_mpc.c-1651-{\n--\ninclude/linux/compiler-context-analysis.h-222-/**\ninclude/linux/compiler-context-analysis.h:223: * __context_unsafe() - function attribute, disable context checking\ninclude/linux/compiler-context-analysis.h-224- * @comment: comment explaining why opt-out is safe\n--\ninclude/linux/compiler-context-analysis.h-228- */\ninclude/linux/compiler-context-analysis.h:229:#define __context_unsafe(comment) __no_context_analysis\ninclude/linux/compiler-context-analysis.h-230-\n--\nkernel/sched/core.c=406=static void sched_core_lock(int cpu, unsigned long *flags)\nkernel/sched/core.c:407:\t__context_unsafe(/* acquires multiple */)\nkernel/sched/core.c-408-\t__acquires(\u0026runqueues.__lock) /* overapproximation */\n--\nkernel/sched/core.c=418=static void sched_core_unlock(int cpu, unsigned long *flags)\nkernel/sched/core.c:419:\t__context_unsafe(/* releases multiple */)\nkernel/sched/core.c-420-\t__releases(\u0026runqueues.__lock) /* overapproximation */\n--\nkernel/sched/core.c=659=void raw_spin_rq_lock_nested(struct rq *rq, int subclass)\nkernel/sched/core.c:660:\t__context_unsafe()\nkernel/sched/core.c-661-{\n--\nkernel/sched/core.c=685=bool raw_spin_rq_trylock(struct rq *rq)\nkernel/sched/core.c:686:\t__context_unsafe()\nkernel/sched/core.c-687-{\n--\nkernel/sched/fair.c=3639=static void task_numa_placement(struct task_struct *p)\nkernel/sched/fair.c:3640:\t__context_unsafe(/* conditional locking */)\nkernel/sched/fair.c-3641-{\n--\nmm/kfence/core.c=611=static unsigned long kfence_init_pool(void)\nmm/kfence/core.c:612:\t__context_unsafe(/* constructor */)\nmm/kfence/core.c-613-{\n--\ntools/include/linux/compiler-context-analysis.h-15-#define __no_context_analysis\ntools/include/linux/compiler-context-analysis.h:16:#define __context_unsafe(comment)\ntools/include/linux/compiler-context-analysis.h-17-#define context_unsafe(...)\t\t({ __VA_ARGS__; })\n"
} |
| 5/2 | 2026/08/05 18:25 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 6922 output: 69 thoughts: 95 Thoughts: **Static Analysis Tweaks, No Runtime Impact** Okay, so I've looked at this patch. All it seems to do is introduce the `__context_unsafe` attribute and set `CONTEXT_ANALYSIS := y` in the Makefile. That's it. From what I understand, `__context_unsafe` is just a symbolic name for `__no_context_analysis`, and that's an attribute specifically for static analysis tools – think sparse or a custom context analysis tool we're using. Crucially, this isn't altering the functional behavior of the kernel in any way. It's simply adding metadata, annotations if you will, that these static analysis tools can use during their checks. So, it’s safe to say there's absolutely nothing here that makes this patch **WorthFuzzing=false**. We don't need to put this through our normal fuzzing process. It's a non-issue as far as runtime security goes. |
| 6/2 | 2026/08/05 18:25 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch only adds `__context_unsafe` annotations and enables context analysis in the Makefile. These are purely for static analysis tools and do not alter the functional execution flow of the kernel.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch only adds `__context_unsafe` annotations and enables context analysis in the Makefile. These are purely for static analysis tools and do not alter the functional execution flow of the kernel.",
"WorthFuzzing": false
} |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|