Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] samples/uprobe: dead code in parse_probe_args due to loop invariants --
commit 77dc8c84b5d7c061149ad9471b13f1d9dabd7049 Author: Andi Kleen <[email protected]> ptwrite uprobes: Add a sample module to exercise interface This adds a test module and userspace target program for uprobes ptwrite. The module can be configured via parameters to register a ptwrite uprobe at a specified offset and emit live registers or immediates into an Intel PT stream. It is intended strictly for testing the interface. > diff --git a/samples/uprobe-ptwrite/uprobe_ptwrite_test.c > b/samples/uprobe-ptwrite/uprobe_ptwrite_test.c > new file mode 100644 > --- /dev/null > +++ b/samples/uprobe-ptwrite/uprobe_ptwrite_test.c [ ... ] > +static int parse_probe_args(void) > +{ > + char *s, *p, *tok; > + unsigned int n = 0; > + > + s = kstrdup(args, GFP_KERNEL); > + if (!s) > + return -ENOMEM; > + > + p = s; > + while ((tok = strsep(&p, ",")) != NULL) { > + struct uprobe_ptwrite_arg *a; [ ... ] > + if (tok[0] == 'r') { [ ... ] > + } else if (tok[0] == 'i') { [ ... ] > + } else { > + pr_err("bad arg '%s'\n", tok); > + goto err; > + } > + n++; > + } > + if (!n) { > + pr_err("need 1..%d args\n", UPROBE_PTWRITE_MAX_ARGS); > + goto err; > + } [Severity: Low] Is this zero-argument check reachable? Because p is initialized to a non-NULL string returned by kstrdup(), the strsep() loop will always execute at least once. Inside the loop, any invalid token triggers a goto err, skipping this check entirely. If the token is valid, n is incremented. Normal termination of the loop seems to guarantee that n >= 1, making this condition structurally dead code. > + desc.nargs = n; > + kfree(s); > + return 0; > +err: > + kfree(s); > + return -EINVAL; > +} -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=3
